Vector、Rotationメモ
ワールド座標をローカル座標に変換
Inverse Transform Location
あるワールド座標を、特定のアクタのローカル座標に変換する。
T
:あるアクタ内のローカル座標に変換したい場合、そのアクターのTransformを入れる。
Location
:ローカル座標にしたいワールド座標を入れる。
T
にアクタコンポーネントのワールド座標を入れた場合。
アクタコンポーネントからの相対座標を算出できる。
参考
ローカル座標をワールド座標に変換する
Compose Transforms
Vectorメモ
Vectorは2つの意味を持っている。
・位置
・方向
Vectorの値の中にはこれらの意味が含まれている。
Set Actor Location を使っていると、Vectorは位置を扱うものなんだなと思うけど、方向も含まれている。
ワールドの向き、Actorの向き
ワールドの向き、Actorの向き(ローカル)、この二つは区別しなければならない。自分のような初学者は、ここの区別ができず混同してしまう。
Get Actor Forward Vector
Actorの前方を意味するVector。
以前の自分はGet Actor Forward Vector が(x:1,y:0,z:0)を返すものだと思っていた。
Actorを回転させて、Get Actor Forward Vectorをやると、Actorの向いている方向に応じて値が変わる。
Get Actor Location + (Get Actor Forward Vector * 100(float))とかやると、Actorの前方100cm先の座標を得られる。
参考になった動画
短いし、図解があるのでわかりやすかった。
英語がわからなくても図解を見ることでなんとなく理解ができそう。
内積(Dot Product)、外積(CrossProduct)の説明もあり。
回転(Rotate、クォータニオン)
回転と軸
棒をある方向へ傾けたい場合。
Xを30度,Yを90度,Zを...といった感じでもうややこしい。
回転は1つの軸回転で表現できるため、その軸を求めてしまった方が良いっぽい。
以下はすごく参考になった動画。
ある回転後の結果がほしい場合、「Rotate from Axis and Angle」ノードを使って、1つの回転軸と角度で求めることができる。
角度は内積。回転軸は外積で求められる。
内積・なす角(Dot Product)
あるベクトルと、あるベクトル間の角度の算出に使える。
Dot Productノードの出力ピンをAcosd(度単位)ノードに繋がないと角度は取得できない。
使用場所の想定:Rotate系ノードのAngleという入力ピンでの使用など。
例えば、Actor(A)のUpVectorとか、Actor(B)のRightVectorとか、とにかく2つのベクトルをDot Productの入力ピンににいれるとベクトル同士の角度にどれだけの開きがあるかわかる。
外積(CrossProduct)
Axis(軸)を割り出す。軸はある方向へ伸びる直線。
使用場所の想定:Rotate系ノードのAxisという入力ピンでの使用など。
「Rotate from Axis and Angle」のAxisは回転させるための軸という意味っぽい。
ネジを締める場合や、コマを回す場合、それらはUnrealで言うところのZ軸を回転させている。
例えば、Actor(A)のUpVectorとか、Actor(B)のRightVectorとか、とにかく2つのベクトルをCrossProductの入力ピンに繋げることで、「入力した2つの軸に垂直な軸」を出力できる。そしてその軸は回転させるための軸として使える。
UnrealEngine上での動作
これもすごく参考になった。