概要
某SFシリーズファンメイド自主制作プロジェクトの内部実装紹介その2にして原点
フェイザー砲(ビーム砲)のエフェクトをNiagaraで作ったまでは良かったものの、シーケンサーでNiagaraを制御するにはLife Cycleトラックは癖があり少々厄介。というわけでBP内で動的に制御してしまおうという試み。
基本要件
- ターゲットとの位置関係により発射位置をフェイザーアレイ(船体表面のレール状構造)に沿って移動させる。
(レール上かつターゲットとの最短距離を取りたい) - 発射時のエネルギー収束とビームエフェクト本体との同期。
エフェクト部分
ビームエフェクト本体
エネルギー収束エフェクト
- レール部分のUVを直線的に展開し、マテリアル側で移動可能なグラデーション処理を組み、UV両端から収束地点に移動させる
- グラデーションと収束位置をDynamic Material ParameterとしてNiagaraに制御権を渡し、BP側での演算結果をパラメーターとしてNiagaraに渡す
全景
グラデーション部分(片側)
マテリアルパラメーターの制御
最終的なアプローチ
紆余曲折を経て、最終的な処理方法は次のようになった。
- ↑これを1サイクルとして射程内にターゲットが存在する間繰り返す
- サイクルの管理はSet Timer by Eventで行うことに
BPでの実装はこの画像のようになった
順番に見ていくと...
終わりに
この処理方法を導き出す過程でBP内におけるベクトルと座標系の取り回しやマテリアルグラフでのmathノードの扱い方を学ぶことができ、その後の制作にかなり活かすことができた。
(あわよくば将来的にはレールに沿ってリアルタイムで発射位置を移動させたりしてみたいところ...)