【Unreal Engine 4 勉強日記 #05】パーティクルで滝を作りたいんだけど・・・?

f:id:diographics:20180225114414g:plain

どうもコロケーサトーです。

前回紹介した今作成中のジオラマ

その要ともいえる滝なんですが、

・あきらかに負荷がかかってそう

・視界外になると滝が消失する(カリング)

・視点によって反発の処理が変わる=滝の流れが変わる(UE4の仕様)

という3つの問題点がありましたが、ある程度の解決ができたので取り急ぎ記事にしました。

 UE4のパーティクルの仕様

docs.unrealengine.com

まぁ、正しく深い内容については上のURLを読んでほしいのですが、ここでは自分のイメージで語りますので正確さについてはあまり期待しないように。

 

f:id:diographics:20180301235447g:plain

とりあえず、GPU Spriteモードでパーティクルを作り、それを滝として実装しようとすると👆のgifアニメみたいに途中でパーティクルが消えます。

f:id:diographics:20180301235721g:plain

どうやら赤線のとこに衝突判定が生じて、ココでごっそりパーティクルが消えてます。

実際は、

f:id:diographics:20180301235845g:plain

このように橋の下を潜り抜ける(この場合は上にも飛び越えちゃってるけど)ので、

👆の赤線のところで衝突して消えてるのはおかしいんですよね。

これは、Unreal Engineくんの粋なはからいで、パーティクルが発生しすぎて重くならないようにする機能なんですね。なので、視点によっては滝が全く湖に流れてこない場合もあります。これじゃ困る!

そこで、パーティクルのカスケードで、コリジョン判定のモードを変えます。

 

f:id:diographics:20180302000334p:plain

カスケード画面で、Collision (Scene Depth)を選択します。そして、Collision ModeをScene DepthからDistance Fieldに変更します。

このとき、警告が出る場合があると思いますが、そのときはプロジェクト設定をいじりましょう。

 

f:id:diographics:20180302210627p:plain

 

Scene DepthとDistance Fieldの違い

f:id:diographics:20180302104249g:plainf:id:diographics:20180302104552g:plain

Distance Fieldに設定すると、滝がきちんと下に流れるようになりました。

 

f:id:diographics:20180302104749g:plainf:id:diographics:20180302104835g:plain

Scene Depthの場合、視点によってパーティクルの流れ方が変わりますが、Distance Fieldに設定した場合は視点によらず同じ流れ方になります。

 

f:id:diographics:20180302205651g:plainf:id:diographics:20180302104952g:plain

 Scene Depthの場合、視点によっては地面の外へパーティクルが流れていきますが、Distance Filedの場合は地面の外にパーティクルが流れません。

おそらく処理は重くなると思いますが、自分が表現したかったことに一歩近づけたのでよかったと思います。

今日はここらへんで。では~~~