実装時のバージョン UE5.0.3
UnrealEngineを使用して、液体・流体を浴びる表現したいなと思い、Niagaraで実装してみました。
なお、主に公式ドキュメントを見ながら、手探りで実装した備忘録になりますのであしからず……。
目次
まずは、サンプル
こんなのをつくっていきます。
公式のドキュメントを見ながらやっていきます。
https://docs.unrealengine.com/5.0/ja/niagara-fluids-in-unreal-engine/
NiagaraFludsプラグインの有効化

NiagaraFluidsという流体表現を行える公式の拡張プラグインが公開されているため、今回はこれを使っていきます。
UE5.0.3現在ではベータ版での提供となるため、注意が必要です。安全のためバックアップをとるなど対策をしておくことを推奨します。
有効化して、再起動しましょう。
Niagaraパーティクルを追加

いつものように、右クリックのメニューまたは、追加ボタンからNiagaraシステムを選択して、アセットを追加します。


テンプレートまたは動作例に基づく新しいシステムを選択すると、NiagaraFluidsによって追加された様々な動作例が表示されるので、目指したい動作に近いものを選んでください。
今回は、水しぶきを作りたいのでGrid 3d Flip Splashを選択します。名前は適当につけましょう。
とりあえず配置してみる
さて、作ったSplashを一旦レベル上に配置してみましょう。
しかし、このままだとStaticMeshやSkeltalMeshを貫通してしまいます。
※わかりやすいようにマネキンくんも追加しておきました。
https://www.unrealengine.com/marketplace/ja/product/mannequins-asset-pack?sessionInvalidated=true
貫通しないようにコリジョン類を設定する

▼SkeltalMeshに対して設定する
Niagaraを開き、エミッターを選択すると、Collisionsの項目があるので、Use Physics Asset Collisionsにチェックを入れます。名前の通り、PhysicsAssetを対象にするチェックマークです。
SkeltalMeshは、このチェックをオンにすることで対象にすることができます。
更に、配置したエフェクトを開き、対象にするアクターを選択してやる必要があります。

▼StaticMeshに対して設定する

StaticMeshは、元からチェックはついているのですが、対象にしたいStaticMeshに対して、collider というタグを付けてやる必要があります。なお、tagの名称はココから変更もできます。

こんな感じにしてやればOKです。
いざ、水浴び
というわけでできました。かなり簡単ですね。
あとは、パーティクル内のパラメータをいじれば、いろいろ可変可能です。
どんなパラメータがあるかは、公式ドキュメントに載ってるので見てください。
https://docs.unrealengine.com/5.1/ja/overview-of-niagara-effects-for-unreal-engine/
応用したもの
Gravityをいじったり、Velocityをいじったり、マテリアルをいじったり……応用ですがこんなのもできますね。ちょっとスライムっぽい感じです。(すらいむですよ。)
ちなみに、パーティクル数(SpawnCount)が多い状態で、スポーン範囲(SphereRadius)を小さくイジると、飛ぶ方向(Velocity)が設定してあるのに前に飛ばない!現象が発生します。
これは、おそらく水同士が引き付け合い、その場で合体してしまうことが原因なので、
- スポーン数(SpawnCount)を低くする
- スポーン範囲(SpawnRadius)を広げる
のどちらかをしてやる必要があります。(ココで結構つまりました…;;)
ホースからの水っぽく線上に飛ばしたい場合は、SpawnCountを極端に抑えて、Multipleで連続で出現させるのが良さそうでした。

以上、Niagaraで水しぶきを浴びる編でした。