面法線アーティファクト(TEST_12)の修正後, 内壁の材質パラメータ 3 軸 (ρ / ω / α) を全数スイープして実機に最も近い条件を確定し, さらに残差を低次成分に分解して「材質で直せる誤差」と「直せない誤差」を分離した(2026-08-30〜31).
関連:
反射率スイープ(output/sweep_reflectance/)と blend BSDF スイープ(output/blend_sweep/)は
いずれも面法線修正前に実施しており,当時はシミュの不均一性の 6 割超がシェーディング法線
アーティファクトだった.したがって「どの材質パラメータが実機に近いか」という結論は
アーティファクトへのフィッティングになっていた可能性が高く,引き直しが必要だった.
加えて TEST_12 で実機とシミュが数値レベルで整合するようになったため,指標を使った比較が 初めて意味を持つ状態になった.ここで材質パラメータを確定させれば,以後の設計検討 (未製作筐体の予測)の土台になる.
固定条件は既存レンダと完全に同一に保ち,printer_white の材質定義だけを書き換えた
(テンプレート: configs/_tmp_fn_full_base.yaml).
| 項目 | 値 |
|---|---|
| レンダ | spp=1024 / max_depth=16 / 512² / llvm_ad_rgb / path / orthographic |
| 幾何・光源・センサ | 変更なし(現行筐体・18 灯・ortho_scale 50×52) |
| 評価 | configs/eval_baseline_dng_target.yaml(linear + mean アンカー 207.82) |
| 比較対象 | 実機全灯 lightsim/luminance_maps/full_MiniTIAS_QM_20260601_124500.npy |
スイープ軸(ω=0 は α に依存しないため α は 1 値のみ.計 60 条件):
| 軸 | 意味 | 値 |
|---|---|---|
| ρ | diffuse 成分の反射率 | 0.75 / 0.78 / 0.82 / 0.85 / 0.88 / 0.90 |
| ω | blendbsdf の roughconductor 混合比(0 なら純 diffuse) | 0 / 0.05 / 0.15 / 0.30 |
| α | roughconductor の GGX 粗さ | 0.1 / 0.3 / 0.6 |
実行は無人 6 時間枠で行い,58 ジョブを 3.98 時間で完走した(1 ジョブ 179〜332 秒.
基準点 ρ=0.85/ω=0.05/α=0.1 は output/full_base_fix/ を再利用し再レンダしていない).
形の一致度は 平滑化(median 5px + gaussian σ=4)後の NCC 対実機を用いる. TEST_12 追補で確認したとおり生マップの NCC は MC ノイズに支配される(単灯でノイズ 5.3%
構造振幅 3.8〜4.4%)ためである.振幅系は CoV / 中心周辺比 / 勾配 / 動径 min-max の 実機との相対乖離を用い,総合スコアは形と振幅を半々で重み付けした(
sweep_bsdf_grid_fix.py).
スコア上位 5 条件:
| 条件 | score | CoV | C/P | 勾配 % | 動径 min/max | NCC | 打切損失 % |
|---|---|---|---|---|---|---|---|
| ρ0.82 ω0(純 diffuse) | 0.0789 | 0.0669 | 1.0915 | 8.38 | 0.862 | 0.857 | 5.1 |
| ρ0.78 ω0.05 α0.1 | 0.0801 | 0.0701 | 1.0925 | 8.47 | 0.858 | 0.853 | 3.0 |
| ρ0.82 ω0.05 α0.3 | 0.0854 | 0.0665 | 1.0899 | 8.25 | 0.866 | 0.856 | 6.0 |
| ρ0.82 ω0.05 α0.6 | 0.0873 | 0.0681 | 1.0934 | 8.54 | 0.866 | 0.854 | 6.0 |
| ρ0.85 ω0.15 α0.6 | 0.0900 | 0.0672 | 1.0902 | 8.27 | 0.867 | 0.845 | 12.9 |
| 実機 全灯 | — | 0.0695 | 1.0911 | 8.35 | 0.860 | 1.000 | — |
純 diffuse(ω=0)系列の ρ 応答:
| ρ | CoV | 勾配 % | C/P | 動径 min/max | NCC | score |
|---|---|---|---|---|---|---|
| 0.75 | 0.0761 | 10.33 | 1.1152 | 0.831 | 0.852 | 0.1749 |
| 0.78 | 0.0723 | 9.52 | 1.1053 | 0.844 | 0.852 | 0.1301 |
| 0.82 | 0.0669 | 8.38 | 1.0915 | 0.862 | 0.857 | 0.0789 |
| 0.85 | 0.0626 | 7.54 | 1.0816 | 0.874 | 0.860 | 0.1204 |
| 0.88 | 0.0584 | 6.79 | 1.0728 | 0.888 | 0.856 | 0.1655 |
| 0.90 | 0.0552 | 6.19 | 1.0660 | 0.898 | 0.858 | 0.1977 |
| 実機 | 0.0695 | 8.35 | 1.0911 | 0.860 | 1.000 | — |
読み取れること:
図: output/_slide_panels/bsdf_grid_response.png(指標 × ρ の応答曲面),
output/_slide_panels/bsdf_grid_contact_sheet.png(全 60 条件の輝度マップ一覧).
60 条件すべてで NCC は 0.6118〜0.8599,外れ値の ω=0.30/α=0.1 系列を除けば 0.8135〜0.8599 に収まり,基準点(0.8544)からほとんど改善しない. 応答曲面の NCC パネルはほぼ水平線になる.
コンタクトシートで目視しても 60 セルが実質すべて同じ絵(左右対称の中央ブロブ+上端の 暗い帯)であり,実機の「右下が明るく左上隅が暗い斜め構造」はどの条件でも現れない.
振幅系が ρ で 3 倍動くのに形の相関が動かない ── 残る形の差は材質パラメータでは 原理的に埋まらないことが,網羅探索によって実証された.
これは TEST_03 の主題「数値の縮小 ≠ 形の改善」が, 面法線修正後の新しい条件でも成立することを意味する.
指標だけでは最終判断にならないため,実機との残差マップ
(mean 正規化後の (sim - real) / mean(real) %)を直接観察し,
さらに 定数 + 傾き(X, Y) + お椀(R²) で最小二乗分解した.
純 diffuse 系列:
| ρ | 残差 RMS % | 傾き % | 方位 deg | お椀 % | 分解後の残り % |
|---|---|---|---|---|---|
| 0.75 | 3.58 | 5.79 | −146.1 | −1.77 | 1.01 |
| 0.78 | 3.63 | 6.00 | −143.7 | −0.90 | 0.99 |
| 0.82 | 3.72 | 6.19 | −140.7 | +0.27 | 0.99 |
| 0.85 | 3.83 | 6.36 | −138.2 | +1.12 | 0.97 |
| 0.88 | 4.00 | 6.56 | −136.3 | +1.91 | 0.98 |
| 0.90 | 4.12 | 6.69 | −134.9 | +2.46 | 0.94 |
全 60 条件での広がり: 傾き 5.79〜8.74%,方位 −146.1〜−127.1 deg,お椀 −2.12〜+4.92%.
読み取れること:
図: output/_slide_panels/bsdf_grid_rho_series.png(上段 輝度マップ / 下段 残差マップ),
output/_slide_panels/bsdf_grid_top_residual.png(上位条件の残差マップ).
既存の単灯レンダ(output/singles_fix/,ρ=0.85・ω=0.05・α=0.1.全灯と同一条件)に
同じ分解を適用した(追加レンダなし):
| 灯 | 残差 RMS % | 傾き % | 方位 deg | お椀 % | 分解後の残り % |
|---|---|---|---|---|---|
| 全灯 | 3.99 | 6.55 | −137.4 | 1.77 | 0.99 |
| bottom | 3.98 | 6.00 | −143.0 | 3.56 | 1.23 |
| left | 4.55 | 7.17 | −151.7 | 3.16 | 1.30 |
| right | 2.30 | 1.84 | −62.0 | 1.43 | 1.94 |
傾きは全灯共通の性質ではなく,基板ごとに異なる.bottom と left は 6〜7% で方位も近い (−143 / −152 deg)のに対し,right だけ 1.84% とほぼ傾きがない(傾きが小さいため方位 −62 deg 自体はほとんど意味を持たない).
これは原因の切り分けに直結する.仮に傾きがカメラ由来(LSC 補正残差)であれば,同じカメラ・ 同じ ROI を使う以上 4 条件すべてに同一の傾きが乗るはずである.そうなっていない以上, 傾きの主要部分はカメラのアーティファクトではなく,bottom と left の基板のモデル化誤差と 判断できる.right は既にほぼ整合している.
なお,実機単灯の ROI mean は bottom 57.75 / left 61.46 / right 63.55(露出・ISO 固定の
同一セッション)で 右 > 左 > 下 の 10% の広がりがあるのに対し,シミュ(singles_fix)は
6.539 / 6.559 / 6.575 と 0.5% 以内でほぼフラットであり,基板間の出力差が未モデル化である.
ただし一律のゲイン差だけでは「right だけ傾きが小さい」ことを説明できないため,
位置・向き・配光のいずれかが bottom / left で外れている可能性が高い.
max_depth=16 据え置きによる打ち切り損失が ρ とともに増える(ρ=0.82・ω=0 で 5.1%,
ρ=0.90 で 20.6%).採用条件は許容範囲だが,高 ρ 側の条件は打ち切り誤差と交絡している.
なお blendbsdf の roughconductor 成分は material="none"(反射率 1.0 の完全反射体)のため,
ω が大きいほど実効反射率が上がり打ち切り損失も増える(ρ0.88・ω0.30 で 26.8%).output/bsdf_grid_fix/summary.csv に残してあるため,別の重みで並べ替え直せる.configs/scene_baseline.yaml の既定材質を ρ=0.81 純 diffuse に更新するかの判断.# スイープ(無人実行.時間予算で自動打ち切り,1 ジョブ完了ごとに summary.csv を更新) uv run python scripts/sweep_bsdf_grid_fix.py --budget-hours 5.5 # 指標の可視化(応答曲面 + 上位条件の形比較) uv run python scripts/build_bsdf_grid_panel.py --top 3 # 輝度マップそのものの可視化(一覧 / ρ 系列 + 残差 / 上位条件の残差) uv run python scripts/build_bsdf_grid_visual.py --top 4
出力: output/bsdf_grid_fix/summary.csv(60 条件)・各条件の luminance.npy と metrics.csv・
ログ output/_sweep_bsdf_grid_fix.log・図 output/_slide_panels/bsdf_grid_*.png.