Reproduce a reference scene photo as a single Blender scene from a set of component images. The project has two stages:
Assets/Images/
into a 3D .glb with Pixal3D (image-to-3D).agents/) that places the generated GLBs into one scene matching the
reference photo, then exports assembled_scene.blend.| Path | Role |
|---|---|
Assets/Images/ | Reference photo + per-component (IDX00..IDX07) input images. |
configs/ | generation.yaml (Stage A), scene_layout.yaml (Stage B). |
scripts/ | generate_components.py, render_scene.py, run_generate_components.sh. |
agents/ | Stage B layout pipeline (see agents/README.md). |
tasks/ | Authoritative per-step task specs (0N_*.html). |
Pixal3D/ | Vendored image-to-3D generator (Stage A). |
docs/ | Design notes (plan.md, progress.md, workflow.md). |
git, git-lfs, and Blender on PATH
(Stage B calls blender --background --python).model.base_url in configs/scene_layout.yaml
to point at your endpoint, e.g. a local proxy at http://127.0.0.1:8199/v1).pip install -r Pixal3D/requirements.txt # Pixal3D deps
./scripts/run_generate_components.sh # GLBs -> outputs/components/
This generates one .glb per image in Assets/Images/ (config in
configs/generation.yaml).
pip install openai>=1.0 pyyaml
export OPENAI_API_KEY=sk-...
python agents/pipeline.py --config configs/scene_layout.yaml
The pipeline runs 7 sequential steps (camera calibration → correspondence →
scales → scene graph → incremental layout → global refinement → Blender
assembly). Each step reads its spec from tasks/0N_*.html, iterates with a
render-and-compare loop, and writes canonical JSON outputs consumed by later
steps. See agents/README.md for the full step table, CLI flags, the
iteration-status contract, and run records.
Useful flags:
python agents/pipeline.py --start-step 5 # resume from a step
python agents/pipeline.py --only-step 6 # run a single step
python agents/pipeline.py --only-step 7 --regenerate-assembler
python agents/pipeline.py --continue-on-failure
outputs/, .blend, caches) are git-ignored;
the source images and code are committed.location in
meters, rotation_euler in radians (XYZ Euler), scale unitless.Python
88.3%
C++
5.3%
HTML
3.8%
Cuda
2.1%
Reproduce a reference scene photo as a single Blender scene from a set of component images. The project has two stages:
Assets/Images/
into a 3D .glb with Pixal3D (image-to-3D).agents/) that places the generated GLBs into one scene matching the
reference photo, then exports assembled_scene.blend.| Path | Role |
|---|---|
Assets/Images/ | Reference photo + per-component (IDX00..IDX07) input images. |
configs/ | generation.yaml (Stage A), scene_layout.yaml (Stage B). |
scripts/ | generate_components.py, render_scene.py, run_generate_components.sh. |
agents/ | Stage B layout pipeline (see agents/README.md). |
tasks/ | Authoritative per-step task specs (0N_*.html). |
Pixal3D/ | Vendored image-to-3D generator (Stage A). |
docs/ | Design notes (plan.md, progress.md, workflow.md). |
git, git-lfs, and Blender on PATH
(Stage B calls blender --background --python).model.base_url in configs/scene_layout.yaml
to point at your endpoint, e.g. a local proxy at http://127.0.0.1:8199/v1).pip install -r Pixal3D/requirements.txt # Pixal3D deps
./scripts/run_generate_components.sh # GLBs -> outputs/components/
This generates one .glb per image in Assets/Images/ (config in
configs/generation.yaml).
pip install openai>=1.0 pyyaml
export OPENAI_API_KEY=sk-...
python agents/pipeline.py --config configs/scene_layout.yaml
The pipeline runs 7 sequential steps (camera calibration → correspondence →
scales → scene graph → incremental layout → global refinement → Blender
assembly). Each step reads its spec from tasks/0N_*.html, iterates with a
render-and-compare loop, and writes canonical JSON outputs consumed by later
steps. See agents/README.md for the full step table, CLI flags, the
iteration-status contract, and run records.
Useful flags:
python agents/pipeline.py --start-step 5 # resume from a step
python agents/pipeline.py --only-step 6 # run a single step
python agents/pipeline.py --only-step 7 --regenerate-assembler
python agents/pipeline.py --continue-on-failure
outputs/, .blend, caches) are git-ignored;
the source images and code are committed.location in
meters, rotation_euler in radians (XYZ Euler), scale unitless.Python
88.3%
C++
5.3%
HTML
3.8%
Cuda
2.1%