diff --git a/CLAUDE.md b/CLAUDE.md index 4b4b719..03c347f 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -23,7 +23,7 @@ ## 開発進捗 -最新: フェーズ 7(実装)— **TEST_18 照明配置依存性の球と立方体の比較**(LED の位置 θ・向き・個数を同内面積ペアで振った 255 条件.配置依存は球が立方体の 1/2〜1/3,球は θ≈30° が軸上より均一,対向 2 灯以上で形状差が消え,真下向きならバッフル不要)と,**スイープの高速化**(`sm-render`/`sm-evaluate` の本体を `render/pipeline`・`evaluation/pipeline` に関数化してプロセス内実行,`--no-figures`,遮蔽検証を cuda で,`--workers 2`.1 条件 球 40 秒 → 6 秒).サーバは `sm-remote`(学外からは `SM_REMOTE_HOST=Newton-via-lab`).**環境**: mitsuba は **3.7.1 に固定**(テストは `uv run python -m pytest`),開発機の **SAC はオフ**(ENV_04 参照).同一 seed の再レンダは集計指標が一致するので,ノイズフロアは `render.seed` を変えて測る.詳細は [docs/PROGRESS.md](docs/PROGRESS.md). +最新: フェーズ 7(実装)— **TEST_18 照明配置依存性の球と立方体の比較**(LED の位置 θ・向き・個数を同内面積ペアで振った 255 条件.配置依存は球が立方体の 1/2〜1/3,球は θ≈30° が軸上より均一,対向 2 灯以上で形状差が消える.真下向き多灯はバッフル無しで成立するが板向き多灯に劣る)と,**スイープの高速化**(`sm-render`/`sm-evaluate` の本体を `render/pipeline`・`evaluation/pipeline` に関数化してプロセス内実行,`--no-figures`,遮蔽検証を cuda で,`--workers 2`.1 条件 球 40 秒 → 6 秒).サーバは `sm-remote`(学外からは `SM_REMOTE_HOST=Newton-via-lab`).**環境**: mitsuba は **3.7.1 に固定**(テストは `uv run python -m pytest`),開発機の **SAC はオフ**(ENV_04 参照).同一 seed の再レンダは集計指標が一致するので,ノイズフロアは `render.seed` を変えて測る.詳細は [docs/PROGRESS.md](docs/PROGRESS.md). 実装済みモジュール: - `src/sm_tias_lightsim/uniformity.py` — Rec.709 輝度変換 + CoV/std/max-min(SmTIAS-Evaluation コピー) @@ -155,4 +155,4 @@ - バッフル導入と球半径スイープ: docs/06_TEST/TEST_15_バッフル導入と球半径スイープ.md(LED 壁面密着+バッフルで直接光を遮る新構成と,球内半径 88〜250mm のスイープ.ロフト接合の 2 段階の作り直しで「大きいほど悪化」が逆転し,板直下の喉が最大のレバーと判明した経緯) - 立方体キャビティ導入と球との比較: docs/06_TEST/TEST_16_立方体キャビティ導入と球との比較.md(ロフト・接合・喉の無い立方体を L=120〜360mm でスイープし内面積で球と対応づけ.同面積なら立方体が一貫して均一で,四隅の写り込みは m=4 方位フーリエで検出限界以下と確認) - オフ軸 LED 配置の影響とサイズ依存: docs/06_TEST/TEST_17_オフ軸LED配置の影響とサイズ依存.md(LED を側壁に置いた非対称の定量.サイズとともに減衰するが,頑健性は球 > 立方体で軸上の優劣と逆転.明るくなるのは LED の反対側) -- 照明配置依存性の球と立方体の比較: docs/06_TEST/TEST_18_照明配置依存性の球と立方体の比較.md(LED の位置 θ・向き・個数を同内面積ペアで振った 198 条件.配置依存は球が立方体の 1/2〜1/3,球は軸上より θ≈30° が均一,対向 2 灯以上で形状差が消え真下向きならバッフル不要) +- 照明配置依存性の球と立方体の比較: docs/06_TEST/TEST_18_照明配置依存性の球と立方体の比較.md(LED の位置 θ・向き・個数を同内面積ペアで振った 198 条件.配置依存は球が立方体の 1/2〜1/3,球は軸上より θ≈30° が均一,対向 2 灯以上で形状差が消える.追加実験: 立方体は面の稜へ寄せると悪化,真下向き多灯はバッフル無しで成立するが板向き多灯には劣る) 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 5a3c651..9d68d3a 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" @@ -91,8 +91,8 @@ | `output/cube_size_sweep/_anchor_check_mitsuba371/L120/` | TEST_16 | `configs/_tmp_cube_size/scene_board_baffle_L120.yaml`(本体スイープと同一.mitsuba **3.7.1** でレンダ) | 同上 | 3.8.0 版と比較して構造 CoV 一致(0.0379)・輪帯 min/max 差 +0.0002・輪帯プロファイル最大差 1.17σ | mitsuba 3.8.0→3.7.1 固定(SAC が `IlmThread-mitsuba.dll` をブロック)の等価性検証アンカー.バージョン混在の妥当性の根拠 | | `output/offaxis_led_sweep/` (10 ディレクトリ) | TEST_17 | `configs/_tmp_offaxis/scene_offaxis_*.yaml`(`scripts/sweep_offaxis_led.py` が生成.LED を**深さ方向軸の中点の高さ・+X 側の壁面**に置き板中心 (0,0,-4.5) へ向けた board_baffle 構成.球 similar_radial r ∈ {88, 100, 135, 170, 250} + 立方体 L ∈ {120, 160, 200, 280, 360}.バッフルは視線上 10mm・数値サイジング.材質・spp=1024・d=16 据え置き・mitsuba 3.7.1) | `configs/eval_baseline_dng_target_shape.yaml` | m=1 符号付き a1 が全条件で負(LED 側が暗い)= -1.6〜-7.2%.サイズとともに約 4 割まで減衰.位置ずれの Δ構造CoV は球 ±0.006 以内・立方体 +0.010〜+0.033 — [TEST_17](TEST_17_オフ軸LED配置の影響とサイズ依存.md) 参照 | **オフ軸頑健性は球 > 立方体(軸上と逆転)**を実証.遮蔽は全 10 条件 55,473 本 100%(傾き追従の LED サンプルに一般化済み) | | `output/offaxis_led_sweep/{summary.csv,offaxis_comparison.png}`・`_placement_check/cutaway_*.png` | TEST_17 | — | — | 条件別集約 CSV/解析図(輝度マップ 2 行 + a1・重心・構造 CoV の内面積依存を軸上と重ね描き)/レンダ前 3D 確認の半割り断面 10 枚 | `scripts/build_offaxis_comparison.py`・`show_scene_cutaway.py` の出力.レンダ前 3D 確認(CLAUDE.md 必須ルール)の記録を兼ねる | -| `output/led_placement_sweep/` (198 ディレクトリ) | TEST_18 | `configs/_tmp_led_placement/scene_*.yaml`(`scripts/sweep_led_placement.py` が生成.同内面積ペア 球 r ∈ {100,135,170,250} ↔ 立方体 L ∈ {141,187,234,340} で,LED をキャビティ中心から見た極角 θ=0〜120°(13 段階)に置く位置スイープ・θ=60/90/120° の向き 3 通り(板向き+バッフル/壁法線向き+バッフル/真下向き)・θ=90° の輪に N=1〜4 灯(総光束保存)・seed 違いの再レンダ.材質・spp=1024・d=16 据え置き.Newton cuda_ad_rgb・mitsuba 3.7.1・`--workers 2` で 1 条件 5〜6 秒) | `configs/eval_baseline_dng_target_shape.yaml` | 配置依存の幅(θ 全域の構造 CoV max−min)は球 0.015〜0.023・立方体 0.025〜0.071.球は θ≈30° が軸上より均一(r=170: 0.0193→0.0057).対向 2 灯で構造 CoV 0.005〜0.010 と形状差が消える.真下向きはバッフル無しで板向きと同等 — [TEST_18](TEST_18_照明配置依存性の球と立方体の比較.md) 参照 | **配置依存は球が立方体の 1/2〜1/3**(仮説成立).図なし評価(`--no-figures`)なので各条件に figures/ は無い.`row.json` が条件ごとの集約行(並列・再開用) | -| `output/led_placement_sweep/{summary.csv,analysis.csv,position_summary.csv,position_sensitivity.png,position_maps.png,direction_comparison.png,count_comparison.png,analysis_report.txt}`・`_placement_check/cutaway_*.png` | TEST_18 | — | — | 条件別集約 CSV/方位フーリエ m=1〜4・構造 CoV・重心の解析 CSV/位置・向き・灯数の解析図 4 枚/レンダ前 3D 確認の半割り断面 18 枚 | `scripts/build_led_placement_comparison.py`・`show_scene_cutaway.py` の出力.レンダ前 3D 確認(CLAUDE.md 必須ルール)の記録を兼ねる | +| `output/led_placement_sweep/` (255 ディレクトリ) | TEST_18 | `configs/_tmp_led_placement/scene_*.yaml`(`scripts/sweep_led_placement.py` が生成.同内面積ペア 球 r ∈ {100,135,170,250} ↔ 立方体 L ∈ {141,187,234,340} で,LED をキャビティ中心から見た極角 θ=0〜120°(13 段階)に置く位置スイープ・θ=60/90/120° の向き 3 通り(板向き+バッフル/壁法線向き+バッフル/真下向き)・θ=90° の輪に N=1〜4 灯(総光束保存)・seed 違いの再レンダ,追加実験の方位角 φ=15〜40°(立方体)と真下向き N=2/4/8 灯.材質・spp=1024・d=16 据え置き.Newton cuda_ad_rgb・mitsuba 3.7.1・`--workers 2` で 1 条件 5〜6 秒) | `configs/eval_baseline_dng_target_shape.yaml` | 配置依存の幅(θ 全域の構造 CoV max−min)は球 0.015〜0.023・立方体 0.025〜0.071.球は θ≈30° が軸上より均一(r=170: 0.0193→0.0057).対向 2 灯で構造 CoV 0.005〜0.010 と形状差が消える.真下向きはバッフル無しで板向きと同等 — [TEST_18](TEST_18_照明配置依存性の球と立方体の比較.md) 参照 | **配置依存は球が立方体の 1/2〜1/3**(仮説成立).図なし評価(`--no-figures`)なので各条件に figures/ は無い.`row.json` が条件ごとの集約行(並列・再開用) | +| `output/led_placement_sweep/{summary.csv,analysis.csv,position_summary.csv,position_sensitivity.png,position_maps.png,direction_comparison.png,count_comparison.png,azimuth_comparison.png,ring_comparison.png,analysis_report.txt}`・`_placement_check/cutaway_*.png` | TEST_18 | — | — | 条件別集約 CSV/方位フーリエ m=1〜4・構造 CoV・重心の解析 CSV/位置・向き・灯数・方位角・真下向き多灯の解析図 6 枚/レンダ前 3D 確認の半割り断面 23 枚 | `scripts/build_led_placement_comparison.py`・`show_scene_cutaway.py` の出力.レンダ前 3D 確認(CLAUDE.md 必須ルール)の記録を兼ねる | | `output/cube_size_sweep/board_baffle/{summary.csv,cube_vs_sphere.png,fourfold_component.png}`・`output/cube_size_sweep/_placement_check/cutaway_L*.png` | TEST_16 | — | — | 条件別集約 CSV/球との比較図(輝度マップ 5 枚 + 輪帯プロファイル + 内面積軸の指標カーブ + 直接ペア 3 組)/m=4(cos 4φ)成分の定量図/レンダ前 3D 確認の半割り断面 5 枚 | `scripts/build_cube_sphere_comparison.py`・`analyze_fourfold_component.py`・`show_scene_cutaway.py` の出力.m=4 は全条件 \|a4\| ≤ 0.26%(系統誤差床 ~0.1%)=四隅の写り込みは実質ゼロ.レンダ前 3D 確認(CLAUDE.md 必須ルール)の記録を兼ねる | | `output/_slide_panels/sphere_loft_disk_before_after.png`・`normal_artifact_explainer.png` | TEST_12 | — | — | 球ロフト円形光源の修正前後 1×2 比較(相対輝度・共通スケール)/法線アーティファクトの機構説明図(模式図+実物メッシュの補間法線再現+修正前マップの 4 パネル) | 発表スライド素材(アドホック生成.修正前後比較は CoV 0.1205→0.0628 の視覚版) | diff --git "a/docs/06_TEST/TEST_18_\347\205\247\346\230\216\351\205\215\347\275\256\344\276\235\345\255\230\346\200\247\343\201\256\347\220\203\343\201\250\347\253\213\346\226\271\344\275\223\343\201\256\346\257\224\350\274\203.md" "b/docs/06_TEST/TEST_18_\347\205\247\346\230\216\351\205\215\347\275\256\344\276\235\345\255\230\346\200\247\343\201\256\347\220\203\343\201\250\347\253\213\346\226\271\344\275\223\343\201\256\346\257\224\350\274\203.md" index aa55c77..1aca7b7 100644 --- "a/docs/06_TEST/TEST_18_\347\205\247\346\230\216\351\205\215\347\275\256\344\276\235\345\255\230\346\200\247\343\201\256\347\220\203\343\201\250\347\253\213\346\226\271\344\275\223\343\201\256\346\257\224\350\274\203.md" +++ "b/docs/06_TEST/TEST_18_\347\205\247\346\230\216\351\205\215\347\275\256\344\276\235\345\255\230\346\200\247\343\201\256\347\220\203\343\201\250\347\253\213\346\226\271\344\275\223\343\201\256\346\257\224\350\274\203.md" @@ -26,7 +26,7 @@ 固定条件(材質 ρ=0.85 blendbsdf・spp=1024・max_depth=16・512²・評価板・LED 面積と 総光束・評価 YAML)は TEST_15〜17 と同一.球は similar_radial キャビティ. -レンダは研究室サーバ Newton の cuda_ad_rgb(mitsuba 3.7.1).全 198 条件. +レンダは研究室サーバ Newton の cuda_ad_rgb(mitsuba 3.7.1).主実験 198 条件 + 追加実験 57 条件(結果 5・6). ### 同内面積ペア @@ -53,6 +53,8 @@ | B 向き | θ = 60/90/120° × {板中心向き+バッフル, 壁法線向き+バッフル, 真下向き(バッフル無し)} | 48(うち 24 は A と共通) | | C 個数 | θ=90° の輪に N=1/2/3/4 灯を等方位(総光束を保存=radiance/N)+ N=4 を θ=60/120° | 40(うち 8 は A と共通) | | D 再現性 | ペア 3・θ=90°・1 灯を seed を変えて 3 回再レンダ | 6 | +| E 方位角(追加) | θ=90°・1 灯・板中心向きで方位角 φ = 15/30/40°(立方体: 面の中央→稜寄り).球は φ=45° が対照,立方体 L=234 φ=90° は符号較正 | 17 | +| F 真下向き多灯(追加) | 真下向き(バッフル無し)N=2/4/8 灯を θ=90° の輪に,N=4 を θ=60° にも.比較用に板中心向き N=8 | 40 | バッフルは TEST_17 と同じ数値サイジング(発光面の前方にある板の全点を隠す最小半径 ×1.05).板の近く(θ が大きい)や壁法線向きでは円板が壁を貫かざるを得ないので,本実験は @@ -134,6 +136,49 @@ **seed を変えずに再レンダしても指標は 4 桁まで一致する**(画素はノイズ程度に変わるが 集計で消える)ため,再現性条件は `render.seed` を変えた YAML にした. +## 結果 5 — 方位角: 立方体は面の中央から稜へ寄せるほど悪化する (Azimuth) + +`azimuth_comparison.png`.θ=90°・1 灯・板中心向きのまま,方位角 φ を面の中央(0°)から +稜寄り(40°.稜は 45°)へ振った.m=1 は LED の方位へ投影した符号付き成分 a1_led で見る +(較正: φ=90° の投影 −4.10% が φ=0° の −4.10% と一致=投影の符号は正しい). + +| 立方体 | φ=0° | 15° | 30° | 40° | 40°/0° | +| --- | --- | --- | --- | --- | --- | +| L=141 構造 CoV | 0.0554 | 0.0649 | 0.0855 | 0.0972 | 1.75 | +| L=187 | 0.0459 | 0.0507 | 0.0596 | 0.0654 | 1.42 | +| L=234 | 0.0323 | 0.0355 | 0.0421 | 0.0460 | 1.42 | +| L=340 | 0.0208 | 0.0221 | 0.0247 | 0.0277 | 1.33 | +| L=141 a1_led | −7.1% | −7.7% | −9.6% | −11.2% | | + +- 立方体は**面の中央が最良で,稜へ寄せるほど単調に悪化**(構造 CoV で 1.3〜1.75 倍, + 非対称で 1.3〜1.6 倍).稜の近くでは隣の面の一次照射も加わり,暗い側が広がる +- 球の対照(φ=45°)は φ=0° と 2〜9% 以内で一致(軸対称.ずれは板の 99×102 の + 非正方形分).**位置依存に加えて「面のどこか」にも依存するのが立方体** + +## 結果 6 — 真下向き多灯(バッフル無し)は成立するが板向き多灯には劣る (Downward Ring) + +`ring_comparison.png`.真下向き(板が発光面の背後=バッフル無し)で N=2/4/8 灯を +θ=90° の輪に等方位に置いた(立方体 N=8 は稜を避けて 22.5° ずらす). + +| 構造 CoV | N=1 | N=2 | N=4 | N=8 | 板向き N=8(バッフル付き) | 単灯軸上 | +| --- | --- | --- | --- | --- | --- | --- | +| 球 r=100 | 0.0268 | 0.0118 | 0.0100 | 0.0093 | 0.0052 | 0.0311 | +| 球 r=170 | 0.0183 | 0.0101 | 0.0078 | 0.0072 | 0.0045 | 0.0193 | +| 球 r=250 | 0.0145 | 0.0118 | 0.0110 | 0.0092 | 0.0050 | 0.0145 | +| 立方体 L=141 | 0.0494 | 0.0239 | 0.0220 | 0.0186 | 0.0076 | 0.0280 | +| 立方体 L=234 | 0.0332 | 0.0106 | 0.0095 | 0.0075 | 0.0053 | 0.0139 | +| 立方体 L=340 | 0.0242 | 0.0109 | 0.0098 | 0.0094 | 0.0066 | 0.0096 | + +- 真下向きでも **2 灯以上で m=1 は ≤0.5% に消え**,構造 CoV は 1 灯の 1/2〜1/4. + 球は全サイズで単灯軸上より均一,立方体はペア 1〜3 で単灯軸上より均一・最大サイズで同等 +- ただし**板向き+バッフルの多灯(0.004〜0.008)には 1.5〜2.5 倍劣る**.真下向きは + N を増やしても 0.007〜0.010(球)/0.008〜0.019(立方体)で頭打ちになる.一次照射が + LED 側の壁の下半分に集中し,多灯にしても「下が明るく上(板側)が暗い」動径構造が + 残るため(輪帯 min/max 0.91〜0.98 vs 板向き多灯 0.97〜0.99) +- 生 mean は真下向きが板向きより 5〜35% 明るく,N によらず一定(総光束保存) +- 小さい立方体(L=141)は真下向きだと N=8 でも 0.019 と悪い.壁際で下を向いた LED が + 床の隅を強く照らすため + ## 結論 (Conclusions) - **仮説成立**: 照明位置への依存は球が同内面積の立方体の 1/2〜1/3.球は軸上より θ≈30° @@ -143,12 +188,16 @@ キャビティ中心へ向ける(壁法線向き)のは最悪 - **個数**: 対向 2 灯以上の対称配置で形状差は消え,どちらも単灯軸上より均一.立方体は 灯数を 2 か 4 にする(3 は不可) -- **設計への含意**: 単灯なら球.多灯にできるなら「側壁の対向 2〜4 灯・真下向き・ - バッフル無し」が最も簡単で,そこまでやれば立方体でも球と同等 +- **方位角**(追加): 立方体は面の中央が最良で稜へ寄せるほど 1.3〜1.75 倍悪化.球は方位に依らない +- **真下向き多灯**(追加): バッフル無しでも 2 灯以上で非対称は消え単灯軸上より均一になるが, + 板向き+バッフルの多灯には 1.5〜2.5 倍劣り,N を増やしても頭打ち +- **設計への含意**: 単灯なら球.多灯にできるなら「側壁の対向 2〜4 灯・板向き・各灯にバッフル」が + 最良で形状差も消える.バッフルを省きたいなら「真下向き 2〜4 灯」が次善(球なら 0.008〜0.012, + 中〜大の立方体なら 0.010〜0.013).立方体なら灯数は 2 か 4 で面の中央に置く ## 限界・注意点 (Limitations) -- 方位角は +X(立方体では面の中央)のみ.稜に寄せた配置・N=3 の方位依存は未測定 +- 方位角は結果 5 で θ=90° の 1 灯だけ測った.N=3 の方位依存・θ を変えた方位依存は未測定 - 壁法線向きのバッフルはキャビティ寸法の 5〜44% と大きく,実物の設計として妥当かは別問題 (結果は「その向きに置くと大きなバッフルが要る」ことも含めた評価) - 材質は旧条件(ρ=0.85 blendbsdf).絶対値の実機予測には校正値での引き直しが必要 @@ -169,10 +218,10 @@ ## 次にやること (Next Steps) -1. 方位角依存: 立方体の面中央 vs 稜寄りで位置依存がどう変わるか -2. 「真下向き・バッフル無し」の多灯版(対向 2〜4 灯,底の輪 N=4〜8)=実機で最も簡単な構成の評価 -3. a1 の符号反転(球 θ=10〜20°)の機構の確認(一次照射キャップの位置) -4. 校正材質(ρ≈0.81 純 diffuse)での引き直し +1. a1 の符号反転(球 θ=10〜20°)の機構の確認(一次照射キャップの位置) +2. 校正材質(ρ≈0.81 純 diffuse)での引き直し(代表条件だけでも結論が変わらないか) +3. 直方体 L×L×D(深さだけ変える)と天井を平らにした球(TEST_17 の宿題) +4. 真下向き多灯の頭打ちを解く配置(LED を少し上向き/板側の壁の反射率を上げる等) ## 再現コマンド (Reproduction) @@ -191,10 +240,10 @@ uv run python scripts/build_led_placement_comparison.py ``` -出力: `output/led_placement_sweep/`(条件別 198 ディレクトリ + `summary.csv` + `analysis.csv` + +出力: `output/led_placement_sweep/`(条件別 255 ディレクトリ + `summary.csv` + `analysis.csv` + `position_summary.csv` + `position_sensitivity.png` / `position_maps.png` / -`direction_comparison.png` / `count_comparison.png`).レンダ前 3D 確認は -`_placement_check/cutaway_*.png`(代表 18 条件). +`direction_comparison.png` / `count_comparison.png` / `azimuth_comparison.png` / +`ring_comparison.png`).レンダ前 3D 確認は `_placement_check/cutaway_*.png`(代表 23 条件). ## 参照 (References) diff --git a/docs/PROGRESS.md b/docs/PROGRESS.md index 787863c..0f4318e 100644 --- a/docs/PROGRESS.md +++ b/docs/PROGRESS.md @@ -101,4 +101,4 @@ - **スイープの高速化 — レンダ/評価の関数化・プロセス内実行・cuda 遮蔽検証・2 並列 (2026-09-14)**: ユーザー指示「効率化を先に」を受け,`scripts/profile_sweep_step.py` で 1 条件の内訳を実測してから手を入れた.**計測結果**: GPU のレンダ本体(spp=1024・512²)が 4.4〜5.2 秒で床.その上に `uv run sm-render`/`sm-evaluate` の起動・import・YAML・PLY 書き出しで約 2.5 秒,図の描画で約 2 秒,さらに遮蔽検証を YAML の llvm で回していたため球で約 25 秒(頂点 21 万個のメッシュを CPU で読み直す)が乗り,球 1 条件 40 秒・立方体 13 秒だった.**対策**: ① `sm-evaluate`/`sm-render` の本体を `evaluation/pipeline.py:evaluate_image`・`render/pipeline.py:render_yaml` に関数化し CLI は引数パースと例外変換だけに(CLI 挙動は不変)/ ② `--no-figures`(`save_figures=False`)/ ③ `runner.ensure_variant` を切り出し,遮蔽検証の前に cuda を確定(25 秒 → 0.5 秒)/ ④ スイープはサブプロセスをやめプロセス内で呼ぶ / ⑤ `--workers N`(spawn のプロセスプール).**実測**: 立方体 13 → 5.5 秒,球 40 → 約 6 秒.`--workers` は GPU 律速のため 1→5.5・2→5.0・3→4.5〜5.8 秒でほぼ変わらず,**2 を推奨**(CPU 側処理を隠す分だけ).残り 75 条件が 8 分で終わった.**発見**: 同一 seed の再レンダは集計指標が 4 桁まで一致し(画素はノイズ程度に変わるが集計で消える)ノイズフロアにならない → `RenderConfig.seed` を追加し `mi.render` に渡す(再現性条件は rep ごとに seed を変えた YAML).`/implement` の 4 フェーズ(coder → tester 101 件追加 → refactorer → docs)を,ユーザー就寝中の指示に基づき Phase 1 の動作確認をサーバ実走で代行して完走.GPU は 0 番のみ使用(ユーザー指示). -- **TEST_18 照明配置依存性の球と立方体の比較 — 配置依存は球が立方体の 1/2〜1/3 (2026-09-14)**: ユーザーの仮説「積分球が使われる理由は照明配置への依存が小さいから」を,同内面積 4 ペア(球 r=100/135/170/250 ↔ 立方体 L=141/187/234/340)で **LED の位置(キャビティ中心から見た極角 θ=0〜120° を 13 段階)・向き(板向き+バッフル/壁法線向き+バッフル/真下向き)・個数(θ=90° の輪に N=1〜4)・再現性(seed 違い)** の 198 条件で検証した(Newton cuda・1 条件 5〜6 秒).**結果 ①**: θ 全域での構造 CoV の幅は球 0.015〜0.023・立方体 0.025〜0.071(1.2〜3.1 倍),max\|a1\| は 3〜4% vs 4.5〜11%.立方体は θ とともに単調に悪化し板の直下で軸上の 3.4〜5 倍.**球は θ≈30° が軸上より均一**(r=170: 0.0193 → 0.0057.軸上のリング構造が崩れる)で「どこに置いてもそこそこ」.立方体の優位は軸上の 1 点だけ.**結果 ②**: 真下向き(板が背後=バッフル無し)は板向き+バッフルと同等で 5〜30% 明るい.壁法線向き(キャビティ中心向き)は最悪(2〜5 倍).**結果 ③**: 対向 2 灯で m=1 は ≤0.3% に消え構造 CoV は 0.005〜0.010=単灯軸上より均一で形状差が消える.立方体は N=3 で崩れる(3 回対称が 4 回対称の壁と噛み合わない).**ノイズフロア**: 構造 CoV ±0.0007・a1 ±0.08%.設計への含意は「単灯なら球,多灯にできるなら側壁の対向 2〜4 灯・真下向き・バッフル無しで立方体でも球と同等」.**方法論**: 極角 θ を両形状共通のパラメータにし,立方体の稜(45°)は外す.板の近くのバッフルは外殻の貫通を許容し食い込み量を記録(壁法線向きは半径がキャビティ寸法の 0.6 を超えたら無効).解析は TEST_16/17 の方位フーリエ(m=1〜4)+構造 CoV+重心.追加実験(方位角依存・真下向き多灯 N=2/4/8)は同日夜に実行(結果は TEST_18 末尾). +- **TEST_18 照明配置依存性の球と立方体の比較 — 配置依存は球が立方体の 1/2〜1/3 (2026-09-14)**: ユーザーの仮説「積分球が使われる理由は照明配置への依存が小さいから」を,同内面積 4 ペア(球 r=100/135/170/250 ↔ 立方体 L=141/187/234/340)で **LED の位置(キャビティ中心から見た極角 θ=0〜120° を 13 段階)・向き(板向き+バッフル/壁法線向き+バッフル/真下向き)・個数(θ=90° の輪に N=1〜4)・再現性(seed 違い)** の 198 条件で検証した(Newton cuda・1 条件 5〜6 秒).**結果 ①**: θ 全域での構造 CoV の幅は球 0.015〜0.023・立方体 0.025〜0.071(1.2〜3.1 倍),max\|a1\| は 3〜4% vs 4.5〜11%.立方体は θ とともに単調に悪化し板の直下で軸上の 3.4〜5 倍.**球は θ≈30° が軸上より均一**(r=170: 0.0193 → 0.0057.軸上のリング構造が崩れる)で「どこに置いてもそこそこ」.立方体の優位は軸上の 1 点だけ.**結果 ②**: 真下向き(板が背後=バッフル無し)は板向き+バッフルと同等で 5〜30% 明るい.壁法線向き(キャビティ中心向き)は最悪(2〜5 倍).**結果 ③**: 対向 2 灯で m=1 は ≤0.3% に消え構造 CoV は 0.005〜0.010=単灯軸上より均一で形状差が消える.立方体は N=3 で崩れる(3 回対称が 4 回対称の壁と噛み合わない).**ノイズフロア**: 構造 CoV ±0.0007・a1 ±0.08%.設計への含意は「単灯なら球,多灯にできるなら側壁の対向 2〜4 灯・真下向き・バッフル無しで立方体でも球と同等」.**方法論**: 極角 θ を両形状共通のパラメータにし,立方体の稜(45°)は外す.板の近くのバッフルは外殻の貫通を許容し食い込み量を記録(壁法線向きは半径がキャビティ寸法の 0.6 を超えたら無効).解析は TEST_16/17 の方位フーリエ(m=1〜4)+構造 CoV+重心.**追加実験(同日夜)**: ① 方位角: 立方体は面の中央が最良で稜へ寄せるほど構造 CoV が 1.3〜1.75 倍に悪化(球は方位に依らない)/ ② 真下向き多灯(バッフル無し): 2 灯以上で非対称は消え単灯軸上より均一だが,板向き+バッフルの多灯には 1.5〜2.5 倍劣り N を増やしても頭打ち(一次照射が壁の下半分に集中し動径構造が残る).全 255 条件(TEST_18 結果 5・6).