UE4 Chaos Niagaraを使ってみよう
環境
UE4.26.0 Preview 1
※まだPreviewのエンジンバージョンですので実プロダクトでの採用は非推奨です。
また、今回の記事では作成中に何度かエンジンがクラッシュすることがありました。
Previewの醍醐味(?)ですね。
概要
前回の記事ではStatic MeshをChaosのGeometryCollectionActorに置換して破壊するところまでを作成しました。
papersloth.hatenablog.com
今回はその続きです。
破壊されたところからエフェクトが発生するようにしていきます。
Niagaraを使用しますので、前準備として「Niagara」のPluginが有効になっていることを確認しましょう。
余談ですが、UE4.26から追加される「Cascade To Niagara Converter」もどこまで上手くConvertしてくれるのか気になるところですね。
まずは現段階でNiagaraに追加されているChaos関連のModuleを見ていきましょう。
ChaosNiagaraのPlugin内には「ApplyChaosData」と「SpawnFromChaos」の2つのmoduleがあります。
ApplyChaosDataはParticle Spawnから使用できて
SpawnFromChaosはEmitter Updateから使用できることが確認できました
他にも「ChaosDestrutionData」と「ChaosDestructionEvent」があり、これらはChaosNiagaraのPlugin内の
「NiagaraDataInterfaceChaosDestrution」内に定義されています。
この2つはNiagaraEmitterに追加するModuleではなく
NiagaraSystem内のNiagara Overview Node内のSystem Settingsから使用します。
Niagaraで煙のエフェクトを作成
まずはChaosと紐付けるためのNiagara Emitter, Niagara Systemを作成します。
Content Browser上で右クリックして「FX -> Niagara Emitter」を選択します。
既存のTemplateからEmitterの作成を選択して
「Omnidirectional Burst」をベースに作成していきます。
名前は「NE_Smoke」としました
煙のMaterialは「Starter Content」に含まれている「M_smoke_subUV」を使用します。
NE_SmokeのRender -> Sprite RendererのMaterialをM_smoke_subUVに更新します。
SubUVを含んだMaterialですので、同じくSprite Renderer内の
「Sub Image Size」を「X: 8.0, Y: 8.0」に設定して「Sub UV Blending Enabled」にチェックを入れます。
続いて「Particle Spawn」に「Sub UVAnimation」Moduleを追加します。
このままでは煙が小さいため、サイズを変更します。
強引なやり方ですが「Particle Update」の「Scale Sprite Size」の
「Scale Curve」を「10.0」にします。
これで10倍のサイズの煙になったと思います。
また、重力がかかって徐々に落下するエフェクトになっていますが
こちらは今回不要ですので「Particle Update」の「Gravity Force」を削除します。
※Gravity Force Moduleを選択してDeleteキーでも可
最後に「Thumbnail」を押下してアイコンの更新を行った後に
「Apply」で変更を適用して保存して煙のエフェクトのベースは完成です。
NiagaraとChaosの連携
※以降の手順でChaosとの連携周りでエンジンがやや不安定です。
前置きが長くなりましたがようやくChaosとの連携に入ります。
まずは先程作成したNiagara Emitterですが、そのままではLevelに配置ができないため
「NE_Smoke」を選択して右クリックで「Niagar System」を作成します。
名前は「NS_Smoke」としました。
NS_Smokeを開いてChaosとの連携のためのModuleを追加していきます。
まずは「Emitter Update」に「Spawn from Chaos」を追加します。
Chaosをベースにエフェクトの生成処理を行うため、不要になった
「Spawn Burst Instantaneous」を無効化します。
(Moduleの右のチェックボックスのチェックを外す)
Niagara Systemからは大元のNiagara EmitterのModuleを削除することはできないため
不要な場合は無効化することで対応します。
Niagara SysmteからはEmitterに対してModuleの追加とPropertyの変更のみが可能です。
次にChaosとの連携のために必要なModuleとして
「Particle Spawn」に対して「Apply Chaos Data」を追加します。
Niagaraでは「Spawn from Chaos」か「Apply Chaos Data」のModuleを追加した時点で
自動的にNiagara Overview Nodeの「User Parameters」内に
「Chaos Destruction Data」が追加されます。
ひとまずここまでの作業でNiagaraとChaosの連携に関しての動作確認は可能です。
クラッシュが怖いので、一度保存してから
「GC_Chair」がLevelに存在することを確認した上で
作成した「NS_Smoke」をLevelに配置してみましょう。
以下のように衝突時に煙のエフェクトが発生することが確認できれば成功です。
ここまでで動作することの確認が出来ましたが
ChaosとNiagaraの両方をLevel上に配置していると管理しにくいためBlueprintにまとめてしまおうと思います。
ChaosとNiagaraをまとめたBlueprintの作成
新規に「Blueprint Class」を作成します
親Classには「Actor」を選択します。
名前は長いですが「BP_LinkingChaosAndNiagara」としました。
Blueprintを開くと新規に2つのComponentを追加します。
「Geometry Collection」Componentと
「Niagara Particle System」Componentです。
「Geometry Collection」を選択して「Rest Collection」に
「GC_Chair」を設定します。
続いて「Niagara」を選択して「Niagara System Asset」に
「NS_Smoke」を設定します。
あとは先程同様に「BP_LinkingChaosAndNiagara」のBlueprintをLevelに配置して動作することを確認しましょう。
次にエフェクトの発生方法や発生数の調整についてです。
再び「NS_Smoke」を開いて作業を行っていきます。
「Chaos Destruction Data」ではNiagaraとChaosの連携周りの様々なパラメーターを編集することが可能です。
例えば
「Solver -> Solver Data -> Data Source」ではエフェクトの生成に関するオプションの設定ができます
Collision Data
Breaking Data
Trailing Data
まとめ
長くなりましたが、以上です。
Chaosに関しては私自身まだまだ分からないことだらけですが、コミュニティ全体で情報を出し合って盛り上げていければと思います。
今回の作例でクラッシュする部分についても設定ミスによる原因がいくつかありそうな気もしますので
気付いた点などがあればTwitter等でリプやDMなどを投げていただければと思います。