A local, open-source image/text → game-ready & print-ready 3D asset foundry on one RTX 5090: generation (TRELLIS.2 / Hunyuan3D / Direct3D-S2), a headless-Blender mesh-ops pipeline (clean → retopo → LOD → UV → bake → PBR), and an automated QA-gate wall that blocks plausible-but-broken geometry — the part that turns raw generation into a deliverable.
Companion to the creative stack (2D generation + editing) and the sovereign AI stack (the analysis brain). Same house pattern: containerised per service, VRAM-disciplined, benchmarked honestly.
I don't hand-write code. Every service, workflow, gate, and config in this stack was written by LLMs (Claude primarily) under my direction — one focused build session per phase, each working against a written spec with snapshot/verify gates. My work is everything around the code: architecture and model selection, the license-chain audit, the specs the LLMs execute against, debugging direction, verification, and day-2 operations. I have a B.E. in Computer Science — I read code fluently; I direct rather than write it. This repo is the documentation-and-showcase edition of that build: the architecture, the named workflows, the honest benchmarks, and the lessons from every fight it took — including an S4 hero-retopo failure that's still an open limitation, and a 1536³ zero-length-normals bug that a thumbnail would never reveal.
Raw AI image-to-3D produces plausible geometry in seconds. Making that geometry
clean, manifold, retopologised, UV-unwrapped, baked, format-compliant, and
verified is the rest of the work — and it is where a deliverable is actually
made. Silent plausible-but-broken geometry (non-manifold, overlapping UVs, an
invented back the input never showed) is the #1 failure mode of AI 3D. This
stack's differentiator is the QA-gate wall that catches it: 14 automated
gates whose verdicts are written into the job manifest, where a fail blocks
delivery.
Each tile is a small YAML definition — its stage chain + default QA profile — the
3D analogue of an importable ComfyUI workflow. All are in workflows/.
| Tile | Lane | What it delivers |
|---|---|---|
| 🏺 Potter | C | Production static prop — full game-ready delivery, any budget 50–20k |
| ⚔️ Swordsmith | C / Q | Hero prop — Unreal Nanite lane + 4K PBR |
| 🖨️ Moldmaker | C | Watertight, mm-scaled STL/3MF + sliced gcode + printability report |
| 🛒 Shopkeeper | C | Per-SKU photo→3D with marketplace spec-compliance report, batched |
| 🧍 Golem | Q / C | Rigged character — UniRig auto-rig + human deform gate |
| 🏗️ Simwright | C | SimReady USD object (physics + collision + semantics) for Isaac Sim |
| 🗿 Stonecut · 🧭 Compass · 🧩 Partwright · 🥇 Gilder · 🎨 Glazier · 🔁 Turnwright | mixed | draft · turnaround-builder · kitbash · Lane-Q quality · re-texture · 3D→2D control |
Full stage-by-stage detail, the QA-gate table, and per-tile turnaround classes: docs/pipeline.md.
Two license lanes, chosen at intake. Lane C (commercial-safe, default) is
all-MIT/Apache: TRELLIS.2 + the mesh toolchain, cleared for any client in any
territory. Lane Q (best-quality) uses the Tencent Hunyuan3D family, gated by
territory and MAU. The headline license is not the whole story — the primary
generator is MIT but silently pulls in a gated conditioner (DINOv3 — verified
commercial-OK worldwide) and a non-commercial background remover (RMBG-2.0 —
quarantined). The full chain is in LICENSE.
The QA-gate wall. 14 gates, one per stage: manifold, retopo quality, LOD
Hausdorff, UV overlap, PBR sanity, glTF validity, marketplace-spec compliance,
SimReady compliance, and a back-fidelity gate (G14) that renders the mesh at
each reference azimuth and scores it against the real/synthetic view — the
objective "did it invent the back?" check no single-image pipeline can fake.
Representative implementations are in gates/.
VRAM discipline on 32GB. One heavy GPU tenant at a time via use → flush → load; mesh-ops is CPU-only except OptiX bakes, so the pipeline's parallelism lives on the CPU side while generation serialises. Calibrated envelopes: TRELLIS.2 4.6 / 14.8 / 30.6 GB at 512³ / 1024³ / 1536³; a hero-res 1536³ mesh fits on 32GB with ~1.4 GB margin.
The manifest is the contract. Every stage reads and writes one
manifest.json (schema in schemas/); stages are idempotent and any
stage can be re-run alone.
Being measured, not assumed. The pipeline produces engine-ready and print-ready output end-to-end, and the SimReady conversion pack passed 16/16 with zero validator errors. But the benchmarks ship with the failures in them: two hero jobs parked at S4 retopo because classical quad retopo can't hit an exact face budget and segfaults on ~24k-pole meshes (open limitation, documented here); a partial aesthetic quality panel (B3) is now published — a three-engine render comparison of real TRELLIS.2 / Direct3D-S2 / Hunyuan3D hero meshes under one identical studio rig — but it is labelled honestly as not yet the settled identical-input run (the D3-S2 and Hunyuan legs share geometry and used a different input than TRELLIS.2), so the full same-input B3 and the engine-ingestion bench (B4) both stay pending. The coverage map states exactly what's measured vs built-but-unmeasured vs defined-not-built.
The ⚔️ Swordsmith hero — a real TRELLIS.2-generated, retopologised, UV-baked, 4K-PBR-textured helmet — on a 36-frame studio turntable rendered by the pipeline's own headless-Blender rig (3-point key/fill/rim so the metal reads as metal, not a flat-grey blob):
Real renders from the stack. Grey-clay renders are pipeline QA thumbnails; images marked (input ref) are the reference render that fed a tile whose own beauty render isn't published here yet.
| Tile | Sample | What it is |
|---|---|---|
| ⚔️ Swordsmith | helmet | hero-asset input ref (the S2@1536³ hero-res input) |
| 🖨️ Moldmaker | vessel | print-lane QA turntable render (grey clay) |
| 🛒 Shopkeeper | SKU mug | e-commerce SKU render (G14 back-fidelity front view) |
| 🧍 Golem | character | rigged-character QA render (A-pose, rig-gate set) |
| 🏺 Potter | prop (input ref) | production-prop input (job parked at S4 — see benchmarks) |
| 🏗️ Simwright | industrial (input ref) | SimReady/industrial-asset input ref |
docs/ pipeline stages + QA gates · lessons-learned · architecture SVG
workflows/ the named tiles as YAML workflow definitions
gates/ representative QA-gate implementations (G1, G8, G14, gate library)
stages/ representative mesh-ops stage scripts (S3 clean, S4 retopo)
schemas/ the job-manifest schema (the stage-to-stage contract)
benchmarks/ honest measured tables (B1/B2/G13) + coverage map + sample renders
This is a documentation and showcase repo, like the creative-stack repo — curated representative code, not a full orchestrator dump.
Hardware: RTX 5090 32GB · Ryzen 9 9900X3D · 128GB DDR5 · Ubuntu 24.04 · CUDA 13.2 host / cu128 containers.
MIT for the glue code, tile definitions, gates, and docs in this repo. Model
weights and tools carry their own licenses — the stack deliberately runs an
all-MIT/Apache commercial-safe lane by default, with a license-gated best-quality
lane. The full dependency license chain — including the DINOv3 (commercial-OK,
gated) and RMBG-2.0 (non-commercial, quarantined) findings and the Tencent
territory caveat — is in LICENSE.


