3 / 4 変位方向の座標空間
ObjectとWorldの方向を目的に応じて使い分けます。
回転した二つのPlane
Planeを複製し、片方を回転します。同じObject空間の(0,y,0)を加えると、揺れの方向も物体と一緒に回転します。Cameraや材質を固定して比較してください。
Object SpaceとWorld Space
Object Spaceは、モデル自身の原点と軸を基準にした座標系です。
World Spaceは、シーン全体の原点と軸を基準にした座標系です。
風の方向や揺れの位相はWorld Spaceで指定できた方が扱いやすいですが、Shader GraphはPositionブロックにObject Spaceの座標を要求します。
このため、Shader Graph内の計算はObject Spaceで行うか、World Spaceで計算した結果をObject Spaceに変換する必要があります。
INFO
どちらでも結果は変わりませんが、Object Space→World Space→Object Spaceの変換は計算量が増えてしまいます。
可能であればObject Spaceで計算する方が効率的です。
方向を変換するためにはTransformノードのTypeはDirectionを選びます。Positionとして変換すると平行移動の成分まで含まれて意図しない値になってしまうので注意してください。
条件を変えた確認
回転した二枚をWorldの同じ方向へ揺らすには、どの値の空間を変えるか説明してください。GraphではVector3プロパティDirectionをWorldの向きとして用意し、TransformノードでWorld→Object、TypeをDirectionとして変換します。その出力へ揺れの値を掛け、元のObject位置へ加えます。
予測と結果の照合
出力先のVertex PositionはObject空間なので、Worldの変位方向をObjectへ変換して加えます。位置に使う変換と方向に使う変換を区別します。この比較はScale=(1,1,1)で行います。
比較後は元のObject方向の変位へ戻し、複製したPlaneを非表示にします。次は変形後の描画を確認します。
- 回転前後で方向が変わる理由を座標空間から説明できる。