Newer
Older
SmTIAS-LightSim / docs / 06_TEST / TEST_02_シミュレーション実行記録.md

シミュレーション実行記録 (Simulation Run Catalog)

⚠️ BEFORE FIX 注記: 本索引のうち面光源スケール軸バグ修正(TEST_08)以前に生成された出力(baseline / baseline_v3_leds / led_group_sanity / max_depth_sweep / reflectance_sweep / sweep_reflectance / blend_sweep / led_distribution_sweep と対応する _slide_panels 図)は,全 LED が 2m ストリップ化したバグ込みの結果.実験記録として保持するが数値はそのまま信用しないこと.修正後の出力は sanity_fix_1024 / baseline_fix_1024 / depth_bottom / refl_bottom / distrib_bottom,図は *_roi.png(修正前を明記復元した版は *_buggy.png).

⚠️ BEFORE FIX 注記 (2) シェーディング法線アーティファクト: 2026-08-18 の面法線修正(TEST_12)以前の全レンダ出力(depth_bottom / refl_bottom / blend_bottom / loft_w1p4 / sphere_r100{,_loft,_loft_disk} 等を含む,評価板メッシュを使う全シーン)には,PLY 自動スムーズ法線による**評価面の偽の異方性(現行筐体全灯で CoV を 0.061→0.172 に見せる支配的な系統誤差)**が乗っている.絶対値・形の数値は信用せず,同一条件同士の相対比較としてのみ参照すること.修正後の基準出力は full_base_fix / sphere_r100_loft_disk_fix.

本ドキュメントは output/ 配下に蓄積されたシミュレーション・評価結果ディレクトリを 「何の試行か」が分かる形に索引化 したものである.output/ は .gitignore で追跡対象外(容量・再生成可能性のため)であり,手元の output/ が無くてもこのドキュメントだけ読めば「過去にどんな試行があったか・どう再現するか」が辿れることを目的とする.

関連:

output/ の扱い方針

  • 追跡対象外 (.gitignore の output/ 行).git に乗せない.
  • 再生成は可能 だが時間がかかる(1 レンダ約 9.6 分 @ spp=1024, 512²).キャリブで検証済みの結果は残しておくと再現コストを節約できる.
  • どこにメタデータを残すか: 各サブディレクトリに README.md を置くより,本ドキュメントに一覧化する方が「俯瞰しやすい」.
  • 削除推奨のディレクトリは本ドキュメント末尾に列挙.古い試行錯誤や PoC スクリーンショットは適宜削除して構わない.

現役の検証アーティファクト (Active Verification Artifacts)

TEST_01 や SPEC_03 から参照されている,意味のある実行結果:

ディレクトリ関連 Stepシーン設定評価設定主要指標 (mean / CoV / 勾配% / C/P)用途・参照元
output/baseline/8-1 確定基準(注: d=8 時代の古い結果)当時の configs/scene_baseline.yaml (R=0.85, d=8, spp=1024)— (レンダのみ)luminance.npy + render_uint8.png生成時刻 2026-05-18 で当時の d=8 で計算.2026-06-03 に scene_baseline.yaml が d=16 へ更新済のため、現状の設定とは不整合.必要時は新基準 (d=16) で再生成すべき
output/baseline_linear_npy/8-1 比較基準(同上 luminance.npy 入力)configs/eval_baseline_linear.yaml (OETF off)152.02 / 0.1826 / 24.65 / 1.327TEST_01 Step 8-7 で size 1.5×1.5 と比較する基準.輝度マップ追跡 (TEST_03) のパネル左下
output/eval_oetf_r085/8-3 OETF 後(同上 luminance.npy 入力)configs/eval_baseline.yaml (OETF on)146.71 / 0.0907 / 11.16 / 1.126OETF 適用効果の代表結果.輝度マップ追跡 (TEST_03) パネル右上
output/emitter_real/8-7 検証configs/scene_baseline_emitter_real.yaml (size 1.5×1.5, radiance 12227, Φe 保存)configs/eval_baseline_linear.yaml (OETF off)429.99 / 0.1863 / 26.21 / 1.355点光源近似検証.形状指標 ≈ baseline_linear_npy で実証.輝度マップ追跡 (TEST_03) パネル右下
output/sweep_reflectance/r075/ 〜 r092/8-2 反射率スイープconfigs/scene_baseline.yaml の printer_white.reflectance を 0.75 / 0.80 / 0.85 / 0.90 / 0.92 に振った 5 種 (d=12, spp=256)linear 評価→ 下表 sweep_summary.csvTEST_01 / SPEC_03 の反射率スイープ表の元データ
output/sweep_reflectance/sweep_summary.csv8-2——5 反射率の評価結果まとめ反射率スイープのサマリ表
output/baseline_v3_leds/8-9 LED 位置正確化configs/scene_baseline.yaml(Fusion STL から抽出した新 LED 位置で更新済み, R=0.85, d=8, spp=1024)configs/eval_baseline_linear.yaml (linear + normalization)146.71 / 0.1815 / 24.13 / 1.318TEST_01 Step 8-9 検証.輝度マップ追跡 (TEST_03) パネル右下(α=0.873434)
output/baseline_spot/8-10 LED spot 配光configs/scene_baseline_spot.yaml(18 LED を spot に変換, cutoff=90/beam=30, I_0=0.02678 W/sr, flux 保存)configs/eval_baseline_linear.yaml (linear + normalization)146.71 / 0.1887 / 27.69 / 1.383TEST_01 Step 8-10 検証.X 方向の対称性が部分改善(目視).α=12.77 で mean が約 14.6× 暗くなる
output/baseline_datasheet/8-11 データシート従順版configs/scene_baseline_datasheet.yaml(spot cutoff=85/beam=26.72, I_0=0.0220 W/sr,反射率 0.89, データシート規格値準拠)configs/eval_baseline_linear.yaml (linear + normalization)146.71 / 0.1829 / 26.79 / 1.366TEST_01 Step 8-11 検証.データシート準拠は物理正確性のみ達成,形は LSC が依然必要.α=14.30
output/perspective_path_hi/8-12 Helmholtz 検証configs/scene_baseline_perspective_path.yaml(perspective fov=90°, path, scalar_rgb, spp=4096)(評価なし,検証目的)mean=160, bot/top=2.035TEST_01 Step 8-12 検証.方向独立性の基準(バックワード)
output/perspective_ptracer_hi/8-12 Helmholtz 検証configs/scene_baseline_perspective_ptracer.yaml(perspective fov=90°, ptracer, scalar_rgb, spp=4096)(評価なし,検証目的)mean=319, bot/top=2.006TEST_01 Step 8-12 検証.方向独立性の対象(フォワード).形は path と一致(bot/top 比 誤差 1.4%)
output/blend_sweep/w{w}_a{a}/ (9 ディレクトリ)8-14 候補 βconfigs/scene_baseline_blend.yaml を scripts/sweep_blend_bsdf.py で printer_white.weight ∈ {0.05, 0.15, 0.30} × components[1].alpha ∈ {0.1, 0.3, 0.6} に書き換えた 9 種 (R=0.85 + roughconductor material=none, d=8, spp=1024)configs/eval_baseline_dng_target.yaml (linear + mean アンカー 207.82)9 ジョブ分の CoV/勾配 — TEST_01 § Step 8-14 候補 β 結果表 参照TEST_01 Step 8-14 候補 β 検証.A1 が実機方向に作用しないことを確定
output/blend_sweep/summary.csv8-14 候補 β——9 ジョブ集約 CSV (weight, alpha, elapsed_s + 12 指標カラム)scripts/sweep_blend_bsdf.py の集約出力.scripts/build_blend_bsdf_panel.py の入力
output/_slide_panels/blend_bsdf_sweep.png8-14 候補 β——3×3 輝度マップ比較パネル (shared vmin/vmax 1%/99% percentile)TEST_01 Step 8-14 β「形」追跡用
output/_slide_panels/blend_bsdf_metrics.png8-14 候補 β——9 ジョブの数値表 (CoV/勾配/C/P/動径 min/max)TEST_01 Step 8-14 β 数値追跡用
output/led_group_sanity/{bottom,right,left}/LED sanity checkconfigs/scene_baseline.yaml から lights を各 LED 基板(6 個ずつ)のみに絞った一時 YAML × 3 種 (d=8, spp=1024)(評価なし,目視確認)mean: bottom=98.82 / right=47.10 / left=47.08TEST_07 LED グループ別動作確認 — 方向性・対称性・線形性の sanity check
output/_slide_panels/led_group_sanity{,_focus,_right_left}.pngLED sanity check——1×3 / 1×2 / 6 列の比較パネルTEST_07 視覚確認用
output/max_depth_sweep/d{8,12,16,20,28}/ (5 ディレクトリ)8-14 候補 α 前半configs/scene_baseline.yaml を scripts/sweep_max_depth.py で render.max_depth のみ書き換えた 5 種 (R=0.85, spp=1024)configs/eval_baseline_dng_target.yaml (linear + mean アンカー 207.82)d=28 で CoV=0.1583, 勾配=20.24%, C/P=1.254, 動径 min/max=0.689 — TEST_01 § Step 8-14 候補 α 前半 結果表 参照TEST_01 Step 8-14 候補 α 前半 検証.A9 は数値改善のみで形改善ではないことを確定.d=16 が新キャリブベースライン候補
output/max_depth_sweep/summary.csv8-14 候補 α 前半——5 ジョブ集約 CSV (max_depth, elapsed_s + 12 指標カラム)scripts/sweep_max_depth.py の集約出力.scripts/build_max_depth_panel.py の入力
output/_slide_panels/max_depth_sweep.png8-14 候補 α 前半——1×5 輝度マップ比較パネル (shared vmin/vmax)TEST_01 数値追跡用
output/_slide_panels/max_depth_convergence.png8-14 候補 α 前半——収束カーブ 2×2 (CoV/勾配/C/P/動径 min/max vs max_depth)TEST_01 収束観察用
output/_slide_panels/max_depth_sweep_shape.png8-14 候補 α 前半——上下 2 段比較 (上=共有スケール / 下=独立スケール 自己 contrast 最大化)TEST_01 「形」追跡用 — 形不変の視覚証拠
output/_slide_panels/max_depth_sweep_relative.png8-14 候補 α 前半——1×5 mean=1 正規化 (相対輝度 1.0=画像平均)TEST_01 ambient 化観察用
output/reflectance_sweep/r{075,080,085,089,092}/ (5 ディレクトリ)8-14 候補 α 後半configs/scene_baseline.yaml (d=16 新基準) を scripts/sweep_reflectance.py で materials.printer_white.reflectance のみ {0.75, 0.80, 0.85, 0.89, 0.92} に書き換えた 5 種 (spp=1024)configs/eval_baseline_dng_target_shape.yaml (新指標 5 つ含む)R=0.92 で CoV=0.1424, 勾配=17.72%, angular_ratio=0.4938 — TEST_01 § Step 8-14 候補 α 後半 結果表 参照TEST_01 Step 8-14 候補 α 後半 検証.「数値の偽物の一致」を初の定量実証.A8 数値改善のみクリア.新指標 (shape_metrics) を初投入したスイープ
output/reflectance_sweep/summary.csv8-14 候補 α 後半——5 ジョブ集約 CSV (reflectance + 既存 12 指標 + 新 12 指標)scripts/sweep_reflectance.py の集約出力
output/_slide_panels/reflectance_sweep.png8-14 候補 α 後半——2 段比較パネル (上=共有スケール / 下=独立スケール)TEST_01 視覚追跡用
output/_slide_panels/reflectance_convergence.png8-14 候補 α 後半——既存 4 指標カーブ vs RTEST_01 数値追跡用
output/_slide_panels/reflectance_shape_metrics.png8-14 候補 α 後半——新指標カーブ (centroid_y / angular_ratio / eccentricity) vs RTEST_01 「形」追跡用 — angular_ratio が単調増加 = 形は実機方向と逆を視覚的に確認
output/led_distribution_sweep/c{030,060,090,120,150}/ (5 ディレクトリ)8-14 候補 ξconfigs/scene_baseline_spot.yaml (Step 8-10 で作成) をテンプレに scripts/sweep_led_distribution.py で全 spot light の cutoff_angle を {30, 60, 90, 120, 150}° に,beam_width = cutoff/3 で連動,max_depth を 16 に更新 (R=0.85, spp=1024)configs/eval_baseline_dng_target_shape.yaml (新指標 5 つ含む)c090 で CoV=0.165, angular_ratio=0.352; c030 で angular_ratio=0.338 — TEST_01 § Step 8-14 候補 ξ 結果表 参照TEST_01 Step 8-14 候補 ξ 検証.配光モデルが形改善の本物の候補として初実証.area→spot で angular_ratio が 0.45→0.34 で 25% 低下
output/led_distribution_sweep/summary.csv8-14 候補 ξ——5 ジョブ集約 CSV (cutoff_angle, beam_width + 既存 12 + 新 12 指標)scripts/sweep_led_distribution.py の集約出力
output/_slide_panels/led_distribution_{sweep,convergence,shape_metrics}.png8-14 候補 ξ——輝度マップ 2 段 / 既存 4 指標カーブ / 新指標カーブTEST_01 「形」追跡 — angular_ratio が cutoff 30° → 150° でほぼ flat (0.338→0.356) を視覚確認.area→spot の遷移が本質と判明
output/blend_bottom/w{W}_a{A}/ (12 ディレクトリ)8-14 TEST_09 実験5configs/_tmp_blend_bottom/w{W}_a{A}.yaml(_tmp_sanity_1024/scene_bottom.yaml ベース,printer_white を blendbsdf 化,w ∈ {0.05, 0.15, 0.3, 0.6} × α ∈ {0.1, 0.3, 0.6},bottom 6 灯のみ,d=16, spp=1024,修正後 LED)形指標のみ (scripts/build_blend_bottom_panel.py)全 12 ジョブが diffuse 基準 (peak/mean 1.585) より悪化,最悪 w0.6_a0.1 で 2.145 — TEST_09 § 実験5 参照TEST_09 実験5(壁の光沢化)Phase 1.光沢は w に単調に形悪化=材料側レバー出尽くしを確定
output/blend_bottom/{left,right}_w{W}_a{A}/ (各 5 ディレクトリ)8-14 TEST_09 実験5 拡張configs/_tmp_blend_bottom/{left,right}_w{W}_a{A}.yaml(縮小グリッド w ∈ {0.05, 0.3} × α ∈ {0.1, 0.6} + Phase 2 の w0.6_a0.1)同上 (--side left/right)「w 単調悪化」3 灯共通.灯間 NCC は diffuse 0.96 → w0.6 で 0.86 だが常に 3 ペア均等(実機 0.85/0.61/0.41 の非対称に届かず)TEST_09 実験5 Phase 2+拡張.実機の灯間 NCC(相補性の非対称)を初定量化=実験4 の到達目標アンカー
output/blend_bottom/summary{,_left,_right}.csv8-14 TEST_09 実験5——各灯の形指標集約 (job, weight, alpha, peak_mean, top_bot, ncc)scripts/build_blend_bottom_panel.py の集約出力
output/_slide_panels/blend_{bottom,left,right}_shape_roi.png8-14 TEST_09 実験5——基準+実機+w×α グリッドの形比較パネル(ROI 揃え・各セル独立 1–99% 正規化・実寸アスペクト)TEST_09 実験5 視覚比較用・発表スライド素材
output/loft_w1p4/{bottom,left,right,full,full_base}/ (5 ディレクトリ)TEST_10configs/_tmp_loft_w1p4/{bottom,left,right,full,full_base}.yaml(blend w0.05_a0.1・spp=1024・d=16.単灯 3 本+全灯は後側を 後側_w1p4.stl に差し替え,full_base のみ元 後側.stl の全灯 blend 基準)full 系は configs/eval_baseline_dng_target_shape.yamlbottom 単灯 peak/mean 1.672→1.508 と初の幾何レバー実証.灯間 NCC は 0.95x→0.96x で相補性不動.全灯 CoV 0.1717→0.1701 — TEST_10 参照TEST_10 後側ロフト変形実験.対称な幾何変更では非対称相補性は動かないことを確定
output/loft_w1p4/summary.csvTEST_10——単灯 3+全灯 2 の形指標集約 (side, version, peak_mean, top_bot, ncc_vs_real)TEST_10 数値追跡用
output/_slide_panels/loft_w1p4_shape_roi.pngTEST_10——基準・w1p4・実機の 4 行 × 3 列形比較パネル(ROI 揃え・各セル独立 1–99% 正規化)TEST_10 視覚比較用
output/loft_w1p4/full_{w2p0,w4p0}/ (2 ディレクトリ)TEST_10 拡張configs/_tmp_loft_w1p4/{w2p0,w4p0}_full.yaml(full.yaml の後側を 後側_{w2p0,w4p0}.stl に差し替え)configs/eval_baseline_dng_target_shape.yamlロフト重み 0.5→4.0 で全灯指標は横ばい(w4.0 のみ微悪化 CoV 0.1772)— TEST_10 §拡張 参照TEST_10 全灯ロフト重みスイープ.ロフトは全灯分布に実質不感と確定
output/_slide_panels/loft_full_sweep_shape_roi.pngTEST_10 拡張——全灯 w0.5/1.4/2.0/4.0 + 実機の 1×5 形比較パネルTEST_10 拡張視覚比較用(scripts/build_loft_w1p4_panel.py が summary.csv とあわせて生成)
output/_slide_panels/loft_full_sweep_relative.pngTEST_10 拡張——同スイープの相対輝度版(シミュ 4 条件のみ 1×4・各セル max=1.0・全セル共通スケール・右カラーバー)均一性の絶対比較用.mean/max 0.64〜0.67 で横ばい(実機参照値 0.899 は TEST_10 の表を参照)
output/sphere_r100/TEST_11configs/scene_sphere_r100.yaml(完全閉球殻 r=100mm 中心 (0,0,-40) + 評価板のみ,単灯 (0,0,-90) 壁向き=直接光ゼロ,blend w0.05_a0.1・d=16・spp=8192)configs/eval_baseline_dng_target_shape.yamlCoV 0.1350 / peak/mean 1.323 / angular_ratio 0.126 / NCC 対実機 0.460 — TEST_11 参照TEST_11 球体筐体実験.幾何の理想極限(積分球)でも実機の均一性に届かないことの上限実証
output/sphere_r100/summary.csvTEST_11——現行全灯基準・球体単灯・実機の形指標集約 (label, peak_mean, top_bot, cov_roi, ncc_vs_real)scripts/build_sphere_panel.py の集約出力
output/_slide_panels/sphere_r100_{shape_roi,relative}.pngTEST_11——現行全灯/球体単灯/実機の 1×3 形比較パネル+相対輝度版(各セル max=1.0・共通スケール)TEST_11 初版の視覚比較(スクリプトは 4 セル版に更新済みのため再生成すると 1×4 になる)
output/sphere_r100_loft/TEST_11 改訂configs/scene_sphere_r100_loft.yaml(球お椀+板輪郭ロフト一体メッシュ 球ロフト_r100.stl,単灯 (0,0,-142) 壁向き,blend w0.05_a0.1・d=16・spp=1024=TEST_09/10 と条件統一)configs/eval_baseline_dng_target_shape.yamlCoV 0.1204 / peak/mean 1.392 / angular_ratio 0.110 / NCC 対実機 0.445 — TEST_11 §改訂 参照TEST_11 改訂(板嵌め込み・一体化).幾何理想極限の CoV 床 ≈0.12 を確定
output/sphere_r100_loft/summary.csvTEST_11 改訂——現行全灯・球浮き配置・球ロフト・実機の 4 行形指標集約scripts/build_sphere_panel.py(4 セル版)の集約出力
output/_slide_panels/sphere_loft_{shape_roi,relative}.pngTEST_11 改訂——現行全灯・球浮き・球ロフト矩形・球ロフト円形・実機の 1×5 形比較パネル+相対輝度版TEST_11 改訂/追補の視覚比較・発表スライド素材
output/sphere_r100_loft_disk/TEST_11 追補configs/scene_sphere_r100_loft_disk.yaml(ロフト一体キャビティ+同面積円板単灯 r=1.7662mm=完全軸対称,spp=1024・d=16)configs/eval_baseline_dng_target_shape.yamlCoV 0.1205 ほか全指標が矩形版と MC ノイズ内で一致 — TEST_11 §追補 参照TEST_11 追補(円形光源).発光面形状の不感を確認.以後の球実験の正準構成
output/sphere_r100{,_fit,_loft}/geometry/TEST_11——レンダ前 3D 配置確認のスクリーンショット(--no-bake レイアウト・LED 4 アングル・path ベイク)幾何変更時のレンダ前 3D 確認ワークフロー(CLAUDE.md 必須ルール)の記録.fit 版はレンダ未実施(ロフト版に置換)
output/full_base_fix/TEST_12configs/_tmp_fn_full_base.yaml(scene_baseline_blend の w=0.05/α=0.1/d=16 版=TEST_10 full_base の再構成.修正前コードで保存済み結果と一致検証済み)configs/eval_baseline_dng_target_shape.yamlCoV 0.0610 / 勾配 6.83% / C/P 1.073(面法線修正後)— TEST_12 参照面法線修正後の現行筐体全灯の新基準.実機(CoV 0.0695)と数値レベルで整合
output/sphere_r100_loft_disk_fix/TEST_12configs/scene_sphere_r100_loft_disk.yaml(面法線修正後の再レンダ)同上CoV 0.0628 / angular_ratio 0.005(完全同心円)面法線修正後の球体筐体の正準結果.現行筐体とほぼ同等=球形化の優位性消滅
output/_slide_panels/sphere_fix_{shape_roi,relative}.pngTEST_12——現行筐体 fix/球ロフト円形 fix/実機の 1×3 パネル(修正後のみで比較)TEST_12 視覚比較・発表スライド素材(scripts/build_sphere_panel.py 現行版が生成)
output/singles_fix/{bottom,left,right}/TEST_12 追補configs/_tmp_fix_{bottom,left,right}.yaml(検証済み _tmp_fn_full_base.yaml から灯グループ抽出.blend w0.05_a0.1・d=16・spp=1024)形指標のみ(scripts/build_singles_fix_summary.py)灯間 NCC(平滑)が修正前 0.99 均等 → 修正後 0.85/0.93/0.73 の非対称 — TEST_12 §追補 参照TEST_09 中核結論「3 灯同形」の撤回根拠.単灯 spp=1024 はノイズ 5.3% > 構造 4% のため raw 指標はノイズ支配(以後の単灯は spp≥4096 推奨)
output/singles_fix/{summary,pairwise_ncc}.csv・output/_slide_panels/singles_fix_shape_roi.pngTEST_12 追補——単灯形指標(修正前後・w1p4 対比,平滑後 p/m 併記)・灯間 NCC(raw/smooth)・3×4 パネルscripts/build_singles_fix_summary.py の出力
output/full_w1p4_fix/・output/singles_fix/{bottom,left,right}_w1p4/TEST_12 追補configs/_tmp_fix_{full,bottom,left,right}_w1p4.yaml(後側を 後側_w1p4.stl に差し替え,blend w0.05_a0.1・d=16・spp=1024)全灯のみ eval_baseline_dng_target_shape.yaml全灯 CoV 0.0605(基準 fix 0.0610 と差 1%)=ロフト不感は修正後も維持.単灯は平滑 p/m 差 ≤0.9%・灯間 NCC は +0.05〜0.12 同形化 — TEST_12 §ロフト再検証 参照TEST_10 相対結論の再検証.「bottom 平ら化=幾何レバー実証」は撤回相当に弱まり,不感性の結論が生存
output/_slide_panels/full_vs_singles_fix.pngTEST_12 追補——シミュ(面法線修正後)×実機の 2 行 × 全灯/bottom/left/right 4 列パネル(全セル同一平滑化・NCC 対実機併記)全灯と単灯の形の対応比較(scripts/build_full_vs_singles_panel.py が生成).平滑後 p/m はシミュ 1.07 前後 vs 実機 1.10〜1.16

sweep_summary.csv の値(参考、TEST_01 line と一致確認用)

RCoV勾配 %C/Pmeanstd
0.750.217325.911.350104.1922.64
0.800.203424.001.316137.0027.87
0.850.189322.081.283180.8034.23
0.900.175320.151.252239.6042.00
0.920.169719.421.241268.5245.57

再現コマンド

目的コマンド
baseline レンダ生成$env:DRJIT_LIBLLVM_PATH = "C:\Program Files\LLVM\bin\LLVM-C.dll"; uv run sm-render --scene configs/scene_baseline.yaml --output output/baseline/
baseline (linear, OETF off) 評価uv run sm-evaluate --image output/baseline/luminance.npy --config configs/eval_baseline_linear.yaml --output output/baseline_linear_npy/
baseline (OETF on) 評価uv run sm-evaluate --image output/baseline/render_uint8.png --config configs/eval_baseline.yaml --output output/eval_oetf_r085/
emitter_real (size 1.5×1.5) レンダ生成$env:DRJIT_LIBLLVM_PATH = "C:\Program Files\LLVM\bin\LLVM-C.dll"; uv run sm-render --scene configs/scene_baseline_emitter_real.yaml --output output/emitter_real/
emitter_real 評価uv run sm-evaluate --image output/emitter_real/luminance.npy --config configs/eval_baseline_linear.yaml --output output/emitter_real/
反射率スイープ全 5 点output/sweep_reflectance/run_sweep.py を参考に再実装.元スクリプトは削除推奨 (下記) のため要再構築
輝度マップ追跡パネル再生成uv run python scripts/build_luminance_evolution_panel.py
LED 位置を Fusion STL から再抽出uv run python scripts/extract_led_positions_from_stl.py configs/meshes/SmTIASv3.stl --output configs/leds_extracted.yaml(その後 scene_baseline.yaml の lights セクションを置換)
baseline_v3_leds レンダ生成$env:DRJIT_LIBLLVM_PATH = "C:\Program Files\LLVM\bin\LLVM-C.dll"; uv run sm-render --scene configs/scene_baseline.yaml --output output/baseline_v3_leds/
baseline_v3_leds 評価uv run sm-evaluate --image output/baseline_v3_leds/luminance.npy --config configs/eval_baseline_linear.yaml --output output/baseline_v3_leds/
baseline_spot レンダ生成 (Step 8-10)$env:DRJIT_LIBLLVM_PATH = "C:\Program Files\LLVM\bin\LLVM-C.dll"; uv run sm-render --scene configs/scene_baseline_spot.yaml --output output/baseline_spot/
baseline_spot 評価uv run sm-evaluate --image output/baseline_spot/luminance.npy --config configs/eval_baseline_linear.yaml --output output/baseline_spot/
baseline_datasheet レンダ生成 (Step 8-11)$env:DRJIT_LIBLLVM_PATH = "C:\Program Files\LLVM\bin\LLVM-C.dll"; uv run sm-render --scene configs/scene_baseline_datasheet.yaml --output output/baseline_datasheet/
baseline_datasheet 評価uv run sm-evaluate --image output/baseline_datasheet/luminance.npy --config configs/eval_baseline_linear.yaml --output output/baseline_datasheet/
perspective_path_hi レンダ (Step 8-12 検証)$env:DRJIT_LIBLLVM_PATH = "C:\Program Files\LLVM\bin\LLVM-C.dll"; uv run sm-render --scene configs/scene_baseline_perspective_path.yaml --output output/perspective_path_hi/
perspective_ptracer_hi レンダ (Step 8-12 検証)$env:DRJIT_LIBLLVM_PATH = "C:\Program Files\LLVM\bin\LLVM-C.dll"; uv run sm-render --scene configs/scene_baseline_perspective_ptracer.yaml --output output/perspective_ptracer_hi/
blend BSDF 3×3 スイープ (Step 8-14 β)$env:DRJIT_LIBLLVM_PATH = "C:\Program Files\LLVM\bin\LLVM-C.dll"; uv run python scripts/sweep_blend_bsdf.py (9 ジョブ × 約 8.4 分 = 75.5 分)
blend BSDF 比較パネル生成uv run python scripts/build_blend_bsdf_panel.py (要 output/blend_sweep/summary.csv + 各 luminance.npy)
LED グループ別 sanity check (TEST_07)$env:DRJIT_LIBLLVM_PATH = "C:\Program Files\LLVM\bin\LLVM-C.dll"; uv run python scripts/sanity_led_groups.py (3 ジョブ × 約 8.5 分 = 約 25 分)
LED sanity check 比較パネル生成uv run python scripts/build_led_group_sanity_panel.py (要 output/led_group_sanity/{bottom,right,left}/luminance.npy + output/baseline/luminance.npy)
max_depth 5 値スイープ (Step 8-14 α 前半)$env:DRJIT_LIBLLVM_PATH = "C:\Program Files\LLVM\bin\LLVM-C.dll"; uv run python scripts/sweep_max_depth.py (5 ジョブ × 8.5〜30 分 = 約 85 分)
max_depth 比較パネル生成uv run python scripts/build_max_depth_panel.py (1×5 輝度マップ + 2×2 収束カーブ.要 output/max_depth_sweep/summary.csv + 各 luminance.npy)
反射率 5 値スイープ (Step 8-14 α 後半)$env:DRJIT_LIBLLVM_PATH = "C:\Program Files\LLVM\bin\LLVM-C.dll"; uv run python scripts/sweep_reflectance.py (5 ジョブ × 約 17 分 = 約 85 分)
反射率比較パネル生成uv run python scripts/build_reflectance_panel.py (輝度マップ 2 段 + 既存指標 + 新指標カーブ.要 output/reflectance_sweep/summary.csv + 各 luminance.npy)
LED 配光 cutoff 5 値スイープ (Step 8-14 候補 ξ)$env:DRJIT_LIBLLVM_PATH = "C:\Program Files\LLVM\bin\LLVM-C.dll"; uv run python scripts/sweep_led_distribution.py (5 ジョブ × 約 17 分 = 約 85 分)
LED 配光比較パネル生成uv run python scripts/build_led_distribution_panel.py (輝度マップ 2 段 + 既存指標 + 新指標カーブ.要 output/led_distribution_sweep/summary.csv + 各 luminance.npy)
blend 単灯スイープ (TEST_09 実験5)configs/_tmp_blend_bottom/ の各 YAML を uv run sm-render --scene configs/_tmp_blend_bottom/{job}.yaml --output output/blend_bottom/{job} で順次実行 (1 ジョブ約 10.5 分)
blend 単灯の形指標解析・パネル生成uv run python scripts/build_blend_bottom_panel.py --side {bottom,left,right} (要 output/blend_bottom/ の各 luminance.npy + 実機 lightsim/luminance_maps/*.npy)
loft_w1p4 レンダ (TEST_10)$env:DRJIT_LIBLLVM_PATH = "C:\Program Files\LLVM\bin\LLVM-C.dll"; uv run sm-render --scene configs/_tmp_loft_w1p4/{job}.yaml --output output/loft_w1p4/{job}/ (job ∈ {bottom, left, right, full, full_base}.単灯 約 10 分・全灯 約 10 分/本)
loft 重みスイープ レンダ (TEST_10 拡張)$env:DRJIT_LIBLLVM_PATH = "C:\Program Files\LLVM\bin\LLVM-C.dll"; uv run sm-render --scene configs/_tmp_loft_w1p4/{w2p0,w4p0}_full.yaml --output output/loft_w1p4/full_{w2p0,w4p0}/
loft_w1p4 全灯評価 (TEST_10)uv run sm-evaluate --image output/loft_w1p4/{full,full_base}/luminance.npy --config configs/eval_baseline_dng_target_shape.yaml --output output/loft_w1p4/{full,full_base}/
loft_w1p4 形指標解析・パネル生成 (TEST_10)uv run python scripts/build_loft_w1p4_panel.py (要 output/loft_w1p4/ と元メッシュ基準 output/blend_bottom/ の各 luminance.npy + 実機 lightsim/luminance_maps/*.npy.summary.csv と 4×3 パネルを再生成)
球殻メッシュ生成 (TEST_11)uv run python scripts/generate_sphere_housing.py --radius 100 --thickness 3 --center 0 0 -40 --output configs/meshes/球殻_r100.stl
球体筐体レンダ (TEST_11)$env:DRJIT_LIBLLVM_PATH = "C:\Program Files\LLVM\bin\LLVM-C.dll"; uv run sm-render --scene configs/scene_sphere_r100.yaml --output output/sphere_r100/ (spp=8192 で約 36 分)
球体筐体評価 (TEST_11)uv run sm-evaluate --image output/sphere_r100/luminance.npy --config configs/eval_baseline_dng_target_shape.yaml --output output/sphere_r100/
球体筐体パネル生成 (TEST_11)uv run python scripts/build_sphere_panel.py (4 セル版.要 output/sphere_r100{,_loft}/ と output/loft_w1p4/full_base/ の luminance.npy + 実機 lightsim/luminance_maps/full_*.npy)
球ロフト一体メッシュ生成 (TEST_11 改訂)uv run python scripts/generate_sphere_loft_housing.py --output configs/meshes/球ロフト_r100.stl
球ロフト版レンダ (TEST_11 改訂)$env:DRJIT_LIBLLVM_PATH = "C:\Program Files\LLVM\bin\LLVM-C.dll"; uv run sm-render --scene configs/scene_sphere_r100_loft.yaml --output output/sphere_r100_loft/ (spp=1024 約 7.4 分)
球ロフト版評価 (TEST_11 改訂)uv run sm-evaluate --image output/sphere_r100_loft/luminance.npy --config configs/eval_baseline_dng_target_shape.yaml --output output/sphere_r100_loft/
レンダ前 3D 配置確認 (幾何変更時必須)uv run sm-visualize --scene <scene.yaml> --no-bake --screenshot <png> + uv run python scripts/show_led_geometry.py --scene <scene.yaml> --screenshot <prefix>
球ロフト円形光源版レンダ・評価 (TEST_11 追補)$env:DRJIT_LIBLLVM_PATH = "C:\Program Files\LLVM\bin\LLVM-C.dll"; uv run sm-render --scene configs/scene_sphere_r100_loft_disk.yaml --output output/sphere_r100_loft_disk/ → uv run sm-evaluate --image output/sphere_r100_loft_disk/luminance.npy --config configs/eval_baseline_dng_target_shape.yaml --output output/sphere_r100_loft_disk/
単灯再検証レンダ・集計 (TEST_12 追補)$env:DRJIT_LIBLLVM_PATH = "C:\Program Files\LLVM\bin\LLVM-C.dll"; uv run sm-render --scene configs/_tmp_fix_{bottom,left,right}.yaml --output output/singles_fix/{bottom,left,right}/ → uv run python scripts/build_singles_fix_summary.py

過去の整理実績 (Cleanup History)

2026-05-27: 初回整理(TEST_02 新設に伴う)

本ドキュメント新設に合わせて以下の残骸を 削除済み(合計 ~12.6 MB).output/ は .gitignore で追跡対象外のため,リポジトリ履歴には影響していない.

削除対象内容サイズ
output/eval_compat_test/中身空(figures/ 内も空).用途不明の試行残骸0 KB
output/baseline_linear/baseline_linear_npy/ と内容が重複.より新しい後者が現役約 1245 KB
output/compare_lummap/過去の輝度マップ比較作業の残骸.scripts/build_luminance_evolution_panel.py で代替済み約 6077 KB
output/sweep_reflectance/ 内の以下:
・PoC スクリーンショット 28 個clim_fix.png, cull_check.png, cull_check_no.png, eval_fix.png, eval_innerface.png, eval_texture.png, hybrid_*.png(8 個), marker_check.png, nomarker_check.png, path_check.png, path_translucent.png, poc_cull.png, render_only.png, render_opt.png, sensor_off_check.png, uni_check.png, unified_*.png(3 個), viz_check.png約 3700 KB
・ベイクキャッシュ 6 個bake_cache.npz, bake_d16.npz, bake_hi.npz, bake_uni.npz, bake_uni64.npz, bake_unified.npz(再生成可能)約 1280 KB
・使い捨てスクリプト 4 個apply_oetf.py, diag_seam.py, poc_cull.py, run_sweep.py(本体機能はパッケージに統合済み or 再実装容易)約 16 KB

整理後の output/ トップレベルは 「現役の検証アーティファクト」表の 5 ディレクトリのみ(baseline/, baseline_linear_npy/, emitter_real/, eval_oetf_r085/, sweep_reflectance/).sweep_reflectance/ 内は r075〜r092 の 5 サブディレクトリと sweep_summary.csv の 6 項目のみ.

今後の整理時の参考テンプレート

新たに残骸が溜まったときは,本ドキュメント「現役の検証アーティファクト」表に載っていないディレクトリ・ファイルを削除候補として整理する.output/ は .gitignore 配下なので git 履歴への影響はない.

# 個別ディレクトリ削除
Remove-Item -Recurse -Force output/<対象>

# sweep_reflectance のように「特定の名前以外を消す」場合のテンプレ
$keepNames = @("r075", "r080", "r085", "r090", "r092", "sweep_summary.csv")
Get-ChildItem output/sweep_reflectance |
    Where-Object { $keepNames -notcontains $_.Name } |
    Remove-Item -Recurse -Force

実行前に必ず Get-ChildItem で対象を確認すること.削除後は本ドキュメントの「過去の整理実績」サブセクションに追記して履歴を残す.

今後の運用規約 (Operational Conventions)

新規シミュレーション実行時のルール

  1. ディレクトリ名は内容を端的に:
    • 良い例: baseline_linear_npy/(baseline 入力 + linear 評価 + npy ソース)
    • 悪い例: test1/, tmp/(後から何の試行か分からない)
  2. 本ドキュメント (TEST_02) に新行を追加する: ディレクトリ名・関連 Step・config パス・主要指標・用途を記録.これで output/ が散らかっても索引から辿れる.
  3. PoC や使い捨て出力は削除を前提: 残すなら本ドキュメントに「履歴的価値」として記載.何も書かないものは削除推奨と見なす.
  4. 再現コマンドを残す: 本ドキュメントの「再現コマンド」表に同様の行を追加.

ディレクトリ命名規則の提案

output/{シーン or テーマ}[_{評価バリアント}][_{特記事項}]/
  例:
    output/baseline/                      ← 確定基準 (scene_baseline.yaml)
    output/baseline_linear_npy/           ← 確定基準を linear で再評価 (npy ソース)
    output/eval_oetf_r085/                ← OETF on 評価結果 (R=0.85)
    output/emitter_real/                  ← 発光面実サイズ検証
    output/sweep_reflectance/r{NNN}/      ← 反射率スイープ

参照 (References)