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を参照し。f:id:CrabPunch:20180730224426p:plain

矢印メッシュをスポーンで描画するように設定する。

f:id:CrabPunch:20180730224443p:plain

 

少し分かりづらいですが、矢印のメッシュがConeの形上に生成されているのがわかるかと思います。

f:id:CrabPunch:20180730224456p:plain

 矢印Meshを法線方向に回転させる

矢印Meshを参照もとのMeshの法線に合わせたいと思います。

ここでいう法線とは三角ポリゴンに対して垂直なベクトルです。

(頂点法線なんかもありますが)

 

矢印Meshを法線方向に回転させる方法として、

モデルの回転させるには、主にMatrixやQuaternionを用いることになります。

Matrixは4x4要素や4x3要素などの回転行列の計算が必要で、(※平行移動いれてるからじゃはなしのほうこうで)

素数の分だけ計算をしないといけなかったり、ジンバルロック問題。

回転順番の問題(Z>X>Y)(X>Y>Z)など色々問題があります。

 

QuaternionですとX,Y,Z,Wの四要素にて回転の表現ができます。

f:id:CrabPunch:20180730225933p:plain

こちらのSetVariablesでParticles.MeshOrientationにてMeshの向き指定できます。

ただ、このままですと指定がしづらいので。

DynamicInputsのFIndQuatBeweenTwoVectorsを追加してください。

 

f:id:CrabPunch:20180730230855p:plain

 

次にパラメーターをParticles.SampleStaticMesh.MeshNormalを作成し

ToVectorにドラッグしてください。

f:id:CrabPunch:20180730231403p:plain

 

これは2つのベクトルからQuaternionを計算するものです。

中身はこんなかんじ

f:id:CrabPunch:20180730231627p:plain

 

これにて矢印Meshが法線方向に回転することができるはずです。

 

f:id:CrabPunch:20180730231823p:plain