この記事は裏UE4 Advecnt Calender 2016の16日目の記事になります。
UE4.12で実装されたPlanar Reflectionを自作プロジェクトで使ってみて、
その時分かったことや使い方についてまとめました。
今更な内容かもしれませんが、おさらいだと思って見ていただけると幸いです。
##使ってみました
Screen Space Reflectionでもまあまあきれいなんですが、
いまいち満足いかないのでPlanar Reflectionを試してみました。
きれいですね。
ビジュアルは文句ないです。
(水面はノーマルマップで歪ませてます。)
このプロジェクトは映像にしてYouTubeに上げています。
https://youtu.be/iJfnwQAZmBs
いつの間にかEPICさんにチラッと紹介していただいてました。
We love sharing your amazing #UE4 projects! Here are the latest. Show us what you're working on using #EpicFriday! pic.twitter.com/QA2wuGEhyh
— Unreal Engine (@UnrealEngine) 2016年11月25日
##実装
まず設定でPlanar reflectionを有効にする必要があります。
プロジェクト設定>Rendering>Lighting>Support Global Clip Plane for Planar Reflectionsにチェックします。
※バージョンによって微妙に違うみたいです。
再起動してねって言われるのでします。
使い方はReflection Captureと似たような感じ。
モードタブから配置>ビジュアルエフェクト>Planar Reflection(平面反射)をレベルに配置します。
でっかい鏡のような板が出てきます。
平面反射させたいオブジェクトの面(今回の場合は水面)になるべくピッタリ配置します。
スケーリングや回転もできるので、オブジェクトに合わせて大きさと角度を調節します。
Gキーでゲームモードにするか、Planar Reflectionの詳細タブでShow Preview Planeのチェックを外すと、でっかい鏡が消えて対象のオブジェクトに反射が反映されているのがわかると思います。
##パラメータ
以下は自分で検証した結果こういうことかな?って結論に至った内容です。
間違ってるよってのがあったら教えてください。
Normal Distortion Strength
ノーマルの強度を調節できます。波一つない水面にしてみたり。
Prefilter Roughness
低解像度のテクスチャをごまかすのに使うらしいです。
値を上げると反射がぼやけた感じになります。
Distance from Plane Fade Start,End と Angle from Plane Fade Start,End
この4つのパラメータ、要は距離や角度を指定して平面反射の影響範囲を変えられるみたいです。
表示モードを反射にすると影響範囲が分かりやすいです。
実際に反射するのはRoughnessが低く設定されているマテリアルだけなので、画像の影響範囲大の場合でも岩や地面まで反射するわけではないようです。
Prefilter Roughness Distance
Prefilter Roughnessが適応される距離。
値0は全ての距離で。値を大きくすると反射面から離れた箇所から適応されます。
Screen Percentage
反射結果の解像度を調節します。値を下げれば多少負荷を抑えられます。
Extra FOV
ノーマルマップで反射面を歪めるとエッジ部分にリークが発生する場合があります。
それを誤魔化すために反射側のFOVをいじれるみたいです。
Render Scene Two Sided
説明が難しいんですが・・・
チェックを入れると、反射するオブジェクトが自身の裏面を反射するようになります。
こちらもノーマルマップの歪みによってリークが発生した場合に使うようです。
##問題点
もちろん高負荷で、映りこみの情報量が多いと倍以上の負荷がかかることも。
映像向けかもしれませんね。
以上です。
こういうのを書くのは初めてなので、分かりにくい点や間違った点などあると思うので
何かありましたら教えてください。
明日はシモダさんによる「裏的なナニカ」です。