夜風のMixedReality

xRと出会って変わった人生と出会った技術を書き残すためのGeekなHoloRangerの居場所

UnityでReflectionProbeを使用して反射感を演出する

本日はUnity学習枠です。

UnityではマテリアルからMetallicや、Smoothnessの値を使用することで反射を再現することができます。

f:id:Holomoto-Sumire:20220408215928p:plain

しかしデフォルトではスカイボックスは反射されるものの周囲にあるはずのほかのオブジェクトが映りこむことはありません。

これらを軽量な計算で映り込ませる手法としてリフレクションプローブ(ReflectionProbe)があります。

〇リフレクションプローブとは?

リフレクションプローブはUnityのオブジェクトのようにシーンに配置することができ、その地点からの360度画像を保持することでその地点周辺のオブジェクトに対して反射感を提供します。

docs.unity3d.com

使用するためにはヒエラルキーウィンドウで右クリック、[Light]から[ReflectionProbe]を選択します。

f:id:Holomoto-Sumire:20220408220745p:plain

今回はURPのサンプルシーンを使用しており、このシーンにはもともとリフレクションプローブの設定が行われていましたが、削除しゼロ一で再設定します。

f:id:Holomoto-Sumire:20220408221156p:plain

 ヒエラルキーウィンドウで作成したリフレクションプローブを選択すると選択している間のみ金属間のある球体が現れます。

 これが反射感の確認に使用するオブジェクトです。

 反射されるオブジェクトは[Static]なオブジェクトである必要があります。 このオブジェクトはUnityでシーン実行中に動かないオブジェクトに対して設定することができます。

f:id:Holomoto-Sumire:20220408222045p:plain

 シーン上にはもう一つ、BoxColliderのような黄色いキューブが現れます。

 f:id:Holomoto-Sumire:20220408221343p:plain

 これはこのエリアの中で指定したリフレクションプローブの反射を反映させるというものになります。

 このエリアはインスペクターウィンドウから[Size]および[Offset]で大きさと位置を変えることができます。

 f:id:Holomoto-Sumire:20220408221730p:plain

 これを設定することで反射を持つオブジェクトに周囲のオブジェクトが反射されるようになりました。

 f:id:Holomoto-Sumire:20220408222336p:plain

 ただしリフレクションプローブで設定したエリアから反射を行うオブジェクトが出た場合リフレクションプローブの影響を受けなくなります。

 f:id:Holomoto-Sumire:20220408222509p:plain

 このため複数のリフレクションプローブを設定することでオブジェクトが動く範囲での反射を実装できます。

 f:id:Holomoto-Sumire:20220408222829p:plain

 この際にも前述のようにリフレクションプローブはリフレクションプローブのある座標からの全天周囲画像の影響を反射として利用するため、できるだけ反射を行うオブジェクトとリフレクションプローブの座標はあっている必要があります。

f:id:Holomoto-Sumire:20220408222904p:plain

 本日は以上です。リフレクションプローブは前から存在や効果は知っていたものの本格的に使うのは初めてで、簡単な使い方ですが、絶大な効果で非常に勉強になりました。