- Client
- GrN.dk — demo shelf (demo.grn.dk)
- Sector
- 3D on the web / Blender pipeline
- Period
- August 2026
At a glance
The Orrery is a brass planetarium modelled, textured, rigged and animated in Blender 4.5, exported as glTF and played back live with three.js: a meshing gear train under the deck, four planets and their moons on whole-number orbits, a glowing sun with bloom, wireframe and speed controls, drag to orbit. Below it the same scene rendered as a seamless Cycles turntable loop — and the .blend, the .glb and the one Python script that builds all of it from an empty scene.
The challenge
The card asked for a “mind-blowing Blender demo”. The interesting constraint was that there is no Blender on the web server and no GPU anywhere in the setup: the only machine that could run it was a small office box with a 12-core CPU and an integrated AMD graphics chip, headless. And a 3D showpiece that exists only as a rendered video proves less than one you can grab and turn — so the piece had to exist twice, as a film and as a live scene, without being built twice.
The solution
The whole model is code. build_orrery.py drives Blender’s Python API from an empty scene: primitives and bevels for the brass, gears cut with bmesh so the teeth actually mesh, Principled materials, empties as pivots for the arms, linear keyframes for whole-number orbital ratios, and a compositor bloom for the sun. The same script exports the glTF with scene-level animation and kicks off the Cycles turntable — 192 frames on CPU, about nine seconds each at 720p.
The web side self-hosts three.js with GLTFLoader, bloom and AgX tone mapping, merges the per-object animation clips the exporter emits into one timeline, and keeps the lights sane (physical spot lights blow out fast). The page ships the source next to the scene: anyone can open the .blend, read the script and rebuild the orrery on their own machine.
The results
A 135,000-triangle brass mechanism running in a browser tab from a 3.6 MB glTF, loaded in under three seconds, with the Cycles film below it for the machines that cannot run WebGL. The pipeline it set — author with bpy on the small box, export to glTF, self-host three.js — became the recipe for the spectacles configurator that followed, and is what “Blender on the web” now means on this shelf.