実装は 核計算ロジックから外側に向かって積み上げる:
各ステップ完了時に GUIDE_04 に従ってコミット・PR を作成する./implement <ステップ> でコーディング → テスト → リファクタの自動パイプラインを通す.
| Step | 名前 | 成果物 | 依存 |
|---|---|---|---|
| 1 | 均一性評価モジュールの移植 | uniformity.py, evaluation/zones.py, evaluation/radial.py + テスト | なし |
| 2 | YAML スキーマ定義 | scene/schema.py + バリデーションテスト | Step 1 |
| 3 | ジオメトリ層 | geometry/loader.py, geometry/transforms.py + テスト | Step 2 |
| 4 | シーン構築 + 最小レンダー | scene/builder.py, scene/lights.py, scene/materials.py, scene/sensors.py, render/runner.py, render/output.py | Step 3 |
| 5 | render CLI | cli/render.py + 統合テスト | Step 4 |
| 6 | evaluate CLI + 可視化 | cli/evaluate.py, evaluation/roi.py, evaluation/visualize.py | Step 1, 5 |
| 7 | 基準設計のキャリブレーション | configs/scene_baseline.yaml, configs/meshes/*.stl, キャリブ報告 | Step 5, 6 |
| 8 | 設計バリエーション比較 | バリエーション YAML 複数 + 比較レポート | Step 7 |
MiniTias-Evaluation/src/uniformity.py を src/sm_tias_lightsim/uniformity.py にコピーhttps://github.com/rintoHasegawa/MiniTias-Evaluation)evaluation/zones.py:3 ゾーン分析(中心 d<0.33 / 中間 / 周辺 d≥0.66)evaluation/radial.py:放射状プロファイルuv run pytest tests/test_uniformity.py が通るuv add pydantic pyyamlscene/schema.py:SPEC_02_シーン定義仕様 のトップレベル構造を Pydantic モデルで定義ValidationError を投げるgeometry/loader.py:trimesh で STL 読込.頂点・面・単位タグを保持geometry/transforms.py:mm → m 変換等scene/lights.py:YAML 光源定義 → Mitsuba emitterscene/materials.py:YAML 材料 → Mitsuba BSDFscene/sensors.py:YAML センサ → Mitsuba sensorscene/builder.py:上記を統合.YAML 全体 → Mitsuba scene dictrender/runner.py:variant 設定 + mi.render 実行.輝度配列を返すrender/output.py:HDR 配列 → PNG / luminance.npy 出力@pytest.mark.slow)cli/render.py:sm-render --scene <yaml> --output <dir> を実装pyproject.toml の [project.scripts] に登録(sm-render = "sm_tias_lightsim.cli.render:main")uv run sm-render --scene tests/fixtures/minimal.yaml --output /tmp/test/ が動くevaluation/roi.py:image_pixel 型 ROI 抽出(最初は矩形のみ.scene_face は後回し可)evaluation/visualize.py:輝度マップ / ヒストグラム / 放射プロファイル / ゾーンマップを matplotlib で出力cli/evaluate.py:sm-evaluate --image <png> --config <yaml> --output <dir> を実装configs/scene_baseline.yaml に記述sm-render → sm-evaluate で指標を算出sm-render → sm-evaluate で評価Step 7 で実数値を見てから確定する.それまでの仮置き:
| 指標 | 実測値(参考) | 仮置き許容範囲 |
|---|---|---|
| CoV | 0.0426 | ±0.005 |
| 中心/周辺比 | 1.064 | ±0.02 |
| 勾配 (%) | 6.23 | ±1.5 |
確定値は Step 7 完了時に本表を上書きする.