# 照明配置依存性の球と立方体の比較 (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 灯以上の対称配置にすると形状差はほぼ消え**，どちらも単灯軸上より均一になる．

関連:

- 軸上の優劣と m 次方位フーリエ解析: [TEST_16_立方体キャビティ導入と球との比較](TEST_16_立方体キャビティ導入と球との比較.md)
- 側壁 1 点のオフ軸配置: [TEST_17_オフ軸LED配置の影響とサイズ依存](TEST_17_オフ軸LED配置の影響とサイズ依存.md)
- 実行記録: [TEST_02_シミュレーション実行記録](TEST_02_シミュレーション実行記録.md)
- サーバでの実行と高速化: [ENV_04 開発コマンド](../02_ENV/ENV_04_開発コマンド.md)「研究室サーバでの実行」

## 背景・動機 (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²] |
| --- | --- | --- | --- |
| 1 | 100 | 141 | 120,607 / 119,880 |
| 2 | 135 | 187 | 211,286 / 210,408 |
| 3 | 170 | 234 | 328,508 / 329,130 |
| 4 | 250 | 340 | 696,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−min | max\|a1\| |
| --- | --- | --- | --- | --- | --- |
| 球 r=100 | 0.0311 | 0.0244 | 0.0311（0°） | 0.0153 | 4.1% |
| 球 r=135 | 0.0231 | 0.0199 | 0.0321（110°） | 0.0229 | 4.1% |
| 球 r=170 | 0.0193 | 0.0164 | 0.0289（120°） | 0.0232 | 3.8% |
| 球 r=250 | 0.0145 | 0.0121 | 0.0244（120°） | 0.0202 | 3.1% |
| 立方体 L=141 | 0.0280 | 0.0513 | 0.0951（120°） | 0.0671 | 9.6% |
| 立方体 L=187 | 0.0178 | 0.0403 | 0.0888（120°） | 0.0710 | 11.2% |
| 立方体 L=234 | 0.0139 | 0.0293 | 0.0652（120°） | 0.0514 | 8.3% |
| 立方体 L=340 | 0.0096 | 0.0182 | 0.0348（120°） | 0.0252 | 4.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=1 | N=2 | N=3 | N=4 | 参考: 軸上 1 灯 |
| --- | --- | --- | --- | --- | --- |
| 球 r=100 | 0.0308 | 0.0084 | 0.0057 | 0.0059 | 0.0311 |
| 球 r=170 | 0.0202 | 0.0053 | 0.0044 | 0.0043 | 0.0193 |
| 球 r=250 | 0.0136 | 0.0054 | 0.0052 | 0.0054 | 0.0145 |
| 立方体 L=141 | 0.0554 | 0.0098 | 0.0208 | 0.0089 | 0.0280 |
| 立方体 L=234 | 0.0323 | 0.0049 | 0.0089 | 0.0047 | 0.0139 |
| 立方体 L=340 | 0.0208 | 0.0067 | 0.0062 | 0.0064 | 0.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)

```bash
# 幾何生成のみ（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)

- [TEST_16_立方体キャビティ導入と球との比較](TEST_16_立方体キャビティ導入と球との比較.md): 軸上の優劣と方位フーリエ解析
- [TEST_17_オフ軸LED配置の影響とサイズ依存](TEST_17_オフ軸LED配置の影響とサイズ依存.md): 側壁 1 点のオフ軸配置とバッフルの数値サイジング
- [TEST_11_球体筐体実験](TEST_11_球体筐体実験.md): 一次照射キャップの機構
- [TEST_02_シミュレーション実行記録](TEST_02_シミュレーション実行記録.md): 出力ディレクトリの索引
