ライトマップ UV を生成する

Unreal Engine で独自のライトマップ UV を生成する方法の概要です。

ライトマップで UV をアンラップするには時間がかかります。この時間を短縮する 1 つの方法は、Unreal Engine 5 (UE5) の自動生成ツールを使用して、インポート時または スタティック メッシュ エディタ を介して既存のテクスチャ UV からライトマップ UV を生成することです。  

注意・考慮事項

デフォルトでは、自動生成されたライトマップ UV は、スタティック メッシュの最初の UV (UE5 の UV チャンネル 0) から既存の UV チャートを再パッキングします。この UV は一般にテクスチャ UV として使用されるため、UE5 の自動生成ツールを使用しても、ライトマップ UV に最適な方法で UV チャートがレイアウトまたは設定されない可能性があります。

自動生成されたライトマップ UV を作成するときは、次のことを考慮してください。

  • 生成されたライトマップ UV には、再パッキングに既存のソース UV が必要となり、その再パッキングの品質は使用される UV と同じくらいになります。つまり、UV チャートが分割されず、適切にレイアウトされていない場合は、適切に再パッキングされません。

  • 再パッキング中、UE5 は UV チャートのエッジを分割して個別の UV アイランドを作成しません。ソース UV インデックスから既存の UV チャートのみを再パッキングします。

  • UV チャートは、個別にスケーリングまたはストレッチされたチャートで UV 空間のカバレッジを最大化して生成されるときに正規化されます。

インポート オプション設定

インポート中、[Generate Lightmap UVs (ライトマップUVの作成)] が有効になっている場合、デフォルトでスタティック メッシュに対してライトマップ UV が生成されます。ライトマップ UV は、スタティック メッシュの UV インデックス 1 (UE4 の UV チャンネル 0) から生成され、[Lightmap Coordinate Index (ライトマップ座標インデックス)] の 1 に割り当てられます。 

クリックしてフルサイズ表示。

スタティック メッシュ エディタで生成されたライトマップ UV を検査できます。詳細については、「ライトマップで UV をアンラップする」を参照してください。

ライトマップ生成設定

スタティック メッシュ エディタの [Build Settings (ビルド設定)] には、ライトマップ UV を生成および再パッキングするための設定があります。生成されたライトマップ UV を調整する場合、これらのオプションを使用すると、インポート中またはインポート後にライトマップの生成を行わなくて済みます。 

クリックしてフルサイズ表示。

以下の表で示している、ライトマップ UV の生成および再パッキングを制御するための UV 生成オプションを使用するには、[Generate Lightmap UVs (ライトマップUVの作成)] を有効にします。

クリックしてフルサイズ表示。

プロパティ

説明

Min Lightmap Resolution

UV をパッキングするときに UV チャートに必要な最小パディングを決定します。このターゲット値により、使用される最小ライトマップ解像度までのパッキングのテクセルが正確となります。これは、[Lightmap Resolution (ライトマップ解像度)] の値がこの値よりも低い場合に発生するライトとシャドウのにじみを制限します。

Source Lightmap Index

ライトマップ UV を生成する UV チャンネルを選択します。

Destination Lightmap Index

生成されたライトマップ UV が保存される UV チャンネルを設定します。

ライトマップ UV を生成する

以下では、スタティックメッシュ エディタから新しいライトマップ UV を生成する手順を説明します。

  1. スタティックメッシュ エディタ を開き、[Details (詳細)] パネルにある [LOD0][Build Settings (ビルド設定)] に移動します。

    クリックしてフルサイズ表示。

  2. 次の設定でライトマップ UV を生成します。

    クリックしてフルサイズ表示。

    • [Generate Lightmap UVs (ライトマップUVの作成)] を有効にします。

    • [Min Lightmap Resolution (最小ライトマップ解像度)] を最適な 2 のべき乗に設定します。この値が、このメッシュの使用する最小のライトマップ解像度となります。これにより、ライトとシャドウのアーティファクトが UV チャートに影響を与える可能性を下げることができます。

    • 通常、[Source Lightmap Index (ソース ライトマップ インデックス)] は「0」のままにしておくか、既存の UV チャンネルに設定して、ライトマップ UV を生成する必要があります。また、選択できるのは利用可能な UV チャンネルのみです。

    • [Destination Lightmap Index (宛先ライトマップ インデックス)] では、UV チャンネルを設定して、ライトマップ UV を作成または保存します。これは、任意の値 (このスタティックメッシュの現在の UV チャンネルの実際の数を表す値) に 1 を足した数値になります。

  3. [Apply Changes (変更を適用)] をクリックします。 

  4. [Details (詳細)] パネルの [General Settings (一般設定)] で次を設定します。

    クリックしてフルサイズ表示。

    • レベルに配置されたインスタンスに対してこのスタティックメッシュがデフォルトで使用する [Lightmap Resolution (ライトマップ解像度)] を入力します。入力する解像度は、[Build Settings (ビルド設定)] でライトマップ UV の生成に使用される [Min Lightmap Resolution (最小ライトマップ解像度)] よりも高くする必要があります。

    • [Lightmap Coordinate Index] の値をライトマップ UV に使用されている UV チャンネルに設定します。通常、これは [Build Settings (ビルド設定)] でライトマップ UV の生成に使用される [Destination Lightmap Index (宛先ライトマップ インデックス)] と一致させる必要があります。この UV チャンネルは、ライティング ビルド中のライトマップ テクスチャ生成時に使用される UV チャンネルを決定します。

この例では、テクスチャ UV を使用して新しいライトマップ UV を作成しています。テクスチャ UV は、ライトマップ UV を再パッキングするためのソースとして使用され、テクスチャ空間を無駄にせず最適に機能するようにレイアウトされています。この方法では、メッシュの一部は、重要度に基づいて大きく (または小さく) スケーリングされます。これも、テクスチャ空間を無駄にせず適切なテクスチャ解像度を得るためです。 

UV チャンネル 0 |テクスチャ UV レイアウト

UV チャンネル 1 |生成されたライトマップ UV レイアウト

ライトマップ UV が生成されると、同じ密度になるようにスケーリング (正規化) され、各 UV チャート間に十分なパディングを使用して UV 空間にパッキングされて、ライト ビルドから発生するライトとシャドウのアーティファクトが回避されます。上の画像では、生成されたライトマップ UV に少し無駄な空間があることにお気付きかもしれませんが、これは無視できる程度のものなので、この無駄な空間を有効活用するためだけにカスタムツールで UV を再加工する必要はありません。

既存のライトマップ UV を再生成する

スタティックメッシュ エディタの [Build Settings (ビルド設定)] を使用して、既存のライトマップ UV の再生成 (または再パッキング) を実行できます。スタティックメッシュのライトマップ UV を再生成する利点は次のとおりです。

  • メッシュを再インポートしなくても、[Min Lightmap Resolution (最小ライトマップ解像度)] の値に応じて UV チャート間のパディングを変更することができます。これは、個々の UV チャートが多数あり、ライトマップ UV でパッキングをより密接にしたい場合に最も理想的な方法です。

  • これにより、以前に生成されたライトマップ UV チャンネルを含む、任意の [Source Lightmap Index (ソースライト マップ インデックス)] から既存のライトマップ UV を再パッキングできます。

次の手順は、インポートされたスタティックメッシュからカスタム UV を再生成する方法を示しています。

  1. スタティックメッシュ エディタを開き、[Details (詳細)] パネルにある [LOD0][Build Settings (ビルド設定)] に移動して、次のオプションを設定します。

    クリックしてフルサイズ表示。

    • オプション [Min Lightmap Resolution (最小ライトマップ解像度)] に新しい値 (より高い/低い値) を設定します。これにより、UV チャート間のパディング量を調整できます。

    • [Source Lightmap Index (ソース ライトマップ インデックス)] を再パッキングする UV チャンネルに設定します。

    • [Destination Lightmap Index (宛先ライトマップ インデックス)] を [Source Lightmap Index (ソース ライトマップ インデックス)] と同じ値に設定します。

  2. [Apply Changes (変更を適用)] をクリックします。

以下は、元々スタティックメッシュとともにインポートされたカスタム ライトマップ UV の比較です。この UV チャートは互いに偏った状態でスケーリングされていることがわかりますが、重複する UV がないという基準を満たしていることから、これはライトマップ UV としてまったく問題はありません。UV を再生成すると、すべての UV チャートが正規化され、均等に分散されたライトとシャドウのベイクの結果が得られます。また、各 UV チャートには適切な量のパディングが付与され、シャドウや光漏れのアーティファクトが少なくなります。

インポートされたカスタムライトマップUV

最小ライトマップ解像度256で| 再パッキングされたライトマップ

カスタム ライトマップ UV は、プレイヤーがより近い距離で視認する小さなピースをカバーするのに焦点を当てていることに留意してください。一部のピースのカバーしている部分を増やすことで、ライトマップの解像度を低くしても再パッキングされたライトマップの解像度と同じ結果を得られます。必要な場合、特定のアセットについて UE4 外部で対処することもできます。

Unreal Engine のドキュメントを改善するために協力をお願いします!どのような改善を望んでいるかご意見をお聞かせください。
調査に参加する
キャンセル