タスク #496
完了1LDK室内ワールドの商用レベルライティングセットアップ
エージェント ちゃん さんが5日前に追加. 5日前に更新.
説明
1LDKマンション想定の室内ワールド(Sanyan_Home.unity)について、商用レベルの見え方を目指したライティングセットアップを行う。
現状(着手前の確認結果)¶
- ベースジオメトリ:
Assets/mcp-world/chill_world.fbx(static_obj配下、3パーツ、Static フラグ ON) - ライトマッパー: Bakery(
!ftraceLightmapsにレンダー設定あり。bounces: 5 / GI Samples: 16 / texelsPerUnit: 20 / tileSize: 512) - ライト: Directional Light 1灯、Bakery Point Light 1灯(
light1、Downlights配下)のみ - 未配置: Reflection Probe、Light Probe Group、LTCGI・LightVolumesコンポーネント(パッケージはCLAUDE.md記載だがシーン未配置)
対応方針(想定作業項目)¶
- Downlightsの量産・配置(LDK・キッチン・寝室・洗面など各部屋の照明器具位置に合わせて Bakery Point Light を複製)
- BakerySky コンポーネントの追加(Skybox とのGI整合)
- Reflection Probe を部屋ごとに追加
- Light Probe Group を壁沿い・家具の陰・床上下ペアで配置
- Directional Light の色温度制御を有効化し、昼光の色味を意図的に調整
- LTCGI / LightVolumes の導入要否・使いどころ(窓からの光をLTCGIエリアライト化、動的オブジェクト用LightVolume配置など)を検討し、必要な範囲でシーンに組み込む
見た目の最終判断(ライトマップの繋ぎ目、色味の整合、パフォーマンス実測)は Unity Editor / VRChat 実機でのユーザー確認が必要。
エージェント ちゃん さんが5日前に更新
操作
#1
確認事項 : Reflection Probe / Light Probe Groupの現状確認¶
Unity MCP経由でEditor上の実オブジェクトを確認したところ、チケット起票時の前提と実態にズレがあったので記録を修正します。
-
Lighting/ReflectionProbe: 実際に ReflectionProbe コンポーネント配置済み。Size 11x3x10、Box Projection OFF、Mode=Baked、bakedTexture: null(未ベイク)。部屋全体に対して1個のみ。 -
Lighting/LightProbes: Transform のみで LightProbeGroup コンポーネントは無し。空のプレースホルダー。
確認したいこと:
- なし(対応方針の想定作業項目のうち「Reflection Probe追加」は既存1個の見直し・増設に、「Light Probe Group配置」はこのオブジェクトへのコンポーネント追加から着手する形に読み替えて進めます)
エージェント ちゃん さんが5日前に更新
操作
#3
- ステータス を 未着手 から 実装中 に変更
- 進捗率 を 0 から 10 に変更
制作に着手しました。
- ブランチ:
feature/496 - 対応方針: Bakery前提でDownlight量産・BakerySky追加・Reflection Probe見直し/増設・Light Probe Group配置・Directional Lightの色温度制御・LTCGI/LightVolumes導入検討を、Unity MCP経由で実施する。
エージェント ちゃん さんが5日前に更新
操作
#4
進捗 : Downlight/Reflection Probe/Light Probe/色温度/BakerySkyをUnity MCP経由で実施しコミット¶
コミット: e64eebf (feature/496)
-
Downlight:
light1をDownlight_Living_01に改名し、Living/Dining/Kitchen/Bedroom/Entry に計9本を追加(合計10本、天井高さ y=2.3) -
Reflection Probe: 既存の1個(部屋全体カバー)を
ReflectionProbe_Livingとしてリビングの範囲に再調整し、Dining/Kitchen/Bedroom/Entry 用4個を新規追加(合計5個、全て boxProjection 有効) -
Light Probe Group: 空オブジェクトだった
LightProbesに LightProbeGroup を追加。各部屋の壁際2カ所+中央1カ所 × 床/中間/天井の3高さ = 45プローブを配置 -
Directional Light:
useColorTemperatureを有効化しcolorTemperature=5800Kに設定 -
BakerySkyLight:
Lighting配下に新規追加(SkyboxからのGI取得用、intensity=1)
作業後にUnityコンソールにエラーなしを確認し、シーンを保存・コミット済み。
確認したいこと : LTCGI / LightVolumesの導入について¶
パッケージ(at.pimaker.ltcgi, red.sim.lightvolumes)は導入済み。窓(Window_Living_S 等、MAT_Glass)を LTCGI_Emitter にすれば窓からの日光エリアライト化は技術的に可能だと確認した。
ただしこの導入は:
- LTCGI_Controller の配置と Bake(エディタ操作でarealightテクスチャを生成)
- 受け取る側(lilToonなど)のマテリアルで LTCGI キーワードを個別に有効化
- 配置後の見え方の視覚確認(明るさ・反射の強さの調整)
が必要で、盲擎で自動適用するとマテリアル崩れのリスクがあるため、今回のパスでは見送った。LightVolumesはGIM_Pickup/GIM_Pet_Catなどの動くオブジェクト用の適用先があるが、同様の理由で未着手。
確認したいこと:
- LTCGI/LightVolumesは別チケットに切り出すか、このチケットのさらなる作業として続行するか
エージェント ちゃん さんが5日前に更新
操作
#5
進捗 : 照明器具メッシュのLight未設定を修正(ユーザー指摘)¶
コミット: a0916d3 (feature/496)
ユーザーから Pendant_Dining / Floor_Lamp / Bedside_Lamp にLight設定がないとの指摘を受けて確認したところ、確かに三つとも MAT_Light_Warm を付けただけで実際のLight/BakeryPointLightが無い状態だった。横展開で Kitchen_TaskLight と Cove_Light も同様の抜け漏れだったので合わせて修正。
-
Pendant_Dining→ BakeryPointLight×3(ペンダントヘッド単位) -
Floor_Lamp/Bedside_Lamp→ BakeryPointLight×1ずつ -
Cove_Light/Kitchen_TaskLight→ 細長い帯状メッシュなので点光源ではなく BakeryLightMesh(面発光)を直接付与 - 色は全て
MAT_Light_Warm/MAT_Light_Coveの発光色に合わせた暖色(大例R1/G0.85/B0.65)
エージェント ちゃん さんが5日前に更新
操作
#6
進捗 : Directional Lightを環境用/アバター用の2灯に分割¶
コミット: 6c5baa5 (feature/496)
【確認したいこと】でいづさんが残していた「2つのDirectional Lightをカリングマスクでプレイヤー用/それ以外用に分ける手法を調査し、実装した。VRChatワールド制作で一般的に使われている手法で、環境のムード照明とは独立してアバターを安定した明るさで見せる目的。
-
Directional Light→Directional Light (Environment)に改名。Culling MaskからPlayer(9) /PlayerLocal(10) レイヤーを除外(Mixed、ベイク対象は継続) - 新規
Directional Light (Avatar)を追加。Culling MaskはPlayer+PlayerLocalのみ、Realtime、Shadowsなし、回転は環境側と同じ、colorTemperature=5800K、intensity=1.2
参考: VRChatワールド制作でのavatar lightテクニックとして一般的に知られている手法(Player専用Realtime Directional Lightを別用意してアバターをベイク環境と切り離す)。
確認したいこと:
- Avatar用のintensity(1.2)・colorTemperatureは仮の値なので、Unity/VRChat実機での見え方を確認して調整が必要
エージェント ちゃん さんが5日前に更新
操作
#7
進捗 : Cove_LightのBakeryLightMesh適用範囲を修正¶
コミット: 70544df (feature/496)
いづさんから「Cove_Lightって設定済み?バー型のライトなんですが」と指摘を受けて再確認したところ、前回(a0916d3)の実装に不正確さがあったので修正した。
-
Cove_LightはMAT_Wood_Oak(木部モールディング)とMAT_Light_Cove(発光チャンネル)の2サブメッシュを持つ単一メッシュで、前回はBakeryLightMeshをこのオブジェクトに直接付与していたため、木部モールディングもGI発光面としてベイクに含まれてしまう状態だった(実際に発光すべきのはチャンネル部分のみ)。 - MAT_Light_Coveのサブメッシュ(24トライ)だけを別メッシュとして切り出し、子オブジェクト
Cove_Light_Emitterに配置。BakeryLightMeshはこちらに付け直し、親オブジェクトはGI発光対象から除外。 - 見た目の変化なし(同一形状・同一マテリアルを同位置に重ねて描画)をスクリーンショットで確認済み。
なおKitchen_TaskLightは単一マテリアル(MAT_Light_Warmのみ)なのでこの問題はなく、修正不要。
エージェント ちゃん さんが5日前に更新
操作
#8
進捗 : LTCGIの窓エリアライト化を実装し、本チケットはここまでで区切り¶
コミット: b326558 (feature/496)
VRCLV(LightVolumes)はPickup本体が先の方が二度手間にならないといういづさんの指摘を受け、以下の2つに分離して起票した:
本チケット(#496)はLTCGIの実装をもって完了とする。
-
LTCGI_ControllerをLighting配下に追加 -
LTCGI_Emitter_Windows(1オブジェクト)を追加し、EmissiveRenderersに4つの窓(Window_Living_S/Dining_S/Living_E/Bedroom_E)を登録。LTCGI_Emitterは拡散光のみ・非テクスチャで複数オブジェクトに一括適用できる軽量モードなので、四つの窓をまとめて1個にした - 受け取り側:
MAT_Floor_Oak/MAT_Wall_Paint(実は lilToon ではなく Filamented/StandardRoughness シェーダーを使用していた)にシェーダーネイティブの_LTCGIトグル([Toggle(_LTCGI)])を有効化。マテリアル側はタグ"LTCGI"="_LTCGI"で定義されているものをそのまま使っているので、自作キーワードや強引な一括適用ではない
重要: LTCGIの発光色は対象レンダラー自身のベイク済みライトマップ(DiffuseFromLm)から取得する仕様なので、以下2段階のベイクが完了するまでは見た目に反映されない(いずれも長時間・ダイアログ進行のEditor操作なので、ライトベイク同様このセッションでは実行していない):
- 通常のBakeryライトマップベイク
- Unityメニュー
Tools > LTCGI > Bake Shadowmap and Normal Lightmap(Bakery検出時は「Yes, use Bakery」を選べばこの1ステップで2も連続実行される)
この2段階ベイク後、VRChat実機OPlay Modeで窓からの日光が床・壁に回り込むことを確認してほしい。
チケット全体のサマリー¶
#496で実施した内容(コミット順):
- Downlight量産・配置(
e64eebf) - Reflection Probe見直し/増設・Light Probe Group配置・色温度制御・BakerySkyLight(同
e64eebf) - 照明器具(Pendant/Floor Lamp/Bedside Lamp/Cove Light/Kitchen TaskLight)の実光源追加(
a0916d3) - Directional Lightを環境用/アバター用の2灯に分割(
6c5baa5) - Cove_LightのBakeryLightMesh適用範囲修正(
70544df) - LTCGI窓エリアライト化(
b326558)
残っているのは Unity Editor での実際のライトマップベイク(Bakery)とLTCGI Bake Shadowmap、そしてVRChat実機での見え方確認。これらはユーザー側での実施が必要。
確認したいこと:
- ベイク完了後の見え方を確認して問題なければMRを作成したい。MR作成のご指示をお待ちしています
エージェント ちゃん さんが5日前に更新
操作
#9
進捗 : LTCGIの VRC Light Volumes 連携で発生していたNullReferenceExceptionを修正¶
コミット: 0b07331 (feature/496)
いづさんから「NullReferenceExceptionがずっと出ている」と報告を受けた。原因を特定して修正した。
原因: at.pimaker.ltcgi と red.sim.lightvolumes(VRC Light Volumes) の両方が導入済みの場合、LTCGIは LTCGI_Controller がシーンに存在するだけで自動的に LV_LTCGI_Adapter を組み込もうとする仕様だった。VRC Light Volumesの実設定(LightVolumeManager)がシーンに無い状態だと、このアダプタの DoUpdate() が毎フレーム NullReferenceException を投げ続ける。
対応: Lighting 配下に空の LightVolumeManager スタブ(LightVolumeInstancesは0件)を追加し、この依存を満たして例外を抱えなくした。
重要: これはVRC Light Volumesの本格的なセットアップ(LightVolumeSetup・アトラス・実インスタンス)ではなく、LTCGIとの依存を満たすための空のスタブだけ。VRC Light Volumesの実際の適用は引き続き#498(#497にブロック)で行う。
コンソールログをクリアして数フレーム経過後に新規エラーが発生していないことを確認済み。
エージェント ちゃん さんが5日前に更新
操作
#10
進捗 : LTCGIにBalcony_GlassとAffectAvatarsを追加し、実装作業を完了¶
コミット: 8ce2097 (feature/496)
-
LTCGI_Emitter_WindowsのEmissiveRenderersにBalcony_Glassを追加(5レンダラーに) -
AffectAvatarsを true に設定。窓/バルコニーの日光がベイク環境とは独立してリアルタイムでアバターにも回り込むようになった
Unityコンソールエラーなしを確認済み。これで本チケットの実装作業は完了。
本チケットで実施した全コミット(feature/496)¶
-
e64eebfDownlight量産・Reflection Probe見直し/増設・Light Probe Group配置・色温度制御・BakerySkyLight -
a0916d3照明器具(Pendant/Floor Lamp/Bedside Lamp/Cove Light/Kitchen TaskLight)の実光源追加 -
6c5baa5Directional Lightを環境用/アバター用の2灯に分割 -
70544dfCove_LightのBakeryLightMesh適用範囲修正 -
b326558LTCGI窓エリアライト化 -
0b07331LTCGI×VRC Light Volumes連携のNullReferenceException修正(LightVolumeManagerスタブ) -
8ce2097LTCGIにBalcony_Glass追加・AffectAvatars有効化
残っているのはUnity Editorでの実際のライトマップベイク(Bakery)とLTCGI Bake Shadowmap、VRChat実機/Play Modeでの見え方確認。これらはユーザー側での実施が必要。
確認したいこと:
- MR作成のご指示をお待ちしています
エージェント ちゃん さんが5日前に更新
操作
#11
- ステータス を 実装中 から 完了 に変更
- 進捗率 を 10 から 100 に変更
対応が完了しました。
概要¶
1LDKマンション想定の室内ワールド(Sanyan_Home.unity)に商用レベルの見えを目指したライティングセットアップを実施。
変更点¶
- Downlightの量産・配置(各部屋に計10本)
- Reflection Probeを部屋ごとに見直し・増設(1個→5個、boxProjection有効)
- Light Probe Groupを各部屋の壁際・中央×床/中間/天井の3高さで配置(45プローブ)
- Directional Lightの色温度制御を有効化し、環境用/アバター用の2灯に分割(カリングマスクでPlayer/PlayerLocalを分離)
- BakerySkyLightを追加(SkyboxからのGI取得)
- 照明器具(Pendant_Dining/Floor_Lamp/Bedside_Lamp/Cove_Light/Kitchen_TaskLight)に実光源を追加(元々マテリアルのみで発光していなかった)
- Cove_LightのGI発光範囲を修正(木部モールディングを誤って発光面に含めていたのを、発光チャンネルのみの別メッシュに分離)
- LTCGIによる窓・バルコニーガラスのエリアライト化、AffectAvatarsを有効化してアバターにもリアルタイムで日光が回り込むように設定
- LTCGI×VRC Light Volumes連携で発生していたNullReferenceExceptionを、空のLightVolumeManagerスタブ追加で解消
確認¶
- Unity MCP経由で各コンポーネント設定後、Unityコンソールにエラーがないことを都度確認
- Scene view / Game viewのスクリーンショットで配置・見た目に問題ないことを確認
- YAML差分・参照整合を確認
関連 MR¶
- !1 (feature/496 → main)
残課題 / 補足¶
- 通常のBakeryライトマップベイクとLTCGIの
Tools > LTCGI > Bake Shadowmap and Normal Lightmap、そしてVRChat実機/Play Modeでの最終見え方確認は未実施(ユーザー側で実施が必要) - 派生チケット: #497(動くPickupオブジェクト本体の実装)、#498(VRC LightVolumesをPickupオブジェクトに適用、#497にブロック)