グローバルイルミネーション (GI) ライトマップには、Baked と Realtime の 2 種類があります。どちらを使用するかは、環境ライトを使っているか、特定のライトを使うかによって異なります。
グローバルイルミネーション (環境照明) は、 Realtime (リアルタイム) または Baked (ベイク) に設定することができます。 Window > Rendering > Lighting と進み、 Ambient GI ドロップダウンメニューから 1 つを選択します。
Lights は Realtime、Baked、Mixed に設定できます。
マテリアルには Emission の制御があり、Realtime か Baked に設定できます。詳細は Standard Shader マテリアルの Emission パラメーター に関するドキュメントを参照してください。
Lightmap | プロパティ |
---|---|
Baked | ベイクしたライトマップは主に、ランタイムにまったく変化しないライトに使用します (例えば、街灯など)。したがって、ライトマップに静的なレンダリングとして格納されます。機能には直接ライティング、間接ライティング、アンビエントオクルージョンが含まれます。 |
Realtime | リアルタイムライトマップは主に、ランタイムにアニメーション化されるライトに使用します (例えば、点滅する街灯など)。したがって、リアルタイムでレンダリングされる必要があります。機能には間接ライトのみが含まれ、たいてい低解像度です。直接ライトはライトマップには格納されず、リアルタイムでレンダリングされます。 |
Mixed | ライトを Mixed モードに設定すると、ベイクしたライトマップに影響し、さらに、静的でないオブジェクトにリアルタイムの直接ライティングを行います。 |
これらのライトマップの 1 つ、または両方を使用してシーンを照明できます。その選択によって、ライトの影響とその結果の GI を加えるライトマップが決まります。
使用している UV を可視化することは大切です。Unity にはこれを支援する可視化ツールがあります。最初に、Lighting ウィンドウ (Window > Rendering > 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 の機能に変更なし。