Newer
Older
SmTIAS-LightSim / docs / 06_TEST / TEST_18_照明配置依存性の球と立方体の比較.md

照明配置依存性の球と立方体の比較 (Placement Dependence: Sphere vs Cube)

TEST_16 で「軸上配置なら同内面積の立方体が球より均一」,TEST_17 で「側壁 1 点への オフ軸配置では球のほうが頑健」と分かった.本実験は「積分球が使われる理由は照明配置への 依存が小さいからではないか」というユーザーの仮説を,LED の位置(極角 θ を 0〜120° で 13 段階)・向き(3 通り)・個数(1〜4 灯) を系統的に振って検証した(2026-09-14). 仮説は成立した.球の配置依存は同内面積の立方体の 1/2〜1/3 で,しかも球は軸上より 少しずらした位置(θ≈30°)のほうが均一になる.立方体の優位は軸上の 1 点に限られる. 一方,対向 2 灯以上の対称配置にすると形状差はほぼ消え,どちらも単灯軸上より均一になる.

関連:

背景・動機 (Motivation)

TEST_17 は側壁の 1 点(軸中点の高さ)だけを測ったので,「ずれ量に対する感度曲線」が 無く,向きや灯数の影響も不明だった.実機では LED の位置・向き・個数は基板やケースの 都合で決まるため,「どの配置でもそこそこ均一」=配置依存の小ささは筐体形状の実用上の 性能である.本実験はそれを 3 軸で定量し,球と立方体のどちらが配置に寛容かを決める.

実験条件 (Setup)

固定条件(材質 ρ=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 条件.

同内面積ペア

ペア球 r mm立方体 L mm内面積 mm²
1100141120,607 / 119,880
2135187211,286 / 210,408
3170234328,508 / 329,130
4250340696,005 / 694,194

LED 位置の定義(両形状共通)

キャビティ中心(球: 球中心,立方体: 立方体中心)から方向 (sinθ, 0, −cosθ) に伸ばした 半直線が内壁と交わる点に LED を置く.θ=0° が底の中心(=従来の軸上配置),90° が中心と 同じ高さの側壁,120° が評価板の直下(球は loft 接続の約 1° 下).立方体では θ<45° が 底面,θ>45° が側壁で,稜 45° はグリッドから外した.LED 円板は壁法線から発光方向へ傾け, 縁が壁を貫かない分だけ浮かせる(余裕 0.5mm を全条件で数値確認).

条件群

群条件数
A 位置θ = 0, 10, …, 40, 50, …, 120°(13 段階)× 1 灯・板中心向き・バッフル104
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

バッフルは TEST_17 と同じ数値サイジング(発光面の前方にある板の全点を隠す最小半径 ×1.05).板の近く(θ が大きい)や壁法線向きでは円板が壁を貫かざるを得ないので,本実験は 外殻の貫通を許容して食い込み量を記録した(外側に出た部分はキャビティ内から見えない). 真下向き(−Z)は板が発光面の背後になるので直接光がゼロでバッフル不要.遮蔽率は バッフル付き全条件で 55,473〜221,892 本 100%(cuda でレイキャスト).

結果 1 — 位置依存: 球は立方体の 1/2〜1/3 (Position Dependence)

position_sensitivity.png.非対称は TEST_17 と同じ m=1 符号付き係数 a1(正=LED 側 (+X)が明るい)で,直交成分 b1 ≤0.33% がノイズ対照.

形状・サイズ構造 CoV 軸上θ 全域の平均最大(最悪 θ)幅 max−minmax|a1|
球 r=1000.03110.02440.0311(0°)0.01534.1%
球 r=1350.02310.01990.0321(110°)0.02294.1%
球 r=1700.01930.01640.0289(120°)0.02323.8%
球 r=2500.01450.01210.0244(120°)0.02023.1%
立方体 L=1410.02800.05130.0951(120°)0.06719.6%
立方体 L=1870.01780.04030.0888(120°)0.071011.2%
立方体 L=2340.01390.02930.0652(120°)0.05148.3%
立方体 L=3400.00960.01820.0348(120°)0.02524.5%
  • 配置依存の幅は立方体が球の 1.2〜3.1 倍,非対称の最大は 1.5〜2.7 倍.θ 全域の平均 構造 CoV も全ペアで立方体が悪い(1.5〜2.1 倍)
  • 立方体は θ とともに単調に悪化し,板の直下(θ=120°)で軸上の 3.4〜5.0 倍.底面上 (θ≤40°)でも a1 は既に −2〜−6% ある(平らな床に置いた LED は近い側壁を強く照らす)
  • 球は軸上が最良ではない.θ=20〜40° で構造 CoV が最小(r=170: 0.0193 → 0.0057, r=250: 0.0145 → 0.0043)になり,軸上の同心円状のリング構造(TEST_15 のドーム)が 崩れて平坦になる.θ≥90° で軸上と同程度に戻り,最悪でも軸上の 1.0〜1.7 倍
  • 立方体の軸上の優位(TEST_16)は確認できる(ペア 2〜4 で球の 0.66〜0.77 倍)が, 軸上の 1 点だけであり,θ=10° でも立方体は a1 が −1.7〜−2.5% 出る
  • a1 の符号: 球は θ=10〜20°(r≥135)で 正(LED 側が明るい)になり,θ が大きくなると 負に転じる.小さな傾きでは LED に近い壁の一次照射が勝ち,傾きが増すと反対側の壁の 一次照射キャップ(TEST_11/17)が支配する,と解釈できる(未検証)

結果 2 — 向き: 真下向き(バッフル無し)は板向き+バッフルと同等 (Direction)

direction_comparison.png.θ=60/90/120° × 3 向き × 4 ペア × 2 形状.

  • 真下向き(−Z・バッフル無し)は板中心向き+バッフルと同等(構造 CoV の比 0.6〜1.3. 球の大サイズではむしろ良く,r=250・θ=120° で 0.0244 → 0.0138).生 mean も 5〜30% 明るい(バッフルが吸う分が無い).LED を板と反対側へ向けるだけで,バッフル無しで 板向きバッフル構成と同じ均一性が得られる
  • 壁法線向き(キャビティ中心向き)は最悪.構造 CoV は板向きの 2〜5 倍(立方体 L=141 で 0.19〜0.23).反対側の壁にできる一次照射キャップが板から正面に見えるうえ,それを 遮るバッフルが大きく(半径がキャビティ寸法の 5〜44%),キャビティ内に影を作る. 球 r=100・θ=120° の壁法線向きはバッフル半径が r の 59% になり板への光がほぼ消えた (生 mean 0.000)ため無効条件として除外する
  • 向きの影響は形状差より大きい: 同じ位置でも向きで 2〜5 倍変わる

結果 3 — 個数: 対向 2 灯以上で形状差は消える (Count)

count_comparison.png.θ=90° の輪に等方位・総光束一定.

形状・サイズN=1N=2N=3N=4参考: 軸上 1 灯
球 r=1000.03080.00840.00570.00590.0311
球 r=1700.02020.00530.00440.00430.0193
球 r=2500.01360.00540.00520.00540.0145
立方体 L=1410.05540.00980.02080.00890.0280
立方体 L=2340.03230.00490.00890.00470.0139
立方体 L=3400.02080.00670.00620.00640.0096
  • 対向 2 灯で m=1 は ≤0.3% に消え,構造 CoV は 1 灯の 1/4〜1/6.単灯軸上より均一 になる(球・立方体とも全サイズで)
  • N=4 でも N=2 とほぼ同じ.2 灯以上では球と立方体の差は 0.001〜0.004 に縮み, 最大サイズでは立方体が僅かに良い
  • N=3 は立方体で崩れる(|m1| 0.4〜2.4% 残る.3 回対称の配置が 4 回対称の壁と 噛み合わない)が球では問題ない(≤0.12%).立方体は灯数を壁の対称性に合わせる必要 がある
  • N=4 を θ=120°(板の直下)に置くと立方体は再び悪化する(L=141: 0.0089 → 0.0313)が 球は ≤0.008 に留まる.多灯でも位置の寛容さは球が上

結果 4 — ノイズフロア (Noise Floor)

seed を変えた 3 回の再レンダ(ペア 3・θ=90°・1 灯): 構造 CoV は球 0.0207±0.0007, 立方体 0.0326±0.0005,a1 は ±0.08%.本実験で論じた差はすべてこの 10 倍以上. seed を変えずに再レンダしても指標は 4 桁まで一致する(画素はノイズ程度に変わるが 集計で消える)ため,再現性条件は render.seed を変えた YAML にした.

結論 (Conclusions)

  • 仮説成立: 照明位置への依存は球が同内面積の立方体の 1/2〜1/3.球は軸上より θ≈30° のほうが均一で「どこに置いてもそこそこ」,立方体は軸上の 1 点だけが良く,板に近づく ほど急激に悪化する
  • 向き: 板と反対(真下)に向ければバッフル無しで板向きバッフル構成と同等. キャビティ中心へ向ける(壁法線向き)のは最悪
  • 個数: 対向 2 灯以上の対称配置で形状差は消え,どちらも単灯軸上より均一.立方体は 灯数を 2 か 4 にする(3 は不可)
  • 設計への含意: 単灯なら球.多灯にできるなら「側壁の対向 2〜4 灯・真下向き・ バッフル無し」が最も簡単で,そこまでやれば立方体でも球と同等

限界・注意点 (Limitations)

  • 方位角は +X(立方体では面の中央)のみ.稜に寄せた配置・N=3 の方位依存は未測定
  • 壁法線向きのバッフルはキャビティ寸法の 5〜44% と大きく,実物の設計として妥当かは別問題 (結果は「その向きに置くと大きなバッフルが要る」ことも含めた評価)
  • 材質は旧条件(ρ=0.85 blendbsdf).絶対値の実機予測には校正値での引き直しが必要
  • 真下向きの球 θ=60° は発光面の半分が壁を向く(発光方向と壁法線が 120°).物理的には 「壁際に伏せた LED」で成立するが,実装の都合で選んだ向きである

失敗パターン・方法論の学び (Pitfalls and Methodology)

  • 同一 seed の再レンダはノイズフロアにならない.シーンを読み直しても集計指標は 4 桁 まで一致した.ノイズフロアを測るなら render.seed を変える(本実験で schema に追加)
  • 遮蔽検証は cuda で回す.YAML の llvm のまま呼ぶと球で 1 条件 25 秒かかり, スイープの主犯だった(runner.ensure_variant で先に variant を確定してから呼ぶ)
  • バッフルの上限を設けること.壁法線向きで LED が板に近いと,板を掠める直接光を 遮る円板がキャビティ寸法の半分を超え,条件として無意味になる(半径 0.6×寸法で打ち切り, 0.3 超は図に † を付けた)
  • 立方体の θ は稜(45°)を避ける.半直線が稜に当たると法線が定義できず LED 円板が 両壁に掛かる

次にやること (Next Steps)

  1. 方位角依存: 立方体の面中央 vs 稜寄りで位置依存がどう変わるか
  2. 「真下向き・バッフル無し」の多灯版(対向 2〜4 灯,底の輪 N=4〜8)=実機で最も簡単な構成の評価
  3. a1 の符号反転(球 θ=10〜20°)の機構の確認(一次照射キャップの位置)
  4. 校正材質(ρ≈0.81 純 diffuse)での引き直し

再現コマンド (Reproduction)

# 幾何生成のみ(3D 配置確認用)
uv run python scripts/sweep_led_placement.py --prepare-only
uv run python scripts/show_scene_cutaway.py --scene configs/_tmp_led_placement/scene_cube_L234_th090_board_n4.yaml \
    --output output/led_placement_sweep/_placement_check/cutaway_cube_L234_th090_board_n4.png

# スイープ本体(研究室サーバ・GPU 1 枚・2 並列.1 条件 5〜6 秒)
uv run sm-remote push
uv run sm-remote run --name place --gpu 0 --threads 16 -- python scripts/sweep_led_placement.py --workers 2
uv run sm-remote pull led_placement_sweep

# 解析図 + 集約表
uv run python scripts/build_led_placement_comparison.py

出力: output/led_placement_sweep/(条件別 198 ディレクトリ + 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 条件).

参照 (References)