deepseek v4.1 flash spent $0.16 on a cat that jumps onto a table – and taught it to walk on two legs. claude opus 5.5, gemini 4 argon and gpt-6 astra got the same brief. gpt-6 astra charged $3.77 for its cat and only opus made one that sits like a cat.
the setup
we put four models on one motion test. a house cat walks in, looks up and jumps onto a table. then it sits, jumps down and walks off, on a loop.
- models: claude opus 5.5, gemini 4 argon, gpt-6 astra, deepseek v4.1 flash 1017
- gemini, gpt and deepseek through openrouter, opus through a claude subscription
- one brief in four stages: skinned rig and the full sequence, motion, the look, light and polish
- every reply is the full html file, reasoning on medium, no browser for the models
- three.js 0.170 from a cdn, the cat is one skinned mesh generated in code – no spheres or capsules
- test date: oct 20, 2026
our first run put the cat in a room and let the models start from placeholders. every cat came out as a chain of beads. so we restarted with a stricter brief: one solid cat from the first stage, on a studio backdrop with only a table.
the numbers
cost is what openrouter billed, time is generation time across all stages. tokens include reasoning.
| model | cost | time | output tokens | lines of code |
|---|---|---|---|---|
| deepseek v4.1 flash | $0.16 | 23m 20s | 298k | 2,076 |
| claude opus 5.5 | ~$1.28 | 75m 13s | ~56k | 1,369 |
| gemini 4 argon | $1.37 | 19m 52s | 120k | 2,497 |
| gpt-6 astra | $3.77 | 20m 11s | 65k | 1,267 |
opus ran on a subscription, so its cost is priced at the openrouter list rate and its tokens are counted from the code it wrote. its first stage alone took 38 minutes.
gpt-6 astra cost 24x more than deepseek. deepseek wrote 5x more tokens than opus and was still the cheapest run.

four cats on one table
the frames below are from the same moment, 8 seconds into the loop.




- claude opus 5.5 – the only cat that sits like a cat: hind legs folded, tail wrapped around the paws, fur made in code
- gemini 4 argon – the fastest run and the most code, 2,497 lines in under 20 minutes
- gpt-6 astra – eyes and stripes in the shortest file of the four, with visible folds where the legs bend
- deepseek v4.1 flash – its cat skips the four legs and walks up to the table upright, like a person
all four cats are one solid mesh. only one of them moves like the animal it is.
what went wrong on the way
deepseek's first stage crashed on a vector method that does not exist in three.js, and stages two to four were built on top of it. one fix round with the error message brought the cat on screen. that round is counted in its cost, time and tokens.
in the video the four loops run at slightly different speeds, so we slowed gemini and gpt by a few percent to line up the jumps.
the brief
the overview every model got before stage one:
You are building a complete, polished real-time 3D animation step by step: A HOUSE CAT JUMPS ONTO A KITCHEN TABLE. You will receive the work in 4 stages. In every stage you get your current code and the next part of the brief, and you reply with the COMPLETE updated HTML file (never a diff, never "the rest stays the same").
THE SHOT
- A clean studio motion test: ONLY the cat and one wooden table on a seamless soft light-grey studio backdrop (infinite cyclorama, no horizon line), soft studio lighting and contact shadows. No room, no props, no text or HUD. A domestic cat walks into frame, stops next to a table, looks up at it, prepares, jumps up onto the tabletop, lands, settles and sits. Then it jumps back down to the floor, walks off, and the whole sequence loops.
- This is a MOTION test. What matters most is that the cat moves like a real cat: weight, timing, anticipation, a believable ballistic arc, a soft landing that absorbs the impact, overlapping action on the spine, head and tail, paws that plant and never slide or sink into the floor or table.
- One loop lasts about 12–16 s with no dead moments.
THE CAT
- ONE continuous organic surface from the very first stage: the whole cat — torso, neck, head, ears, legs, paws and tail — is a single THREE.SkinnedMesh (one geometry; eyes, nose, whiskers may be separate small meshes parented to bones). Never build the body from separate spheres / capsules / beads, not even as a placeholder. Generate the surface in code (e.g. an SDF / metaball field of the cat polygonised with marching cubes, or lofted cross-sections welded into one mesh) with smooth normals and real skin weights (up to 4 bones per vertex, smoothly blended across joints) bound to your skeleton, so the skin bends and stretches with the bones without collapsing or tearing. Real cat volumes: deep chest, narrow waist, strong haunches, slim legs, round paws, round head with cheek fluff.
- Built procedurally in code (no external models). It must read instantly as a domestic cat at any size: proportions, rounded head, triangular ears, whiskers, eyes, a long tail, four legs with the cat's real joint layout (hind legs with the backward-pointing "heel"), paws.
- Animated by your own skeleton / joint hierarchy: spine segments, neck, head, ears, tail segments, legs with upper/lower/paw joints. Use inverse kinematics or careful foot planting so paws stay planted while in contact.
AUTOPLAY (required)
The animation plays by itself with nobody touching anything — it will be recorded for a video. The camera is a designed, smooth cinematic camera (3/4 side view by default) where the cat is BIG in frame and the whole action stays readable; OrbitControls may be available but must not be needed.
TECHNICAL RULES (all stages)
- ONE self-contained HTML file. three.js only, loaded through an importmap from https://cdn.jsdelivr.net/npm/three@0.170.0/ (build/three.module.js and examples/jsm/ addons are allowed). No other libraries, no external models, textures, images or fonts — all geometry and textures are made in code (canvas textures, procedural shaders).
- The scene must FILL the whole window. It may be shown as small as 930x380 (wide and low!) and as large as 1920x1080; handle resize and keep the cat and the table well framed at both extremes.
- Starts immediately, no menu, no click needed. body margin 0, no scrollbars.
- Smooth 60 fps on a mid-range GPU: reuse geometry and materials, cap pixel ratio at 2, no per-frame allocations in hot loops.
- requestAnimationFrame loop with delta time clamped (max 50 ms).
- Zero runtime errors: declare every variable you use, guard against undefined, double-check every function, variable and three.js API name you reference.
Reply with the complete HTML file only — no explanations, no markdown fences.no model saw another model's code.
our take
deepseek v4.1 flash 1017 is a bargain for code that runs, and this test shows its limit: 298k tokens did not tell it which way a cat stands. opus 5.5 was the slowest here and the only one that got the animal right. if motion matters more than price, that gap is the whole result.
sources
- claude opus 5.5, anthropic
- gemini 4 argon on openrouter
- gpt-6 astra on openrouter
- deepseek v4.1 flash 1017 on openrouter
- brief, builds, timings and bills: our test, oct 20, 2026