[UE4] BlueprintのRotatorノードまとめ

04.24

[UE4] BlueprintのRotatorノードまとめ はコメントを受け付けていません。

makerotfrom

今回はBlueprint上で使えるRotator系のノード一覧と使い方をまとめてみました。

表の内容は全てバージョン4.7.5にて検証しています。

公式ドキュメント Unreal Engine 4 Documentation Rotator

 ノード名

説明

Rotation作成ノード make

Make Rot  ピッチ、ヨー、ロールからRotationを作る。
Find Look at Rotation

スタート位置からターゲット位置を向くRotationを作成する。

Rotation from XVector X軸の方向ベクトルを元にRotationを作成する。
Make Rotation from Axes

3軸指定してRotationを作る。

Rotator from Axis and Angle ひとつの軸と角度を指定してRotationを作る。
Make Rot from X  X軸のみ与えられたRotationを作る。Y・Z軸は不特定だが、正規直交になる。X軸のNormalizeは必要ない。
Make Rot from XY  X軸とY軸からRotationを作る。X軸は固定されたままで、Y軸は直交性を矯正するために最小限修正される。Z軸は計算で求められる。入力は正規化をする必要がない。
Make Rot from XZ  X軸とZ軸からRotationを作る。X軸は固定されたままで、Z軸は直交性を矯正するために最小限修正される。Y軸は計算で求められる。入力は正規化をする必要がない。
Make Rot from Y  Y軸のみ与えられたRotationを作る。X・Z軸は不特定だが、正規直交になる。Y軸のNormalizeは必要ない。
Make Rot from YX  Y軸とx軸からRotationを作る。Y軸は固定されたままで、X軸は直交性を矯正するために最小限修正される。Z軸は計算で求められる。入力は正規化をする必要がない。
Make Rot from YZ  Y軸とZ軸からRotationを作る。Y軸は固定されたままで、z軸は直交性を矯正するために最小限修正される。X軸は計算で求められる。入力は正規化をする必要がない。
Make Rot from Z  Z軸のみ与えられたRotationを作る。X・Y軸は不特定だが、正規直交になる。Z軸のNormalizeは必要ない。
Make Rot from ZX  Z軸とX軸からRotationを作る。Z軸は固定されたままで、X軸は直交性を矯正するために最小限修正される。Y軸は計算で求められる。入力は正規化をする必要がない。
Make Rot from ZY

 Z軸とY軸からRotationを作る。Z軸は固定されたままで、Y軸は直交性を矯正するために最小限修正される。X軸は計算で求められる。入力は正規化をする必要がない。

要素分解ノード break

Break Rot  Rotationをヨー・ピッチ・ロールに分解する。
Break Rot Into Axes  RotationをX・Y・Z軸に分解する。

値取得ノード get

Get Axes Rotationから3軸(X・Y・Z軸)を取得する。
Get Rotation XVector Rotation適用後のX方向ベクトルを取得する (≒Rotationをベクトルに変換する)。

演算ノード + – == != scale

Combine Rotators  2つのRotationを組み合わせた結果を返す。 回転の合成・加算
Delta (Rotator)  2つのRotationの差分を正規化して返す。 
Scale Rotator Bによってスケーリングされた角度Aを示すRotationを返す。 
Equal (Rotator)  2つのRotationが等しい場合trueを返す。
Not Equal (Rotator) 2つのRotationが等しくない場合trueを返す。
Negate Rotator Rotationを反転させる。

補間ノード lerp interp

Lerp (Rotator) 線形補間。
Ease 14種類の補間を選べる。 種類の詳細はEaseの記事にて紹介しています。
RInterp to 徐々に向きを変える。
RInterp to Constant 徐々に向きを変える。 小さい変化は無視される。(Quaternionに直した際のtickあたり1.e-4f未満の変化量は無視)

処理ノード

Rotate Vector VectorをRotatorで回転する。
Unrotate Vector VectorをRotator分、逆に回転させる。
Rotate Vector Around Axis Vectorを指定した軸周りに指定角度分回転させる。 Quaternionによる回転。
Select Rotator bool値により2つの回転のうち一つを返す。

Actorのノード

Get Actor Forward Vector Actorの正面方向の単位ベクトル(X軸)を取得する。
Get Actor Right Vector

Actorの右方向の単位ベクトル(Y軸)を取得する。

Get Actor Up Vector Actorの上方向の単位ベクトル(Z軸)を取得する。

 

 

 ・Make Rotator / Break Rotator

 make     break

Pitch/Yaw/Rollを指定してRotatorを作る。 | RotatorをPitch/Yaw/Rollに分解する。

 角度で指定・分解ができるので使いやすいのですが、現バージョンのUE4ではRotatorのPinにマウスカーソルを合わせ、Split Struct Pinをクリックするとこのノードを用いずともPitch/Yaw/Rollに分解できてしまうため、好みでご使用ください。

makesplitpinsplitedmake

 

・Find Look at Rotation

findlookatrotation

StartとTargetのワールド座標をVectorで入力すると、Rotationの値が(0,0,0)の時にX軸正方向を向くアクターが、Target方向を向くためのRotationが作られる。

Camera Actorを継承したブループリントを作り、以下のようなブループリントを書くとプレイヤーが動いても常にプレイヤーの方向を見続けるカメラが作れます。

targetcamerawithfindlookatrotation1429763955xferrQpn2p5hwNS1429763947

 

 ・Rotation from XVector

rotationfromxvector

X軸の方向ベクトルを元にRotationを作成する。ベクトルをRotationに変換するのに使える。

このノードで返ってくるRotationはYawとPitchのみで表現され、Rollの値は常に0になる。

 

・Make Rotation from Axes

makerotationfromaxes

3軸指定してRotationを作る。入力するVectorは中で正規化されるので事前の正規化は必要ない。

Yaw/Pitch/Roll全て計算される。

 

・Rotator from Axis and Angle

rotationfromaxisandangle

ひとつの軸と角度を指定してRotationを作る。軸は正規化する必要がなく、角度はデグリーで指定する。

内部では一度クオータニオンに変換し、それをさらにRotatorに変換して返している。

 

・Make Rot from X・Y・Z XY・XZ・YX・YZ・ZX・ZY

makerotfrom

1軸もしくは2軸を指定してRotationを作るノード。指定しなかった軸は自動計算で求められる。

1軸指定の Make Rot from X は Rotation from XVector とほぼ同じRotationが求められる。

↓10万回ランダムに求めた同じベクトルからMake Rot from X / Rotation from XVector のそれぞれを用いてRotatorを作り、2つのRotatorがNotEqualだったらHelloという実験

RotationDiffCheck    diffhello

10万回のうち10回前後がNotEqualなRotatorとなるのみなのでほぼ同じ結果といえる。

 

2軸指定の Make Rot from ノードは初めに2つの軸が垂直に交わっているか調べ、垂直でなければ1番目に指定した方の軸のみを使ってRotatorを生成する。

2つの軸が垂直であった場合は、2軸を使って残りの1軸を求めてからRotatorを生成する。

 

・ Break Rot Into Axes / Get Axes

 

breakrotintoa    getaxes

 RotationをX・Y・Z軸の方向ベクトルに分解する。  Rotationから3軸(X・Y・Z軸)を取得する。

中で行われている計算は同じなのでお好みで好きな方を使いましょう。私は Get Axes が好きです。

 

・ Get Rotation XVector

getrotatorxvector

Rotation適用後のX方向ベクトルを取得する。RotationをVectorに変換する意図で使って問題ありません。

内部でもConv_RotatorToVectorという名前の関数を使っています。

 

・ Combine Rotators

combinerotators

2つのRotationを組み合わせた結果を返す。Rotatorの合成や単純な加算にはこれを使う。

このノードを使わず回転する方法に↓のようなものが考えられますが、

lock

この方法だとPitchを90°回したあたりで全く回転しなくなります。恐らくジンバルロックを防ぐためのUE4の仕様です。

90°を超えて回転させたい場合にはCombine Rotatorsを使います。

combinerotatoruse

 

・ Delta (Rotator)

delta

2つのRotationの差分を正規化して返す。

 

・ Scale Rotator

 scalerotator

Rotatorの各成分Yaw・Pitch・RollそれぞれにFloatの値をかける。

 

・ Equal (Rotator)

equal

2つのRotationが等しい場合trueを返す。Yaw・Pitch・Rollの成分全てがFloatで指定した誤差範囲より小さければtrueが返る。一つでも誤差範囲を超えていたらfalseが返る。

 

・ Not Equal (Rotator)

 notequa

2つのRotationが等しい場合trueを返す。Yaw・Pitch・Rollの成分それぞれを比較し、一つでも指定したFloat値の誤差範囲を超えていたらtrueが返る。全てが誤差範囲より小さければfalseが返る。

 

・ Negate Rotator

negaterotator

Rotationを反転させる。

内部では、Rotatorを一度クオータニオンに変換する。 → そのクオータニオンで軸を表すX,Y,Zの各値の符号を反転させて新たなクオータニオンにする。 → クオータニオンからRotatorに変換するという処理を行っている。

 

・Lerp (Rotator) / Ease

lerprotator    easerotatornode

2つのRotatorを補間する。 Shortest Pathにチェックを入れると最短のルートで補間される。

Lerp(Rotator)はいわゆる線形補間で、Alphaの値によって補間される。EaseノードのFunctionからLinearを選んだ場合と挙動は同じ。

EaseノードはAかBのPinにRotatorをつなぐとRotator用の補間をするEaseとして働くようになる。Functionの種類によって14種類の保管方法がある。詳しくはEaseの記事にて。

 

・RInterp to / RInterp to Constant

rinterpto    rinterptoconst

 

徐々にターゲット方向を向くためのRotatorを計算してくれるノード。

Camera Actorを継承してブループリントを作り、EventGraphに以下のように書くと、プレイヤーをゆっくりと追い続けるカメラが作れる。

rinterpex

 

Constant の無い方は滑らかに Target に向かうような動き方をし、Constant の付いている方は、Yaw・Pitch・Roll の各値がそれぞれ同じだけ Target に近づくため、向きによっては機敏になったり鈍くなったりする。

使い分けが必要ですが、基本的には RInterp to の方が扱いやすいです。

 

・Rotate Vector

rotatevector

VectorをRotatorで回転する。

 

・Unrotate Vector

unrotatevector

VectorをRotator分、逆に回転させる。

 

・Rotate Vector Around Axis

rotatevectoraroundaxis

Vectorを指定した軸周りに指定角度分回転させる。角度はデグリー角で指定する。いわゆるQuaternionによる回転。

 

・Select Rotator

selectrotator

bool値により2つの回転のうち一つを返す。三項演算子のような感じで、うまく使いこなせばブループリントが読みやすくコンパクトになるかもしれません。

 

・Get Actor Forward Vector / Get Actor Right Vector / Get Actor Up Vector

getactorvector

Actorのローカルな軸方向ベクトルが取得できます。

Get Actor Forward Vector = X軸

Get Actor Right Vector = Y軸

Get Actor Up Vector = Z軸

  • このエントリーをはてなブックマークに追加

関連記事

コメントは利用できません。

カテゴリー

ページ上部へ戻る