A procedural video is a film in which every frame is computed from a function of time, instead of being recorded or keyed by hand. I built my raccoon circus short that way, as hand-drawn SVG shapes driven by one function inside a browser page. I had already built the same story in Blender, a 3D scene that Claude drove through a bridge. This post compares the two on what I measured, not on taste. Everything here comes from one project, one cast (Lullen the raccoon, Dumpy the flaming dumpster, a turtle, a glitter cannon) and one person’s setup, so read it as a field report and not a benchmark. The Blender side is covered in more depth in the Blender and MCP post, the before and after and the render post, and I will not repeat them.
What did the procedural version actually consist of?
It is an HTML page that HyperFrames seeks frame by frame and encodes to MP4. One paused timeline drives a single update(t) function, and that function is the only thing allowed to move anything. Because the output depends only on t, any frame can be rendered alone and the same time always gives the same picture. That rule comes from the HyperFrames contract: only deterministic logic, no random numbers, no network. Lullen is a rig of bones with two-bone inverse kinematics, so a hand can be told to grip a ladder rung and the elbow works itself out. I wrote the earlier rig ideas up in rigging a cartoon mascot, and the pipeline itself in HTML in, MP4 out.
Measured on disk on Nov 1, 2026: the current cut (out3.mp4) is 24.000 seconds, 1080 by 1920 at 30 frames per second, 47,653,066 bytes, with one audio track. The whole thing is about 770 lines across seven source files (the film, the rig, the scene list, the effects layer, and two audio scripts). The music and sound effects are synthesized in code, and the narration is a Piper text-to-speech voice whose model card lists it as CC0, so nothing in the build costs money. Loudness measured -16.4 LUFS with a -2.0 dBTP true peak.
What did the Blender version consist of?
It is a 3D scene in Blender 5.2.3 on one Mac, built by Claude through the Blender Lab MCP bridge. Two numbers define how that works in practice. Each bridge call I observed ended at 60 seconds, so anything long has to run as a detached background process and be polled. And a background render is a second copy of Blender that opens a saved file, which is why my particle glitter showed in the open session and was missing from the rendered frames. The rebuild videos on that side were 192 frames each, and I measured the 3D models against the original 2D art by comparing colour-class areas: the hat went from 0.0034 to 0.0098 of the frame against a 0.0084 reference, and the flame is still about 36 percent too large.
How do the two builds compare side by side?
| Question | Procedural SVG video | Blender 3D |
|---|---|---|
| What you author | Shapes, a rig and one update(t) function | Meshes, materials, lights, keyframes and a camera |
| How a frame is made | Seek to time t in a browser, draw, encode | A render engine ray-traces or rasterizes the scene |
| Where it ran | Inside my sandbox, no desktop app | On my Mac, through a live bridge |
| Hard limit I hit | Flat 2D only, so a camera move is faked with scaling | 60 second bridge calls, so renders must be detached |
| Bug that cost me most | Version 2 of the raccoon read as too human to be cute | Glitter present live, absent in the render |
| How I checked it | Rendered frames, loudness meter, caption-versus-script check | Colour-class measurements, frame counts, contact sheets |
| Money spent | None | None for this project; Blender itself is free software |
Where did each approach break?
The procedural version broke on design judgment more than on technology. The first cut, which I rejected, had an inaccurate ladder climb, partial bodies, too little circus and no narration. The second added a full-body rig, circus sets and a voice, and I rejected it as too human. The third, a chibi redesign with a bigger head, shorter limbs and a curled tail, is the one measured above. None of those failures was a rendering failure. Every frame was drawn as written and the character was still wrong.
The Blender version broke on the seams between processes. The live session and the background render disagreed about particles. Three still frames passed an animation that had a foot sliding and an ear passing through a helmet. Those are failures of the pipeline around the scene, and the scene itself was fine.
Which approach should you use for which job?
This is my judgment from one project, not a finding. If the piece is flat, character-driven, vertical, captioned and has to be re-rendered often, the procedural route earned its keep: it needs no desktop app, any frame can be checked alone, and a change to one number re-renders the whole film. If the piece needs real depth, lighting, camera moves or objects seen from several angles, Blender does that natively and the SVG route can only imitate it. The cost of Blender is the pipeline: you check motion with measurements and contact sheets, because a few stills will not show a defect between frames. The cost of the procedural route is that you build everything yourself, including a way for hands to hold a ladder.
What is still unverified?
Not verified: I did not compare render time on identical hardware, I did not listen back to the finished narration against the music, and I only tested Blender 5.2.3. Neither short is released. The characters live on the Lullen page, more builds are on the projects page, and the updates page has the running log.
Sources: HyperFrames documentation · my own posts linked above for every Blender figure.
