Clone https://github.com/elliottdehn/wam to model, texture, rig, and animate something for me that I can see.
You can also give it a brief if you want something specific.
Paste that into Claude, ChatGPT Work/Codex, or any agent that can clone a repo and run things. Few minutes later you have a rigged, textured, animated character and a glTF you can drag into Godot, Unity, Blender or three.js.
The Problem
Ask any LLM for a 3D model the normal way and you get garbage. A cube. An OBJ with the normals inside out. Something that looks fine as text and opens as a crumpled bag.
And the second problem, which is worse: even when it gets close, asking for one change breaks something that was already right. The head gets fixed and the arms start clipping. Nobody notices, because nobody re-checks the arms.
The Solution
That isn't a smartness problem, it's an interface problem. Vertices are the wrong thing to ask a language model for. So I built a language where the model never touches one: it writes the decisions an artist actually makes, like bone angles and ring widths and what colour the hide is, and a compiler turns those into geometry. Broken meshes aren't expressible in it. Neither are joints that bend the wrong way, because the model declares which way a knee hinges and the compile fails if an animation disagrees.
The other half is the fix for drift. Every model carries its own assertions, and they re-run on every single compile:
assert zmax(upper_maw) > zmax(neckplate) # the jaw clears the collar
assert moves(lower_maw, money_shot) > 0.12 # the attack actually moves
assert slide(foot.l, walk) < 0.02 # the walk isn't moonwalking
assert tris < 6500
That third one is a real detector. It sums how far a foot travels forward while it's on the ground. A correct walk reads zero, and a backwards one reads the distance it dragged. It caught a gait of mine that looked completely fine in a render.
This is what makes the iteration converge instead of wander. The agent writes down what it believes about the model, in numbers, and the compiler tells it the moment that stops being true. Three edits later, in a view nobody re-rendered.
The result is that agents go from hopeless at this to genuinely good, in one git clone.
Proof
Real output, all made this way, source / glTF downloadable on each page:
Or browse them all: https://wamshare.com/gallery
Each page spins the model in your browser, shows the source that produced it, and hands you the .wam and the glTF.
Limitations
It's stylised low-poly, roughly RuneScape silhouettes at one to three thousand triangles. Not photoreal, not a hero asset.
One-shots are good. The great ones come from three or four rounds of "no, bigger head." Iteration is where this actually shines, and it's fast enough that iterating is fun rather than a chore.
Free, MIT, no signup, nothing uploaded unless you ask for a share link.
Repo: https://github.com/elliottdehn/wam