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

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

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

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

その3つのタイプを、以下に詳細に説明します。

Baked と Custom リフレクションプローブ

Baked リフレクションプローブは、そのリフレクションキューブマップが Unity のエディターでキャプチャーされ、プレイヤーの後続の使用のために保存されているものです(詳細は、リフレクションプローブを参照してください)。キャプチャプロセスが完了すると、リフレクションが “frozen” されるので、baked プローブは、移動しているオブジェクトに起因するシーンの変化を実行時に反応することができません。しかし、(変化に反応すると) Realtime プローブよりもはるかに低い処理オーバーヘッドがついてきます。多くの目的のために許容できます。たとえば、一つの移動する反射するオブジェクトだけがある場合、それは静的な環境を反映しなければならないだけです。

Baked プローブの使用

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

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

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

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

Custom プローブ

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

カスタムプローブのインスペクター上の Dynamic Objects プロパティーで、Reflection Probe Static としてマークされていないオブジェクトは、リフレクションキューブマップに含めることができるようになります。しかし、ベイクしている際、リフレクションにおいて、これらのオブジェクトのポジションが、まだ、“frozen” であることに注意してください。

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

Realtime プローブ

Baked プローブはさまざまな場面で有用であり、優れた実行時のパフォーマンスを持っていますが、それらは、プレイヤー内のライブを更新しないという欠点があります。これは、オブジェクトは、そのリフレクションは彼らと一緒に移動することなく、シーン内を移動できることを意味します。これがあまりに制限的である場合、Realtime プローブを使うことができます。そして、それは実行時にリフレクションキューブマップを更新します。このエフェクトは、かなり大きな処理のオーバーヘッドになりますが、よりリアリズムを提供します。

Realtime プローブの使用

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

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

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

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

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