MoGen is out — a procedural
3D model generator that turns a small declarative language into
.glb assets. It ships as a CLI and as MoGen Studio, a desktop
app with a live 3D preview. Free, MIT-licensed,
and bring-your-own-key.
The idea
LLMs are good at structure and intent, and bad at floating-point geometry. Ask one to model a chair directly and you get plausible nonsense — overlapping faces, drifting vertices, hallucinated triangles.
So MoGen splits the job. The language model decides what to build — the parts, their roles, how they relate — and writes that as a compact DSL. Deterministic Rust handles how to build it. Small outputs, cheap iteration, and geometry that’s actually correct because a parser made it, not a probability distribution.
A minimal scene looks like this:
scene {
box "seat" (pos=[0, 0.5, 0], size=[1.0, 0.1, 1.0])
box "back" (pos=[0, 1.0, -0.45], size=[1.0, 1.0, 0.1])
}
Every statement has the same shape — a kind, an optional name, attributes, and optional children. From there it scales up to CSG (union / difference / intersect), hierarchies and reusable modules, arrays and mirrors, connectors, skeletons with skinning and animation, and full PBR materials with embedded textures.
Bring your own key
There’s no MoGen account and no MoGen API. You point it at whatever model you already pay for: Gemini (API key or Google OAuth), OpenAI, Anthropic, Ollama running locally, Claude Code on a subscription, Fireworks, or Z.ai’s GLM family. Generate, modify, and animate flows all go through the backend you pick.
That’s the whole pitch of the Reddit thread where I first posted it — free, open source, BYOK. No lock-in on the model, no lock-in on the engine.
Studio
The CLI is the engine; MoGen Studio is where it’s pleasant to live. It combines the DSL editor, a live three.js-style preview, validation diagnostics, and one-click generate / modify / animate. The inspector shows a texture roster with a ✓/✗ per path, so missing image files are obvious before you hit Build.
Output is plain glTF 2.0, so the .glb drops straight into Godot,
Blender, three.js, or anything else that reads the format. It’s
written in Rust with no runtime and no engine dependency — just a
parser, a scene graph, a mesh library, and an exporter.
Try it
It’s usable but still moving fast. If you break it, the issue tracker is open.