MAISON TSMSUCH MILLION. VERY TECHNICALLY.

4 min read

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 Shiba in a pinstripe suit steps out in 3D from a gold frame that still holds his old 2D portrait, in a black and gold Art Deco room.

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.

In an Art Deco workshop, a bust of the Shiba in a suit on a plinth: one half grey clay traced with a gold mesh, the other half finished with fur and tie; behind it, reference portraits in gold frames.
Half mesh, half fur: the whole job in one picture.

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.

How the 3D avatar was built, without a mouse The inputs: thirteen generated images, a sculpt of the head and torso, a paw, a watch and a pair of trousers. First loop, in script-driven Blender: the AI writes the script, renders the version from the angle of the images, compares it with the references, then starts over. Second loop, in real time: the three.js page from the overlay goes on a test bench where probes measure what the eye misses, then it gets fixed. At the end, the character goes on air through OBS to Twitch. In all: 75.8 hours of AI work, 1,210 rebuilds and 1,481 control images. INPUTS 13 generated images head & torso sculpt paw · watch · trousers 1 · SCRIPT-DRIVEN BLENDER Script the AI writes geometry and materials Render from the angle of each image Comparison control sheet vs. the references fix it 2 · REAL-TIME THREE.JS three.js page layered fur, bones, expressions Test bench probes measure what the eye misses fix it On air overlay → OBS → Twitch, the voice drives the jaw 75.8 H · 1,210 REBUILDS · 1,481 CONTROL IMAGES No mouse every move is a script or a command
Two loops: the shape in Blender, then real-time rendering, all the way to air.

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”.

Two rows of four 3D Shiba faces on a midnight blue background, at on-air size: top, a version that was never published; bottom, the head rebuilt on the sculpt, cleaner around the mouth.
At on-air size: top, a version that was never published; bottom, the head rebuilt on the sculpt.

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.

Left, the Shiba in a suit inside OBS with no head: two eyes and a few hairs float above the collar. Right, the same scene with the head back.
The first test in OBS, then the head back in place.

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

  1. The making-of of TheSlumdogeMillionaireMaison TSM
  2. three.js documentationthree.js
  3. Blender Python APIBlender Foundation
  4. WebGLRenderingContext.getParameter() and MAX_VERTEX_ATTRIBSMDN
  5. OBS Studio browser sourceOBS Project
Dogecoin donation QR code for DKZFD5h85VJFXkjj2EaZiEJZtzZhYBsqEQ
SCAN WITH YOUR WALLET

The rebound fund.

Support the projects.

He will never ask you for anything. So we put this QR code here ourselves. If you use twichat or enjoy the streams, you can help fund the projects’ development. Pick your currency and any amount you like.

DOGECOIN · ANY AMOUNT

TSM crestMAISON TSM

D.O.G.E.

Do Only Good
Everyday.

From Dogecoin I kept a million reasons not to take myself seriously. Yes, even with my portrait in a gold frame. The rest is told live.