ランタイムライトマップ
All the lighting in this scene is provided by lightmap textures
ライトマップ生成は、静的シーンのライティング情報を事前に計算し、テクスチャに保存するプロセスであり、材料に適用されます。これは、多くの光源とジオメトリが静的または環境的である場合、シーンを照らす効率的で現実的な方法です。
ランタイムライトマップ生成
PlayCanvasは、ライトマップの生成に便利なソリューションを提供しています。エディタ内の標準Lightコンポーネントを使用することで、どのライトをライトマップの生成に使用するか、どのライトをランタイムでシーンを動的に照らすために使用するかを選択できます。ベイクに設定したライトが、アプリケーションがライトマップを生成してシーンを照らす際に使用されます。
ランタイムライトマップの多くの利点があります。
- ライティングはランタイムで行われない。
- 静的ライトを何百個も使用してシーンの照明を行うことができる。
- ほとんどの場合、ランタイムでライトマップをレンダリングする方が、多くのライトマップテクスチャをダウンロードするよりも高速です。
- エディタで 静的ライトと動的ライト を混合することができます。
- ランタイムで再ベイクができます。
- ライトマップはHDRです。
- 色と方向の両方のデータをベイクすることができ、ベイクされた表面にスペキュラリティを設定できます。
ただし、ランタイムライトマップの欠点は、現時点ではグローバル・イルミネーションや一部の特殊なベイキングツールの高度な機能をサポートしていないことです。
バッチ処理を使用している場合、ランタイムライトマップが適用されません。なぜなら、各ライトマップオブジェクトが独自のライトマップテクスチャを必要とするためです。
ベイクされるライトの設定
各Lightコンポーネントには、ライトマップをベイクするための次の設定が含まれています。デフォルトでは、新しいライトはダイナミックに設定されています。
- Bake Lightmap – 有効にすると、ライトは範囲内にある任意のライトマップ付きモデルのライトマップをベイクします。
- Bake Direction – ライトがライト方向情報ベイクに寄与するかどうかを指定します。これは、Scene SettingでColor and Direction Lightmapping Modeを選択した場合、スペキュラリティの結果に影響します。
ライトの振る舞いを変更する2つの追加オプションがあります: Affect Dynamic と Affect Lightmapped です。これらは、ランタイムでライトがどのモデルに作用するかを決定します。これらのオプションのどちらかが有効になっている場合、ライトはランタイムで動作し、ランタイムコストが発生します。
- Affect Dynamic – 有効にすると、ライトはライトマップ付きでないすべてのモデルに作用します。
- Affect Lightmapped – 有効にすると、ライトはライトマップ付きのすべてのモデルに作用します。
ライトは、Bake LightmapとAffect Lightmappedの両方を有効にすることはできません。モデルのライトマップを作成するためにライトが同じランタイムライトを追加した場合、ライトはランタイムで同じように照明を追加し、同じ作業が二度行われることになります。
ライトマップライトは、ダイナミックライトと同じ Shadows 設定を使用しますが、影の計算はライトマップの生成時に一度だけ行われます。このため、ライトマップライトで影が有効になっている場合、コストはずっと少なくなります。詳細はShadowsページを参照してください。なお、ベイクについてはShadow Cascadeのオプションは無視されます。
ソフトディレクショナルライト
デフォルトでは、ベイクされたライトはハードシャドウを投影します。視覚的な品質を向上させるために、方向光の場合、ベイク方向オプションが無効化されている場合には、ソフトベイクされたシャドウが利用可能です。この場合、さらに2つのオプションがあります。
- Bake Samples – ライトをライトマップにパッキングするために使用するサンプルの数を指定します。デフォルトは1で、最大値は255です。この値はベイクのパフォーマンスに影響を与えます。値をできるだけ低く設定する必要があります(5〜20)。
- Bake Area –半影の角度を度数で指定します。Soft Shadow Boundaryを作成します。
次の画像は 、サンプルが15でAreaが10の場合のハードシャドウとソフトシャドウの違いを示しています。
環境ライトのベイク
PlayCanvasは2種類の環境ライティングをサポートしています: Ambient ColorとSkyboxです。これらは、デフォルトではランタイムで両方とも適用されています。
ランタイム環境ライトの適用の制限事項は、Ambient Occlusionの欠如です。代替案として、環境ライトをライトマップにベイクすることができ、その際にAmbient Occlusionも含まれます。これは、グローバル設定のLightmappingセクションで構成できます。
Ambient Bakeが有効になっている場合、環境ライトの貢献はAmbient Occlusionを含むライトマップにベイクされます。Samples設定は、ベイクのパフォーマンスに影響を与え、できるだけ低く設定する必要があります (5-20)。
次の画像は、Ambient Occlusionを含むAmbient Colorの効果を示しています。
ライトマップのフィルタリング
Soft Directional Lightや環境ライトのベイキングの場合、ベイクパフォーマンスを向上させるために低いサンプル数を使用することがあります。これにより、以下の画像のようなバンディングアーティファクトが作成されます(15サンプル使用)。
ライトマップの品質を向上させるには、より多くのサンプルを使用できます。これは、100個のサンプルを使用する次の画像でわかるように、可能な限り最高の品質になります。
よりパフォーマンスのある代替品として、ライトマップは、パフォーマンスを向上させるために、許容できる品質のためにスマートの両側ぼけを使用してフィルタリングできます。これは、15のサンプルを使用し、フィルタリングを有効にする次の画像で見ることができます。
フィ ルタリングは最終的な焼きライトマップで行われ、ライトマップが縫い目全体にフィルタリングされていないため、包装されていないUVの縫い目に目に見えるエッジを作成できることに注意してください。したがって、フィルタリングはすべてのシーンに適していない場合があります。アーティファクトを最小限に抑えるには、強力なフィルターと多数のサンプルのバランスをとる必要があります。
ベーキングのモデルのセットアップ
各 Model または Render コンポーネントは、ライトマップを受信するために、ライトマッピングを有効にする必要があります。LightMappedオプションをチェックすることにより、コンポーネントのプロパティでライトマッピングを有効にできます。
**キャストライトマップシャドウ (Cast Lightmap Shadows) **オプションは、モデルがライトマップにシャドウをキャストするかどうかを判断します。生成されたライトマップテクスチャの解像度を確認できます。また、UV1の領域に乗数を適用してそのサイズに影響を与えるオプシ ョンもあります。ライトマップサイズの乗数については、以下で説明します。
一般的な光設定
使用できる光設定のいくつかの組み合わせがあります。それぞれにユースケースがあり、異なる組み合わせのあるライトを使用することにより、高品質のビジュアルとパフォーマンスのバランスをとることができます。
ベイク | 非ベイクに影響 | ベイクに影響を与えます | 説明 |
---|---|---|---|
false | true | false | これはデフォルトの動的ライトです。すべての非ライトマップモデルに影響します。 |
true | false | false | このライトは、ライトマップモデルのライトマップを生成し、実行時には費用がかかりません。ほとんどの静的環境ライトは、この設定を使用できます。 |
true | true | false | このライトはライトマップを生成しますが、非光マップモデルにも影響します。この光で照らされる必要がある動的/移動エンティティがある場合に役立ちます。たとえば、プレーヤーのキャラクターにも影響を与える顕著な環境光。 |
false | true | true | このライトは、ライトマップモデルと非ライトマップモデルの両方に影響する動的なライトです。 |