diff --git "a/docs/05_TECH/TECH_10_\346\256\213\345\267\256\344\270\273\345\233\240\345\200\231\350\243\234\343\201\256\347\266\262\347\276\205\346\225\264\347\220\206.md" "b/docs/05_TECH/TECH_10_\346\256\213\345\267\256\344\270\273\345\233\240\345\200\231\350\243\234\343\201\256\347\266\262\347\276\205\346\225\264\347\220\206.md" index e164ef3..45d59a2 100644 --- "a/docs/05_TECH/TECH_10_\346\256\213\345\267\256\344\270\273\345\233\240\345\200\231\350\243\234\343\201\256\347\266\262\347\276\205\346\225\264\347\220\206.md" +++ "b/docs/05_TECH/TECH_10_\346\256\213\345\267\256\344\270\273\345\233\240\345\200\231\350\243\234\343\201\256\347\266\262\347\276\205\346\225\264\347\220\206.md" @@ -1,5 +1,7 @@ # 残差 2.63× の主因候補の網羅整理 (Residual Cause Candidates Enumeration) +> ⚠️ **BEFORE FIX(バグ込み・要再検証)**: 本ドキュメントの優先度評価(A1/A8/A9/ξ 等)と参照図は,すべて面光源スケール軸バグ(全 LED が幅3mm×高さ2mの巨大ストリップ化)が入った状態の結果に基づく.バグ修正後の再検証([TEST_08](../06_TEST/TEST_08_面光源スケール軸バグの発見と修正.md) / [TEST_09](../06_TEST/TEST_09_照明分布の形不一致の原因切り分け.md))では,A8 反射率・A9 max_depth・ξ 配光はいずれも単灯の形を実機に近づけられず,残差の本筋は **B1 筐体幾何** に絞り込まれた.本ドキュメントの候補評価は**修正後に再評価が必要**. + 本ドキュメントは [TEST_01 Step 8-13](../06_TEST/TEST_01_キャリブレーション検証履歴.md) で確定した **シミュ vs 実機の残差 2.63×** の主因候補を網羅的に整理したものである.Step 8-14 以降の物理モデル精緻化で「何を試すか」の判断材料として作成した. ## 結論(先に) (Conclusion First) diff --git "a/docs/06_TEST/TEST_01_\343\202\255\343\203\243\343\203\252\343\203\226\343\203\254\343\203\274\343\202\267\343\203\247\343\203\263\346\244\234\350\250\274\345\261\245\346\255\264.md" "b/docs/06_TEST/TEST_01_\343\202\255\343\203\243\343\203\252\343\203\226\343\203\254\343\203\274\343\202\267\343\203\247\343\203\263\346\244\234\350\250\274\345\261\245\346\255\264.md" index 3e878e6..abfad54 100644 --- "a/docs/06_TEST/TEST_01_\343\202\255\343\203\243\343\203\252\343\203\226\343\203\254\343\203\274\343\202\267\343\203\247\343\203\263\346\244\234\350\250\274\345\261\245\346\255\264.md" +++ "b/docs/06_TEST/TEST_01_\343\202\255\343\203\243\343\203\252\343\203\226\343\203\254\343\203\274\343\202\267\343\203\247\343\203\263\346\244\234\350\250\274\345\261\245\346\255\264.md" @@ -1,5 +1,7 @@ # キャリブレーション検証履歴 (Calibration Verification History) +> ⚠️ **BEFORE FIX(バグ込み・要再検証)**: 本ドキュメントの Step 8 系イテレーション(特に A1 BSDF・A8 反射率・A9 max_depth・ξ 配光スイープ)の**数値・図はすべて面光源スケール軸バグ(全 LED が幅3mm×高さ2mの巨大ストリップ化)が入った状態で取得**したもの.バグの発見・修正・影響は [TEST_08](TEST_08_面光源スケール軸バグの発見と修正.md),正しい面積での再検証は [TEST_09](TEST_09_照明分布の形不一致の原因切り分け.md) を参照.記録としては残すが,個々の数値・結論は**そのまま信用せず修正後に再検証すること**. + 本ドキュメントは MiniTIAS 実機(baseline 1 枚 `MiniTIAS_20260408_144434`)に対するシミュレーション結果の **キャリブレーション** と **検証イテレーション** を時系列で記録する. 目的: diff --git "a/docs/06_TEST/TEST_02_\343\202\267\343\203\237\343\203\245\343\203\254\343\203\274\343\202\267\343\203\247\343\203\263\345\256\237\350\241\214\350\250\230\351\214\262.md" "b/docs/06_TEST/TEST_02_\343\202\267\343\203\237\343\203\245\343\203\254\343\203\274\343\202\267\343\203\247\343\203\263\345\256\237\350\241\214\350\250\230\351\214\262.md" index 756a725..a35c8ba 100644 --- "a/docs/06_TEST/TEST_02_\343\202\267\343\203\237\343\203\245\343\203\254\343\203\274\343\202\267\343\203\247\343\203\263\345\256\237\350\241\214\350\250\230\351\214\262.md" +++ "b/docs/06_TEST/TEST_02_\343\202\267\343\203\237\343\203\245\343\203\254\343\203\274\343\202\267\343\203\247\343\203\263\345\256\237\350\241\214\350\250\230\351\214\262.md" @@ -1,5 +1,7 @@ # シミュレーション実行記録 (Simulation Run Catalog) +> ⚠️ **BEFORE FIX 注記**: 本索引のうち面光源スケール軸バグ修正([TEST_08](TEST_08_面光源スケール軸バグの発見と修正.md))**以前**に生成された出力(`baseline` / `baseline_v3_leds` / `led_group_sanity` / `max_depth_sweep` / `reflectance_sweep` / `sweep_reflectance` / `blend_sweep` / `led_distribution_sweep` と対応する `_slide_panels` 図)は,**全 LED が 2m ストリップ化したバグ込み**の結果.実験記録として保持するが数値はそのまま信用しないこと.修正後の出力は `sanity_fix_1024` / `baseline_fix_1024` / `depth_bottom` / `refl_bottom` / `distrib_bottom`,図は `*_roi.png`(修正前を明記復元した版は `*_buggy.png`). + 本ドキュメントは `output/` 配下に蓄積されたシミュレーション・評価結果ディレクトリを **「何の試行か」が分かる形に索引化** したものである.`output/` は `.gitignore` で追跡対象外(容量・再生成可能性のため)であり,**手元の `output/` が無くてもこのドキュメントだけ読めば「過去にどんな試行があったか・どう再現するか」が辿れる**ことを目的とする. 関連: diff --git "a/docs/06_TEST/TEST_07_LED\343\202\260\343\203\253\343\203\274\343\203\227\345\210\245\345\213\225\344\275\234\347\242\272\350\252\215.md" "b/docs/06_TEST/TEST_07_LED\343\202\260\343\203\253\343\203\274\343\203\227\345\210\245\345\213\225\344\275\234\347\242\272\350\252\215.md" index c3b424f..e6db296 100644 --- "a/docs/06_TEST/TEST_07_LED\343\202\260\343\203\253\343\203\274\343\203\227\345\210\245\345\213\225\344\275\234\347\242\272\350\252\215.md" +++ "b/docs/06_TEST/TEST_07_LED\343\202\260\343\203\253\343\203\274\343\203\227\345\210\245\345\213\225\344\275\234\347\242\272\350\252\215.md" @@ -28,11 +28,12 @@ スクリプト: `scripts/sanity_led_groups.py`(3 ジョブ順次実行)+ `scripts/build_led_group_sanity_panel.py`(6 列パネル + 線形性誤差)+ 拡大確認用の 1×3 / 1×2 パネル生成. -成果物: -- `output/led_group_sanity/{bottom,right,left}/luminance.npy` -- `output/_slide_panels/led_group_sanity.png` (6 列: ①〜③ 単独 / ④ 全 ON / ⑤ 和 / ⑥ 線形性誤差) -- `output/_slide_panels/led_group_sanity_focus.png` (1×3 拡大) -- `output/_slide_panels/led_group_sanity_right_left.png` (1×2 左右対称性確認) +成果物(**本ドキュメントの数値・図はすべて修正前=バグ込み**.バグ実在の経緯は [TEST_08](TEST_08_面光源スケール軸バグの発見と修正.md)): +- `output/led_group_sanity/{bottom,right,left}/luminance.npy`(修正前の生データ=実験記録として保持) +- `output/_slide_panels/led_group_sanity_buggy.png` (6 列: ①〜③ 単独 / ④ 全 ON / ⑤ 和 / ⑥ 線形性誤差.**BEFORE FIX 明記・ROI 揃え**) +- `output/_slide_panels/led_group_sanity_focus_buggy.png` (1×3 拡大,BEFORE FIX) +- `output/_slide_panels/led_group_sanity_right_left_buggy.png` (1×2 左右対称性確認,BEFORE FIX) +- 参考(**修正後**=同名サフィックス無し): `led_group_sanity{,_focus,_right_left}.png`(`sanity_fix_1024`/`baseline_fix_1024` 由来,3 灯均等・線形性 OK.TEST_08 の検証結果に対応) ## 結果 — 数値 diff --git "a/docs/06_TEST/TEST_08_\351\235\242\345\205\211\346\272\220\343\202\271\343\202\261\343\203\274\343\203\253\350\273\270\343\203\220\343\202\260\343\201\256\347\231\272\350\246\213\343\201\250\344\277\256\346\255\243.md" "b/docs/06_TEST/TEST_08_\351\235\242\345\205\211\346\272\220\343\202\271\343\202\261\343\203\274\343\203\253\350\273\270\343\203\220\343\202\260\343\201\256\347\231\272\350\246\213\343\201\250\344\277\256\346\255\243.md" index b2d1888..735217f 100644 --- "a/docs/06_TEST/TEST_08_\351\235\242\345\205\211\346\272\220\343\202\271\343\202\261\343\203\274\343\203\253\350\273\270\343\203\220\343\202\260\343\201\256\347\231\272\350\246\213\343\201\250\344\277\256\346\255\243.md" +++ "b/docs/06_TEST/TEST_08_\351\235\242\345\205\211\346\272\220\343\202\271\343\202\261\343\203\274\343\203\253\350\273\270\343\203\220\343\202\260\343\201\256\347\231\272\350\246\213\343\201\250\344\277\256\346\255\243.md" @@ -98,16 +98,16 @@ → **下灯 2 倍は消滅し,3 灯が ±3% で均等化**.さらに**「下灯が最暗」という実機の順序まで一致**した.灯間の振幅バランスは実機パターンに乗った. -### ② 各灯の形(peak/mean,spp=1024) +### ② 各灯の形(peak/mean,spp=1024,ROI 揃え) | 灯 | バグ peak/mean | 修正後 peak/mean | 実機 peak/mean | | --- | --- | --- | --- | -| bottom | 1.60 | 1.78 | 1.22 | -| left | 1.78 | 1.69 | 1.27 | -| right | 1.73 | 1.75 | 1.20 | +| bottom | 1.47 | 1.64 | 1.22 | +| left | 1.63 | 1.56 | 1.27 | +| right | 1.58 | 1.61 | 1.20 | - 絶対 mean は ~98/47 → ~4.5 へ低下:発光面積が 2.8mm×2000mm → 2.8mm×3.5mm へ約 570 倍縮小したため.絶対スケールは下流の露出ソルバ / mean anchor 正規化で吸収されるため灯間比・形が本質. -- **peak/mean はなお実機(1.2 台)に届かず(修正後 1.7 台)**=各単灯フットプリントの**拡散不足**が残る(max_depth=8 の暫定では 2.9 と更に尖っていたが,depth=16 のバウンス増で 1.7 台まで滑らかになった). +- **peak/mean はなお実機(1.2 台)に届かず(修正後 1.6 台)**=各単灯フットプリントの**拡散不足**が残る.形の残差は [TEST_09](TEST_09_照明分布の形不一致の原因切り分け.md) で B1 筐体幾何に絞り込み中. ### ③ 線形性(単灯和 ≈ 全灯) @@ -166,22 +166,24 @@ 修正前(バグ)と修正後のレンダ結果(輝度マップ)を,単灯3+合成で並べて比較した.**正規化(形)と共通スケール(灯間明るさ)の 2 視点**で見ると,バグの主効果が明確になる. +> 以下の数値・図は **ROI 揃え**版(シミュを `SIM_ROI`=(24,37,464,450) で切り出し).旧版はフル 512² frame で算出していた([TEST_09 の ROI 注記](TEST_09_照明分布の形不一致の原因切り分け.md)参照)が,結論は不変. + ### 視点 A — mean 正規化(=「形」の比較) -各マップを自身の mean で割って形だけを比べる(図 `output/_slide_panels/before_after_shape.png`): +各マップを自身の mean で割って形だけを比べる(図 `output/_slide_panels/before_after_shape_roi.png`,ROI 揃え): | 灯 | 修正前 peak/mean | 修正後 peak/mean | | --- | --- | --- | -| bottom | 1.56 | 1.71 | -| left | 1.74 | 1.62 | -| right | 1.69 | 1.68 | -| **combined** | **1.54** | **1.54** | +| bottom | 1.47 | 1.64 | +| left | 1.63 | 1.56 | +| right | 1.58 | 1.61 | +| **combined** | **1.45** | **1.47** | -→ **正規化した「形」は修正前後でほとんど変わらない**(合成は 1.54→1.54 で不変).バグの主効果は形ではなかった. +→ **正規化した「形」は修正前後でほとんど変わらない**(合成は 1.45→1.47 でほぼ不変).バグの主効果は形ではなかった. ### 視点 B — 共通スケール(=「灯間の明るさ」の比較) -3 単灯を「left LED の mean = 1.0」基準の共通スケールで並べる(図 `output/_slide_panels/before_after_amplitude.png`): +3 単灯を「left LED の mean = 1.0」基準の共通スケールで並べる(図 `output/_slide_panels/before_after_amplitude_roi.png`,ROI 揃え): | 灯 | 修正前(left=1.0) | 修正後(left=1.0) | | --- | --- | --- | 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 fac341d..1101fa0 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" @@ -4,6 +4,8 @@ > **最優先の判定基準**: 本調査は CoV/勾配などの**数値の絶対量ではなく,実機マップとの「形の一致」**を唯一の判定基準とする.形が一致しない限り「筐体を仮想的に変えて結果を予測する」というツール本来の目的(筐体改善の事前検討)が成立しないため.判定には実機マップを参照とした **NCC/SSIM + 視覚比較 + 放射プロファイル**を用い,peak/mean(中心の尖り具合)を補助指標とする. +> **【重要・ROI 揃え更新】** 本ドキュメントの数値・図は **シミュを公式 ROI(`evaluation.roi_presets.SIM_ROI` = image_pixel(24,37,464,450))で切り出し,実機 ROI(`REAL_ROI`,実機 npy は適用済み)と物理領域を揃えて**算出した版に更新済み.初期検証はシミュをフル 512² フレームのまま測っており(板の縁・周辺暗部を含む),peak/mean を ~0.07 過大・NCC を ~0.05 過小に見せていた.**ROI 揃えで NCC は +0.05 程度改善するが,結論(混ぜ具合・配光は本筋でない/形は実機に届かない/B1 幾何が最有力)は不変**.ROI 版の図は `output/_slide_panels/*_roi.png`. + ## 出発点 — バグ修正後も「形」は不一致 TEST_08 の面光源バグ修正で**灯間バランス(下灯 2.1×)は解消**したが,各単灯・合成の**分布の形**は実機と一致しないまま: @@ -11,7 +13,7 @@ - **実機 単灯**: ほぼ一様(peak/mean ≈ 1.2,放射プロファイルは中心 1.05 → 周辺 0.9 でほぼ平坦) - **シミュ 単灯**: 中心が尖り(peak/mean ≈ 1.7)+上暗下明の縦勾配,周辺の落ち込みが急 -比較図: `output/_slide_panels/sim_vs_real_shape_fixed.png` / `sim_vs_real_colormap_fixed.png` +比較図: `output/_slide_panels/sim_vs_real_shape_roi.png` / `sim_vs_real_colormap_roi.png`(ROI 揃え) ## 重要な前提確認 — ディフューザーは存在しない @@ -35,25 +37,27 @@ - config: `configs/_tmp_depth_bottom/d{1,2,4,8,16,32}.yaml`(`_tmp_sanity_1024/scene_bottom.yaml` ベース,max_depth のみ変更) - 出力: `output/depth_bottom/d{N}/luminance.npy` -- 比較図: `output/_slide_panels/depth_bottom_shape.png` +- 比較図: `output/_slide_panels/depth_bottom_shape_roi.png`(ROI 揃え) ### 結果 -| max_depth | mean | peak/mean | SSIM(対実機) | NCC(対実機) | -| --- | --- | --- | --- | --- | -| 1 | **0.000(真っ暗)** | – | – | – | -| 2 | **0.000(真っ暗)** | – | – | – | -| 4 | 1.474 | 2.223 | 0.428 | 0.690 | -| 8 | 3.484 | 1.815 | 0.425 | 0.688 | -| 16 | 4.678 | **1.653** | 0.396 | 0.670 | -| 32 | 4.904 | **1.657** | 0.397 | 0.666 | -| **実機 bottom** | – | **1.218** | – | – | +(数値は **ROI 揃え**版.図 `output/_slide_panels/depth_bottom_shape_roi.png`) + +| max_depth | mean(参考,フル) | peak/mean(ROI) | NCC(ROI,対実機) | +| --- | --- | --- | --- | +| 1 | **0.000(真っ暗)** | – | – | +| 2 | **0.000(真っ暗)** | – | – | +| 4 | 1.474 | 2.073 | 0.731 | +| 8 | 3.484 | 1.730 | 0.735 | +| 16 | 4.678 | **1.585** | 0.720 | +| 32 | 4.904 | **1.591** | 0.717 | +| **実機 bottom** | – | **1.218** | – | ### 読み取れること 1. **depth=1, 2 が完全に真っ暗(mean=0)** → LED は板に背を向けており(emitter 法線 -Z,板は +Z 側),**板は完全に間接光のみ**で照らされる(3〜4 回反射してようやく到達).TEST_08 で示した「LED は板と反対を向き間接光で照らす」を実証. -2. **バウンスを増やすと多少は平らになる**(peak/mean 2.22 → 1.65)が,**depth=16 で完全に頭打ち**(d16 と d32 がほぼ同一:1.653 vs 1.657,NCC 0.670 vs 0.666). -3. しかし**頭打ちの到達点(peak/mean 1.65)が実機(1.22)に全く届かない**.NCC も 0.67 で頭打ち(むしろ深さとともに微減).上暗下明の縦勾配も最後まで消えない. +2. **バウンスを増やすと多少は平らになる**(peak/mean 2.07 → 1.59)が,**depth=16 で完全に頭打ち**(d16 と d32 がほぼ同一:1.585 vs 1.591,NCC 0.720 vs 0.717). +3. しかし**頭打ちの到達点(peak/mean 1.59)が実機(1.22)に全く届かない**.NCC も 0.72 で頭打ち(むしろ深さとともに微減).上暗下明の縦勾配も最後まで消えない. ### 解釈 @@ -69,24 +73,24 @@ - config: `configs/_tmp_refl_bottom/r{90,95,98}.yaml`(R=0.85 は実験1の `output/depth_bottom/d16` を再利用) - 出力: `output/refl_bottom/run_r{90,95,98}/luminance.npy` -- 比較図: `output/_slide_panels/refl_bottom_shape.png` +- 比較図: `output/_slide_panels/refl_bottom_shape_roi.png`(ROI 版) - 判定: 閉じた箱なら R↑で一気に平ら(実機方向)→ 反射率の問題/漏れた箱なら R↑でも尖ったまま → 幾何(閉じ漏れ)が確定 -### 結果 +### 結果(ROI 揃え) -| R (printer_white) | mean | peak/mean | top/bot | SSIM(対実機) | NCC(対実機) | -| --- | --- | --- | --- | --- | --- | -| 0.85 | 4.678 | 1.653 | 0.867 | 0.396 | 0.670 | -| 0.90 | 6.594 | 1.602 | 0.878 | 0.411 | 0.659 | -| 0.95 | 9.468 | 1.460 | 0.888 | 0.410 | 0.649 | -| 0.98 | 11.874 | 1.441 | 0.894 | 0.415 | 0.640 | -| **実機 bottom** | – | **1.218** | **0.931** | – | – | +| R (printer_white) | peak/mean(ROI) | top/bot(ROI) | NCC(ROI,対実機) | +| --- | --- | --- | --- | +| 0.85 | 1.585 | 0.879 | 0.720 | +| 0.90 | 1.541 | 0.890 | 0.714 | +| 0.95 | 1.408 | 0.901 | 0.708 | +| 0.98 | 1.392 | 0.908 | 0.701 | +| **実機 bottom** | **1.218** | **0.931** | – | ### 読み取れること -1. **R を上げると確かに少し平らになる**(peak/mean 1.65→1.44,縦勾配 top/bot 0.867→0.894 で実機方向). -2. **しかし R=0.98(3D プリンタ白では非現実的に高い値)でも peak/mean 1.44 止まりで,実機 1.22 に届かない**. -3. **肝心の形の一致度(NCC)は改善しない**(0.670→0.640 でむしろ微減).SSIM もほぼ横ばい(0.40→0.42). +1. **R を上げると確かに少し平らになる**(peak/mean 1.59→1.39,縦勾配 top/bot 0.879→0.908 で実機方向). +2. **しかし R=0.98(3D プリンタ白では非現実的に高い値)でも peak/mean 1.39 止まりで,実機 1.22 に届かない**. +3. **肝心の形の一致度(NCC)は改善しない**(0.720→0.701 でむしろ微減). ### 解釈 @@ -94,38 +98,64 @@ - 反射率を上げても recirculation が効ききらない=**箱が閉じておらず光が逃げている**疑いが,実験1(無限バウンスでも尖り+縦勾配が残る)と整合して裏付けられた. - → **形の残差の本筋は B1 筐体幾何(光の入り方・箱の閉じ方)に絞り込まれた**. -## 2 実験の総括と次の予定 +## 実験3 — bottom 単灯 配光(spot cutoff)スイープ(spp=1024, d=16) -| レバー | 実験 | 形への効果 | 判定 | +### 目的・条件 + +LED の面積がバグ修正で正しくなったため,光源側の最後のレバー=**配光(指向性)**を再検証する(過去 Step 8-14 の ξ 実験はバグ込みのため無効).**bottom 単灯・spp=1024・max_depth=16 固定**で,Lambertian 面光源(現状)に対し spot emitter の cutoff_angle を `{15,30,60,90,120,150}°`(beam_width = cutoff/3)でスイープ. + +- config: `configs/_tmp_distrib_bottom/c{015..150}.yaml`(bottom 6 灯のみ,`scene_baseline_spot.yaml` ベース) +- 出力: `output/distrib_bottom/c{NNN}/luminance.npy`,基準 area は `output/depth_bottom/d16` +- 比較図: `output/_slide_panels/distrib_bottom_shape_roi.png`(ROI 版) + +### 結果(ROI 揃え) + +| 光源 | peak/mean(ROI) | top/bot(ROI) | NCC(ROI,対実機) | | --- | --- | --- | --- | -| 反射回数 max_depth | 実験1 | d16 で頭打ち,peak/mean 1.65 止まり | 本筋でない | -| 反射率 R | 実験2 | R=0.98 でも 1.44 止まり,NCC 改善せず | 本筋でない | -| **筐体幾何 B1** | 実験3(予定) | — | **最有力** | +| area(Lambertian, 現状) | 1.585 | 0.879 | 0.720 | +| spot 15° | 1.950 | 0.761 | 0.652 | +| spot 30° | 1.657 | 0.800 | **0.737** | +| spot 60° | 1.443 | 0.861 | 0.730 | +| spot 90° | **1.436** | 0.879 | 0.722 | +| spot 120° | 1.704 | 0.883 | 0.705 | +| spot 150° | 1.828 | 0.883 | 0.681 | +| **実機 bottom** | **1.218** | **0.931** | – | -### 次(実験3)— 幾何の漏れ点検 +### 読み取れること + +1. **中程度の spot(60〜90°)が最も平ら**(peak/mean 1.44)で Lambertian(1.59)よりわずかに改善.狭すぎ(15°→1.95)・広すぎ(150°→1.83)は悪化=中庸が谷. +2. **最良でも peak/mean 1.44 で実機 1.22 に届かず,NCC は全域 0.65〜0.74 でほぼ横ばい**(最良 spot30 で 0.737,area 0.720 から誤差レベル). +3. → **配光も形の決定的レバーではない**(動くが届かない).物理的には板が間接光のみ+Lambertian 拡散壁なので,配光を変えても背面壁への初当たりが変わるだけで拡散反射が大半を均す. + +> **過去結論の訂正**: PROGRESS の Step 8-14「area→spot は形改善の本物候補(angular_ratio −25%)」は**バグ込み(2m ストリップ)の結論**であり,正しい面積で再検証すると効果は誤差レベル(NCC 0.72→0.74).TEST_07 と同じく ξ も過大評価だった. + +## 3 実験の総括と次の予定 + +| レバー | 実験 | 形への効果(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(予定) | — | **最有力(光源側レバー出尽くし)** | + +光源側のレバー(反射回数・反射率・配光)を出し尽くしても形は実機に届かない=**残るは筐体幾何のみ**. + +### 次(実験4)— 幾何の漏れ点検 「光がどこから逃げているか/箱が閉じているか」を直接調べる: - **漏れの定量化**: bottom 単灯で,放出フラックスのうち何割が評価板に届き,何割が開口から外へ逃げているかを測る - **閉じテスト**: シミュ筐体の開いている面(センサ側開口など)を仮の白壁で塞いで再レンダ → 平らになれば「閉じ漏れ」が原因と確定 -### 補足 — 実機の平らさの素性確認(実験3 前に要検討) +### 補足 — 実機の平らさの素性確認(実験4 前に要検討) -実機マップは **LSC 補正済み**(`dng_luminance(apply_lsc=True)`).LSC はレンズ周辺減光を割り戻す処理で**本来は照明分布を平らにしない**はずだが,「実機の平らさが本物の照明分布か,処理由来か」を実験3 前に一度確認しておくと安全([TECH_07 LSC 取り扱い方針](../05_TECH/TECH_07_LSC取り扱い方針.md) 参照). +実機マップは **LSC 補正済み**(`dng_luminance(apply_lsc=True)`).LSC はレンズ周辺減光を割り戻す処理で**本来は照明分布を平らにしない**はずだが,「実機の平らさが本物の照明分布か,処理由来か」を実験4 前に一度確認しておくと安全([TECH_07 LSC 取り扱い方針](../05_TECH/TECH_07_LSC取り扱い方針.md) 参照). ## 追加観察 — 修正後の 3 単灯は「形」がほぼ同一(実機の相補性を再現できていない) なぜ光源の形(点 vs 2m 帯)を変えても板の形がほとんど変わらないのか([TEST_08 §修正前後のカラーマップ比較](TEST_08_面光源スケール軸バグの発見と修正.md))の物理的根拠は,**板が「間接光のみ(LED は板に背を向け,depth=1,2 が真っ暗)+ Lambertian 拡散壁」で照らされ,形が光源でなく筐体で決まる**ため.拡散壁での多重反射が光源の形状情報を洗い流す(積分球の原理;壁が鏡面なら光源形状が板に焼き付くが Lambertian なので消える). -この帰結として,**修正後シミュでは下・左・右の 3 単灯の「形」が互いにほぼ同一**になる(同じ筐体に光を注ぐため): - -| 灯 | peak/mean | top / bot | imgleft / imgright | -| --- | --- | --- | --- | -| bottom | 1.71 | 0.852 / 1.064 | 0.961 / 0.955 | -| left | 1.62 | 0.848 / 1.067 | 0.951 / 0.964 | -| right | 1.68 | 0.857 / 1.059 | 0.960 / 0.955 | - -縦勾配(top/bot ≈ 0.85/1.06)が 3 灯ほぼ同一.3 単灯どうしの形の一致度: +この帰結として,**修正後シミュでは下・左・右の 3 単灯の「形」が互いにほぼ同一**になる(同じ筐体に光を注ぐため).3 単灯どうしの形の一致度(mean 正規化,フル frame 計測): | ペア | NCC | SSIM | | --- | --- | --- | @@ -133,9 +163,9 @@ | bottom vs right | 0.927 | 0.406 | | left vs right | 0.913 | 0.360 | -→ **NCC ≈ 0.92 で 3 灯は互いにかなり似た形**.違いは「自分の側がほんの少し明るい」弱い横バイアスのみ. +→ **NCC ≈ 0.92 で 3 灯は互いにかなり似た形**.違いは「自分の側がほんの少し明るい」弱い横バイアスのみ(縦勾配 top/bot ≈ 0.85/1.06 が 3 灯ほぼ同一). -**重要な含意**: [TEST_04(実機単灯比較)](TEST_07_LEDグループ別動作確認.md) では実機の 3 灯は**相補的に異なる方向を照らす**(下=上側/左=右寄り…)とされていた.しかし**修正後シミュは 3 灯ほぼ同じ形=実機の「相補性」を再現できていない**.これは「シミュでは形が筐体で決まり LED 位置の効きが弱すぎる」ことを意味し,(a) 筐体幾何 B1 の不正確さ,または (b) シミュが間接化しすぎ(実機は各灯の直接性/指向性がもっと残る)を示唆する.実験3(幾何)の追加手がかり. +**重要な含意**: [TEST_04(実機単灯比較)](TEST_07_LEDグループ別動作確認.md) では実機の 3 灯は**相補的に異なる方向を照らす**(下=上側/左=右寄り…)とされていた.しかし**修正後シミュは 3 灯ほぼ同じ形=実機の「相補性」を再現できていない**.これは「シミュでは形が筐体で決まり LED 位置の効きが弱すぎる」ことを意味し,(a) 筐体幾何 B1 の不正確さ,または (b) シミュが間接化しすぎ(実機は各灯の直接性/指向性がもっと残る)を示唆する.実験4(幾何)の追加手がかり. ## 関連ドキュメント diff --git a/docs/PROGRESS.md b/docs/PROGRESS.md index 01b1eb1..f41081d 100644 --- a/docs/PROGRESS.md +++ b/docs/PROGRESS.md @@ -62,8 +62,8 @@ - **論点の移動**: 灯間バランス問題は解決したが,**残る不一致は各単灯フットプリントの拡散不足**(修正後 peak/mean≈1.7 vs 実機≈1.2,シミュは中央尖り+上暗下明,実機はほぼ一様).本筋は**配光 ξ/ディフューザー拡散のモデル化**へ移った.成果物: 修正後出力 `output/{sanity_fix_1024,baseline_fix_1024}/`,比較図 `output/_slide_panels/{sim_vs_real_shape_fixed,sim_vs_real_colormap_fixed}.png`,記録 [TEST_08](06_TEST/TEST_08_面光源スケール軸バグの発見と修正.md). - **過去結論の訂正**: [TEST_07](06_TEST/TEST_07_LEDグループ別動作確認.md) の「下灯 2.1× は直接光効率の幾何的優位で物理的に正しい/意図した設計」は**誤り**(バグ込み出力を物理で後付け正当化していた).TEST_07 冒頭に訂正注記を追加.**教訓**: シミュ出力を物理で後付け説明するとバグを設計意図と取り違える危険があり,実機グラウンドトゥルースとの灯ごと突合が有効だった.なお `lightsim/` は実測入力として `.gitignore` 対象. - **照明分布の「形」不一致の原因切り分け開始 — 混ぜ具合では詰められず B1 幾何に絞り込み (2026-06-29)**: バグ修正後も残る「形が実機と一致しない」問題(実機単灯は peak/mean≈1.2 のほぼ一様,シミュは≈1.7 で中央尖り+上暗下明)を,**形の一致(実機マップ参照の NCC/SSIM+視覚+放射プロファイル)を唯一の判定基準**に切り分け開始.[TEST_09](06_TEST/TEST_09_照明分布の形不一致の原因切り分け.md) に記録.**前提確認**: 実機は **LED カバー=筐体と同じ不透明白材・別ディフューザー無し**(ユーザー確認)=むき出し LED+白筐体のみ → 実機の平らさは筐体多重反射(積分球的拡散)由来でしかありえず,鍵は新部品でなく筐体(反射+幾何)のモデル化.**重要**: 過去 Step 8-14 の「A8/A9/A1 を振っても形は変わらない」はすべて面光源バグ込みの結論で,TEST_07 同様に要再検証. - - **実験1(bottom 単灯 spp=1024 max_depth バウンス分解 {1,2,4,8,16,32})**: depth=1,2 が**真っ暗(mean=0)**=LED は板に背を向け **板は完全に間接光のみ**(3〜4 反射でやっと到達).バウンス増で多少平らになるが **d16 で頭打ち**(d16≈d32),到達点 peak/mean **1.65** が実機 **1.22** に届かず・NCC 0.67 頭打ち.**混ぜ不足は原因でない**.完全閉箱なら無限反射で均一化するはずが尖り+縦勾配が残る=**光が混ざりきる前に逃げている**疑い.出力 `output/depth_bottom/d{N}/`,図 `output/_slide_panels/depth_bottom_shape.png`. - - **実験2(bottom 単灯 spp=1024 d=16 反射率スイープ R={0.85,0.90,0.95,0.98})**: R↑で少し平ら(peak/mean 1.65→1.44,縦勾配 top/bot 0.867→0.894 で実機方向)だが **R=0.98(非現実的高反射)でも 1.44 止まりで実機 1.22 に届かず,NCC は改善せず微減**(0.670→0.640).**反射率も本筋でない**.出力 `output/refl_bottom/run_r{90,95,98}/`,図 `output/_slide_panels/refl_bottom_shape.png`. + - **実験1(bottom 単灯 spp=1024 max_depth バウンス分解 {1,2,4,8,16,32})**: depth=1,2 が**真っ暗(mean=0)**=LED は板に背を向け **板は完全に間接光のみ**(3〜4 反射でやっと到達).バウンス増で多少平らになるが **d16 で頭打ち**(d16≈d32),到達点 peak/mean **1.65** が実機 **1.22** に届かず・NCC 0.67 頭打ち.**混ぜ不足は原因でない**.完全閉箱なら無限反射で均一化するはずが尖り+縦勾配が残る=**光が混ざりきる前に逃げている**疑い.出力 `output/depth_bottom/d{N}/`,図 `output/_slide_panels/depth_bottom_shape_roi.png`(ROI 揃え.数値は TEST_09 が正:ROI 版で d16 peak/mean=1.59・NCC=0.72). + - **実験2(bottom 単灯 spp=1024 d=16 反射率スイープ R={0.85,0.90,0.95,0.98})**: R↑で少し平ら(peak/mean 1.65→1.44,縦勾配 top/bot 0.867→0.894 で実機方向)だが **R=0.98(非現実的高反射)でも 1.44 止まりで実機 1.22 に届かず,NCC は改善せず微減**(0.670→0.640).**反射率も本筋でない**.出力 `output/refl_bottom/run_r{90,95,98}/`,図 `output/_slide_panels/refl_bottom_shape_roi.png`(ROI 揃え.数値は TEST_09 が正). - **総括**: 「筐体が光をかき混ぜる強さ」を司る 2 レバー(反射回数・反射率)を両方上限まで振っても形は実機の平らさに構造的に届かない → **形の残差の本筋は B1 筐体幾何(光の入り方・箱の閉じ漏れ)に絞り込み**.次は実験3(漏れの定量化/開口を白壁で塞ぐ閉じテスト).補足: 実機マップは LSC 補正済みのため,実験3 前に「実機の平らさが本物の照明分布か処理由来か」を一度確認すると安全. - **バグの独立検証・修正前後比較・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 も小改善にとどまった.