環境
UE4.19.0
SubUVの設定
今回はSubUV関連の作例として下図のような仮素材を使用します。
Niagara Emitter, Systemから
Sprite Rendering内のSub Image Sizeを変更することで分割数を任意に指定できます。
今回使用する仮素材では4分割なので
横2, 縦2でこのように分割して1の部分が表示されるようにします。
SubImageIndexのRandom呼び出し
SubImageIndexを使って作成するものに煙等がありますね。
1枚のテクスチャに幾つからの絵を用意して
それをランダムに描画することで1枚のテクスチャで色んな形の変化を表現することができます。
Cascadeでの例
Niagara記事用埋め込み動画
— まめお@技 (@PaperSlothTech) 2018年3月28日
Cascade Cloud pic.twitter.com/Z5GYFv4NZ0
Niagaraでの作例
Niagara記事用埋め込み動画
— まめお@技 (@PaperSlothTech) 2018年3月28日
Niagara Smoke pic.twitter.com/trmVJurS9m
これはNiagaraでは比較的簡単に実現できます。
既存の機能から見つけられなかったため
RandomSubUVというNiagara Module Scriptを自作しました。
処理としてはSubUVの最大数を入力したらその範囲内でSubImageIndexを指定するものです。
最大数をわざわざ入力しないでも自動的に計算してとってこれないか考え中です・・・
SubImageIndexはCommon Attributesの中にあります。
これでIndexを指定できます。
あとはこれをEmitterのParticle Spawnに割り合てて分割最大数を入力すれば完成です。
少し遠くて分かりにくいかもしれませんが、1~4の数字がランダムに生成されています。
Niagara記事用埋め込み動画
— まめお@技 (@PaperSlothTech) 2018年3月28日
Niagara Random SubUV pic.twitter.com/HhRi3PORrV
SubUVアニメーション
Cascadeでの例
Niagara記事用埋め込み動画
— まめお@技 (@PaperSlothTech) 2018年3月28日
Cascade Explosion pic.twitter.com/nKpOiobDCC
Niagaraでの作例
Niagara記事埋め込み動画
— まめお@技 (@PaperSlothTech) 2018年3月28日
Niagara Fire pic.twitter.com/Ka6qZnSpDp
SubUVアニメーション用の自作Script作成
今回の作成方法があまり良くなくてモヤモヤが残っているのですが紹介させていただきます。
これも既存のModule Scriptが見当たらなかったため、Module Scriptを自作します。
既存のScriptで問題ないため、下記のModule Scirpt作成の手順は不要となりました。
詳細はページ下部を参照してください。
SubUVアニメーション用のSuvUVCurveというNiagara Module Scriptを作成しました。
処理としてはfloatの入力値を渡しているだけです。
CurveにするのはEmitter側で行っています。
この作り方がとてもモヤモヤしているので、代替案を考え中です・・・
EmitterのParticle Updateに先程のModule Scriptを追加します。
この段階ではただのfloatの入力値です。
SubUVCurveの右側にある▽を押下します。
すると入力の種類を範囲指定やCurveへ変更ができるため
Float from Curveを選択します。
変更するとfloatの入力がCurveエディタになります。
カーブエディタを編集して0から4まで値が変化するように指定します。
しかし、CurveIndexが0のためこのままでは常に0番目しか取得できません。
そこで、次はCurveIndexの入力値を変更します。
CurveIndexの右側にある▽を押下します。
CurveIndexをNormalized Ageに変更します。
これで結果は下記のようになります。
1~4までアニメーションしているのが確認できますね。
Niagara記事埋め込み動画
— まめお@技 (@PaperSlothTech) 2018年3月28日
Niagara SubUV Animation pic.twitter.com/iyL0ExDFgC
Sub Image Indexの利用
Twitter上でmokoさんに情報を提供いただきました。感謝。
SubUVCurveという自作Module Scriptを作成していましたが、不要でした。
Paricles.Sub Image IndexというScriptを利用すれば問題ありません。
使用方法は自作Scriptと同様です。
先ずはFloat from Curveに変更します。
続いてCurveを適切に動きになるように編集します。
最後にCurveIndexをNormalizeAgeに変更すれば完成です。