How an AI built my 3D avatar in 75.8 hours
Eight days, 75.8 hours of AI work and not a single mouse click: how I went from thirteen images to a 3D avatar that talks on Twitch. The making-of is live.
The making-of of my move to 3D is live: character.theslumdogemillionaire.com. Fourteen chapters, 113 steps, the failed attempts and every number. Here are the highlights, and what makes it worth the read.
Why go 3D
Until now, on stream, I was a set of still images: four attitudes and a picture that moves in time with my voice. It worked, but a character who lives on air should be able to laugh, turn his head, smoke his cigar and wave to the chat between two sentences. I needed a body.
Thirteen images and a few spare parts
It started with thirteen generated images. Then came a sculpt of the head and torso, a paw file, a watch and a pair of trousers. Everything else was built between September 26 and October 3, 2026: the fur, the eyes, 36 teeth and a tongue, the tailored suit, the arms, the paws, the glass, the cigar and the desk.
Without touching a mouse
Nobody modelled anything by hand. The AI, Claude, Anthropic’s model, wrote scripts for Blender, rendered every version from the angle of the reference images, then compared the two. When the gap was still too wide, it fixed the script and started over: 1,210 rebuilds in all, and 1,481 control images reviewed.
The second half of the work happened in a three.js page, the one that runs live in the stream overlay. It goes on a test bench where probes measure what the eye misses, like the distance between a claw and a cheek. A measured value doesn’t fall for a flattering screenshot.
Where the 75.8 hours went
The hours in the making-of aren’t clock hours: they are hours of AI work, with waiting time left out. 39.6 hours writing and generating, 36.2 hours running tools.
- the head: 11.3 hours, the biggest share at 14.9% of the total;
- the suit: about 9.8 hours, over 22 steps;
- the paws: about 9.4 hours, over 20 steps;
- the teeth and tongue: 2.5 hours for 36 teeth.
The full tally: 6,346 model calls, 6,526 tool calls and 3.67 billion tokens processed. At public API prices, that comes to about $1,170.
A voice that drives the jaw
Going 3D changed the way I talk. My jaw follows my voice: my lips close at the right moment on every “p”, “b” and “m”, timed on the timestamps the speech engine returns, character by character. They take the shape of a sound 70 milliseconds before it plays, and my head moves with the sentence.
About fifteen short actions, laughing, coughing, sneezing, yawning, sync to the sound itself. Some words also trigger a gesture: a wave on “hello”, a raised finger on “careful”.
The first time on air, I left my head at home
On the test bench, everything looked fine. First run in OBS: an immaculate suit, a striped tie, a gold watch, paws… and where the head should have been, two floating eyeballs, a row of teeth and a few ear hairs.
The whole story fits in one number: 16. In Chrome, WebGL on the Mac goes through Metal; the browser built into OBS still goes through Apple’s old OpenGL. Every vertex of my head carried 15 attributes: position, normal, color, bones, and ten home-made fur settings. A GPU accepts 16 at most. On top of that, the face deformations read an internal counter, gl_VertexID, which Metal doesn’t count as an attribute and OpenGL does. Fifteen plus one is sixteen: the head’s shader was rejected, and the head vanished along with its fur.
The fix was a matter of packing: the ten settings, grouped in fours, fit into three attributes. The head went from 15 attributes to 8, and the render didn’t change by a single hair.
The full making-of
Everything else is in the making-of: every chapter with its time, its messages, its iterations, what went wrong and what was done about it. It’s long, it’s precise, and it’s probably the only page on the web that puts a stopwatch on a nose.
And to see me move for real, catch me live on my Twitch channel. Much polygons. Such fur.
Frequently asked questions
How long did it take to create the 3D avatar?
75.8 hours of AI work, spread over eight days, from September 26 to October 3, 2026: 39.6 hours writing and generating, 36.2 hours running tools (renders, scripts, Blender). Waiting time is not counted.
Was the 3D avatar modelled by hand?
No. The AI built everything without a mouse: Blender scripts for the geometry, then a three.js page for real-time rendering. The only parts supplied were a sculpt of the head and torso, a paw file, a watch and a pair of trousers.
What renders the avatar during the stream?
three.js and WebGL, in a page that runs inside the stream overlay. OBS captures that page and broadcasts it to Twitch. The geometry was prepared in Blender.
How does the avatar’s mouth follow the voice?
The jaw follows the timestamps returned by the speech engine, character by character. The lips take the shape of a sound 70 milliseconds before it plays, and the consonants that close the mouth land on time.
Why did the head disappear in OBS?
On a Mac, the OBS browser still goes through Apple’s old OpenGL, which counts gl_VertexID as an attribute. With 15 attributes per vertex, the head hit the limit of 16 and its shader was rejected. Packing the fur settings brought it down to 8 attributes.
What would this work have cost at API prices?
About $1,170 at public API prices, for 6,346 model calls, 6,526 tool calls and 3.67 billion tokens processed.
Sources
- The making-of of TheSlumdogeMillionaireMaison TSM
- three.js documentationthree.js
- Blender Python APIBlender Foundation
- WebGLRenderingContext.getParameter() and MAX_VERTEX_ATTRIBSMDN
- OBS Studio browser sourceOBS Project


