UDN
Search public documentation:

LightmassToolsJP
English Translation
中国翻译
한국어

Interested in the Unreal Engine?
Visit the Unreal Technology site.

Looking for jobs and company info?
Check out the Epic games site.

Questions about support via UDN?
Contact the UDN Staff

Lightmass ツール

ドキュメント概要: デバッギング、トラブルシューティング情報を含む Lightmass の便利なツールの概要。

ドキュメントの変更ログ: DanielWright により作成。

概観

これは、LightmassJP を最大限に活用するための、デバッギング、トラブルシューティングを含む多くの便利なツールのためのページです。

ツール

StaticMesh ライティング情報

このダイアログは、静的メッシュでの頂点マッピングとテクスチャ マッピングの素早い比較を可能にします。また、2 つの間の大量のメッシュを素早く切り替える簡単な方法を提供します。

UnrealEd の 'View (ビュー)' メニューから、'StaticMesh Lighting Info (StaticMesh ライティング情報)' を選択して、ダイアログを開きます。

StaticMeshLightingInfo_70.jpg

ボタン

  • Close (閉じる) - ダイアログを閉じます。
  • Rescan all levels (すべてのレベルを再スキャン) - マップ内のすべてのレベルの静的メッシュを再スキャンし、リストに挿入します。
  • Rescan selected levels (選択されたレベルを再スキャン) - Level Manager (レベル マネージャ) タブで選択されたレベルで、静的メッシュを再スキャンします。
  • Rescan current level (現在のレベルを再スキャン) - 現在のレベルでのみ静的メッシュを再スキャンします。
  • Go To (ジャンプ) - レベル内の選択されたメッシュにジャンプします。
  • Sync Browser (ブラウザを同期) - Content ブラウザを選択されたメッシュ ソース StaticMesh に同期します。
  • Swap (切り替え) - 選択された入力のマッピング方法を切り替えます。
  • Swap Ex... (切り替え Ex) - 選択された入力のマッピング方法を切り替え、テクスチャ マッピングにオーバーライドする解像度に促します。
  • Set to Vertex (頂点に設定) - 選択された入力が頂点マッピングを使用するように設定します。
  • Set to Texture (テクスチャに設定) - 選択された入力がテクスチャ マッピングを使用するように設定します。
  • Set to Texture Ex... (テクスチャ Ex に設定) - 選択された入力がテクスチャ マッピングを使用するように設定し、オーバーライドする解像度に促します。

コラム

  • Level (レベル) - 静的メッシュ アクタのあるレベルです。
  • Actor (アクタ) - 静的メッシュ アクタの名前です。
  • Static Mesh (静的メッシュ) - アクタのソース静的メッシュです。
  • Current Type (現在のタイプ) - 入力に使用される現在のマッピング タイプ (頂点、またはテクスチャ) です。
  • Has Lightmap UVs (ライトマップ UV を保持) - メッシュがライトマップ UV を持つかどうかを示します。
  • Resolution (解像度) - 使用されるテクスチャ ライト/シャドウマップ メモリを計算するのに使用される解像度です。
  • Texture LightMap (テクスチャ ライトマップ) (Bytes (バイト)) - テクスチャ マッピングされたライトマップを使用している/していた場合に使用するメッシュのメモリ量です。
  • Vertex LightMap (頂点ライトマップ) (Bytes (バイト)) - 頂点マッピングされたライトマップを使用している/していた場合に使用するメッシュのメモリ量です。
  • Num LightMap Lights (ライトマップ ライトの数) - メッシュでライトマップの生成に貢献しているライトの数です。
  • Texture ShadowMap (テクスチャ シャドウマップ) (Bytes (バイト)) - テクスチャ マッピングされたシャドウマップを使用している/していた場合に使用するメッシュのメモリ量です。
  • Vertex ShadowMap (頂点シャドウマップ) (Bytes (バイト)) - 頂点マッピングされたシャドウマップを使用している/していた場合に使用するメッシュのメモリ量です。
  • Num ShadowMap Lights (シャドウマップ ライトの数) - メッシュでシャドウマップの生成に貢献しているライトの数です。

リスト内で入力をダブルクリックしても、'Go To (ジャンプ)' 機能を実行し、レベル内のメッシュにジャンプします。

複数の入力は、最初の 1 つを選択した後に、追加の入力を [Ctrl] クリックすることで選択できます。

ライティング ビルド情報

LightingBuildInfo ダイアログは、問題となるアセットをトラックするのを手助けするような最後に完成したライティング ビルドに関する情報を提供します。

これは、以下の情報を表示します。

ライティング タイミング

以下のライティング ビルド Swarm のスクリーンショットでは、他よりも長くかかったマッピングがあるのが分かると思います。

SwarmStatus_LongTime.jpg

これは、より長い青い 'Processing Mappings (マッピングの処理)' によって分かります。

この場合、Lighting Build Info (ライティング ビルド情報) ダイアログの '% Lighting Time (% ライティング時間)' コラムが、問題を起こしているオブジェクトをトラックする上で便利になります。ダイアログを開くには、UnrealEd の 'View->Lighting (ビュー -> ライティング)' メニューから 'Lighting Build Info (ライティング ビルド情報)' を選択します。

StaticMesh の例

以下の例は、LightmassDayBright でライティングをビルドした後の Lighting Build Info (ライティング ビルド情報) ダイアログを表しています。

LightingTimingsSelect.jpg

'% Lighting Time (% ライティング時間)' は、各マッピングにかかった全体のライティング時間のパーセンテージを表示しています。この例では、もっとも高いパーセンテージは StaticMeshActor_160 でした。入力をダブルクリックすることで、レベル内の原因となるメッシュにジャンプすることができます。

ViewportSelectedObject.jpg

オブジェクトが選択された状態で、そこが問題となっているかどうかを決定するのにプロパティを見ることができます。

SelectedObjectProperties.jpg

ハイライトされたプロパティである bOverrideLightMapRes はチェックされていません。これは、ソース StaticMesh が解像度をコントロールすることを示しています。'SponzaNew_Resources.SM_Ivy_Sponza_01_Branches' のプロパティを見てみると、以下のようになります。

SelectObjectStaticMeshProperties.jpg

この静的メッシュの LightMapResolution が、どちらかというと高い 512 であることが分かります。StaticMesh は、シーン内の他のオブジェクトによって使用されることが可能なので、StaticMeshComponent でライトマップの解像度をオーバーライドすることで、これを修正することができます。bOverrideLightMapRes オプションをチェックして、OverriddenLightMapRes 値を 128 に設定することで、タイミングで以下の変更を加えることができます。

LightingTimingsResult.jpg

ライトマップされたサーフェスのコレクション

ライティングをビルドする際に、ライトマップを生成するのにエンジンは異なる BSP 断片を一緒にマージします。これは、コプレイナー サーフェスでライトマップ シームを減少させるためです。これを Lighting Build Info (ライティング ビルド情報) ダイアログに反映させるために、そのマッピングに寄与するブラシのコレクションを表す一時的なオブジェクトが作成されます。このオブジェクトが LightmappedSurfaceCollection です。

これらの入力の 1 つをダブルクリックする (または 'Go To (ジャンプ)' ボタンを押す) と、エディタ ビューポートで以下のセレクションになります。

ViewportSelectedSurfaceCollection.jpg

これは、1 つの BSP セクションが選択されているように見えますが、実際は以下で異なる色でハイライトされている 3 つの異なるサーフェスです。

ViewportSurfaceCollection_Surfaces.jpg

ライトマップ サーフェス コレクションのライティングのビルドにかかる時間を減少させるには、サーフェスの解像度を低くするか、微妙に異なった LightmassSettings を与える (例えば、1 つに 1.0 (デフォルト) の DiffuseBoost を与え、隣接するものに 1.001 の DiffuseBoost を与える) ことでライティングを強制的に別々にビルドさせます。

アンマップされたテクセルとメモリ コスト

Lighting Build Info (ライティング ビルド情報) ダイアログは、非効率的なライトマップをトラックするのに便利なメモリを含む 2 つの付属のコラムをも含んでいます。 'Unmapped Memory Cost (kB) (アンマップされたメモリ コスト)' コラムは、オブジェクトのアンマップされたテクセルによって無駄になっているメモリの量を表示しています。 '% Unmapped Texels (% アンマップされたテクセル)' コラムは、アンマップされたオブジェクト ライトマップのテクセルのパーセンテージを表示しています。

例として、VCTF-Sandstorm でライティングをビルドした後に、'Lighting Build Info (ライティング ビルド情報)' ダイアログを開いて、'Unmapped Memory Cost (kB) (アンマップされたメモリ コスト)' コラムをクリックし、メモリ コスト値をもっとも高いものから低いものへソートします。以下が、その結果です。

DOC_LBIUnmappedMemCost.jpg

シーン内のオブジェクトにジャンプすると、以下を見ることができます。

DOC_LBIUnmappedViewport.jpg

静的メッシュを右クリックして、'Find in content browser (Content ブラウザで検索)' を選択すると、Content ブラウザでこのアクタの StaticMesh を選択することができます。これを Static Mesh Editor (静的メッシュ エディタ) で開き、UV オーバーレイを有効化すると、以下のようになります。

DOC_LBIUnmappedUVs.jpg

ご覧のように、このレイアウトにはかなりの無駄があります。UV オーバーレイの 50% に近いスペースが空となっています。 このメッシュのライトマップ UV を修正することで、ライトマップ メモリのより効率的な使用につながります。

トラブルシューティング

ライトマップ エラー カラー

Lightmass が Preview (プレビュー)、または Medium (ミディアム) のクオリティのビルドでコンテンツ エラーを起こす場合、ライトマップのカラーをエラー カラーでオーバーライドします。High (ハイ) や Production (プロダクション) のクオリティのビルドでは、Lightmass はエラー カラーリングをスキップして、エラーがなかったかのようにライティングを計算するので、予期しない結果を得る場合があります。

非固有ライトマップ UV - 影響されるテクセルはオレンジ色になります。これは、1 つ以上の三角形がテクセルの中心と重なるので、一度に 2 つの場所に存在するようにセットアップされたことになり、テクセルが正常にリットされないということです。解決法は、アーティストの作成したライトマップ UV を修正するか、新しい UV を静的メッシュ エディタで生成し、LightMapCoordinateIndex を適切に設定することです。

左は、非固有ライトマップ UV でテクセルに割り当てられたオレンジ色です。真ん中は、非固有 UV と異なるメッシュが、立方体の 6 面が UV 空間でどのように重なっているかを示しています。右は、正常で固有の UV と似たメッシュのもので、UV 空間で三角形は重なり合っていません。

NonUniqueLightmapUVs.jpg

UniqueLightmapUVs.jpg

ライトマップ UV のラップ - 影響されるテクセルは緑色になります。これは、静的メッシュのライトマップ UV がすべて [0, 1] の範囲にない場合に起きます。これは、ラップしているということです。解決法は、アーティストの作成したライトマップ UV を修正するか、新しい UV を静的メッシュ エディタで生成し、LightMapCoordinateIndex を適切に設定することです。

静的メッシュ上のアンマップされたテクセル - 静的メッシュ上の黄色のテクセルは、通常、下にある三角形がライトマップ UV 空間で退化している (ゼロ エリア) という兆候です。これは、2 つ以上の三角形の頂点が同じライトマップ UV を持っており、三角形がゼロ ライトマップ エリアを持っているということです。テクスチャ空間を節約するために、ライトマップ UV をこのようにセットアップすることは問題ありませんが、ライティングはこれらの三角形に合わなくなるということを覚えておいてください。

YellowOnStaticMesh.jpg

BSP 上のアンマップされたテクセル - BSP 上の黄色のテクセルは、BSP の解像度が低すぎて、BSP 三角形上にあるテクセルが 1 つも検知されていないことを示しています。BSP サーフェスのプロパティ (F5) を開き、Lightmap Resolution (ライトマップ解像度) を低い数に変更しましょう (これは、結果としてより多くのライトマップ テクセルになります)。

YellowOnBSP.jpg

固有ライトマップ UV の生成

以下は、非固有ライトマップ UV と固有ライトマップ UV の例で、静的メッシュ エディタに表示してあります。非固有ライトマップ UV は古い UE3 の静的ライティング、Lightmass の両方で、正常なライティングを表示していません。これは、静的メッシュ エディタで固有ライトマップ UV を生成することで、簡単に修正することができます。これをするには、Mesh (メッシュ) メニューで “Generate Unique UV (固有 UV を生成)” を選択します。表示されるオプション ウィンドウで、使用されていない UV チャンネル (通常はドロップダウンの最後の数です) を選択します。“OK” ボタンを押して、UV を生成します。今度はこれらの UV を使用するようにメッシュを設定します。LightMapCoordinateIndex を今生成された UV チャンネルの数に設定します。UV は “Show UV Overlay (UV オーバーレイを表示)” ウィンドウ モードを使用して、ビューすることができます。また、静的メッシュの LightMapResolution を必ず設定するようにしましょう。これは、静的メッシュ エディタ内で、または個別のプリミティブ コンポーネント プロパティでオブジェクトごとに設定できます。

左が非固有ライトマップ UV で、右が生成された固有ライトマップ UV です。右の UV では 2 つの三角形が重なっていないことに注目してください。これが、固有であるということです。

badlightmapUVs.JPG generatedUVs.JPG

ライトマップのメッシュをアンラップする詳細に関しては、ライトマップのアンラッピングを参照してください。ライトマップ UV は通常、3ds Max のようなモデリング パッケージで、アーティストにより手動で行われるほうが、クオリティや効率面からいってもより良いレイアウトがされます。

Lightmass マテリアル生成におけるマテリアル表現式の警告

マテリアル属性は Lightmass にエクスポートされますが、それがどのメッシュに適用されるかに関わらず、マテリアルの 1 バージョンのみがエクスポートされます。これは、VertexColor や Transform などのメッシュ特有のマテリアル表現式は、正常な値を持たないということです。CameraVector、DestColor、GameTime のようなビュー、時間に依存する表現式は正常にキャプチャすることができません。これらのマテリアル表現式は、Lightmass がマテリアル属性をエクスポートする際に、意味のある/正常な値を生成しないという事実のため、定数値にコンパイルします。

bVisualizeMaterialDiffuse WorldInfo オプションを使用して、デバッギングのために、マテリアル ディフューズのみのライトマップをオーバーライドします。ライティングのみビューモードのライトマップは、BaseEngine.ini の LightingOnlyBrightness によってスケールされることに留意してください。これを (1,1,1) (エディタの再起動が必要になります) に設定して、ライトマップに格納されるエクスポートされたマテリアル ディフューズ カラーを実際のマテリアル ディフューズにマッチさせます。また、すべての関連する DiffuseBoosts (Primitive (プリミティブ) ごとと Level (レベル) ごと) が 1.0 に設定されていることを確認してください。その後、Unlit (アンリット) ビュー モード (Emissive と Diffuse のみを表示します) と Lighting Only (ライティングのみ) を切り替えることで、エディタでこれらを切り替えることができます。bVisualizeMaterialDiffuse がチェックされた状態でビルドされた際に、左のスクリーンショットは Unlit (アンリット) モードを示し、右のスクリーンショットは Lighting Only (ライティングのみ) モードを示しています。

Unlit.jpg bVisualizeMaterialDiffuse.jpg

正常にエクスポートしないマテリアルがある場合は、ライティングをビルドするのに、LightmassReplace マテリアル ノードを使用して、マテリアルの異なるバージョンをエクスポートしてください。

以下の表は、どの正常にエクスポートされない表現式が何にコンパイルされるかを列挙しています。

表現式 何にコンパイルするか
SceneDepth 0.0f
DestColor (0.0f,0.0f,0.0f)
DestDepth 0.0f
DepthBiasedAlpha SourceAlpha
SceneTexture (0.0f,0.0f,0.0f)
WorldPosition (0.0f,0.0f,0.0f)
CameraWorldPosition (0.0f,0.0f,0.0f)
CameraVector (0.0f,0.0f,1.0f)
LightVector (1.0f,0.0f,0.0f)
ReflectionVector (0.0f,0.0f,-1.0f)
Transform 入力ベクトルはそのまま
TransformPosition 入力ベクトルはそのまま
VertexColor (1.0f,1.0f,1.0f,1.0f)
VertexColor w/ bUsedWithSpeedTree (1.0f,1.0f,1.0f,0.0f)
RealTime 0.0f
GameTime 0.0f
FlipBookOffset (0.0f, 0.0f)
LensFlareIntesity 1.0f
LensFlareOcclusion 1.0f
LensFlareRadialDistance 0.0f
LensFlareRayDistance 0.0f
LensFlareSourceDistance 0.0f

よくある質問

質問: シャドウ周縁部 (シャドウの柔らかさ) のサイズは、どうすれば変更できますか?

回答: (ポイントとスポット ライトの) LightSourceRadius を増加させるか、(指向性ライトの) LightSourceAngle を増加させると、シャドウを柔らかくすることができます。オクルーダ距離も、シャドウがどれぐらい柔らかいかの要因となってきます。

質問: 間接ライトの量はどのようにしてコントロールできますか?

回答: 間接ライトの量は、グローバルに、ライトごと、プリミティブごと、またはマテリアルごとにコントロールすることができます。各ライトの IndirectLightingScale は、バウンスされたライトがどれぐらい放射されるかを変更し、さまざまな DiffuseBoost 設定は、マテリアルのディフューズをスケールします。これは、各サーフェスとの相互作用でライトがどれぐらいバウンスされるかをコントロールします。