パルテア

どうぶつの森の美術館 〜ゲームエンジン(Unity)グラフィックス ライティング リフレクションプローブの使用〜

デフォルトのリフレクション プローブ

Unity には、環境照明がデフォルトでシーンに影響を及ぼすようにするための専用のマネージャーである SkyManager が含まれています。SkyManager は、環境照明をキャプチャするためにアンビエント プローブとデフォルトのリフレクション プローブを自動的に生成します。

手動で作成されたライト マップとライト プローブがないシーンまたはゲームオブジェクトの照明結果における環境の影響を無効にするには、デフォルトのリフレクション プローブとアンビエント プローブを無効にします。これらのプローブを無効にするには、「SkyManager の無効化」を参照してください。

リフレクション プローブの追加

シーン内の任意のオブジェクトにリフレクション プローブ コンポーネントを追加できますが、各プローブを個別の空のゲームオブジェクトに追加するのが標準です。通常のワークフローは次のとおりです。

新しい空のゲームオブジェクトを作成し (メニュー: ゲームオブジェクト > 空の作成)、それにリフレクション プローブ コンポーネントを追加します (メニュー: コンポーネント / レンダリング / リフレクション プローブ)。または、シーンに既にプローブがある場合は、代わりにそれを複製する方が簡単でしょう (メニュー: 編集 / 複製)。

新しいプローブを目的の場所に配置し、オフセット ポイントと効果ゾーンのサイズを設定します。
必要に応じて、プローブの他のプロパティを設定して、その動作をカスタマイズします。

必要な場所がすべて割り当てられるまで、プローブの追加を続けます。

反射を表示するには、シーン内に少なくとも 1 つの反射オブジェクトも必要です。 簡単なテスト オブジェクトは、次のように作成できます。

球体などのプリミティブ オブジェクトをシーンに追加します (メニュー: ゲームオブジェクト / 3D オブジェクト / 球体)。
新しいマテリアルを作成し (メニュー: アセット / 作成 > マテリアル)、デフォルトの標準シェーダーをそのままにします。
メタリック プロパティとスムーズさプロパティの両方を 1.0 に設定して、マテリアルを反射させます。

新しく作成したマテリアルを球体オブジェクトにドラッグして割り当てます。
これで、球体にプローブから取得した反射を表示できるようになりました。 反射の基本的な効果を確認するには、1 つのプローブを使用した簡単な配置で十分です。

最後に、反射が表示される前にプローブをベイクする必要があります。ライティング ウィンドウで自動生成オプションが有効になっている場合 (これがデフォルト設定です)、シーン内でオブジェクトを配置または変更すると反射が更新されますが、応答は即時ではありません。

自動ベイク処理を無効にした場合は、リフレクション プローブ インスペクターのベイク処理ボタンをクリックしてプローブを更新する必要があります。自動ベイク処理を無効にする主な理由は、多数のプローブがある複雑なシーンではベイク処理にかなりの時間がかかる可能性があるためです。

プローブの配置

プローブの位置は主にそのゲームオブジェクトの位置によって決まるため、オブジェクトを目的の場所にドラッグするだけで済みます。これを実行したら、プローブの効果ゾーンを設定する必要があります。これは軸に沿ったボックス形状で、その寸法は Box Size プロパティによって設定されます。

サイズ値を直接設定するか、インスペクターでサイズ編集モードを有効にして、シーン ビューでボックスの側面をドラッグすることができます (詳細については、Reflection Probe コンポーネント ページを参照してください)。プローブのフル セットのゾーンは、反射オブジェクトが通過する可能性のあるシーンのすべての領域をまとめてカバーする必要があります。

シーン内で反射が目立つ大きなオブジェクトの近くにプローブを配置する必要があります。壁の中央と角の周辺は、プローブの候補として適しています。小さなオブジェクトで視覚効果が強い場合は、近くにプローブを配置する必要があります。たとえば、オブジェクト自体が小さく、重要でなくても、キャンプファイヤーの炎を反射させたい場合があります。

適切な場所すべてにプローブを配置したら、各プローブの効果ゾーンを定義する必要があります。これは、前述のように Box Size プロパティを使用して行うことができます。壁は、その長さのほとんどに沿って 1 つのプローブ ゾーンだけを必要とする場合があります (少なくとも、外観がかなり均一である場合)。

ただし、ゾーンは壁に垂直な方向では比較的狭い場合があります。これは、壁がかなり近いオブジェクトによってのみ反射されることを意味します。場所によって外観がほとんど変わらないオープン スペースは、多くの場合、1 つのプローブでカバーできます。プローブのゾーンは、主要なワールド軸 (X、Y、Z) に揃えられており、回転できないことに注意してください。つまり、軸が揃っていない場合は、均一な壁に沿ってプローブのグループが必要になる場合があります。

デフォルトでは、プローブの効果ゾーンはビュー ポイントの中心に配置されますが、これは反射キューブマップをキャプチャするための理想的な位置ではない場合があります。たとえば、非常に高い壁のプローブ ゾーンは壁からある程度離れている可能性がありますが、ゾーンの中心ではなく壁に近いポイントから反射をキャプチャしたい場合があります。

オプションで、Box Offset プロパティを使用してビュー ポイントにオフセットを追加できます (つまり、オフセットは、プローブのキューブマップ ビューが生成される GameObject のローカル空間内の位置です)。これを使用すると、効果ゾーン内の任意の場所、またはゾーンの外側にビュー ポイントを簡単に配置できます。

重複するプローブ ゾーン

隣接する反射プローブのゾーンを重複せずに配置するのは非常に困難ですが、幸いにもそうする必要はありません。ただし、重複領域で使用するプローブを選択するという問題が残ります。デフォルトでは、Unity は反射オブジェクトの境界ボックスと重複する各プローブ ゾーンの交差を計算します。境界ボックスとの交差量が最も大きいゾーンが選択されます。

プローブ A は、オブジェクトとの交差が大きいため選択されます

プローブの重要度プロパティを使用して計算を変更できます。 重なり合うゾーン内では、重要度の高いプローブが重要度の低いプローブよりも優先されます。 これは、たとえば、小さなプローブ ゾーンが完全に大きなゾーン内に含まれている場合に役立ちます (つまり、キャラクターの境界ボックスと囲むゾーンとの交差が常に大きい可能性があるため、小さなゾーンが使用されることはありません)。

ブレンディング

Reflection Probe ブレンディングを有効にするには、[グラフィック設定] /[Tier 設定] に移動します。 Tier 設定は、Unity の組み込みレンダリング パイプラインでのみ使用できます。 ブレンディングを有効にすると、Unity は、反射オブジェクトが 1 つのゾーンから別のゾーンに渡るときに、1 つのプローブのキューブマップを徐々にフェードアウトし、もう 1 つのプローブのキューブマップをフェードインします。 この段階的な移行により、オブジェクトがゾーン境界を越えたときに、特徴的なオブジェクトが突然反射に「飛び出す」状況を回避できます。

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

オフ - 反射プローブのブレンディングは無効です。反射にはスカイボックスのみが使用されます。ブレンド プローブ - 隣接するプローブのみをブレンドし、スカイボックスは無視します。これは、"屋内" またはシーンの覆われた部分 (洞窟やトンネルなど) にあるオブジェクトに使用してください。これらの場所からは空が見えないため、反射に現れることはありません。

ブレンド プローブとスカイボックス - ブレンド プローブのように機能しますが、ブレンドにスカイボックスを使用することもできます。このオプションは、空が常に見える屋外のオブジェクトに使用してください。

シンプル - 重なり合う 2 つの反射プローブ ボリュームがある場合、プローブ間のブレンディングを無効にします。

プローブの重要度値が等しい場合、特定のプローブ ゾーンのブレンディング ウェイトは、オブジェクトの境界ボックスとの交差 (ボリューム) を、すべてのプローブとボックスとの交差の合計で割ることによって計算されます。たとえば、ボックスがプローブ A のゾーンと 1.0 立方単位で交差し、プローブ B のゾーンと 2.0 立方単位で交差する場合、ブレンド値は次のようになります。

プローブ A: 1.0 / (1.0 + 2.0) = 0.33
プローブ B: 2.0 / (1.0 + 2.0) = 0.67
言い換えると、ブレンドにはプローブ A の反射の 33% とプローブ B の反射の 67% が組み込まれます。

1 つのプローブが他のプローブ内に完全に含まれている場合は、内側のゾーンが外側のゾーンと完全に重なるため、計算を少し異なる方法で処理する必要があります。オブジェクトの境界ボックスが完全に内側のゾーン内にある場合、そのゾーンのブレンド重みは 1.0 です (つまり、外側のゾーンはまったく使用されません)。オブジェクトが部分的に内側のゾーンの外側にある場合、その境界ボックスと内側のゾーンの交差ボリュームは、ボックスの合計ボリュームで割られます。

たとえば、交差ボリュームが 1.0 立方単位で、境界ボックスのボリュームが 4.0 立方単位の場合、内側のプローブのブレンド ウェイトは 1.0 / 4.0 = 0.25 になります。次に、この値を 1.0 から減算して外側のプローブのウェイトを取得します。この場合、0.75 になります。

ブレンドに含まれる 1 つのプローブの重要度値が他のプローブよりも高い場合、通常どおり、より重要なプローブが他のプローブを上書きします。

    Course

  • 日時:2024/04/01 ~ 2025/03/31
  • 名称:どうぶつの森の美術館 〜ゲームエンジン(Unity)グラフィックス ライティング リフレクションプローブの使用〜
  • 場所:オンラインスクール
  • 料金:¥0 (消費税込)