球体筐体について,LED を評価板の反対側の壁面に密着させて評価板へ向け,直前のバッフルで 直接光を遮る構成を新設し,その上で球内半径を 88〜250mm でスイープした(2026-08-31). 均一性は同じ半径なら大きく改善したが,球を大きくすると悪化するという想定と逆の結果が出た. 原因をロフト接合の幾何に特定し,接合を 2 段階で作り直したところ傾向が逆転し, 最終的に出発点(TEST_11 / TEST_12 の球)の 4.0 倍まで均一性が上がった.
関連:
TEST_14 で内壁材質は確定し,形は材質パラメータでは動かないことが網羅探索で示された. 残る手段は幾何のレバーである.そこで 2 つの問いを立てた.
TEST_11 の記述によれば,R=0.85 の有限反射率では一次照射キャップ(LED が直接照らす壁面)が 消えず,評価板の各点がそれを異なる見込み角で見るため cos 依存のドーム状落ち込みが残る. バッフルで評価板から光源を隠せば,板には 2 回以上反射した光だけが届く.
材質・センサ・レンダ設定・LED の面積と radiance は TEST_11 / TEST_12 から一切変更していない. 変えたのは LED の向き・位置とバッフルの有無,および筐体の幾何だけである.
| 項目 | 値 |
|---|---|
| レンダ | spp=1024 / max_depth=16 / 512² / llvm_ad_rgb / path / orthographic (50×52) |
| 内壁材質 | blendbsdf ρ=0.85 / ω=0.05 / α=0.1(TEST_14 の校正値 ρ≈0.81 ではなく既存条件) |
| 光源 | 軸上の円板 半径 1.7662mm(面積 9.8mm² 保存)・radiance 2807.25 |
| 評価 | configs/eval_baseline_dng_target_shape.yaml(linear + mean アンカー 207.82) |
| 評価板 | 99×102mm.全条件で不変(キャビティ側の面は z=−4.5mm) |
| 構成 | LED の位置と向き | バッフル |
|---|---|---|
axial_wall(従来) | −Z 極から 50mm 手前・壁向き (0,0,−1) | なし(板は発光面の裏側なので直接光ゼロ) |
board_baffle(新規) | −Z 極の壁面に密着・評価板向き (0,0,+1) | あり |
壁面には 0.5mm だけ浮かせている.厳密に 0 にすると平らな発光円板が湾曲した壁面を貫くためで, 円板半径 1.7662mm でのサジッタは r=88 でも 0.018mm なので実質的に密着である. 極の壁面法線は +Z =評価板向きなので,「壁に付ける」と「評価板を向く」が同時に成り立つ.
LED から BAFFLE_GAP=10mm 手前に置く円板とし,半径は評価板の全点から LED を隠す最小値に
安全率 1.05 を掛けた.LED 上の点 Q と板上の点 P の内分点として閉形式で決まる.
半径が大きいほど LED が板から遠ざかり見込み角が小さくなるため,バッフルも小さくて済む (R = 6.9mm @ r=88 → 3.3mm @ r=250).厚み 1mm,材質は内壁と同一とした.
遮蔽は指標ではなくレイキャストで直接検証した(scripts/verify_baffle_occlusion.py).
評価板の全面 41×41 点 × LED 上 33 点 = 55,473 本のレイを飛ばし,全条件で 100% が LED 到達前に
遮蔽されることを確認している.
半径を変えるときのキャビティ形状の決め方を 3 通り用意した.いずれも r=100 では既存
configs/scene_sphere_r100_loft_disk.yaml の球中心・接続円と一致する(ロフトの曲線だけが違う).
| 形状 | 定義 | ロフト |
|---|---|---|
fixed_cut | 接続円(85.417mm @ z=−40)を固定し球中心だけ動かす | 3 次 Hermite(接線のみ一致) |
similar_g2 | キャビティ全体を半径に相似(center_z=−0.92r,cut_z=−0.40r) | 5 次 Hermite(接線 + 曲率を一致) |
similar_radial | 同上の相似スケール | 2 次元パラメトリック Hermite(リム接線を半径方向に取る) |
fixed_cut / similar_g2 はどちらも「z を等間隔に進めながら半径 ρ(z) を決める」書き方なので,
リムでの傾きは dρ/dz = 0,すなわち板に垂直に立ち上がる形しか表現できない.
similar_radial はロフトを (ρ, z) の 2 次元パラメトリック曲線に変え,リムの接線を
半径方向(水平)に取れるようにしたものである(張り出しの強さは弦長比 RADIAL_TANGENT_SCALE=0.6).
同じ r=100・同じ fixed_cut 幾何で,LED 構成だけを比べる.
| 構成 | 構造 CoV | MC ノイズ | 輪帯 min/max | 中心/周辺比 | 上下比 |
|---|---|---|---|---|---|
旧 axial_wall(バッフルなし) | 0.0579 | 0.0213 | 0.7967 | 1.129 | 1.0067 |
新 board_baffle | 0.0312 | 0.0664 | 0.8610 | 1.085 | 1.0028 |
構造成分は 46% 減,輪帯 min/max は 0.797 → 0.861 に改善した.中心のピークが下がり (1.10 → 1.085)周辺の落ち込みが浅くなる(0.86 → 0.93),つまりドーム全体が浅くなっている. 旧構成にあった上下の傾きも消えて完全な軸対称になった.
引き換えに MC ノイズは 3 倍に増えた.板へ届く光が全て多重反射経由になり,NEE が効かなくなる ためと考えられる.絶対量の比較には spp を増やす必要がある(下記「限界」参照).
本スイープは絶対輝度が半径で 1 桁変わる(生 mean 1.32 @ r=88 → 0.155 @ r=250,ほぼ 1/r²).
spp を据え置いたため相対ノイズが半径とともに増え,metrics.csv の CoV は
0.069 → 0.128 と単調悪化するが,その大半はノイズである.
構造とノイズの分離は次の手順で行う(scripts/build_radius_sweep_visual.py:decompose_cov).
妥当性は 2 通りで確認した.平滑化を σ=4→20 と変えても構造値は 4% しか動かず(収束), 漏れ込みは σ=12 で 0.0017〜0.0026 に留まる.
形の比較には同心円(輪帯)プロファイルを使うのが最も確実である. 方位平均はリング内の 画素数だけノイズを 1/√N に落とすため,標準誤差は中央値 0.0009〜0.0016 まで下がり, 条件間の差(0.02〜0.12)の 1/20〜1/100 になる.ノイズ水準の違う条件どうしを公平に比較できる.
fixed_cut では球を大きくすると悪化する (Bigger Is Worse in fixed_cut)board_baffle × fixed_cut の 10 条件.内側 = ピーク→d=0.5,外側 = d=0.5→0.95 の落ち込み.
| r mm | 生 CoV | ノイズ | 構造 CoV | 輪帯 min/max | 内側 | 外側 | 生 mean |
|---|---|---|---|---|---|---|---|
| 88 | 0.0694 | 0.0640 | 0.0232 | 0.8951 | 5.11% | 5.59% | 1.322 |
| 95 | 0.0740 | 0.0654 | 0.0316 | 0.8571 | 8.11% | 6.39% | 1.091 |
| 100 | 0.0747 | 0.0664 | 0.0312 | 0.8610 | 7.33% | 7.02% | 0.974 |
| 110 | 0.0774 | 0.0698 | 0.0302 | 0.8676 | 6.81% | 7.17% | 0.798 |
| 120 | 0.0801 | 0.0732 | 0.0289 | 0.8718 | 5.77% | 7.31% | 0.669 |
| 135 | 0.0828 | 0.0767 | 0.0270 | 0.8726 | 5.57% | 8.08% | 0.530 |
| 150 | 0.0878 | 0.0814 | 0.0280 | 0.8603 | 5.31% | 9.70% | 0.430 |
| 170 | 0.0941 | 0.0874 | 0.0300 | 0.8438 | 4.59% | 12.08% | 0.336 |
| 200 | 0.1046 | 0.0963 | 0.0361 | 0.8189 | 3.46% | 15.11% | 0.243 |
| 250 | 0.1278 | 0.1164 | 0.0478 | 0.7791 | 3.51% | 17.97% | 0.155 |
輪帯 min/max は r=135 を境に単調悪化し,r=250 は旧 axial_wall 構成(0.797)より悪い.
内側と外側に分けると構造がはっきりする.内側は期待どおり単調に改善する (8.11% @ r=95 → 3.46% @ r=200)が,外側が同じ勢いで悪化して差し引きで負ける (6.39% → 17.97%).大半径では「中心はほぼ平ら,周辺だけ崖」という形になる.
この逆向きの動きから,律速はロフト斜面が作る「井戸」だという仮説を立てた.評価板は 深さ 35.5mm・口径 85.4mm の開口の底にあり,球はその口を通してしか見えない.中心画素は 開口をほぼ正面から見るので大きい球の恩恵をそのまま受け,周辺画素は開口に視野を切られる ため球を大きくしても届かない,という説明で内側・外側の両方が同時に説明できる.
fixed_cut は接続円を固定するため,半径を上げると接合点が球の頂点へ寄っていく.
| r mm | 接合の傾き |dρ/dz| | 接合部の曲率比(ロフト/球) | 球の頂点 z mm |
|---|---|---|---|
| 88 | 0.248 | 9.30 | +26.8 |
| 100 | 0.609 | 4.95 | +8.0 |
| 120 | 0.987 | 1.80 | −4.3 |
| 150 | 1.444 | 0.11 | −13.3 |
| 170 | 1.721 | 0.68 | −17.0 |
| 250 | 2.751 | 1.34 | −25.0 |
r ≥ 120 では球の頂点が評価板より下にもぐる.つまりキャビティは「ほぼ閉じた玉に細い首が 生えた」形になり,板はその首の先から玉を覗く.接線は一致していても曲率は 9.30 → 0.11 → 1.34 と 暴れており,接合部に折れが残る.これが「井戸」の実体である.
similar_g2(キャビティ相似 + 5 次 G2 接合)では,接合の傾きは全半径で 0.609 一定,
曲率比は厳密に 1.00,球の頂点は常に板より上(z=+7〜+20mm)に留まる.
どの半径でも「お椀にフタ」の自然な形になる.
r=100 / 170 / 250 の 3 条件で比較した.
| r mm | 形状 | 内側 | 外側 | 輪帯 min/max | 生 mean |
|---|---|---|---|---|---|
| 100 | fixed_cut | 7.33% | 7.02% | 0.8610 | 0.974 |
| 100 | similar_g2 | 7.46% | 7.69% | 0.8520 | 0.973 |
| 170 | fixed_cut | 4.59% | 12.08% | 0.8438 | 0.336 |
| 170 | similar_g2 | 4.87% | 6.94% | 0.8831 | 0.355 |
| 250 | fixed_cut | 3.51% | 17.97% | 0.7791 | 0.155 |
| 250 | similar_g2 | 3.24% | 8.75% | 0.8911 | 0.166 |
外側の落ち込みが半分になった(r=250 で 17.97% → 8.75%).r=100 でほぼ変化がないのは 二つの設計がその半径でほぼ同形になるためで,整合性の確認になっている.
傾向が逆転した.輪帯 min/max は fixed_cut では半径とともに悪化(0.873 → 0.779)していたが,
similar_g2 では改善する(0.852 → 0.883 → 0.891).r=250 の 0.891 はこれまで測った全条件で最良で,
fixed_cut の最良(r=135 の 0.873)を上回る.
内側の落ち込みは両設計でほぼ同一(r=250 で 3.51% vs 3.24%)である.変更が予測どおり外側だけに 効いたことを意味し,「内側は球のサイズが支配し接合形状は無関係」という井戸仮説の構造と一致する.
副次的に明るさも改善した(r=250 で生 mean +7.1%).首が無くなったぶん光の閉じ込めが減ったと 考えられる.
similar_g2 でも r=250 で外側 8.75% vs 内側 3.24% と井戸が残っていた.
断面を見たユーザーの指摘「半径が大きいほどくびれて見える」を数値化すると,
板の直下に喉(throat)ができていることが分かった.r=250 では板の縁から 12.8mm 下がっても
半径が 48 → 49.2mm しか広がらず,そこから急に外へ開く.リムの接線が板に垂直だからである.
リムの接線を**半径方向(水平)**に取ると喉は消える.板縁から 10mm 下の半径は 49.2mm(垂直)→ 85.1mm(水平・k=0.6)になり,天井が板の縁からそのまま外へ広がって 球へ回り込む形になる.
3 設計を全 10 半径(similar_g2 のみ 3 半径)で比較した.
| r mm | fixed_cut外側 / min-max / 構造 CoV | similar_g2 | similar_radial |
|---|---|---|---|
| 88 | 5.59% / 0.895 / 0.0232 | — | 6.78% / 0.846 / 0.0359 |
| 95 | 6.39% / 0.857 / 0.0316 | — | 5.98% / 0.863 / 0.0325 |
| 100 | 7.02% / 0.861 / 0.0312 | 7.69% / 0.852 / 0.0328 | 5.71% / 0.864 / 0.0310 |
| 110 | 7.17% / 0.868 / 0.0302 | — | 4.81% / 0.883 / 0.0280 |
| 120 | 7.31% / 0.872 / 0.0289 | — | 4.33% / 0.888 / 0.0258 |
| 135 | 8.08% / 0.873 / 0.0270 | — | 4.01% / 0.902 / 0.0230 |
| 150 | 9.70% / 0.860 / 0.0281 | — | 4.11% / 0.919 / 0.0209 |
| 170 | 12.08% / 0.844 / 0.0300 | 6.94% / 0.883 / 0.0256 | 3.24% / 0.914 / 0.0193 |
| 200 | 15.11% / 0.819 / 0.0361 | — | 2.58% / 0.934 / 0.0169 |
| 250 | 17.97% / 0.779 / 0.0478 | 8.75% / 0.891 / 0.0272 | 2.27% / 0.944 / 0.0145 |
外側の落ち込みが 2.27% まで下がった.fixed_cut の 8 分の 1,similar_g2 の 4 分の 1 である.
喉が井戸の主因だったことがこれで確定した.
内側・外側の両方が半径とともに改善するようになった.当初の想定(大きいほど理想積分球に 近づく)が素直に成り立つ状態で,r=250 でもまだ頭打ちが見えていない.輪帯 min/max は r=95 以降ずっと単調改善で,10 本の輪帯プロファイルが交差せず半径の順に並ぶ.
改善の積み上げ:
| 段階 | 構造 CoV | 輪帯 min/max |
|---|---|---|
旧 axial_wall r=100(TEST_11 / TEST_12 の球) | 0.0579 | 0.797 |
+ バッフル導入(fixed_cut r=100) | 0.0312 | 0.861 |
+ 接合を相似・G2 化(similar_g2 r=250) | 0.0272 | 0.891 |
+ リムを水平出し(similar_radial r=250) | 0.0145 | 0.944 |
r=250 では中心/周辺比 1.036・勾配 3.46%(fixed_cut は 1.110 / 9.88%).
angular_ratio が 0.49 に跳ねるが悪化ではない. 内訳は角度方向の分散が 12.9 → 11.9 と微減,
動径方向の分散が 200.0 → 12.5 と 16 分の 1 に潰れている.軸対称性は保たれたままドーム構造が
ほぼ消えたために比が上がっただけで,この構成では angular_ratio を単独で読んではならない.
r=88 と 95 では水平出しが負ける(構造 CoV 0.0359 vs 0.0232 @ r=88).交差は r≈95 付近で,
小さいキャビティでは天井を外へ張り出す余地がなく不利になる.小型機なら fixed_cut,
大型なら similar_radial,という切り分けになる.
similar_radial の r=250(構造 CoV 0.0145 / 輪帯 min/max 0.944)で,出発点の
旧 axial_wall r=100(0.0579 / 0.797)の 4.0 倍.r=250 でもまだ頭打ちが見えていないfixed_cut を選ぶsimilar_g2 は 3 条件のみ.残り 7 半径(88 / 95 / 110 / 120 / 135 / 150 / 200)は未実行なので,
3 設計を全半径で並べた比較にはなっていない(fixed_cut と similar_radial は全 10 条件)fixed_cut)だけ突出して良い(輪帯 min/max 0.895)が,隣の r=95(0.857)と不連続で,
実体か揺らぎか未確定.r=88 は接続面が球中心のわずか 21mm 上で幾何が質的に違うRADIAL_TANGENT_SCALE=0.6 は未最適化.0.4 / 1.0 でも幾何は破綻
しない(ρ・z とも単調)ことを確認しただけで,レンダで比較していないboard_baffle は実機の LED 配置(下/左/右 3 基板)とは無関係な理想化である.実機との
キャリブレーション(TEST_14 系)とは別系統の設計探索として扱うことsubprocess.run の出力は Windows 既定の cp932 で復号される.sm-render の日本語ログで
UnicodeDecodeError になり読取スレッドが落ちる.レンダ自体は成功するので結果は残るが,
本当に失敗したときエラー本文が読めなくなる.encoding="utf-8" を明示することcalc_radial_profile の既定)と揃えると,
輝度マップの「最大輪帯」と輪帯プロファイルの「ピーク」が同じ輪帯を指すangular_ratio は分母が潰れると跳ねる.similar_radial の r=250 では角度方向の分散が
微減しているのに比が 0.06 → 0.49 に上がる.動径方向の分散が 16 分の 1 に潰れたためで,
軸対称性の悪化ではない.分散の内訳(angular_variance / radial_variance)を見ることaxial_wall 系の
200〜330 秒より遅いRADIAL_TANGENT_SCALE(現在 0.6)のスイープ.喉が最も効くレバーだと
分かったので,その強さの最適化が次に効く見込みが高いsimilar_g2 の残り 7 半径を流して 3 設計を全半径で揃える(約 55 分)CUT_Z_RATIO=−0.40)と接続円の緯度(CENTER_Z_RATIO=−0.92)自体をスイープする# 幾何生成のみ(3D 配置確認用.レンダはしない) uv run python scripts/sweep_sphere_radius.py --prepare-only --cavity similar_g2 # 遮蔽の検証(評価板から LED へのレイが全て遮られることを実測) uv run python scripts/verify_baffle_occlusion.py --all-radii --cavity similar_g2 # 幾何確認図・半割り断面 uv run python scripts/build_radius_geometry_figure.py --shots-dir <dir> --cavity similar_g2 uv run python scripts/show_scene_cutaway.py --scene configs/_tmp_sphere_radius/scene_board_baffle_similar_g2_r170.yaml # スイープ本体 uv run python scripts/sweep_sphere_radius.py --variant board_baffle --cavity fixed_cut uv run python scripts/sweep_sphere_radius.py --variant board_baffle --cavity similar_g2 --radii 100 170 250 uv run python scripts/sweep_sphere_radius.py --variant board_baffle --cavity similar_radial # 可視化(--cavity ごとに出力先が分かれる) uv run python scripts/build_radius_sweep_visual.py --cavity similar_radial uv run python scripts/build_radial_comparison.py --cavity similar_radial uv run python scripts/build_cavity_comparison.py # 3 設計を半径軸で重ねる
出力: output/sphere_radius_sweep/ 配下に構成別のディレクトリ
(board_baffle/=fixed_cut 10 条件,board_baffle_similar_g2/=3 条件,
board_baffle_similar_radial/=10 条件).設計比較図は cavity_comparison.png,
接合の断面 before-after は cavity_design_comparison.png と rim_tangent_comparison.png.