Rendered in Cycles
What you see above is the real-time version. This is the same .blend rendered with Blender's path tracer: 192 frames, one full turn of the camera, seamless loop. Nothing here is a stock asset; the model, materials and keyframes are generated by one Python script in Blender.
One script, every step
The whole piece is a Blender pipeline you can re-run: geometry, modifiers, materials, rigging, animation, export and render live in build_orrery.py. The same approach scales to a client's product: swap the procedural shapes for a CAD import or a hand-modelled asset and the rest of the pipeline stays.
Modelling
Turned plinth, cage, column and arms from primitives with Bevel modifiers; spur gears built from a 2-D tooth profile with bmesh, hubs and lightening rings added on top.
Materials
Principled BSDF throughout: polished brass, bronze gears, blued steel, coated walnut, enamel planets and an emissive sun. All of it survives the glTF export as PBR.
Rigging
Empties as pivots: each arm, moon and gear is parented to its own pivot, so a single Z-rotation drives a whole assembly. Gear ratios are real: 12-tooth spindle into 24, 32 and 48.
Animation
Linear keyframes over 192 frames with whole-number turns (Mercury 5, Venus 3, Earth 2, Mars 1) so the 8-second loop is seamless in both the video and the viewer.
Export
export_scene.gltf with modifiers applied and the scene animation baked into one clip. 3.6 MB binary glTF, no compression tricks, loads in well under a second.
Playback
three.js r185, self-hosted: PMREM room environment, soft shadows, AgX tone mapping to match Cycles, and a bloom pass for the sun. No CDN, nothing to expire.