グローバルイルミネーション (GI) ライトマップには、Baked と Realtime の 2 種類があります。どちらを使用するかは、環境ライティングを使っているか、特定のライトを使っているかによります。
グローバルイルミネーション (環境ライティング) は、Realtime か Baked に設定できます。Window > Lighting と移動し、__ Ambient GI__ ドロップダウンメニューからオプションを選択します。
ライト は、 Realtime、Baked 、Mixed のいずれかに設定できます。Inspector ウィンドウに移動し、__Baking __ ドロップダウンメニューからオプションを選択します。
マテリアルには Emission の制御があり、Realtime か Baked に設定できます。詳細は Standard Shader マテリアルの Emission パラメーター に関するドキュメントを参照してください。
ライトマップ | プロパティー |
---|---|
Baked | ベイクしたライトマップは主に、ランタイムにまったく変化しないライトに使用します (例えば、街灯など)。したがって、ライトマップに静的なレンダリングとして格納されます。機能には直接ライティング、間接ライティング、アンビエントオクルージョンが含まれます。 |
Realtime | リアルタイムライトマップは主に、ランタイムにアニメーション化されるライトに使用します (例えば、点滅する街灯など)。したがって、リアルタイムでレンダリングされる必要があります。機能には間接ライティングのみが含まれ、たいてい低解像度です。直接ライトはライトマップには格納されず、リアルタイムでレンダリングされます。 |
Mixed | ライトを Mixed モードに設定すると、ベイクしたライトマップに影響し、さらに、非静的オブジェクトにリアルタイムの直接ライティングを行います。 |
これらのライトマップの 1 つ、または両方を使用してシーンを照明できます。その選択によって、ライティングの影響とその結果の GI を加えるライトマップが決まります。
使用している UV を可視化することは大切です。Unity にはこれを支援する可視化ツールがあります。最初に、Lighting ウィンドウ ( Window > Lighting) を開き、下の方の Auto チェックボックスをチェックします。これによって、ベイクと事前計算が最新の状態で維持され、UV の表示に必要なデータを出力します。処理が終わるまで待ちます (大きいシーンや複雑なシーンには時間がかかります)。
事前計算されたリアルタイム GI の UV を見るには
これは、このメッシュのインスタンスのうち選択したものが持つリアルタイムライトマップの UV レイアウトを表示します。
複数のインスタンスをリアルタイムのライトマップにパックすることができます。したがって、表示されるチャートの中には、実際には他のゲームオブジェクトに属するものがあります。
注意 インスタンスのグループ化に関して、リアルタイムライトマップとベイクしたライトマップの間に直接の一致はありません。同じリアルタイムライトマップの 2 つのインスタンスが、2 つの異なるベイクしたライトマップに存在する場合があり、その逆もあります。
ベイクした UV を見るには
図のように、ベイクした UV は、事前計算されたリアルタイム UV とは大きく異なります。これは、ベイクした UV と事前計算したリアルタイム UV の要件が異なるためです。
たとえ Preserve UVs をチェックしても、ベイクした GI で事前計算されたリアルタイム GI と同じ UV を取得することはできません。
できたとしても、予期せぬ場所にひどいエイリアシング (明るいエッジや暗いエッジなど) が現れます。これは、リアルタイムのライトマップの解像度が意図的に低くなっているので、リアルタイムでそれらを更新することが可能であるからです。これはグラフィカルな品質には影響しません。なぜなら、一般的に周波数が低い (つまり突然光の強度が変化しない、または細かいパターンを持たない) 間接ライティングのみを格納するからです。直接ライトと影は、標準のリアルタイムライティングとシャドウマップを使用して別々にレンダリングされます。直接ライトは一般的に周波数が高い (つまり、シャープなエッジから影に移る箇所など、光の強度が突然変化したり、細かいパターンを持つことが多い) こと、そしてそのためにこの情報を取得するためにより高い解像度のライトマップが必要だからです。
低解像度のライトマップは、チャートがテクセルを共有するときにブリーディングの問題を引き起こす可能性があります。これはライティングの品質に悪影響を及ぼしますが、UV チャートを再パックして周囲の半ピクセルの境界を確保することで解決されます。この方法では、双線形補間を使用していても、(最も詳細なミップで) チャートを またがって サンプリングすることはありません。半ピクセルの境界が保証されたチャートの他の利点は、チャートをすぐ隣に置くことができ、ライトマップのスペースを節約できることです。
要約すると、事前計算したリアルタイムの GI ライトマップに使う UV は常に再パックされます。
再パックすると、チャートの周りの半ピクセルの境界を保証し、UV はインスタンスのスケールとライトマップ解像度に依存することができます。高い解像度のライトマップを取得するために UV を拡大すると、もはやこの半ピクセルの境界は保証されません。UV は、インスタンスのスケールとライトマップ解像度を考慮に入れて、個々にパックされます。したがって、リアルタイムの UV は インスタンスごと です。同じスケールと解像度のオブジェクトが 1000 あると、それらは UV を共有します。
2017–07–04 限られた 編集レビュー でパブリッシュされたページ
2017–07–04 ドキュメンテーション更新のみ。Unity の機能に変更なし。