リフレクションプローブの種類
アドバンスド リフレクション プローブの特徴

リフレクションプローブの使用

Reflection Probe コンポーネントはシーンのどんなオブジェクトにも加えることができますが、通常は、それぞれのプローブを個々の空のゲームオブジェクトに加えることがほとんどです。基本的なワークフローは以下のとおりです。

  • 新規で空のゲームオブジェクトを作成し(メニュー: GameObject > Create Empty )、Reflection Probe コンポーネントそちらに加えます(メニュー: Component > Rendering > Reflection Probe )。また、すでにプローブをシーン中に作成している場合、新規に作成する代わりにそちらを見つけ出して複製する方が簡単です(メニュー: Edit > Duplicate )。
  • 新しいプローブをご希望の場所に設置し、Origin ポイントと影響の及ぶゾーンの大きさを設定してください。
  • オプションとして、挙動をカスタマイズするためにプローブにある他のプロパティーを設定します。
  • 割り当てが必要な場所全てに、プローブを追加していきます。

反射を確認するために、最低でも一つは反射するオブジェクトもシーンに配置する必要があります。簡単なテストオブジェクトは以下のように作成することができます。

  • スフィア等のプリミティブなオブジェクトをシーンに追加します(メニュー: GameObject > 3D Object > Sphere )。
  • 新しいマテリアルを作成(メニュー: Assets > Create > Material )し、デフォルトの Standard シェーダーのままにしておいてください。
  • MetalicSmoothness プロパティーをどちらも 1.0 に設定することでマテリアルが反射するようにしてください。
  • 新しく作成したマテリアルをスフィアオブジェクトにドラッグしてマテリアルの割り当てを行ってください。

これでスフィアがプローブから得られた反射情報を表示することができます。単一のプローブを用いた簡単な配置を行うことで、反射の基本的な効果を十分に確かめることができます。

最後に、プローブは反射が表示される前にベイクされていなければなりません。ライティングウィンドウAuto オプションを有効にしているのであれば(デフォルトで有効になっています)、反射は位置を変えたりシーン内のオブジェクトを変更するのに合わせて更新されていきます。ただし、その場合は瞬時には反応していきません。Continuous Baking を無効にするのであれば、プローブを更新するために、Reflection Probe のインスペクターにある Bake ボタンをクリックしなければなりません。継続的なベイクを無効にする主な理由は、多数のプローブのある複雑なシーンではベイク処理にかなりの時間を要することです。

プローブの配置

プローブの位置は主にゲームオブジェクトの位置で決定されますので、オブジェクトを希望の場所にドラッグするだけで調整が可能です。これを完了次第、影響の範囲を決めるプローブゾーンを設定するべきです。プローブゾーンというのは軸平行のボックス形状であり、大きさは Size プロパティーによって決定されます。size の値を直接設定することもできますし、インスペクターから size editing mode を有効にした上でシーンビューに表示されるボックスの端をドラッグすることもできます(詳しくは Reflection Probe コンポーネントのページを参照してください)。プローブはシーン全体で反射するオブジェクトが通る可能性のある場所すべてを適切にカバーしているのが望ましいです。

反射していることが顕著であるため、プローブはシーン中の巨大なオブジェクトの近くに設置するべきです。壁の中心や角の周辺はプローブを設置する候補にするとよいでしょう。小さいオブジェクトであっても強い視覚エフェクトを反射するのであればプローブを近くに設置しなければいけないかもしれません。例えば、小さいオブジェクトであってもたき火の炎を反射させたい場合などがそうです。

プローブをシーン中の適切な位置に配置したら、それぞれのプローブのエフェクトゾーンを定義する必要があります。こちらの設定は Size プロパティーを上記のように使用することでできます。(壁の形状がかなり平坦に近ければ)壁の長さに対してプローブゾーンは一つで事足りるかもしれません。しかし、ゾーンは壁の高さと比較すると低いかもしれません。これは、壁にかなり近いオブジェクトのみ反射できるということを暗示しています。ある場所とほかのある場所で外見が少ししか変化しないような開けた場所の場合、単一のプローブでカバーできることがよくあります。プローブのゾーンがメインワールド軸(X,Y,Z) によって整列されており、回転はできないことに注意してください。これは、プローブのグループの軸が整列されていない場合は均一な壁に沿わせる必要があるかもしれない、という意味です。

デフォルトでは、プローブのエフェクトゾーンはビューポイントの中心にありますが、そこはリフレクションキューブマップをキャプチャする理想の位置ではないかもしれません。例えば、とても高い壁のために用意したプローブゾーンは壁から距離を取って設置するかもしれませんが、ゾーンの中心よりも壁に近いポイントからキャプチャさせたいと思うことでしょう。オプションで Probe Origin プロパティーを使用することで、ビューポイントにオフセットを加えることもできます(すなわち、origin というのはゲームオブジェクトのローカル空間単位でのプローブのキューブマップビューが生成される原点です)。これを使用することで、エフェクトゾーン内のどこにでも簡単にビューポイントを設置することができ、それどころかゾーンの外側に設置することもできます。

プローブゾーンのオーバーラップ

リフレクションプローブの有効範囲を重複させることなく近接させて配置するのはとても難しいですが、重複を気にする必要はありません。しかし、これによって重複エリアでどちらのプローブを使用するか選択するという問題は残されることになります。デフォルトではまず、Unity は反射オブジェクトのバウンディングボックス間の交差点や、それぞれのオーバーラップしているプローブゾーンを計算します。そして、交差しているゾーンのバウンディングボックスの中で一番大きな体積を占めるものが選択されます。

交差している部分のオブジェクト面積が大きいため Probe A が選択されます
交差している部分のオブジェクト面積が大きいため Probe A が選択されます

プローブの Importance プロパティーを使用することにより、計算の修正を行うことができます。より importance の高いプローブはオーバーラップしているゾーン内の importance が低いものよりも高い優先度を持ちます。これは例えば、大きなゾーン内に完全に包み込まれている小さなプローブゾーン(すなわち、重複している片方のゾーンのバウンディングボックスの交差点のほうが常に大きいため、小さいゾーンが使用されることはありません)を使いたい場合などに便利です。

ブレンディング

ターゲットのプラットフォームが Shader Model 3 以上である場合、ゾーンが重複しているエリア内のプルーブ間で blending オプションを選択できます。blending が有効になっていると、Unity は反射オブジェクトが一つのゾーンから別のゾーンに移動していくにつれて、片方のキューブマップにフェードインしていくと同時に、もう片方をフェードアウトしていきます。この緩やかな遷移は特定のオブジェクトがゾーンの境界を横切ると突然“映りこむ”反射をするようなシチュエーションを避けることができます。

blending は Mesh Renderer コンポーネントの Reflection Probes プロパティーを使用することで管理されます。2 つの blending オプションが利用可能です。

  • Blend Probes は隣接したプローブのみをブレンドし、スカイボックスを無視します。このようなケースには “屋内の” オブジェクトや、シーンで覆われている部分(例えば、洞窟やトンネルなど)のために使用するといいでしょう。それらの場所からは空が見えないため、反射されるべきではないのです。
  • Blend Probes and SkyboxBlend Probes のように動作しますが、ブレンディングにスカイボックスも使用することができます。このオプションは空が常に見えるような開けた場所にあるオブジェクトに使用するべきオプションです。

プローブの Importance 値が同じである場合、オブジェクトのバウンディングボックスを伴う指定したプローブゾーンのブレンディング比重はすべてのプローブの合計でそれらの交差領域(体積)を除算することで計算されます。例えば、ボックスが Probe A のゾーンと 1.0 だけキューブ形状のユニットで交差し、Probe B のゾーンと 2.0 交差している場合ブレンディングの値は次のようになります。

  • Probe A: 1.0 / (1.0 + 2.0) = 0.33
  • Probe B: 2.0 / (1.0 + 2.0) = 0.67

言い換えれば、ブレンドは 33% だけ Probe A の反射を組み込み、67% だけ Probe B の反射を組み込むともいえます。

完全に他のものに内包されているプローブについて計算する場合、少し異なった扱いをしなければなりません。内側のゾーンが完全に外側のものと重複しているからです。オブジェクトのバウンディングボックスが完全に内側のゾーン内にある場合、ゾーンのブレンディング比重は 1.0 (すなわち、外側のゾーンは一切使われないということ)です。オブジェクトが部分的に内側のゾーンから外れている場合、その内側のゾーンを伴うバウンディングボックスの交差点の体積はボックスの総体積に除算されます。例えば、交差点の体積が 1.0 だけキューブ形状のユニットで交差し、バウンディングボックスの体積が 4.0 だけキューブ形状のユニットである場合、内側のプローブのブレンディング比重は 1.0 / 4.0 = 0.25 となります。この値は外側のプローブの比重を取得するために 1.0 から減算されます。この場合 0.75 となります。

包み込まれているプローブの Importance 値が包んでいるものよりも高い場合、より重要なプローブが通常の方法で他のものを上書きします。

リフレクションプローブの種類
アドバンスド リフレクション プローブの特徴