mcpField
B
bake-lighting

bake-lighting

github.com/playcanvas開発31282 回インストール1 週間前に更新
リポジトリ

bake-lighting について

bake-lightingは、エンジンのシーンで静的ライティングをベイクし、静的ジオメトリの毎フレームの照明・シャドウ処理を減らすスキルです。Lightmapperの設定、メッシュとライトの構成、UV要件、オフラインベイクの使いどころを説明します。

主な機能

  1. 01Lightmapperの設定とベイク制御
  2. 02ライトマップモードとアンビエントオクルージョン
  3. 03第2 UVセットの要件
  4. 04ランタイムとオフラインの選択指針
  5. 05動的オブジェクトのシャドウに関する注意

活用シーン

  1. 01静的シーンジオメトリのライティングをベイク
  2. 02インポートしたメッシュのライトマップUVを確認
  3. 03ランタイムまたはオフラインのベイクを選択

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/playcanvas/skills --skill bake-lighting

インストール後、Claude Code で/bake-lightingを入力して読み込まれたか確認します。

詳細

静的ライティングをベイクする

ライトマップを使うと、静的なジオメトリに対する静的ライトのシャドウとライティングにかかるフレームごとのコストをなくせます。

  • Application は Lightmapper を登録します。手動で AppOptions を初期化する場合は、 lightmapper = Lightmapper を設定します。
  • ライトで bake = true を設定します。照らすすべてのメッシュがライトマップ化されたら、 affectDynamic = false を設定します。
  • 各メッシュで render.lightmapped = true を設定します。設定しないと、affectDynamic をオフにしたときに ライティングされなくなります。lightmapSizeMultiplier でサイズを調整します。castShadowsLightmap を使うと、メッシュ同士でシャドウを落とせます。
  • scene.lightmapMode でモードを設定します。フラットなディフューズには BAKE_COLOR を、法線マップまたはスペキュラマップを使用したマテリアルに方向情報を追加するにはデフォルトの BAKE_COLORDIR を指定します。
  • ライトなしで AO をベイクするには、scene.ambientBake、ambientBakeNumSamples、 ambientBakeOcclusionBrightness、ambientBakeOcclusionContrast を設定します。
  • Engine は最初にフレームをレンダリングするときに一度ベイクします。後から追加したノードや再ベイクする場合にのみ、 app.lightmapper.bake(null, mode) を呼び出します。

2つ目の UV セットが必要です

すべてのメッシュインスタンスが SEMANTIC_TEXCOORD1 を持つ場合にのみ、ノードはベイクされます。そうでない場合はスキップされ、デバッグビルドでログが出るだけで、動的ライティングのままになります。プリミティブにはこのセットがありますが、インポートした GLB にはないことがよくあります。確認してから、UV 展開するか再エクスポートしてください。

デバイス上で行うか、オフラインで行うか

対象デバイスで bake() の所要時間を計測してください。起動時の予算を超える場合、またはランタイムライトマッパーでは生成できないディテールが必要な場合にのみ、テクスチャのみを配布するオフラインベイクに切り替え、追加のダウンロードサイズを明記してください。

ベイク済みのライトの中を移動する動的オブジェクトには、近似的な遮蔽とコンタクトシャドウが必要です。そうしないと、貼り付けたように見えます。ベイク済みシャドウの中と外で verify-pixels のキャプチャを比較してください。

コメント