ライトマップ UV 座標の計算

UE4 でスピードツリー モデルのライトマップ UV 座標を計算します。

UE4 で静的ライティング (ライトマス) を使用するには、モデルに対してアンラップされた UV 座標一式を計算しなければなりません。この UV マッピングはモデルのライトマップと呼ばれます。良いライトマップにするには、一部は科学、一部はアートが必要です。以下のステップでは、スピードツリーでライトマップ UV マッピングを計算する方法について詳しく説明します。

左側の図は、モデルのライトマップと密度です。右側の図は、UE4 でライトマップが適用されたモデルです。

ステップ 1:ライトマップ密度のレンダリング モードに切り替えます。

[Render] ツールバー ボタンを使用して、レンダリング モードを Lightmap Density に切り替えます。画面は以下のようになります。

ue4_starting_lightmap.jpg

このビジュアル化では、ライトマップの解像度がモデル全体にうまく分布しているかを表し、UE4 の同じビジュアル化モード(Show -> Lightmap density) と厳密に一致することを意図しています。モデルの緑色の部分は理想的な密度を表しています。青色の部分はライトマップの解像度が低すぎることを示し、UE4 でライトマップがビルドされる際にアーティファクトが表示される可能性があります。赤色の部分はライトマップの解像度が高すぎて、そのジオメトリで無駄に使われていることを表しています。

ライトマップ自体は、左下隅でレンダリングされます。モデルの一部を選択すると、ライトマップで表される場所で見ることができます。ライトマップ内でトライアングルを選択し、それがモデルのどの部分かを見ることもできます。モデルの大きなセクションが、ライトマップで大きなセクションになるように可能な限りライトマップを使用したいでしょう。これを行う方法ついては、後で詳しく説明します。

ビジュアル化ではモデルの単位が重要です。ツリー ジェネレータを選択し、Lightmap:Scale を編集し、UE4 にインポートした場合と同じ大きさでモデルをスケーリングします。この場合のデフォルト値は、インポータのデフォルト値と一致します。

ビューポート内でライトマップがどれくらいの大きさでレンダリングされるかを変更できます。これは、Window プロパティ で対応するプロパティを編集して行います。

ステップ 2:ライトマップの解像度を選択

ライトマップの解像度は、各プロジェクトの要件とツリーの複雑度によってかわります。目標としては、シーン内へのモデルの配置を考えて適切な範囲になるように、使用するライトマップの解像度を可能な限り低くすることです。

ツリー ジェネレータを選択し、Lightmap:Resolution プロパティを編集することで、ターゲット ライトマップ解像度を設定します。モデルが複雑すぎて選択した解像度に合わない場合があります。その場合、出力ウィンドウに警告が表示されます。レンダリングのアーティファクトを防ぐために必要な 1 テクセルのボーダーを維持しながら、解像度はモデル内の各ノードがライトマップ内で少なくとも 1 テクセルになるような最も低いものになります。

ステップ 3:ライトマップの微調整

解像度を選んだら、次にモデル全体でライトマップがどのように分布するかを調整し、モデルで最も密度を必要とする部分の密度が高くなるようにします。一般的に、木の幹、低い枝、根の部分で高密度を必要とします。こうした場所はプレイヤーの目につきやすく、密度が低すぎるとアーティファクトが目立ちます。葉は多くの場合、比較的低密度にし、適度に小さいライトマップにモデルを合わせるようにします。

ライトマップの密度分布を調整するには、以下のツールを組み合わせて使用します。

  • Reset - Tools -> Reset lightmap の順に選択し、葉以外のすべてのライトマップのスカラーを 1.0 に設定します。各葉がちょうど 1 テクセルに、最初はそれ以上にならないように葉を 0.0 に設定します (後で増やします)。

  • Material Scales - 各マテリアルは Unwrap scale と呼ばれるプロパティを持ちます。この値を増減すると、マテリアルを使用するジオメトリの各部分の相対サイズが変更されます (キャップで非常に役立ちます)。

  • Generator/Node Scales - ジオメトリを収容できる各ジェネレータ/ノードの組み合わせは、Lightmap:Scale プロパティを持ちます。この値を変更すると、ライトマップにおける選択したオブジェクト空間のサイズを変更します。枝の分布カーブを使用して、オブジェクトそのもののライトマップ空間の分布をシフトできます (使用する実際のライトマップ エリアを変更せずに)。このカーブを使用して、ジオメトリが狭くなるにつれて枝のライトマップ密度は先端近くで自然に高くなるが同じテクスチャ空間を使用するという事実に対処します。

  • Lightmap Resolution - 選択した解像度でうまくいかない場合、ステップ 2 で行ったように高い解像度を選択して高くします。レイアウトが大幅に変わるため、リセットしてやり直す必要があるかもしれません。

ノードの編集モードで個々の枝、葉状体、木々の葉を拡大し、特に問題があるエリアに対処することができます。

ベストプラクティス:枝が適切になるまで、葉をゼロに保ちます。次に何もない空間を埋めるように葉を拡大します。

我々のアルゴリズムでは、選択された解像度にできる限り何でも入れようとします。あるコンポーネントを大きくしすぎて、適合しないものがある場合、アルゴリズムがサイズを調整し、適合するようにそのサイズを変更します。これが起こると、それまで良い状態だった密度が突然失われることがあります。こうした影響は、編集したばかりのスケールを低くすることで範囲内に戻して対処できます。

ステップ 4:UE4 でライトマップの解像度を選択します。

UE4 にモデルをインポートすると、すべてのスタティックメッシュと同様に 64 のデフォルトのライトマップ解像度になります。メッシュのアセットを選択し、ここで使用したライトマップの解像度 (Details (詳細) -> Static Mesh Settings (スタティックメッシュの設定) -> Lightmap Resolution (ライトマップの解像度)) を入力します。UE4 でライティングをビルドすると、一部の難しいジオメトリ タイプのライトマップで素晴らしい結果が得られるはずです。

このページは Unreal Engine の前のバージョン用です。現在リリースされている Unreal Engine 5.3 に対して更新は行われていません。
Unreal Engine のドキュメントを改善するために協力をお願いします!どのような改善を望んでいるかご意見をお聞かせください。
調査に参加する
キャンセル