【Unity】それぞれの GameObject に別の Reflection Probe を適用する方法

Unity

はじめに

Unity でシーンの反射情報を事前にキャプチャしてそれを GameObject(正確には Mesh Renderer)に適用したいときは Reflection Probe を使用することが多いかと思いますが、今回はその Reflection Probe を GameObject 毎(Mesh Renderer 毎)に別のものを適用する方法を紹介します。

今回はこのイメージ図のように赤と青の2つの球体とその間に鏡があるシーンで検証します。

このイメージ図のように鏡から少し左にズレた位置に Reflection Probe を1つだけ設置すると、赤い球の方の鏡は正常に反射しているように見えますが、青い球の方の鏡にも赤い球が写ってしまっています。

鏡の中心に Reflection Probe を置けば解決のような気もしますが、GameObject の中に Reflection Probe を埋め込むのはあまり良くない気がするので、できれば Reflection Probe は GameObject の外に配置したいところです。
(鏡のメッシュの内側も何かが描画されている場合はそれも反射情報に含まれてしまうので)

理想的なのはこのイメージ図のように、Reflection Probe を鏡の表面付近に2つ設置して赤い球の方の鏡も青い球の方の鏡も正常に反射しているという状態です。
これを実現するには各 Reflection Probe を各 GameObject に別々で適用させる必要がありますが、それはどのようにすればいいのでしょうか?

結論

やり方は非常にシンプルなので早速結論を書きます。

  1. まずはその Reflection Probe を適用したい GameObject をヒエラルキーで選択します。
  2. インスペクターの「Mesh Renderer > Probes > Anchor Override」にその Reflection Probe の GameObject をアサインします。

はい、これだけです。
Reflection Probe で作成したテクスチャをアサインする方法もあるかと思いますが、GameObject をアサインするだけでいけるのはとても手軽ですね!

最後に

お問い合わせ

    タイトルとURLをコピーしました