diff --git a/CLAUDE.md b/CLAUDE.md index 51f7cf4..c2ea6bd 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -5,7 +5,7 @@ ## 開発進捗 -最新: フェーズ 7(実装)— Step 8 基準設計キャリブレーションの **Step 8-14(物理モデル精緻化)** 進行中.**面光源スケール軸バグを発見・修正**(`lights.py` が LED の高さを潰れた Z 軸に入れ縦 Y を無補正→全 LED が幅3mm×高さ2mの巨大ストリップ化).実機単灯実測との突合で **下灯 2.1× がこのバグのアーティファクト**と判明(バグは Mitsuba `bbox()` で 2.8×2000mm と独立検証済,3D 確認ツール `scripts/show_led_geometry.py` 追加),修正後は 3 灯均等・下灯最暗で実機一致.ただし合成 CoV は 0.1815→0.1641 の小改善にとどまり,**残る不一致は各単灯フットプリントの形(拡散不足)**(シミュ peak/mean≈1.7 vs 実機≈1.2)=**形の一致を最優先**に方針転換([TEST_08](docs/06_TEST/TEST_08_面光源スケール軸バグの発見と修正.md)).**実機にディフューザー無しを確認**(むき出し LED+白筐体),実機の平らさは筐体多重反射由来.bottom 単灯 spp=1024 で max_depth 分解(実験1)と反射率スイープ(実験2)を実施→**いずれも形を平らにできず**(実機 1.22 に対し d16 で 1.65・R0.98 で 1.44 止まり,NCC 改善せず)=**混ぜ具合は本筋でなく,形の残差は B1 筐体幾何(箱の閉じ漏れ)に絞り込み**.さらに**修正後シミュは 3 灯ほぼ同形(NCC≈0.92)で実機の相補性(各灯が別方向を照らす)を再現できず**=形が筐体で決まり LED 位置の効きが弱い(板が間接光のみ+Lambertian 拡散壁のため光源形状が洗い流される).次は幾何の漏れ点検(実験3)([TEST_09](docs/06_TEST/TEST_09_照明分布の形不一致の原因切り分け.md)).A1 非 Lambertian / A8 反射率 / A9 max_depth はクリア(数値改善のみ or 逆効果,ただし旧結論はバグ込みのため要再検証).詳細な経緯・設計判断・失敗パターンは [docs/PROGRESS.md](docs/PROGRESS.md). +最新: フェーズ 7(実装)— Step 8 基準設計キャリブレーションの **Step 8-14(物理モデル精緻化)** 進行中.面光源スケール軸バグ修正([TEST_08](docs/06_TEST/TEST_08_面光源スケール軸バグの発見と修正.md))後の「形の不一致」切り分け([TEST_09](docs/06_TEST/TEST_09_照明分布の形不一致の原因切り分け.md))で,bottom 単灯 spp=1024・d=16 の統一条件により**実験1 反射回数・実験2 反射率・実験3 配光(spot cutoff)・実験5 壁の光沢化(blend BSDF w×α 12 ジョブ,バグ込み旧 A1 の正式再検証)をすべてクリア=光源側・材料側レバー出尽くし**(いずれも実機の平らさ peak/mean 1.22 に届かず,光沢化は全条件で悪化).実験5 で**実機の灯間 NCC を初定量化: 0.85/0.61/0.41 と強く非対称な相補性**(シミュ diffuse は 0.96 で 3 灯ほぼ同形,光沢化でも一様に 0.86 止まり)=等方な材料変更では原理的に再現不能で,**形と相補性の残差はともに B1 筐体幾何に確定**.次は実験4(幾何の漏れ点検=漏れの定量化・開口の閉じテスト,到達目標アンカーは実機灯間 NCC).詳細な経緯・設計判断・失敗パターンは [docs/PROGRESS.md](docs/PROGRESS.md). 実装済みモジュール: - `src/sm_tias_lightsim/uniformity.py` — Rec.709 輝度変換 + CoV/std/max-min(MiniTias-Evaluation コピー) diff --git "a/docs/06_TEST/TEST_09_\347\205\247\346\230\216\345\210\206\345\270\203\343\201\256\345\275\242\344\270\215\344\270\200\350\207\264\343\201\256\345\216\237\345\233\240\345\210\207\343\202\212\345\210\206\343\201\221.md" "b/docs/06_TEST/TEST_09_\347\205\247\346\230\216\345\210\206\345\270\203\343\201\256\345\275\242\344\270\215\344\270\200\350\207\264\343\201\256\345\216\237\345\233\240\345\210\207\343\202\212\345\210\206\343\201\221.md" index 1101fa0..485dd8b 100644 --- "a/docs/06_TEST/TEST_09_\347\205\247\346\230\216\345\210\206\345\270\203\343\201\256\345\275\242\344\270\215\344\270\200\350\207\264\343\201\256\345\216\237\345\233\240\345\210\207\343\202\212\345\210\206\343\201\221.md" +++ "b/docs/06_TEST/TEST_09_\347\205\247\346\230\216\345\210\206\345\270\203\343\201\256\345\275\242\344\270\215\344\270\200\350\207\264\343\201\256\345\216\237\345\233\240\345\210\207\343\202\212\345\210\206\343\201\221.md" @@ -129,16 +129,69 @@ > **過去結論の訂正**: PROGRESS の Step 8-14「area→spot は形改善の本物候補(angular_ratio −25%)」は**バグ込み(2m ストリップ)の結論**であり,正しい面積で再検証すると効果は誤差レベル(NCC 0.72→0.74).TEST_07 と同じく ξ も過大評価だった. -## 3 実験の総括と次の予定 +## 実験5 — bottom 単灯 blend BSDF(壁の光沢化)再検証(spp=1024, d=16) + +### 目的・条件 + +過去 Step 8-14 β の blend BSDF 実験(A1 非 Lambertian)は**面光源バグ込み・3 灯フルシーン・絶対指標評価**だったため,修正後 LED・TEST_09 の形指標で再検証する.検証仮説は 2 つ: + +1. **平らさ**: 光沢成分が単灯の形(peak/mean・NCC)を実機に近づけるか(実験1〜3 の残差) +2. **相補性**: §追加観察の「3 単灯ほぼ同形(灯間 NCC 高止まり)」は壁が完全 Lambertian であることが直接原因(鏡面なら光源形状が板に焼き付く)のため,**光沢化で LED 位置の効きが戻るか** + +条件は実験1〜3 と同一(bottom 単灯・spp=1024・max_depth=16).`printer_white` を `blendbsdf`(diffuse 0.85 + roughconductor ggx)化し,**w ∈ {0.05, 0.15, 0.3, 0.6} × α ∈ {0.1, 0.3, 0.6} の 12 ジョブ**(旧グリッド+強光沢 w=0.6 行)をスイープ. + +- config: `configs/_tmp_blend_bottom/w{W}_a{A}.yaml`(`_tmp_sanity_1024/scene_bottom.yaml` ベース) +- 出力: `output/blend_bottom/{job}/luminance.npy` + `summary.csv` +- 解析: `scripts/build_blend_bottom_panel.py`,比較図 `output/_slide_panels/blend_bottom_shape_roi.png`(ROI 揃え) + +### 結果 Phase 1 — 単灯の形(ROI 揃え) + +| 条件 | peak/mean(ROI) | top/bot(ROI) | NCC(ROI,対実機) | +| --- | --- | --- | --- | +| area diffuse(基準) | 1.585 | 0.879 | 0.721 | +| w0.05(3α 中最良) | 1.604 | 0.878 | 0.717 | +| w0.15(3α 中最良) | 1.691 | 0.876 | 0.711 | +| w0.3(3α 中最良) | 1.698 | 0.875 | 0.702 | +| w0.6(3α 中最良) | 1.736 | 0.879 | 0.669 | +| w0.6_a0.1(最悪) | 2.145 | 0.833 | 0.667 | +| **実機 bottom** | **1.218** | **0.931** | – | + +**全 12 ジョブが純 diffuse より悪化し,w に対し単調悪化**.光沢成分は評価板にホットスポットを作って尖りを増やし,NCC も下げる.α では鏡面寄り(α=0.1)が最も悪く,「鏡面ほど光源形状が焼き付く」の物理と整合.**旧結論「A1 は形改善レバーでない」は正しい LED でも確定**(ただし旧実験の根拠は無効で,本実験が正式な根拠). + +### 結果 Phase 2 — 灯間 NCC(相補性) + +最強光沢条件 w0.6_a0.1 で left / right 単灯も同条件レンダし,3 灯相互の形の一致度を比較(mean 正規化・フル frame,spp=1024): + +| ペア | diffuse | blend w0.6_a0.1 | **実機** | +| --- | --- | --- | --- | +| bottom vs left | 0.961 | 0.862 | **0.853** | +| bottom vs right | 0.963 | 0.860 | **0.606** | +| left vs right | 0.956 | 0.856 | **0.414** | + +※ diffuse の灯間 NCC は spp=1024 の `output/sanity_fix_1024/` で 0.96(§追加観察の 0.92 は spp が低い `led_group_sanity_fix` 計測でノイズにより過小だった).**実機の灯間 NCC を初めて定量化**: 0.85 / 0.61 / 0.41 と**強く非対称な相補性**(特に left vs right はほぼ別物の分布)を持つ. + +### 読み取れること + +1. **機構としては仮説どおり**: 光沢化で灯間 NCC は 0.96 → 0.86 に低下=LED 位置の効きは確かに戻る(Lambertian 壁が相補性を消している,という §追加観察の物理解釈を実験で裏付け). +2. **しかし実機の相補性には全く届かない**: 実機は 3 ペアが 0.85 / 0.61 / 0.41 と**非対称**なのに,blend は 3 ペア一様に 0.86 止まり.光沢を強めても「各灯のホットスポットが少しずれる」だけで,実機の「各灯が別方向を照らす」構造は生まれない. +3. **形とのトレードオフが致命的**: 相補性がわずかに戻る代償に,単灯の形は全灯悪化(NCC 対実機: bottom 0.720→0.667,left 0.664→0.565,right 0.787→0.702). +4. 3D プリンタ白フィラメントに w=0.6 の鏡面性は物理的にも非現実的.**壁の反射特性(大きさ・種類とも)は形の残差の本筋でないことが最終確定**. + +### 解釈 + +実機の非対称な相補性(left vs right NCC 0.41)は,等方な材料変更では原理的に作れない.**LED から評価板への光の経路そのものが灯ごとに異なる幾何**(カバーの開口形状・仕切り・箱の閉じ方の非対称)でしか説明できず,B1 筐体幾何が最有力という実験1〜3 の結論を相補性の面からも強く裏付ける.実機灯間 NCC(0.85/0.61/0.41)は**実験4 以降の幾何修正の到達目標**として使える新しい定量アンカーである. + +## 実験群の総括と次の予定 | レバー | 実験 | 形への効果(ROI) | 判定 | | --- | --- | --- | --- | | 反射回数 max_depth | 実験1 | d16 で頭打ち,peak/mean 1.59 止まり | 本筋でない | | 反射率 R | 実験2 | R=0.98 でも 1.39 止まり,NCC 改善せず | 本筋でない | | 配光 ξ(spot cutoff) | 実験3 | 中庸 spot で 1.44 止まり,NCC 横ばい | 本筋でない | -| **筐体幾何 B1** | 実験4(予定) | — | **最有力(光源側レバー出尽くし)** | +| 壁の光沢化(blend w×α) | 実験5 | 全 12 ジョブ悪化(w 単調).灯間 NCC 0.96→0.86 で機構は確認したが実機の非対称相補性(0.85/0.61/0.41)に届かず | 本筋でない | +| **筐体幾何 B1** | 実験4(予定) | — | **最有力(光源側・材料側レバー出尽くし)** | -光源側のレバー(反射回数・反射率・配光)を出し尽くしても形は実機に届かない=**残るは筐体幾何のみ**. +光源側(反射回数・反射率・配光)と材料側(反射率の大きさ・光沢の種類)のレバーを出し尽くしても形も相補性も実機に届かない=**残るは筐体幾何のみ**. ### 次(実験4)— 幾何の漏れ点検 @@ -167,6 +220,8 @@ **重要な含意**: [TEST_04(実機単灯比較)](TEST_07_LEDグループ別動作確認.md) では実機の 3 灯は**相補的に異なる方向を照らす**(下=上側/左=右寄り…)とされていた.しかし**修正後シミュは 3 灯ほぼ同じ形=実機の「相補性」を再現できていない**.これは「シミュでは形が筐体で決まり LED 位置の効きが弱すぎる」ことを意味し,(a) 筐体幾何 B1 の不正確さ,または (b) シミュが間接化しすぎ(実機は各灯の直接性/指向性がもっと残る)を示唆する.実験4(幾何)の追加手がかり. +※ 上記の灯間 NCC≈0.92 は spp が低い計測でノイズにより過小だった(spp=1024 では 0.96).(b) の仮説「壁の光沢化で指向性を戻す」は実験5 で検証済み=機構は働くが実機の非対称相補性(0.85/0.61/0.41)には届かず,形も悪化するため不採用. + ## 関連ドキュメント - [TEST_08 面光源スケール軸バグの発見と修正](TEST_08_面光源スケール軸バグの発見と修正.md) — 本調査の前提(バグ修正で灯間バランスは解決済み) diff --git a/docs/PROGRESS.md b/docs/PROGRESS.md index 7abdb7b..34d8b6e 100644 --- a/docs/PROGRESS.md +++ b/docs/PROGRESS.md @@ -68,3 +68,4 @@ - **バグの独立検証・修正前後比較・LED 幾何 3D 確認ツールを整備 (2026-06-29)**: 上司報告向けに「2m ストリップ化」を可視化マーカーに頼らず裏付け.[TEST_08](06_TEST/TEST_08_面光源スケール軸バグの発見と修正.md) に 3 重の一次証拠を追記: ① git で修正前の実コード行を確定,② 修正前の式で `rectangle` を生成し **Mitsuba の `bbox()` が X=2.80mm / Y=2000.00mm(面積 5600mm²=実物の約 570 倍)と報告**,③ `builder→_build_area_light_transform→mi.render` の呼び出し経路で実レンダ使用を確認.新規ツール `scripts/show_led_geometry.py`(LED を実サイズ長方形+発光方向矢印で 3D 表示,`--buggy` で修正前の 2m ストリップ再現,`--screenshot` で 4 アングル保存)を追加.これで **LED 位置・サイズ・向きは実機どおり(評価板を背にする設計で正しい)=形不一致の容疑者から無罪**を 3D で確認. - **修正前後カラーマップ比較**(TEST_08 に追記,図 `output/_slide_panels/before_after_{shape,amplitude}.png`): mean 正規化した「形」は修正前後でほぼ不変(合成 peak/mean 1.54→1.54).**バグが壊していたのは形でなく灯間の明るさ**(下灯 left基準で 2.10→0.97 へ均等化).だから合成 CoV も小改善にとどまった. - **修正後 3 単灯は形がほぼ同一**(TEST_09 に追記): 板が間接光のみ+Lambertian 拡散壁で照らされるため形が光源でなく筐体で決まる(積分球原理=多重反射が光源形状を洗い流す).結果,下・左・右の単灯フットプリントが互いに **NCC≈0.92** とほぼ同形(縦勾配 top/bot≈0.85/1.06 が 3 灯共通).**実機(TEST_04)の「3 灯が相補的に別方向を照らす」を再現できていない**=シミュでは LED 位置の効きが弱すぎる→ (a) B1 幾何不正確 or (b) 間接化しすぎ(実機は各灯の指向性がもっと残る)を示唆.実験3 の追加手がかり. +- **実験5(壁の光沢化 blend BSDF)再検証完了 — 材料側レバー出尽くし・実機の非対称相補性を初定量化 (2026-07-14)**: 旧 Step 8-14 β の A1 blend 実験はバグ込み・3 灯・絶対指標のため,修正後 LED・bottom 単灯・形指標(TEST_09 流)で正式に再検証.`printer_white` を blendbsdf 化し w∈{0.05,0.15,0.3,0.6}×α∈{0.1,0.3,0.6} の 12 ジョブ(spp=1024, d=16,約 2h)+最強光沢 w0.6_a0.1 で left/right 単灯を追加レンダ.**結果 ①(平らさ)**: 全 12 ジョブが純 diffuse(peak/mean 1.585・NCC 0.721)より悪化し w に単調悪化(最悪 w0.6_a0.1 で 2.145/0.667)=光沢はホットスポットを作り実機の平らさと逆方向.**結果 ②(相補性)**: 灯間 NCC は diffuse 0.96 → blend 0.86 に低下し「Lambertian 壁が光源形状を洗い流す」機構自体は実証されたが,**実機の灯間 NCC は 0.85/0.61/0.41 と強く非対称**(今回初定量化,実験4 以降の到達目標アンカー)で,等方な材料変更では原理的に再現不能.単灯の対実機 NCC も 3 灯とも悪化するトレードオフ.**結論: 壁の反射特性は大きさ(実験2)・種類(実験5)とも本筋でなく,B1 筐体幾何が唯一の残存候補として確定**.副次修正: TEST_09 §追加観察の灯間 NCC≈0.92 は低 spp ノイズによる過小(spp=1024 で 0.96)と判明し訂正.成果物: `output/blend_bottom/`(summary.csv 含む),解析 `scripts/build_blend_bottom_panel.py`,図 `output/_slide_panels/blend_bottom_shape_roi.png`,記録 [TEST_09 §実験5](06_TEST/TEST_09_照明分布の形不一致の原因切り分け.md).次: 実験4(幾何の漏れ点検=漏れの定量化・開口の閉じテスト).