Version: 2023.2
言語: 日本語
リフレクションプローブ
リフレクションプローブの使用

リフレクションプローブのタイプ

リフレクションプローブは、インスペクターの Type プロパティ (詳細については、リフレクションプローブ ページを参照) で選択する 3 つの基本的なタイプがあります。

  • Baked probes store a reflection cubemap generated (“baked”) within the editor. You can trigger the baking by clicking either the Bake button at the bottom of the Reflection Probe inspector or the Generate Lighting button in the Lighting window. The reflection from a baked probe can only show objects marked as Reflection Probe Static in the inspector. This indicates to Unity that the objects will not move at runtime.
  • リアルタイム (Realtime) のプローブは、エディターよりもむしろプレイヤーで、ランタイムにキューブマップをつくります。つまり、リフレクションは静的オブジェクトに限定されず、リアルタイムで更新されシーンの変化を表示します。ただし、プローブのビューをリフレッシュするために、かなりの処理時間がかかります。そのため、慎重に更新を管理することが必要です。Unity では、スクリプトから更新を発生させることができるので、それらを発生させるタイミングを正確に制御することができます。また、プローブの更新に timeslicing を適用すれば、数フレームかけて徐々にプローブを更新することができます。
  • カスタム (Custom) のプローブタイプも使用可能です。これらのプローブを使用すると、ベイクしたプローブと同様に、エディターでビューをベイクできます。しかし、リフレクション用のカスタムキューブマップを使用することもできます。カスタムプローブは、ランタイムに更新することはできません。

上記の 3 タイプの詳細を説明します。

ベイクしたリフレクションプローブとカスタムのリフレクションプローブ

ベイクした リフレクションプローブは、そのリフレクションキューブマップが Unity のエディターでキャプチャされ、プレイヤーで後に使用するために保存されます (詳細は、リフレクションプローブ - はじめに を参照してください)。キャプチャ処理が完了するとリフレクションが固定化されるので、ベイクしたプローブは、移動するオブジェクトによるシーンの変化をランタイムに反映することができません。ただし、ベイクしたプローブは、リアルタイムプローブ (変化の反映可) よりも処理オーバーヘッドがはるかに低くなり、多くの目的のために使用できます。例えば、1 つの移動する反射オブジェクトだけがある場合、静的な環境の反映のみを必要とします。

ベイクしたプローブの使用

ベイクしたプローブとして動作させるために、プローブの Type プロパティを Baked または Custom に設定する必要があります (カスタムプローブによって提供される付加的な機能については以下を参照してください)。

ベイクしたプローブによってキャプチャされたリフレクションには、Reflection Probe Static としてマークされたシーンオブジェクトのみを加えることができます (オブジェクトのインスペクターの左上にある Static メニューを使用)。さらに、Culling MaskClipping Planes プロパティを使って、リフレクションキューブマップに加えるオブジェクトを絞り込むことができます (プローブは、基本的に 6 つのキューブマップ面のそれぞれを表示するために回転するカメラのようなものです)。

To update probes, do one of the following:

  • In a probe’s Inspector window, select Bake.
  • In the Lighting window, select Generate Lighting. This updates all probes.

The bake process will take place asynchronously while you continue to work in the editor. If you move any static objects, change their materials or otherwise alter their visual appearance during the baking process, you must rebake to see the updated results.

カスタム製のプローブ

デフォルトでは、カスタムプローブはベイクしたプローブと同じように動作しますが、動作を変更する追加のオプションもあります。

カスタムプローブのインスペクターの Dynamic Objects プロパティを使うと、 Reflection Probe Static としてマークされていないオブジェクトをリフレクションキューブマップに加えることができます。

ノート: これらのオブジェクトの位置は、ベイクする際、リフレクション内で固定であることに注意してください。

Cubemap プロパティを使用すると、プローブに独自のキューブマップを割り当てることができます。したがって、その視点から “見る” ことができるものと完全に独立しています。これを利用して、例えば、リフレクションのためのソースとして、3D モデリングアプリケーションから生成されたスカイボックスやキューブマップを設定することができます。

リアルタイムプローブ

ベイクしたプローブはさまざまな場面で有用であり、ランタイムのパフォーマンスが優れていますが、それらは、プレイヤー内をリアルタイムで更新しないという欠点があります。つまり、オブジェクトのリフレクションが一緒に移動しなくても、オブジェクトはシーン内を移動できます。これがあまりに制約となる場合は、リアルタイム プローブを使うことができます。リアルタイム プローブはランタイムにリフレクションキューブマップを更新します。この効果は、より高い処理オーバーヘッドとなりますが、よりリアルな外観を実現できます。

リアルタイムプローブの使用

プローブがランタイムに更新できるようにするには、Reflection Probe インスペクターで Type プロパティを Realtime に設定する必要があります。(Baked プローブで行うように)、リフレクションをキャプチャするために Reflection Probe Static としてオブジェクトをマークする必要はありません。ただし、カメラにするのと同じように、Culling MaskClipping Planes プロパティを使用し、リフレクションキューブマップからオブジェクトを選択的に除外することができます (プローブは、基本的に 6 つのキューブマップ面のそれぞれを表示するために回転するカメラのようなものです)。

エディターでは、リアルタイムプローブはベイクしたプローブとほぼ同じワークフローですが、より高速にレンダリングされる傾向があります。

ノート: 現在、リアルタイムのプローブは、Reflection Probe Static オブジェクトを移動したり、見た目を変えるときのみに、シーンビューのリフレクションを更新します。つまり、移動する動的オブジェクトは、リフレクションに表示されていても、更新は発生しません。動的オブジェクトが変更される際にリフレクションを更新するためには、Lighting ウィンドウGenerate Lighting ボタンから Bake Reflection Probes オプションを選ぶ必要があります。

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