claude opus 5.5 cost 11x more than deepseek v4.1 flash on one animation job, and only its beagle went back to bed. we gave both models the same brief: a dog wakes up, plays with a ball and falls asleep again, all generated in code. deepseek spent $0.22, opus about $2.43.
the setup
this is the same studio motion test as our cat that jumps onto a table, with a new animal and a longer sequence.
- models: claude opus 5.5 and deepseek v4.1 flash 1017
- deepseek through openrouter, opus through a claude subscription
- oone brief in four stages: rig, motion, look, light and sound
- every reply is the full html file, reasoning on medium, no browser for the models
- three.js 0.170 from a cdn, the dog is one skinned mesh generated in code – no spheres or capsules
- test date: oct 22, 2026
the job is one 18–22 second loop. the dog sleeps curled up in its bed and wakes when a ball bumps it. it stretches, shakes and play-bows, then catches the ball mid-air and trots a circle with it. at the end it yawns, turns around in the bed and falls asleep in the pose it started in.
the numbers
deepseek's cost is what openrouter billed. 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.
| model | cost | time | output tokens | lines of code |
|---|---|---|---|---|
| deepseek v4.1 flash | $0.22 | 29m 09s | 326k | 2,388 |
| claude opus 5.5 | ~$2.43 | 67m 11s | ~106k | 2,138 |
deepseek was 2.3x faster and 11x cheaper. opus spent 40 minutes on stage one alone.

two beagles, one loop
the frames below put opus on the left and deepseek on the right at the same second of the loop.



- claude opus 5.5 – the loop closes: the dog starts and ends curled up in the bed in the same pose, with a clean tricolor coat and paws that stay on the floor
- claude opus 5.5 – the sleeping pose is crumpled, and the body twists while it turns around in the bed
- deepseek v4.1 flash – the dog chases and carries the ball through the whole loop, but never lies down
- deepseek v4.1 flash – from about 13 seconds one front leg bends into a loop over its back, and the coat looks smeared
only opus built the whole sequence from the brief. deepseek built the play part and skipped the sleep.
the brief
the overview both models got before stage one:
You are building a complete, polished real-time 3D animation step by step: A DOG PLAYS WITH A BALL, THEN LIES DOWN AND FALLS ASLEEP. 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 dog, one red rubber ball and one round, soft dog bed (a cushion with a raised rim) on a seamless soft light-grey studio backdrop (infinite cyclorama, no horizon line), soft studio lighting and contact shadows. No room, no other props, no text or HUD.
- The sequence (one seamless loop of about 18-22 s, no dead moments):
1. The dog sleeps curled up on its bed, breathing slowly.
2. The ball rolls into frame and bumps the bed. One ear lifts, the eyes open, the head comes up, the dog gets up and does a full stretch (front legs forward, butt up), then a shake.
3. Play: a play bow with the tail wagging, a bouncy hop, it nudges / paws the ball, the ball bounces up, the dog chases it, jumps and CATCHES IT IN THE AIR WITH ITS MOUTH, lands, trots a little circle with the ball, shakes its head playfully, drops the ball.
4. It gets tired: a big yawn, walks back to the bed, steps in, turns around two or three times, lies down, curls up nose to tail, a sigh, the eyes close - back to pose 1, so the loop is seamless.
- This is a MOTION test. What matters most is that the dog moves like a real dog: weight, timing, anticipation, a believable ballistic arc for the jump and for the ball, a soft landing that absorbs the impact, overlapping action on the spine, head, floppy ears and tail, paws that plant and never slide or sink into the floor or the bed. The ball obeys physics: gravity, bounces that lose height, rolling with correct rotation (no sliding), and it sits in the mouth while it is carried.
THE DOG
- A young beagle-type dog: short coat, floppy ears, a medium muzzle with a black nose, a deep chest, a tail that is usually held up and wags.
- ONE continuous organic surface from the very first stage: the whole dog - torso, neck, head, muzzle, ears, legs, paws and tail - is a single THREE.SkinnedMesh (one geometry; eyes, nose, tongue and the lower jaw 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 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.
- Built procedurally in code (no external models). It must read instantly as a dog at any size: proportions, head and muzzle, floppy ears, eyes, a tail, four legs with the dog's real joint layout (hind legs with the backward-pointing hock), paws.
- Animated by your own skeleton / joint hierarchy: spine segments, neck, head, an opening jaw, ears (at least 2 bones each so they flop), 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 dog 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 dog, the ball and the bed 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 the other model's code.
our take
deepseek v4.1 flash is still the cheapest way to get a running three.js animation: 22 cents and under half an hour. what it misses is structure – it played with the ball and forgot that the dog was supposed to sleep. opus 5.5 took over an hour and 11x the money, and delivered the loop the brief asked for.
sources
- deepseek v4.1 flash 1017 on openrouter
- claude opus 5.5 on openrouter – the list price we used for the opus estimate
- three.js – the 3d library both models used
- brief, builds, timings and bills: our test, oct 22, 2026