Niagaraの入門(11) PositionとNormalとQuaternion
Niagaraの入門(11)
UE4確認バージョン 4.20.0
※なおこの段階ではNiagaraはアーリーアクセスなので
※今後内容がかわるかもしれないのでご注意ください
Mesh表面へのパーティクル生成について
以前、SpawnとLocationでMeshの形への
パーティクルの生成の話をしましたが、
そこからの派生のお話。
SampleStaticMesh
パラメーター入力
[Module.StaticMesh]
パラメーター出力
[Particles.Module.MeshNormal]
[Particles.Module.MeshTangent]
[Particles.Module.MeshPosition]
[Particles.Module.MeshColor]
[Particles.Module.MeshUV]
[Particles.Module.MeshSampleCoord]
対象となるStaticMeshからランダムで三角ポリゴンを抽出し、
その座標や法線やカラーなどを取得します。
StaticMeshLocation
パラメーター入力
[Particles.SampleStaticMesh.MeshPosition]
[Particles.SampleStaticMesh.MeshNormal]
パラメーター出力
[Particles.Position]
入力で渡されたメッシュの位置や法線やオフセットをもとに
パーティクルの位置を決めるものです。
--------------------------------------------------------------------------------------------
Mesh座標から矢印Meshを表示してみる
SampleStaticMeshとしてConeのMeshを参照し。
矢印メッシュをスポーンで描画するように設定する。
少し分かりづらいですが、矢印のメッシュがConeの形上に生成されているのがわかるかと思います。
矢印Meshを法線方向に回転させる
矢印Meshを参照もとのMeshの法線に合わせたいと思います。
ここでいう法線とは三角ポリゴンに対して垂直なベクトルです。
(頂点法線なんかもありますが)
矢印Meshを法線方向に回転させる方法として、
モデルの回転させるには、主にMatrixやQuaternionを用いることになります。
Matrixは4x4要素や4x3要素などの回転行列の計算が必要で、(※平行移動いれてるからじゃはなしのほうこうで)
要素数の分だけ計算をしないといけなかったり、ジンバルロック問題。
回転順番の問題(Z>X>Y)(X>Y>Z)など色々問題があります。
QuaternionですとX,Y,Z,Wの四要素にて回転の表現ができます。
こちらのSetVariablesでParticles.MeshOrientationにてMeshの向き指定できます。
ただ、このままですと指定がしづらいので。
DynamicInputsのFIndQuatBeweenTwoVectorsを追加してください。
次にパラメーターをParticles.SampleStaticMesh.MeshNormalを作成し
ToVectorにドラッグしてください。
これは2つのベクトルからQuaternionを計算するものです。
中身はこんなかんじ
これにて矢印Meshが法線方向に回転することができるはずです。