UE4のPlanar Reflection(平面反射)について

  • 5
    いいね
  • 0
    コメント

この記事は裏UE4 Advecnt Calender 2016の16日目の記事になります。

UE4.12で実装されたPlanar Reflectionを自作プロジェクトで使ってみて、
その時分かったことや使い方についてまとめました。
今更な内容かもしれませんが、おさらいだと思って見ていただけると幸いです。

使ってみました

Screen Space Reflectionでもまあまあきれいなんですが、
いまいち満足いかないのでPlanar Reflectionを試してみました。
PR.jpg
きれいですね。
ビジュアルは文句ないです。
(水面はノーマルマップで歪ませてます。)

このプロジェクトは映像にしてYouTubeに上げています。
https://youtu.be/iJfnwQAZmBs
いつの間にかEPICさんにチラッと紹介していただいてました。


実装

まず設定でPlanar reflectionを有効にする必要があります。
RC.jpg
プロジェクト設定>Rendering>Lighting>Support Global Clip Plane for Planar Reflectionsにチェックします。
※バージョンによって微妙に違うみたいです。
再起動してねって言われるのでします。

使い方はReflection Captureと似たような感じ。
モードタブから配置>ビジュアルエフェクト>Planar Reflection(平面反射)をレベルに配置します。
cap_3.jpg

でっかい鏡のような板が出てきます。
平面反射させたいオブジェクトの面(今回の場合は水面)になるべくピッタリ配置します。
スケーリングや回転もできるので、オブジェクトに合わせて大きさと角度を調節します。
Gキーでゲームモードにするか、Planar Reflectionの詳細タブでShow Preview Planeのチェックを外すと、でっかい鏡が消えて対象のオブジェクトに反射が反映されているのがわかると思います。

パラメータ

日本語ドキュメントをもう随分眺めてるんですが、どうも理解を超えた一文が・・・

Distance from Plane Fade Start
反射平面からこの距離でピクセルを受け取って、平面反射の平面反射のフェードアウトを開始します。

『平面反射の平面反射』

・・・ほえ?
平面反射が何なのか分からなくなってきたでしょう?

以下は自分で検証した結果こういうことかな?って結論に至った内容です。
間違ってるよってのがあったら教えてください。

Normal Distortion Strength

ノーマルの強度を調節できます。波一つない水面にしてみたり。

Prefilter Roughness

低解像度のテクスチャをごまかすのに使うらしいです。
値を上げると反射がぼやけた感じになります。

Distance from Plane Fade Start,End と Angle from Plane Fade Start,End

この4つのパラメータ、要は距離や角度を指定して平面反射の影響範囲を変えられるみたいです。
表示モードを反射にすると影響範囲が分かりやすいです。
cap_5.jpg
実際に反射するのはRoughnessが低く設定されているマテリアルだけなので、画像の影響範囲大の場合でも岩や地面まで反射するわけではないようです。

Prefilter Roughness Distance

Prefilter Roughnessが適応される距離。
値0は全ての距離で。値を大きくすると反射面から離れた箇所から適応されます。

Screen Percentage

反射結果の解像度を調節します。値を下げれば多少負荷を抑えられます。

Extra FOV

ノーマルマップで反射面を歪めるとエッジ部分にリークが発生する場合があります。
それを誤魔化すために反射側のFOVをいじれるみたいです。

Render Scene Two Sided

説明が難しいんですが・・・
チェックを入れると、反射するオブジェクトが自身の裏面を反射するようになります。
こちらもノーマルマップの歪みによってリークが発生した場合に使うようです。

問題点

もちろん高負荷で、映りこみの情報量が多いとFPSが半分くらいに下がることも。
映像向けかもしれませんね。

それからもうひとつ。
PRB.jpg
反射結果に影がついてませんね。
最初なんだか分からず色々いじってみましたが、カスケードシャドウを切るかライトをステーショナリーにするかで解決しました。
PRCS.jpg
これは公式ドキュメントにちゃんと書いてありました。

動的シャドウは反射パスでは正しくありません。

たぶんこれの事なのかな?
平面反射とカスケードシャドウは一緒には上手いこと使えないようです。

以上です。
こういうのを書くのは初めてなので、分かりにくい点や間違った点などあると思うので
何かありましたら教えてください。

明日はシモダさんによる「裏的なナニカ」です。