Version: 2022.2
言語: 日本語
リフレクションプローブ
Using Reflection Probes

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

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

  • ベイクした (Baked) プローブは、エディター内で生成 (ベイク) されたリフレクションのキューブマップを格納します。リフレクションプローブインスペクターの下部の Bake ボタンと Lighting ウィンドウGenerate Lighting ボタンのいずれかをクリックすることでベイクを始動することができます。Lighting ウィンドウで Auto を有効にすると、シーンビューにオブジェクトを配置する際に、ベイクしたプローブは自動的に更新されます。ベイクしたプローブからのリフレクションは、インスペクターの Reflection Probe Static としてマークしたオブジェクトのみを表示することができます。Reflection Probe Static は、オブジェクトがランタイムに移動しないことを Unity に示します。
  • リアルタイム (Realtime) のプローブは、エディターよりもむしろプレイヤーで、ランタイムにキューブマップをつくります。つまり、リフレクションは静的オブジェクトに限定されず、リアルタイムで更新されシーンの変化を表示します。ただし、プローブのビューをリフレッシュするために、かなりの処理時間がかかります。そのため、慎重に更新を管理することが必要です。Unity では、スクリプトから更新を発生させることができるので、それらを発生させるタイミングを正確に制御することができます。また、プローブの更新に timeslicing を適用すれば、数フレームかけて徐々にプローブを更新することができます。
  • カスタム (Custom) のプローブタイプも使用可能です。これらのプローブを使用すると、ベイクしたプローブと同様に、エディターでビューをベイクできます。しかし、リフレクション用のカスタムキューブマップを使用することもできます。カスタムプローブは、ランタイムに更新することはできません。

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

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

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

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

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

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

Auto オプションをオンの場合 (Lighting ウィンドウ から)、シーンにオブジェクトを配置すると ベイクしたリフレクションが自動的に更新されます。自動ベイクを使用しない場合は、Reflection Probe インスペクターの Bake ボタンをクリックする必要があります。(Lighting ウィンドウの Generate Lighting ボタンもプローブの更新を始動します)。

自動または手動のベイクを使うかどうかにかかわらず、エディターで作業を続ける間、ベイク処理は非同期に行われます。ただし、静的オブジェクトを移動したり、それらのマテリアルを変更したり、あるいは、他の方法でその外観を変更すると、ベイク処理が再開されます。

カスタム製のプローブ

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

カスタムプローブのインスペクターの 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 オプションを選ぶ必要があります。

リフレクションプローブ
Using Reflection Probes