-
-
Clovrr Studios splash: five procedural clover leaves spiral in and land on a chord
-
Breaking the sound barrier: orb flare, shock rings and the live Geometry Nodes speed readout
-
The punchline: Blender's render window, stuck on frame 1 with the estimate getting worse
-
Warp: motion blur turns procedural dust into streaks, with chromatic aberration growing with speed
-
Passing the Parker Solar Probe: ring spacing and colour are driven by the speed curve
-
Blender WIP: rendered viewport, the Geometry Nodes speed readout, and the bpy script that builds every frame
Inspiration
Speed is something you feel more than see. Instead of hand-animating a fast thing, I wanted one number, the speed, to drive everything on screen and on the soundtrack, so the whole piece is a visualisation of a single acceleration curve. And because this is a rendering contest, the punchline had to be about rendering.
What it does
A glowing orb waits in a tunnel of light while a countdown beeps. It winds up, launches and accelerates exponentially. A cockpit-style readout counts its speed in km/h and calls out each real-world speed it overtakes: a cheetah, the sound barrier (with a sonic boom and shock rings), escape velocity, the Parker Solar Probe and finally light. The rings shift from warm orange to violet, a cartoon Doppler blueshift. The lens widens, shake builds, stars stretch into warp lines and the image splits into colour fringes.
At light speed the screen whites out and hard-cuts to Blender's own render window, stuck on frame 1 of this very animation. Elapsed time ticks up, the frame counter never moves, and the time-remaining estimate gets worse every second, with nothing but a laptop fan on the soundtrack. End card: Light speed: 10 seconds. Rendering it: 14 hours. It closes on the Clovrr Studios splash: five clover leaves spiral in and land one by one, each on a note of a chord.
How I built it (workflow notes for Best Procedural & Programmatic Animation)
Everything is generated by Python. One function, velocity(frame), is integrated into a position, and every other parameter is derived from the normalised speed n = v / V_MAX:
- Orb: position is the integral of v; squash and stretch
1 + 3.5n, volume preserved - Tunnel: ring spacing is
3 + 0.55v, so the tunnel's geometry is literally a plot of the speed curve; ring hue and brightness follow n - Camera: lens 38 → 14 mm, pull-back, smoothed shake and roll, all scaled by n
- Compositor: bloom, chromatic dispersion and barrel distortion grow with n²
- Motion blur: EEVEE motion blur turns 6,000 procedural dust specks into warp streaks
- Speed readout: a Geometry Nodes text (Value → Value to String → String to Curves) whose number is keyframed every frame; milestones are spaced log-evenly from 1 km/h to light speed. The HUD renders in its own scene with no motion blur and is laid over the image in the compositor, and its glass panel resizes itself to the text every frame via a shape key
- Sonic boom: orb flare, camera jolt, bloom punch and two shock rings, keyed to the frame the readout passes 1,235 km/h
- Render-window joke: colours are read from Blender's default theme, the text uses Blender's UI font, the image inside is frame 1 rendered during the build, and colour management keyframes from AgX to Standard at the cut so the UI greys are exact
- Soundtrack: synthesised with numpy from the same curve: engine pitch and roar follow v, a whoosh for every ring the camera passes, chimes on milestones, the boom, a riser into the white-out, the laptop fan, and a pentatonic chord as the clover assembles
- Studio splash: leaves are heart curves built in Python; each orbits in on a shrinking radius while spinning about its tip, with staggered eased keys and an overshoot on landing
Blender 5.1 is the primary creation tool: every object, material, keyframe, Geometry Nodes tree and compositor node is created inside Blender by its Python API (bpy), and the film is rendered with EEVEE at 1080p, 24 fps, 21.5 s. Nothing is hand-keyed.
Challenges
- EEVEE motion blur clamps long streaks into blocky tiles until
motion_blur_maxis raised. - The live speed number smeared under motion blur because sub-frame samples saw different digits; moving the HUD into a separate, blur-free scene composited on top fixed it.
- Making a fake UI look real meant reading Blender's actual theme colours and switching view transforms mid-shot.
AI and third-party asset disclosure
No third-party assets apart from Inter, the open-source (SIL OFL) UI font bundled with Blender. All geometry, materials, animation, compositing and audio are generated by Python scripts, which were written with (not solely with) an AI coding assistant (Claude) under my direction.
Log in or sign up for Devpost to join the conversation.