File size: 4,181 Bytes
5c1bb37
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
# Reproducibility Guide

This guide maps the code release to the experiments in the paper. The primary reproducibility path is Blender indoor; other sources are retained as secondary adapters for robustness checks.

## Primary Asset Requirement

| Source | Expected Input | Primary Command |
| --- | --- | --- |
| Blender indoor | `.blend` scenes | `scripts/run_blender_indoor.sh` |

The repository does not redistribute scene assets. Reviewers can run the no-data smoke test immediately, and can run the full path after mounting local `.blend` scenes.

## Secondary Assets

| Source | Expected Input | Config |
| --- | --- | --- |
| Blender outdoor / generic meshes | `.glb` or `.gltf` | `configs/blender_outdoor.yaml` |
| HM3D | `.glb` or `.gltf` plus optional semantic/navmesh files | `configs/hm3d.yaml` |
| ScanNet++ | `.ply` | `configs/scannetpp.yaml` |

## Building Blocks Available in This Release

| Module | Purpose | Entry Point |
| --- | --- | --- |
| Candidate generation | Phase 1 of §3 — produce \(\mathcal{P}_\varphi\) | `scripts/build_candidates.py` |
| Conflict-aware selection | Phase 2 of §3 — greedy with \(s_t = G_t - \lambda L_t + \beta B_t\) | `scripts/select_views.py` |
| Selected-view rendering | Phase 3 — final ERP render from chosen candidates | `scripts/render_selected.py` |
| Coverage metric | §6.1 high-resolution oracle coverage | `scripts/evaluate_coverage.py` |
| Oracle-gain validation | §6.2 warping vs. pre-render-all comparison | `scripts/evaluate_oracle_gap.py` |
| Quality audit | Appendix F.2 50-frame audit | `scripts/audit_quality.py` |
| Run summarization | Aggregate per-scene `selected_frames.json` into a CSV | `scripts/summarize_blender_indoor_run.py` |
| Audit summarization | Aggregate per-frame audit results into a CSV | `scripts/summarize_quality_audit.py` |

The §6 driver scripts that orchestrate these building blocks across an entire baseline sweep (e.g., the `K\!\in\!\{8,16,24,32\}` table of §6.1, the \(\lambda\) sweep of §6.5, and the four-source benchmark of §6.6) are scheduled to be released alongside the camera-ready paper.

## Minimal Review Run

```bash
bash scripts/run_tiny.sh
```

This validates the Blender-indoor-style metadata format, greedy selection loop, render-output contract, coverage metric, oracle-gap script, and quality audit script — end-to-end without any private scene assets.

## Blender-Indoor Full Run

```bash
DRY_RUN=1 \
BLENDER=/path/to/blender \
INPUT_DIR=/path/to/blend_scenes \
OUTPUT_ROOT=outputs/blender_indoor \
bash scripts/run_blender_indoor.sh
```

After confirming the detected scene list, remove `DRY_RUN=1`:

```bash
BLENDER=/path/to/blender \
INPUT_DIR=/path/to/blend_scenes \
OUTPUT_ROOT=outputs/blender_indoor \
NUM_FRAMES=30 \
RESOLUTION=2048,1024 \
GRID_SPACING=0.5 \
bash scripts/run_blender_indoor.sh
```

## Metric Scripts

The native Blender-indoor pipeline emits `selected_frames.json` under each scene output directory. Summarize a completed run with:

```bash
python3 scripts/summarize_blender_indoor_run.py \
  --output-root outputs/blender_indoor \
  --output outputs/blender_indoor/results/coverage_main.csv
```

If you have consolidated candidate and selection metadata into the normalized JSONL/JSON contract used by the smoke test, use:

```bash
python3 scripts/evaluate_coverage.py \
  --candidates outputs/blender_indoor/metadata/candidates.jsonl \
  --selected outputs/blender_indoor/metadata/selected_viewpoints.json \
  --output outputs/blender_indoor/results/coverage_main.csv

python3 scripts/evaluate_oracle_gap.py \
  --candidates outputs/blender_indoor/metadata/candidates.jsonl \
  --selected outputs/blender_indoor/metadata/selected_viewpoints.json \
  --output outputs/blender_indoor/results/oracle_validation.csv

python3 scripts/audit_quality.py \
  --render-dir outputs/blender_indoor/renders \
  --metadata outputs/blender_indoor/metadata/selected_viewpoints.json \
  --output outputs/blender_indoor/results/audit_50_frames.csv
```

The exact dataset paths should be adapted to the local machine. Do not commit generated data, logs, checkpoints, third-party repositories, or scene assets to the anonymous code repository.