Newer
Older
SmTIAS-LightSim / docs / 05_TECH / TECH_10_残差主因候補の網羅整理.md

残差 2.63× の主因候補の網羅整理 (Residual Cause Candidates Enumeration)

⚠️ BEFORE FIX(バグ込み・要再検証): 本ドキュメントの優先度評価(A1/A8/A9/ξ 等)と参照図は,すべて面光源スケール軸バグ(全 LED が幅3mm×高さ2mの巨大ストリップ化)が入った状態の結果に基づく.バグ修正後の再検証(TEST_08 / TEST_09)では,A8 反射率・A9 max_depth・ξ 配光はいずれも単灯の形を実機に近づけられず,残差の本筋は B1 筐体幾何 に絞り込まれた.本ドキュメントの候補評価は修正後に再評価が必要.

本ドキュメントは TEST_01 Step 8-13 で確定した シミュ vs 実機の残差 2.63× の主因候補を網羅的に整理したものである.Step 8-14 以降の物理モデル精緻化で「何を試すか」の判断材料として作成した.

結論(先に) (Conclusion First)

順位候補影響度検証コスト推奨理由
🥇 1 位A1. 内壁の非 Lambertian 性(光沢成分)✓ クリア—2026-06-02 検証完了:3×3 グリッドで全 9 パターンが実機方向に作用しない(むしろ悪化)と判明.純 Lambertian が実機挙動に最も近い.§ A1 検証結果 参照
🥈 2 位A9. max_depth 8 → 16+✓ 数値改善のみクリア(形不変)—2026-06-03 検証完了:5 値スイープ {8,12,16,20,28} で CoV/勾配/C/P/動径 min/max が全て単調改善(d=28 で残差 21-28% 縮小).ただし「形」は Y 軸単調勾配のまま完全に不変.均一化フィルタとして働くが空間再配分は起こさない.§ A9 検証結果 参照
🥇 1 位A8. 反射率 R=0.85 → 0.89(物理整合点)✓ 数値改善のみクリア(形は逆効果)—2026-06-03 検証完了:5 値スイープ {0.75, 0.80, 0.85, 0.89, 0.92} で d=16 ベース.既存 4 指標は単調改善するが angular_ratio は 0.408 → 0.494 で増加(実機方向と逆).「形状指標の偽物の一致」を初めて定量実証.§ A8 検証結果 参照
🥇 1 位(形改善・初実証)A2/A3/ξ. LED 配光モデル (area→spot)大の実証中2026-06-03 検証完了:cutoff スイープで angular_ratio が 0.45→0.34 で 25% 低下(実機方向).「形」を構造的に変える初実証.ただし数値は若干悪化(A8 と真逆パターン).§ ξ 検証結果 参照
🥇 1 位(形改善・未試行)B1. 筐体内部の幾何精度大の可能性高3D プリンタの実物理表面 vs 設計表面.残る構造的再配分系の有力候補.配光と組み合わせて使う余地あり
4 位D1. シミュ ROI と実機 ROI の物理的整合✓ クリア—2026-06-02 検証完了:物理サイズ差 < 1%・中心位置差 < 1 mm で整合.残差主因から除外(§ D1 検証結果 参照)
4 位A2/A3. LED 配光の個体差・樹脂ドーム小〜中高データシート Lambertian 整合済 (TECH_09)

→ 2026-06-03 三次更新: 配光モデル (A2/A3/ξ) が形改善の本物の候補として初実証.cutoff スイープで area→spot のステップで angular_ratio が 0.45→0.34 へ 25% 低下(実機方向に最大改善).「形」を構造的に変える候補が確定.ただし数値は若干悪化(A8 と真逆パターン)→ 形 + 数値の両立は次の課題.B1 幾何精度は依然有力候補(未試行).

背景 (Background)

Step 8-13 で 真の linear ドメイン比較 (DNG+LSC 順方向適用 vs シミュ orthographic) を実施した結果,残差 2.63× が確定した(TEST_01 Step 8-13 参照).これは TECH_06 で予想した「真の残差 2.66×」とほぼ一致する値.

主因の絞り込み状況:

候補絞り込み状況出典
LSC 補正残差排除TECH_07(実機側で順方向適用が確立)
シミュ側のドメイン不一致(ガンマ等)排除TECH_08(網羅チェック済み)
LED 配光のモデル誤差ほぼ排除TECH_09(データシート Lambertian と数値一致)
残るのは「シミュ物理モデル誤差」絞り込み対象(本ドキュメント)—

候補の網羅整理(5 カテゴリ 18 項目) (Comprehensive Candidate List)

A. 物理光学モデル系(最有力候補を含む)

ID候補現状影響度検証状況
A1内壁の非 Lambertian 性(光沢成分)diffuse BSDF(完全 Lambertian)✓ クリア2026-06-02 検証完了:blendbsdf (diffuse + roughconductor) で weight×alpha の 3×3 グリッド全 9 パターンを実走→全パターンが純 diffuse より悪化または不変.§ A1 検証結果 参照
A2/A3/ξLED 配光モデル (area light → spot)area light Lambertian大の実証2026-06-03 検証完了:spot emitter で cutoff スイープ {30°, 60°, 90°, 120°, 150°} を実走.area→spot のステップで angular_ratio が 0.45→0.34 で 25% 低下(実機方向に最大改善).spot ファミリー内の cutoff 違いは effect 小.数値は若干悪化(A8 と真逆).§ ξ 検証結果 参照
A4LED 駆動電流のばらつき全 LED 完全同じ radiance小18 個並列接続で電流分配誤差は通常 ±5% 以内
A5発光面の物理サイズ2.8mm 角(パッケージサイズ)小Step 8-7 で 1.5mm 角試行.形状不変,mean のみ変化
A6LED 方向(光軸)全 LED (0, 0, -1)小実機の基板は平面で妥当
A7LED 位置精度Fusion STL 抽出済小Step 8-9 で正確化済(1% 以内の形状変化)
A8反射率 R = 0.85 → 0.89R=0.85(暫定)✓ 数値改善のみクリア(形は逆効果)2026-06-03 検証完了:5 値スイープ {0.75, 0.80, 0.85, 0.89, 0.92} で d=16 ベース.既存 4 指標は実機方向に単調改善(CoV 0.186→0.142, 残差 24% 縮小)するが 新指標 angular_ratio は 0.408→0.494 で実機方向と逆に増加(実機は同心円的予想).§ A8 検証結果 参照
A9max_depth = 8 → 16+d=8 → 推奨 d=16✓ 数値改善のみクリア2026-06-03 検証完了:5 値スイープ {8,12,16,20,28} で CoV/勾配/C/P/動径 min/max が全て単調改善.d=8→28 で残差 21-28% 縮小.ただし「形」は Y 軸単調勾配のまま完全に不変.均一化フィルタとして働くが空間再配分は起こさない.新キャリブベースラインとして d=16 推奨.§ A9 検証結果 参照

B. 幾何モデル系

ID候補現状影響度検証状況
B1筐体内部の幾何精度Fusion 360 設計 STL中の可能性3D プリンタの積層・サポート跡・微細な凹凸はモデルに含まれない.実機 3D スキャンで定量化可能だが高コスト
B2メッシュ離散化精度STL → PLY 変換時の三角形数小〜中細かい曲面は離散化される
B3評価板の位置・向きFusion 360 設計通り小既知の精度(CAD 通り)

C. センサ・カメラ系(タイプ II 構造的差異)

TECH_08 §許容している構造的差異 のタイプ II 項目.白板撮影では許容と判断したが完全排除不能.

ID候補現状影響度検証状況
C1絞り・口径食orthographic で cos⁴ なし小実機側 lscMap で補正済(残差あり)
C2AF(焦点モデル)orthographic 無限遠小白板 DoF 内固定で許容
C3ピクセル積分点サンプリング + spp小spp=1024 で緩和
C4センサノイズなし小白板高輝度で相対影響小

D. 評価方法系

ID候補現状影響度検証状況
D1シミュ ROI と実機 ROI の物理的整合シミュ (24, 37, 464, 450) / 実機 (539, 1015, 1400, 1409)✓ クリア2026-06-02 検証完了:物理サイズ差 < 1%,中心位置差 < 1 mm.残差主因から除外(§ D1 検証結果 参照)
D2mean アンカー target_mean=207.82 の精度実機 1 ショットの値小形状指標には影響なし

E. 環境・運用系(実機側)

ID候補現状影響度検証状況
E1LED 温度上昇による光出力低下シミュは温度概念なし小18 個・通常室温で安定
E2筐体内壁の汚れ・経年劣化新品仮定小新品評価なら無視可

優先度評価の根拠

🥇 1 位: A1 内壁の非 Lambertian 性(光沢成分)

物理的根拠:

  • 現状の Mitsuba diffuse BSDF は 完全 Lambertian(cos θ で散乱)を仮定
  • 実物理: 3D プリンタ白フィラメント(PLA / ABS 等)は マット表面に見えても微妙な specular 成分を持つことが多い
  • 鏡面反射成分があると 多重反射の経路が変わり「形」が変化 する可能性が高い

変化が「形」に効く機序:

  • LED 直接光が壁に当たる → 光沢成分があれば 特定方向に強く反射
  • diffuse 100% なら均等分散だが、光沢があれば 評価板の特定領域に集中 する経路ができる
  • これが Y 軸単調勾配の「上端も均等に明るくならない」現象に対応する可能性

実装方法:

  • Mitsuba の roughconductor か roughdielectric を diffuse と混合(blendbsdf)
  • パラメータ: roughness(粗さ)と diffuse/specular 比
  • 物理動機: 3D プリンタ素材の実物理特性に近づける

期待効果:

  • 数値: 反射成分の方向性で多重反射経路が変化 → CoV / 勾配が動く可能性
  • 形: Y 軸単調勾配が崩れて中央ピーク楕円に近づく可能性(最も期待できる)

🥈 2 位: A8 反射率 R = 0.85 → 0.89(物理整合点)

物理的根拠:

  • 現状 R=0.85 は暫定値.Step 8-6 で 物理整合点 R≈0.89 が導出済(規格 LED radiance との物理的一致点)
  • インテグレーティングスフィア近似 1/(1-R) で R=0.85 → 0.89 は 多重反射ゲイン 6.67 → 9.09(1.36×)

変化が「形」に効く機序:

  • 反射率上昇 → 多重反射量増加 → 評価板への ambient 成分(均一光)が増える
  • Y 軸単調勾配の「上端の暗さ」がやや軽減される可能性

実装方法:

  • configs/scene_baseline.yaml の printer_white.reflectance を 0.85 → 0.89 に変更
  • spp / max_depth は据え置き

期待効果:

  • 数値: 過去 Step 8-2 で「弱い二次レバー」と判明済.CoV 数% 改善
  • 形: わずかに均一化方向だが大きな変化は期待しにくい

🥉 3 位: A9 max_depth 8 → 16+

物理的根拠:

  • 現状 max_depth=8 で多重反射の 後段(5〜8 回反射目)が打ち切られる可能性
  • 過去 Step 8-4 で 8→12 試行.CLAUDE.md には「キャリブは d≥12 推奨」と記載
  • 新方針(DNG+LSC linear)下では未再評価

実装方法:

  • configs/scene_baseline.yaml の max_depth を 8 → 16(または 12)
  • レンダ時間は depth に概ね比例(8.5 分 × 2 ≈ 17 分)

期待効果:

  • 数値: 多重反射の累積で勾配が緩和される可能性
  • 形: わずかに均一化方向

候補の組み合わせ評価

3 候補は 物理的に独立 なので組み合わせて試せる:

組み合わせ期待
A1 + A8 + A9全部入り.最大改善を狙う.レンダ時間 約 17 分
A8 + A9既存方針の延長.低コスト.大幅改善は期待しにくい
A1 単独「形」改善の最大候補単独.BSDF 実装が必要

ユーザー認識との差分整理

ユーザー認識(2026-06-02 議論)私の見立て差分
「LED 配光が一番影響」A2/A3 = 6 位(影響度 小〜中)TECH_09 でデータシート Lambertian 整合済みを踏まえて優先度低下
「筐体の反射率」A8 = 2 位賛成.物理整合点 R=0.89 への調整は次の試行候補
「反射回数」A9 = 3 位賛成.新方針下で再評価の価値あり
─A1 内壁の非 Lambertian 性が最有力(新規追加)私からの追加提案.完全 Lambertian は理想化しすぎ

「やらない」と判断したもの

以下は明示的に 本ドキュメントの優先度から除外 した:

候補除外理由
C1〜C4(タイプ II 構造的差異)TECH_08 で「白板撮影では許容」と判断済.舌模型評価時に再考
B1 筐体内部の幾何精度検証コスト高(実機 3D スキャン等が必要).他の候補を試した後の最終手段
A2/A3 LED 配光の個体差データシート Lambertian 整合済(TECH_09).実物の個体差ばらつきは実測ゴニオフォトメータが必要で高コスト
E1/E2 環境・運用系新品撮影・通常室温で影響軽微

ξ 検証結果(2026-06-03 完了)

候補リストで A2/A3「LED 配光モデル」 の感度分析を Step 8-14 候補 ξ として実行.emitter のタイプ自体が「形」を構造的に変えることが初実証された.これは A1/A8/A9 と異なる「形改善の本物の候補」.

検証手順

  1. 仮説: cutoff スイープで配光の鋭さが「形」に効くかを測る.データシート整合は気にせず純粋に「広がりが形に効くか」を見る感度分析
  2. 実装: scripts/sweep_led_distribution.py で configs/scene_baseline_spot.yaml (Step 8-10 で作成) をテンプレに spot emitter の cutoff_angle を {30, 60, 90, 120, 150}° に書き換え.beam_width = cutoff_angle / 3 で連動(ビーム形状を相似).max_depth を 16 に更新.flux 補正なし(mean アンカーで吸収).約 85 分.

結果

cutoff (beam)CoV勾配%C/Prmin/maxangular_ratiocentroid_yeccentricity
area light (baseline d=16)0.160420.591.2590.6840.45360.04000.4264
30° (10° beam, 鋭)0.177625.511.3430.6210.33800.04860.4087
60°0.166424.131.3180.6390.34380.04310.4098
90° (CoV 最良)0.164923.711.3110.6470.35240.04240.4106
120°0.168223.691.3100.6470.35460.04230.4116
150° (広)0.173823.741.3110.6470.35560.04240.4119
実機 TARGET0.06958.351.0910.860小予想0—

★ 重要な 2 つの発見 ★

発見 1: 「area light → spot」のステップが本質的

設定angular_ratio
area light (Lambertian)0.4536
spot (どの cutoff でも)0.34 〜 0.36

→ area→spot に変えた瞬間に angular_ratio が 0.45 → 0.34 へ 25% 低下(実機方向).「形」を構造的に変える初実証.

発見 2: cutoff スイープ内では効果限定的

spot ファミリーで cutoff を 30°→150° と変えても angular_ratio は 0.338 → 0.356 と +0.018 のみ.「鋭さ」を変えても形はほぼ同じ.効くのは emitter の基本構造.

物理的解釈

  • area light (Lambertian): 半球全方向に cos θ で散乱 → 内壁に広く拡散光 → 多重反射 ambient 支配 → Y 軸方向勾配
  • spot: +Z 軸方向にしか光を出さない → 内壁に当たる成分が減り直接光増加 → LED 直下の明点 → X 方向波打ち → 半径方向のばらつきが支配的(angular_ratio 減)

spot にすると 「内壁多重反射 ambient < 直接光」 に傾き、評価板の照度分布が LED 配置のパターンを直接反映するようになる.

A8 と真逆のパターン

候補数値 (CoV)形 (angular_ratio)評価
A8 反射率 R↑改善悪化(0.41→0.49)数値の偽物の一致
ξ LED 配光 area→spot悪化改善(0.45→0.34)形改善の本物

→ 数値 + 形の 2 軸評価方針 (TECH_11) が再び正当性を示す.

判定と意味

  • 配光は「形」を構造的に変える本物の候補として初実証.これまでクリアした A1/A8/A9 は均一化フィルタ系で形を変えなかったが、emitter type は構造的に光分布を再配分
  • TECH_10 優先順位を再更新: A2/A3/ξ を「形改善候補」へ昇格.B1 と並列の本筋候補
  • 数値最良点 (cutoff=90°, CoV=0.165) と形最良点 (cutoff=30°, ang_ratio=0.338) が違う → キャリブで「何を優先するか」議論を明確化する事例
  • 次の方向性:
    1. emitter の本質的バリエーション(cos^n, IES, 軸ティルト ζ など)
    2. 形 + 数値の両立を狙う組み合わせ(spot + 反射率調整 + max_depth 等)
    3. B1 筐体幾何精度(残る構造的再配分系候補)

副次成果

  • 配光スイープのテンプレ整備(今後の emitter 系試行に流用可能)
  • Step 8-10 で作成した configs/scene_baseline_spot.yaml + SpotLight クラスが本格活用されたことの実証
  • A2/A3 を「データシート Lambertian 整合済」として低優先順位に置いていた過去判断(TECH_09)は 物理整合性の観点では正しいが、形改善の感度分析としては独立した価値があることが判明

A8 検証結果(2026-06-03 完了)

候補リストで A8「反射率 R=0.85 → 0.89(物理整合点)」 を 5 値スイープ {0.75, 0.80, 0.85, 0.89, 0.92} で検証したところ,既存 4 指標は実機方向に改善するが、新指標 angular_ratio は実機方向と逆に動くことが判明.TECH_11 で予想していた「数値の偽物の一致」を初めて定量実証した.

検証手順

  1. 仮説: ① R 上昇で既存 4 指標は ambient 増加で改善方向 ② 新指標 angular_ratio は不変または同心円方向(実機の中央ピーク楕円に整合)
  2. 実装: scripts/sweep_reflectance.py で configs/scene_baseline.yaml (d=16 新基準) の materials.printer_white.reflectance のみ書き換え.評価は configs/eval_baseline_dng_target_shape.yaml で 新指標 (shape_metrics) を初投入.約 85 分.
  3. 再現性確認: R=0.85 の CoV=0.1604 は max_depth スイープ d=16 (CoV=0.1604) と 完全一致 → 別 sweep 間の数値整合性 OK

結果

RCoV勾配%C/Prmin/maxangular_ratiocentroid_y_normeccentricity
0.750.186124.671.3270.6200.40790.04530.444
0.800.173522.671.2930.6490.42820.04280.436
0.850.160420.591.2590.6840.45360.04000.426
0.890.150118.961.2340.7100.47610.03770.419
0.920.142417.721.2150.7310.49380.03580.414
実機 TARGET0.06958.351.0910.860小予想0—

★ 形状指標見直しの初の定量実証 ★

指標R 0.75→0.92 の動き実機方向か
CoV0.186 → 0.142 で 改善 24%✓
勾配24.7 → 17.7 で 改善 28%✓
C/P1.327 → 1.215 で 改善✓
rmin/max0.620 → 0.731 で 改善✓
angular_ratio0.408 → 0.494 で増加 21%✗ 逆方向(実機は同心円的)

→ 既存 4 指標が「改善」と判定する一方で、新指標 angular_ratio は「形は実機から遠ざかる」と判定.TECH_11 で予想していた「数値の偽物の一致」が 現実に起きていることの初の定量証拠.

物理的解釈

  • R 上昇 → ambient 成分増加 → 半径方向の偏り(評価板下端 vs 上端の差)が圧縮 → CoV/勾配/rmin/max 改善
  • 角度方向のばらつき(X 方向の波打ち等)は 相対的に圧縮されにくい
  • 結果「半径 var / 角度 var」バランスが崩れ angular_ratio が 増加
  • R 上昇は 「Y 単調勾配の contrast を緩める代わりに角度方向のムラを相対的に強調する」.実機の「中央ピーク楕円(=同心円的)」とは 形が遠ざかる

判定と意味

  • A8 は数値改善には有効だが形改善ではない(むしろ形は逆効果).候補リストから「数値改善のみクリア」として除外
  • A1/A9 検証より 強い発見: 「均一化フィルタ系の改善は形を変えない」を超えて 「数値改善が形を逆方向に動かす」ケースの実証
  • TECH_11 の評価方針(数値 + 形 + 視覚の 3 軸)の妥当性が定量データで裏付けられた.今後の試行で新指標必須
  • TECH_10 優先順位を再更新: A8 をクリア化.形改善の本筋は B1 幾何精度に最終確定

副次発見

  • 反射率を上げると centroid_y_norm がわずか減少(0.045→0.036)= 重心が画像中心に近づく方向(形改善の弱い兆候)
  • eccentricity がわずか減少(0.444→0.414)= 楕円率がわずか改善
  • ただし angular_ratio の悪化が支配的で、全体としては形悪化と判定

ユーザー仮説の評価

ユーザー要請「反射率を変えて結果を見たい」は 重要な実証実験として完了.結果として:

  • 数値だけ見れば「R=0.92 が最良」と判定される(CoV 0.1424)
  • しかし新指標も合わせて見ると R=0.75 が最も同心円的(実機方向に近い形)
  • これは 新指標を導入していなければ気づけない発見であり、形状指標見直しの 正当性が定量データで裏付けられた

A9 検証結果(2026-06-03 完了)

候補リストで A9「max_depth 8 → 16+」 を 5 値スイープ {8, 12, 16, 20, 28} で検証したところ,数値指標は実機方向に単調改善するが「形」は完全に不変であることが確定した.均一化フィルタとして働くが空間再配分は起こさない.

検証手順

  1. 仮説: 現状 max_depth=8 では多重反射の累積寄与の 理論累積 R/(1-R)=5.67 に対して 72.7% しか取り込んでいない.残り 27% を打ち切っている.R=0.85 の場合,最終 bounce の寄与が 0.01 を下回るのは d≈28 付近.
  2. 実装: scripts/sweep_max_depth.py で configs/scene_baseline.yaml の render.max_depth のみを書き換え → sm-render → sm-evaluate (configs/eval_baseline_dng_target.yaml).約 85 分.
  3. 可視化: scripts/build_max_depth_panel.py で 1×5 輝度マップ + 収束カーブ生成.追加で「shared vs independent スケール 2 段比較」(max_depth_sweep_shape.png) と「mean=1 正規化」(max_depth_sweep_relative.png) で形の不変性を視覚化.

結果

max_depth理論累積 R^nCoV勾配%C/P動径 min/max
872.7%0.181724.011.3160.628
1285.8%0.165121.351.2720.671
1692.6%0.160420.591.2590.683
2096.1%0.158920.351.2560.687
2898.7%0.158320.241.2540.689
実機 TARGET—0.06958.351.0910.860

残差縮小率(d=8 → 28)

指標縮小率 = (d8 − d28) / (d8 − TARGET)
CoV20.9%
勾配24.1%
C/P27.6%
動径 min/max26.3%

収束観察

実用的な収束は d=16 で達成(d=16 → 28 で CoV 1.3% のみ動く).理論累積より早く収束.これは 「直接光と初期反射が支配的,後段の累積はわずかな ambient しか足さない」 という物理的直感と整合.

「形」の観察(決定的)

3 種類のパネル全てで 形は完全に不変:

  • 共有スケール: 全 5 画像とも下端中央が明るく上端が暗い Y 軸単調勾配で、contrast が d=8→28 で緩む
  • 独立スケール(自己 contrast 最大化): 全 5 画像とも 同じ形を異なる contrast で再現 → 形が変わっていないことが視覚的に明白
  • mean=1 正規化: d=8 で 0.3〜1.3、d=28 で 0.4〜1.2 と 相対輝度の範囲が狭まる(ambient 化が進む)が,空間パターン (Y 単調勾配) は不変

物理的解釈

多重反射の累積は 空間的にほぼ均一な ambient 成分として働く.これを足すと:

  • 暗い領域と明るい領域の 絶対差が縮む → 数値指標は改善
  • 暗い/明るい領域の 空間配置は不変 → 「形」は変わらない

つまり多重反射は 均一化フィルタとして作用するが,「LED が下にしかなく評価板の中央〜上端は内壁経由でしか光が届かない」という 配置と幾何に由来する非対称性は除去できない.これは TEST_03 の主張「Step 8-1〜8-7 で形は全く変わっていない」と整合.max_depth スイープも同じパターン.

判定と意味

  • A9 は数値改善には有効だが形改善ではないことが確定.候補リストから「数値改善のみクリア」として除外
  • 新キャリブベースラインは d=16 が筋(d=28 と CoV 1.3% 差、レンダ時間 17 分 vs 30 分).物理整合の極致を求めるなら d=28
  • TECH_10 優先順位を再更新: A9 をクリア化,形改善の本筋候補は B1 幾何精度に集約.A8 は数値改善目的では有効だが形改善は予想薄
  • 副次成果: スイープ + 収束カーブ + 形比較パネルのテンプレが整備された.今後 spp など他のレンダパラメータ感度分析にも流用可能

ユーザー仮説の評価

ユーザー仮説「max_depth を増やすべき(最終 bounce 寄与が 0.01 を下回るまで)」は 方向性として完全に正しい:

  • 数値改善は d=8 → 28 で確実に進む(21-28% 残差縮小)
  • ただし 実用収束は d=16(理論累積より早い).d=28 まで増やしても得るのは 1% 程度の追加改善
  • 実機 (CoV=0.0695) には届かない(収束値 CoV=0.158 が下限).残る残差は形改善で詰める必要がある

ユーザーの「形は変わっていない」観察も視覚的・物理的に正確.均一化フィルタ系の改善は数値には効くが形には効かない原則が再確認された.

注記 (2026-06-03): 本検証で用いた形状指標(CoV / 勾配 / C/P / 動径 min/max)は 形を構造的に区別できない(TECH_11 形状指標の見直し 参照).本判断は「数値の絶対量」レベルの結論であり,「形が変わったか」は新指標(angular_ratio / SSIM / 重心 / PCA)で再評価する必要がある.A9 については視覚比較(独立スケール・mean=1 正規化パネル)でも「形は全く変わらない」が確認されており,新指標での再評価の優先度は低い.

A1 検証結果(2026-06-02 完了)

候補リストで当時 🥇 1 位だった A1「内壁の非 Lambertian 性(光沢成分)」 を Step 8-14 候補 β として 3×3 グリッド感度分析で検証したところ,**どの組み合わせも実機方向に作用しない(むしろ悪化)**ことが確定した.

検証手順

  1. スキーマ拡張: src/sm_tias_lightsim/scene/schema.py に RoughConductorBSDFConfig (alpha, distribution) と BlendBSDFConfig (weight + components×2,forward reference + model_rebuild()) を追加.MaterialConfig Union を拡張.後方互換は既存 scene_baseline.yaml のスモークテストで確認
  2. Mitsuba dict 変換拡張: src/sm_tias_lightsim/scene/materials.py の _build_bsdf_dict を再帰ヘルパとして切り出し.blendbsdf のネスト対応
  3. テンプレ YAML: configs/scene_baseline_blend.yaml を作成.printer_white のみ blendbsdf (diffuse R=0.85 + roughconductor material="none") に置換
  4. スイープ実行: scripts/sweep_blend_bsdf.py で weight ∈ {0.05, 0.15, 0.30} × α ∈ {0.1, 0.3, 0.6} の 9 ジョブを順次 sm-render + sm-evaluate.各 8.4 分 × 9 = 75.5 分.eval は configs/eval_baseline_dng_target.yaml (linear + mean アンカー 207.82)
  5. 比較パネル: scripts/build_blend_bsdf_panel.py で 3×3 輝度マップ(shared vmin/vmax 1%/99% percentile)+ 数値表 PNG を生成

結果(CoV / 勾配% / C/P / 動径 min/max)

ベースライン純 diffuse (w=0): 0.1826 / 24.65 / 1.327 / 0.615 実機 TARGET: 0.0695 / 8.35 / 1.091 / 0.860

weight \ α0.1(鋭い)0.3(中)0.6(粗い)
0.050.192 / 24.8 / 1.33 / 0.620.189 / 24.9 / 1.33 / 0.620.185 / 24.4 / 1.32 / 0.62 ← 最良
0.150.213 / 26.0 / 1.35 / 0.610.204 / 26.6 / 1.36 / 0.600.193 / 25.5 / 1.34 / 0.61
0.300.243 / 26.8 / 1.37 / 0.59 ← 最悪 CoV0.227 / 29.0 / 1.41 / 0.57 ← 最悪 形0.205 / 27.0 / 1.37 / 0.59

観察された傾向

軸効果
weight ↑(光沢強化)CoV / 勾配 / C/P すべて 単調悪化(不均一性増)
α ↑(粗さ大)weight 固定で わずか改善(diffuse に近づくため)
動径 min/maxspecular 強化で 0.615 → 0.570 へ低下(不均一さが目立つ)

「形」の観察(output/_slide_panels/blend_bsdf_sweep.png)

  • w=0.05 行: ベースラインに近い Y 軸単調勾配(純 diffuse と区別困難)
  • w=0.15 行: 下端中央に明るい集中点が現れ始める
  • w=0.30 行: 下端中央に 2 つの明るいスポットが顕在化.specular 反射が LED 直下の評価板領域に集中
  • α を上げると specular が「拡散的」になり diffuse に近づくが、実機の中央ピーク楕円パターンには近づかない

物理的解釈

純 Lambertian は cos 重み散乱で 多重反射の均一化作用が最大.specular 成分が混ざると:

  • 内壁での 1 回反射が 特定方向に集中
  • 多重反射ループから外れて評価板の特定エリア(カバー側下端)に集中
  • 多重反射の累積が不均一になり ambient 成分が減る

3D プリンタ白フィラメントは 完全 Lambertian として扱うのが実機挙動に近い近似 だと判明(TECH_09 の LED Lambertian 整合性と並ぶ「物理モデル妥当性の裏付け」).

判定と意味

  • A1 は残差 2.63× の主因ではないことが確定.候補リストから「クリア」として除外
  • 「最有力候補」だった A1 の除外は 次の候補に焦点を絞れる正味前進
  • 副次成果: スキーマ層に blendbsdf + roughconductor のサポートが入った.今後の物理モデル試行で再利用可能
  • 新規テスト 89 件追加(既存 608 → 697 全通過).Pydantic v2 forward reference + 再帰 BSDF 変換の安全網が整備された

副次発見

  • roughconductor の material="none" 設定は eta=k=1 の完全反射体として機能する(Mitsuba 3 仕様).感度分析用途で扱いやすい
  • weight=0 で純 diffuse に完全一致するため、ベースライン (output/baseline/luminance.npy) を 10 番目のセルとして使い回せる設計が妥当だった

注記 (2026-06-03): 本検証で用いた形状指標(CoV / 勾配 / C/P / 動径 min/max)は 形を構造的に区別できない(TECH_11 形状指標の見直し 参照).本判断は「数値の絶対量」レベルの結論であり,「形が変わったか」は新指標(angular_ratio / SSIM / 重心 / PCA)で再評価する必要がある.3D パネル視覚比較でも「w=0.30 行で下端中央に 2 つの明るいスポット」が出現しており,A1 は実機の中央ピーク楕円パターンには近づかないことが定性的にも確認されている.

D1 検証結果(2026-06-02 完了)

候補リスト 4 位の D1「シミュ ROI と実機 ROI の物理的整合」 を Step 8-14 候補 γ として 事前検証したところ,両者は物理的に同じ領域を見ていることが確認できた.設定変更は一切行わず,既存設定の数値検証のみで結論が出た.

検証手順

  1. シミュ ROI 物理範囲の算出 — configs/scene_baseline.yaml の orthographic 設定(position (0,0,-50), ortho_scale (50, 52), film 512×512)と configs/eval_baseline_linear.yaml の ROI (24, 37, 464, 450) から,評価板中心基準で X∈[-45.31, +45.31] mm, Y∈[-46.92, +44.48] mm(幅 90.63×91.41 mm) と算出
  2. 評価板 STL bbox 計測 — configs/meshes/照明ムラ補正ボード.stl を trimesh で計測:X=99 mm × Y=102 mm(既知値と一致)
  3. 実機画像の物理スケール算出 — reference_measurement/MiniTIAS_20260408_144434/MiniTIAS_20260408_144434.png(2448×3264)から評価板の縦方向黒縁を検出(H=1560 px).評価板 Y=102 mm より 物理分解能 0.0654 mm/px を確定(ピクセルアスペクト比 1:1 仮定で X 方向も同じ)
  4. 実機 ROI 物理範囲の算出 — roi_config.json の ROI (539, 1015, 1400, 1409) から,評価板中心基準で X∈[-44.79, +46.75] mm, Y∈[-47.53, +44.59] mm(幅 91.54×92.13 mm) と算出(画像 y→物理 Y は符号反転)

比較結果

項目シミュ ROI実機 ROI差
X 幅90.63 mm91.54 mm-0.91 mm (1.0%)
Y 高さ91.41 mm92.13 mm-0.72 mm (0.8%)
X 中心0 mm+0.98 mm+0.98 mm
Y 中心(符号反転後)-1.22 mm-1.47 mm-0.25 mm

→ 物理サイズは 1% 以内・中心位置は 1 mm 以内で一致.3 列パネル output/_slide_panels/roi_alignment_check.png(①実機画像 + 評価板境界・実機 ROI / ②シミュ輝度マップ + 評価板境界・シミュ ROI / ③物理座標系で両者を重ね合わせ)でも視覚的に確認.

判定と意味

  • 残差 2.63× の主因は ROI 整合ではないことが確定.D1 を候補リストから「クリア」として除外
  • 過去の設定者(おそらく Step 8 開始時の scripts/select_white_board.py GUI 選択 → シミュ側 ortho_scale 設計値)は 物理整合性を意識して ROI を揃えていたことが裏付けられた
  • 設定変更ゼロで結論が出たため,シミュ/実機双方の YAML・コードへの コミット可能な変更なし

副次発見

評価板は実機画像中央から 下方向に約 4.2 mm(65 px)オフセットして配置されている(カメラ取付位置 vs 評価板取付位置のミリ精度差)が,実機 ROI もそのオフセットに沿って選択されているため,物理領域としては板中心とほぼ整合している.

Step 8-14 候補選定(次のアクション)

D1(γ)が「クリア」と確定したため,残る選択肢は以下:

Step 8-14 候補内容状態推奨度
Step 8-14 候補 α 前半A9 max_depth 8 → 16+✓ 2026-06-03 完了(数値改善のみクリア — 形不変)—
Step 8-14 候補 α 後半A8 反射率 R=0.85 → 0.89(d=16 ベース)✓ 2026-06-03 完了(数値改善のみクリア — angular_ratio は実機方向と逆)—
Step 8-14 候補 βA1 内壁の非 Lambertian 性(光沢成分混合 BSDF)✓ 2026-06-02 完了(クリア — 実機方向に作用しない)—
Step 8-14 候補 γD1 ROI 整合の再確認✓ 2026-06-02 完了(クリア — 物理差 < 1%)—
Step 8-14 候補 δβ + α 全部β/α 前半クリアで意義消失—
Step 8-14 候補 ε(新規)B1 筐体幾何精度の検討(形改善の最後の砦)未実施⭐⭐⭐
Step 8-14 候補 ζ(新規)LED 軸方向のティルト仮説(評価板中央向きに数度傾ける)未実施⭐⭐

→ A1/A9 がともに「形改善ではない」と確定したため,残る残差 (CoV 0.158 vs TARGET 0.069) の 形改善は構造的に光分布を再配分する要素 (B1 / ζ) が本筋.均一化フィルタ系 (A8) は数値改善のみ期待.

残差候補の出典

過去の試行履歴

仕様