#memo

indiedev太郎

VolumetricFogを出す

https://i.gyazo.com/0f9577bd61707f76ffebbb40e4b5fed3.gif

VolumetricFogはなにかというと、上記gifのようないわゆる薄明光線が表現できる
最近だとINSIDEの懐中電灯や水中で印象的な使われ方をしていた

これまでUE4でこのような表現をする時は、三角錐やら板ポリにテクスチャ貼ってでやっていたが、ついに4.16のPreviewにてVolumetricFogが実装され、より綺麗かつインタラクションがある薄明光線が出せるようになったとのことなので簡単にレベルを用意してみた、最高
以下とりあえずVolumetricFogを出すまでの内容です



はじめに

UEver 4.16 Preview1


Preview版の機能なので将来変わる可能性がある、
ExponentialHeightFog、Light、MaterialでVolumetricFogの機能が追加されているので、それぞれを確認していく

Unreal Engine 4.16 Preview


ExponentialHeightFog

https://i.gyazo.com/7126d781cec4e830967e809872a24ed3.png

ExponentialHeightFogはデフォルトでは用意されていないため、まずはレベルに追加する

Unreal Engine | 指数関数的高さフォグ(Exponential Height Fog)のユーザーガイド

これは今までのバージョンではレベル全体にFogをのせる時に使用していたのだが、今回のアップデートで加えてVolumetricFogも出せるようになった、

https://i.gyazo.com/bf1084d646e5466a9a8b4c2f73ed1c5b.png

Detailsタブを見ると、VolumetricFogという項目が増えており、ここのVolumetricFogをEnableにすることで有効になる、
細かい設定は置いておき、次にLight側の設定を行う


Light

ExponentialHeightFogの設定だけではVolumetricFogは出ず、Light側の設定も行う必要がある

ちょっと効果をわかりやすくしたいので、デフォルトで配置されているDirectionalLightのIntensityを0にして、レベルに新たにPointLightを追加する
AttenuationRadiusを400くらいまで下げて、適当なジオメトリを用意し、光が重なるように配置してみる

https://i.gyazo.com/c3623aae5302c20d9a2a1b98dcdd1930.png


既にLightの中心からモヤーっとした光の広がりが出ていて、これがVolumetriFogです、
さらにLightのDetailパネルのLightカテゴリの下にある▼を押すとCastVolumetricShadowという項目があるので、これをEnableにする
このパラメータがEnableなら、影の計算が行われだんだんとVolumetricFogみが増してくる、マウスでポチポチすると光芒がわかりやすい

ここで一度ライトをビルドしてみる、するとVolumetricFogがおかしいことになる

https://i.gyazo.com/201079e348d06c2d58c759954e4b4fb6.png

なので、VolumetricFog(Shadow)を出したいLightのMobilityはMovableにする必要がある(っぽい)
StaticMeshには影響を与えないよう設定して、VolumetricFog専用のLightを用意するみたいな運用をするといいのかもしれないです
もちろんMovableなのでキャラクターなんかにアタッチすると、プレイヤーからの光芒が表現できる

また、今触ってきたパラメーターはBPグラフからもアクセスできるようになっている
https://i.gyazo.com/47820c37a7b01c5d825abcefb1e4715c.png


Material

https://i.gyazo.com/4b366661d7d7152bf1dd7c9fbd90f4fa.png

Material設定のDomainにVolumeが追加されている、これを選ぶとBlendModeは絶対にAdditiveにしろと言われるのでそうする
Outputパラメーターの名前も変化して、BaseColorがAlbedoに、OpacityがExtinctionになる

このマテリアルはパーティクルシステム用で、適当にマテリアルを作成してパーティクルを組んで見る、パーティクルシステムのほうはいつも通りで大丈夫です

https://i.gyazo.com/8e4f806566ba14c41c1622b8a02ba256.gif

Fogの濃度に応じて加算されているのがわかる、VolumetricFog環境下での煙エフェクトなんかが作れますね、おわり


余談

  • 今回はPointLightを見たけれど、StationaryなDirectionalLightでやるときの設定はまだ詰めていないのでそのうち
  • ライトのベイク周りの挙動がいまいち理解できていないのでそのうち
  • Forumに書いてあるけれど、DistanceFieldを利用して動的なオブジェクトに対してもソフトな影を生成する、RayTracedDistanceFieldShadowsではまだVolumetricFogはでない
  • →これがつかえないとなると現状、動的なオブジェクトから柔らかいVolumetricFogが出ているのにもかかわらずその影はパキッとしているみたいな気持ち悪い画になる(直前のgifとかめちゃくちゃ気持ちが悪い)
  • →LightのShadowResolutionScaleを調節するなどで擬似的なソフトシャドウは得られるけれど、光源近くは最悪になるので、なんとかやっていってください