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

リフレクションプローブの種類

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

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

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

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

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

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

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

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

ライティングウィンドウから Auto オプションがオンとなったとき、シーンにオブジェクトを置くとベイクしたリフレクションが自動的に更新します。連続ベーキングを利用していない場合、プローブを更新するためにリフレクションプローブインスペクターの Bake ボタンをクリックする必要があります(ライティングウィンドウの Build ボタンも、更新するためのプローブをトリガします)。

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

カスタム製のプローブ

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

カスタムプローブのインスペクターの Dynamic Objects プロパティーを使うと、Reflection Probe Static としてマークされていないオブジェクトを、リフレクションキューブマップに加えることができます。ただし、これらのオブジェクトの位置は、ベイクする際、リフレクション内で固定であることに注意してくださ。

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

リアルタイムプローブ

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

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

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

エディターにおいて、Realtime プローブは、Baked プローブと多くの同じワークフローを持ちますが、彼らはより迅速にレンダリングする傾向があります。ライティングウィンドウから Auto オプションがオンにしたとき、シーンにオブジェクトを置くとリフレクションが自動的に更新されます。自動化を有効にしていない場合、プローブを更新するためにリフレクションプローブインスペクターの Bake ボタンをクリックする必要があります(ライティングウィンドウの Build ボタンも、更新するためにプローブをトリガします)。

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

Note: 現在、Realtime プローブは、Reflection Probe Static オブジェクトを移動したときにシーンビューで彼らのリフレクションを更新するだけ、または、外観を変更するだけです。これは、移動するダイナミックオブジェクトは、これらのオブジェクトがリフレクションに表示されていても、更新が発生しないことを意味します。ダイナミックオブジェクトが変更されたときのリフレクションを更新するために ライティングウィンドウ 上にポップアップする Build ボタンから Bake Reflection Probes オプションを選ばなければなりません。

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