Version: 2022.2
言語: 日本語
リフレクションプローブのタイプ
より高度なリフレクションプローブの機能

Using Reflection Probes

The default Reflection Probe

Unity includes a dedicated manager—the SkyManager—to ensure that environment lighting affects your scene by default. The SkyManager automatically generates an ambient probe and default reflection probe to capture environment lighting.

To disable the environment contribution in the lighting result for a scene or GameObject that does not have manually created light maps and Light Probes, disable the default Reflection Probe and the ambient probe. To disable these probes, see Disabling the SkyManager.

Adding Reflection Probes

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

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

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

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

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

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

Positioning probes

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

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

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

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

Overlapping probe zones

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

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

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

Blending

Reflection Probe のブレンドを有効にするには、Graphic Settings > Tier settings の順に選択します。 Tier settings はUnity の ビルトインレンダーパイプライン でのみ可能です。ブレンドを有効にすると、反射オブジェクトがあるゾーンから別のゾーンに移動していくにつれ、次第に 1 つのキューブマップがフェードアウトし、他がフェードインします。この緩やかな遷移は特定のオブジェクトがゾーンの境界を横切ると突然反射する “映りこみ” を避けることができます。

ブレンドは Mesh Renderer コンポーネントの Reflection Probes プロパティを使用して制御します。4 つのブレンドオプションが利用可能です。

  • Off - リフレクションプローブのブレンドを無効にします。反射にはスカイボックスのみを使用します。
  • Blend Probes - 隣接したプローブのみをブレンドし、スカイボックスを無視します。このオプションは、「屋内」オブジェクトや、またはシーンの囲われている部分 (例えば、洞窟やトンネルなど) のために使用するといいでしょう。なぜなら、これらの場所からは空が見えないため、空が反射に反映されるべきではないからです。
  • Blend Probes and Skybox - Blend Probes のように動作しますが、ブレンドにスカイボックスも使用することができます。これは空が常に見えるような開けた場所にあるオブジェクトに使用するべきオプションです。
  • Simple - 2 つの重なるリフレクションプローブ群があるときに、プローブ間のブレンドを無効にします。

プローブの 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 値が他方よりも高い場合、より重要なプローブが通常の方法で他のものをオーバーライドします。


  • バージョン 5.6 で更新

  • 2017–06–06 公開ページ

リフレクションプローブのタイプ
より高度なリフレクションプローブの機能