Skip to content

GameFrame3D

GameFrame3D turns flat game and animation references into explorable 3D scenes.

Core trick

Reconstructs 3D scenes from flat references by combining scene-understanding output with generated assets and Blender composition.

Tags

Description

GameFrame3D turns flat game and animation references into explorable 3D scenes. Users can orbit, zoom, and inspect characters and environments from new viewpoints. We built a scene reconstruction workflow combining Astra scene understanding, Meshy asset generation, and Blender composition and refinement, with a browser-based 3D gallery. The project includes an automated reconstruction pipeline and scenes refined by coding agents. The demo shows prepared scenes with live 3D interaction.
chnlich/GameScene3D★ 00 forksPythonCreated Sep 8, 2026 · last push Sep 9, 2026

README excerpt

# GameFrame3D

GameFrame3D turns image and text inputs into 3D scenes with downloadable generation
evidence. This checkout supplies the HTTP/runtime foundation; the independent
`pipeline/`, `web/` and `demo/` work lines supply generation, the viewer and materials.
`contracts/scene.schema.json` is the sole shared HTTP and Python contract. The server
loads its definitions at runtime; it does not maintain an OpenAPI or Pydantic copy.

Run from the repository root with Python 3.11+, uv and npm installed:

```sh
uv sync --locked
npm ci
uv run python -m server --config config.example.yaml
```

The example binds to `127.0.0.1:8765`. Copy it to `config.yaml` to select another
host/port, isolated data directory, generation YAML path, execution/queue capacity,
upload/request byte limits, prompt length and decoded image pixel limit. Paths
resolve relative to the root YAML file. Pydantic rejects unknown keys and invalid
limits. Keep credentials in the pipeline's own local configuration, outside public
assets; root configuration contains only its explicit path. Generation YAML parsing
and validation belong to pipeline.

`GET /api/health` separates HTTP liveness from generation capability. The adapter
requires callable `pipeline.runner.generate` and `pipeline.runner.preflight`, then
calls `preflight(config_path: str | None) -> list[str]` with the same resolved path
(or null) used for generation. Start generation configuration from
`pipeline/config.example.yaml`; pipeline owns executable, l

Team