Case study · Desktop application
InterForge
A desktop tool that turns a text prompt into a game-ready asset — a 2D sprite, a 2.5D relief, or a full 3D mesh. Entirely on your own GPU. No cloud, no API keys, no per-generation cost.
Prompt goes in. SDXL renders the concept art, the background is stripped, and then you choose what comes out: a flat textured sprite, a depth-reconstructed relief that reads as solid from the front, or full geometry you can orbit all the way around. Every route ends in a UV-unwrapped, textured GLB. The whole pipeline runs locally on an 8 GB card.
Most tools pick one of those three and make you live with it. Choosing per asset is the point — a background prop does not need the triangles a hero character does.
- Tauri 2
- Rust
- React
- Three.js
- FastAPI
- PyTorch
- CUDA
- SDXL
- Stable Fast 3D
One concept, three modes
The same generated character down every branch of the pipeline, twice over. Every mesh below came out of the plate to its left — nothing here is a stock model or remodelled by hand.
2.5D Relief
Depth reconstructed from a single image. Shown face-on, which is how a relief is meant to be seen. A relief pushes every pixel back by its depth, so at the silhouette it stretches a skirt of long thin triangles across the depth jump — about 3% of faces, each 8–26× longer than any real edge. Those are stripped here by edge length, which leaves vertex positions and UVs untouched. The full 3D route has none of it.
3D Full geometry
Complete reconstruction — geometry all the way around. Drag to orbit, scroll to zoom.
The application
A native desktop app, not a web wrapper. Four stages across the top — Prospect, Pose, Forge, Projects — with an asset tray that carries work between them. Prospect is at the top of this page; here are the other two that do the heavy lifting.
How it works
- Prospect — SDXL generates concept art from your prompt, with LoRAs for style and asset-type conditioning.
- Smelt — background removal and contour cleanup, isolating the subject.
- Forge — Stable Fast 3D turns one locked image into a UV-textured mesh.
- Decimate, refine, LOD — reported and skipped. SF3D already emits a clean, watertight, low-poly mesh, and running a decimator over it would destroy the UVs.
- Export — a textured GLB, plus a project manifest with paths and settings.
That skip is the decision worth defending. The obvious build runs every mesh through quadric decimation and spits out an LOD ladder, because that is what the tutorials do — but SF3D's output is already around 20k faces and already unwrapped, so the only thing decimation adds is broken texture coordinates. Reporting those stages as skipped, with the reason, beats quietly shipping a worse mesh.
Running locally is the rest of it. Cloud generators charge per generation and hold your pipeline hostage; this runs on hardware you already own, which matters when you are iterating on one character forty times.