✨ Vibe Build 📅 September 5, 2026 ⏱️ 6 min read

Codex Turned My Mascot Into 3D

87 minutes got the first rigged mascot. Getting his expressions and gestures to feel like the drawings took more work — including fixing a mouth that turned into a swirl.

Play with it in Character Lab →

Updated September 9, 2026: the first session below built the foundation. The expression and motion work came afterward.

The little guy on this site started as iPad doodles my wife drew. For a year he was a pile of PNGs: thinking, waving, crying into a debugger. Then I asked Codex a lazy question.

The first shipped 3D mascot, waving — a Blender render from the initial release

Can you generate a 3D cartoon of my mascot?

It said yes — with a caveat. A render is not a model. I said go anyway.

I know what happened in that first session because I ran the Codex session through vibe-replay. Eleven prompts. 117 tool calls. 87 minutes. Model: gpt-6-astra. It compacted the conversation once. The replay is 170 scenes long.

It found Blender on my machine

The first deliverable was a figurine-style picture: fluffy hair, thick brows, dot eyes, arms out. Cute. Still a PNG.

Then I asked what I’d need to install to actually model it. Codex checked the machine, found Blender 5.0.1, and started building a .blend and a .glb without waiting for me to become a rigger.

The first mesh only worked from the front. Square face, no spirit. I told it to look at the whole character sheet — twenty drawings plus the original doodle pages — and find the shy-but-pleased look the 2D version has.

That was the expensive prompt: 32 tool calls, most of them Blender.

Then I asked for a foundation, not a demo

Once the head looked like him, I stopped asking for prettier pictures.

I wanted a button on the site that turns every PNG mascot into a 3D one that can actually move. Clips, textures, and a skeleton as the building blocks. Walking around a scene later. I don’t know 3D, but I shipped games long enough to know the model, textures, and animation need to be a reusable foundation.

Codex split body clips from facial morphs, so a walk can wear a smile or a worried brow. Then it ran out of tokens. I topped it up. Two more prompts: continue, then you have permission, keep going.

The first release shipped:

  • A ~1.6 MB skinned GLB: 26 bones, 12 looping clips, 6 mixable facial controls
  • An opt-in 3D toggle in the nav (2D drawings stay the default, and the fallback)
  • Character Lab — orbit, zoom, mix sliders, click the ground, he walks there

Getting a face to feel like a face

The first release could move. Compared with the black-and-white drawings, his expressions were still timid. The brows needed more range, and the cheeks and jaw needed to move too. I kept asking for more of the original character’s spirit.

The lab now has 14 facial controls and eight expression cards with previews rendered from the actual model. You can pick a bashful face, a cheeky wink, or a surprised look before touching a slider. Changing an action brings along a matching expression; a checkbox lets you keep your own face instead.

One bug made the gap especially obvious: opening his little W-shaped mouth produced a swirl halfway through. The closed mouth and the fully open mouth could each look fine. The shape between them made no sense.

The mouth had been built as a stroke that changed into a loop. Codex rebuilt it as a filled surface whose upper and lower edges separate, with a correction that relaxes the W before the mouth opens. Now there is a readable half-open mouth between those two poses.

The updated model with its mouth halfway open, rendered in Blender

A halfway-open mouth from the actual model. This intermediate pose was the part that needed fixing.

That changed what I wanted checked. A nice end pose wasn’t enough. We inspected the in-between shapes in Blender and in the browser, and added checks for folded mouth surfaces across different opening and jaw settings.

Giving gestures a beginning and an end

The movement needed the same attention. Waving had looked mechanical. The revised gesture raises the arm, waves, lowers it, and pauses before repeating. The head and chest follow slightly different timing. Walking and running got smoother foot trajectories too.

Hair, collar geometry, cheek color, and fabric materials have also had another pass. There is still a visible gap from the original drawings and the polished concept render. This is a working character I can keep improving; I wouldn’t call the sculpt or animation finished.

The current asset is about 4.9 MB, with the same 26 bones and 12 body clips, plus the expanded facial controls. Those controls can be combined with body animation, and movement across the stage is handled separately from the walk cycle. That gives us somewhere to start when we add environments later. A full scene with navigation and obstacles is still future work.

Try Face close-up in Character Lab, choose an expression card, then adjust Open mouth slowly. Switch to Full body and try Wave, or use Walk stage to send him across the ground. That’s a better test of this round than another hero image.

The first session, compressed

User prompts11
Tool calls117
Duration1h 27m
Scenes in the replay170
Modelgpt-6-astra

These numbers describe the initial build, not the later art and animation passes.

The interesting part isn’t that an agent can drive Blender. It’s that the session has the same shape as every other vibe-coded thing on this site: a vague first prompt, a sharp correction (“that’s not the spirit”), a foundation request, and a token refill in the middle.

The PNGs are still there if 3D fails to load. Flip the switch in the nav if you want him walking. Or skip the switch and just open the lab.