メインコンテンツへスキップ
  1. 記事/

BPでn次元配列を扱う

UnrealEngine Blueprint UE5.2

Blueprint で n 次元配列を扱う方法についてです

1 次元配列の場合 #

1 次元配列は簡単
変数の詳細パネルで 配列(Array) を選択するだけ

Array

2 次元配列の場合 #

UnrealEngine の TArray は、n 次元配列を使う想定にはなっていません
というのも、n 次元配列を for で回す場合、次元の数だけ for ループが必要になるし
メモリ上での扱いが効率的ではない、という理由があります

2 次元配列を扱う方法としては、構造体に配列を持たせ、その構造体の配列を持つことで
擬似的に 2 次元配列っぽく扱う方法が考えられますが、あまりスマートではありません

なので、1 次元配列を 2 次元配列のように扱うことにします

要素数は (DimX * DimY) 個とします

X*Yの要素を持つ配列

取得するときの添字は (X * DimX + Y) で計算できます

MathExpression ノードを使用していますが、普通の計算ノードでも可です

XとYの座標から値の取得

現在の添字から X と Y が知りたい場合は、下記の計算になります

X = n / DimX
Y = n % DimX

XYからN

3 次元配列の場合 #

2 次元ができれば、その応用で 3 次元配列も表せます
要素数は (DimX * DimY * DimZ) 個です

3次元配列

取得するときの添字の計算は (X * DimX * DimZ) + (Y * DimZ) + Z です

XYZ座標から値の取得

添字から XYZ を知りたい場合は以下の計算です

X = N / (DimX * DimZ)
Y = N % (DimX * DimZ) / DimZ
Z = N % (DimX * DimZ) % DimZ

Alt text

これ以上は 計算が面倒なので あまり実用的では無いので今回はここまで

Related

UE5でTessellationを使う
UnrealEngine UE5.2 GeometryScripting
Android(Meta Quest2)でUnrealInsightを使う
UnrealEngine UE5.1 Mobile Android VR
C++プロジェクトがビルドできないときはパスをチェックする
UnrealEngine UE5.0 C++