{"id":"armillary-sphere","version":"1.0.0","title":"Brass Armillary Sphere","summary":"An engraved brass armillary sphere, the astronomers' model of the sky, slowly turning on its stand. Loops perfectly.","kind":"object","target":"three","collections":["chrome-glass","hypnotic-loops","product-reveals"],"tags":["armillary sphere","astronomy","brass","gold","globe","antique","science","instrument","rings","loop","3d"],"loopable":true,"motion":"procedural","durationSeconds":12,"status":"published","media":{"poster":"https://aipixelwizard.com/media/armillary-sphere/1.0.0/poster.webp","preview":"https://aipixelwizard.com/media/armillary-sphere/1.0.0/preview.mp4","sample":"https://aipixelwizard.com/media/armillary-sphere/1.0.0/sample.mp4","sampleBytes":5208546,"sampleNote":"Pre-rendered with the default settings. Customised settings must be exported locally (npm run render)."},"urls":{"page":"https://aipixelwizard.com/visuals/armillary-sphere","manifest":"https://aipixelwizard.com/api/v1/visuals/armillary-sphere/versions/1.0.0","agentMd":"https://aipixelwizard.com/registry/armillary-sphere/1.0.0/agent.md","files":"https://aipixelwizard.com/registry/armillary-sphere/1.0.0/","demo":"https://aipixelwizard.com/registry/armillary-sphere/1.0.0/index.html"},"description":"A polished armillary sphere: nested rings for the celestial equator, tropics, polar circles and colures, a wide ecliptic band engraved with its degrees, a small enamel Earth at the centre and a gold Sun bead travelling the ecliptic, all held in an engraved meridian ring and horizon ring on a turned stand. The sky turns about its tilted axis while the camera drifts round it, and the rings cast a lattice of shadows on the floor. Choose the metal, the latitude the axis is set to, how many turns per loop, the Earth's finish and the backdrop colour.","role":"Hero object (Three.js 3D): a scientific instrument in polished metal for intros and end cards.","useCases":["An elegant opener for science, history and astronomy videos","A luxury or heritage brand backdrop with a slow loop","A thinking-and-discovery visual for podcasts and documentaries"],"synonyms":["astrolabe","celestial sphere","brass globe","gyroscope rings","orrery","astronomical instrument","spinning rings","antique globe"],"digest":"9c6ad08ee47b52d74783b25436f226e734e64ab5060e02cab7814224af993073","implementation":{"target":"three","runtime":"browser","language":"javascript","module":"esm","entry":"src/armillary-sphere.js","exports":[{"name":"createArmillarySphere","signature":"createArmillarySphere({ metal?, latitude?, globe?, anisotropy? }) => { group, setProgress(progress, { turns? }), setAngles({ sky, sun, earth }), bounds, dispose() }","description":"The instrument as a THREE.Group (1 unit = the sky's radius, the stand down to y = −2). setProgress(0…1) moves it round one seamless loop."},{"name":"METALS","signature":"METALS: { brass, gold, silver, bronze }","description":"The finishes: colour and roughness."}],"reusable":["src/armillary-sphere.js"],"demo":"demo.js","harness":"index.html"},"dependencies":[{"id":"three","version":"0.185.1","scope":"source","reason":"Renderer, geometry and physical materials."},{"id":"chrome-material","version":"1.1.0","scope":"demo","reason":"Studio environment light, backdrop and contact shadow."},{"id":"apw-runtime","version":"1.0.0","scope":"demo","reason":"Demo harness."}],"uses":[],"usedBy":[],"params":[{"key":"metal","label":"Metal","type":"select","default":"brass","options":[{"value":"brass","label":"Brass"},{"value":"gold","label":"Gold"},{"value":"silver","label":"Silver"},{"value":"bronze","label":"Antique bronze"}]},{"key":"latitude","label":"Latitude","help":"Degrees: the polar axis is set this high above the horizon, as for a place on Earth.","type":"number","min":0,"max":90,"step":0.5,"default":38.5},{"key":"turns","label":"Turns per loop","type":"integer","min":1,"max":3,"step":1,"default":1},{"key":"globe","label":"Earth","type":"select","default":"enamel","options":[{"value":"enamel","label":"Blue enamel"},{"value":"metal","label":"Polished metal"}]},{"key":"background","label":"Backdrop","type":"color","default":"#13233a"},{"key":"orbit","label":"Camera drift","type":"boolean","default":true}],"presets":[{"id":"default","label":"Brass on navy","params":{}},{"id":"gold","label":"Gold on black","params":{"metal":"gold","background":"#121214"}},{"id":"silver","label":"Silver on slate","params":{"metal":"silver","globe":"metal","background":"#3a4452"}},{"id":"bronze","label":"Antique bronze on burgundy","params":{"metal":"bronze","latitude":51.5,"background":"#3b1219"}}],"output":{"width":1080,"height":1080,"fps":30,"durationSeconds":12,"posterSeconds":3,"alpha":false,"motion":"procedural","loop":{"seamless":true,"cycleSeconds":12,"method":"The sky, the Sun bead and the Earth turn whole turns per loop and the camera drift is a sine of the loop progress, so the last frame meets the first."},"seed":null},"composition":{"inputs":"Loop progress 0…1 (or the angles of the sky, Sun and Earth directly).","outputs":"A THREE.Group: the whole instrument with its stand, centred on the sky at the origin.","coordinates":"1 unit = the radius of the celestial rings; the horizon ring reaches 1.42 out and the base stands on y = −2. Scale the group to fit your scene.","lighting":"Physical metal: needs an environment map (scene.environment) to look like metal; a shadow-casting key light shows off the ring shadows.","timing":"setProgress(progress) is a pure function of progress; frames render in any order.","compatibleWith":["chrome-material","orbit-camera","kinetic-title","pocket-watch"],"notes":["The engravings (hours on the equator, degrees on the ecliptic, meridian and horizon) are drawn once into textures; no image files.","Latitude 38.5 is about Lisbon; 51.5 London; 40.7 New York; 0 puts the axis flat on the horizon, 90 straight up."]},"reuse":["Science or history intro: the brass preset with a title over the top third of the frame.","Luxury backdrop: gold on black, camera drift on, behind a product name.","In your own scene: add the group, scale it, and drive setAngles from anything (scroll, a clock)."],"integration":{"newProject":"Set scene.environment (createStudioEnvironment from Chrome Material works), add createArmillarySphere().group, and call setProgress(frame / totalFrames) each frame.","existingProject":"Copy src/armillary-sphere.js. Add the group to your scene, scale it, and set the progress or the angles every frame."},"performance":{"notes":"About 60 meshes and six canvas textures made once; nothing is rebuilt per frame. Smooth at 1080p on laptop GPUs.","limits":"Shadows from many thin rings are the main cost; lower the shadow map size on slow devices. Software WebGL (no GPU) renders slowly."},"limitations":["A decorative model: the rings and the Sun's motion follow the real geometry (obliquity, latitude), but it does not show real dates or star positions.","Engraved numerals use the system serif font."],"license":{"spdx":"MIT","notice":"Copyright (c) 2026 AI Pixel Wizard. Released under the MIT License. See LICENSE in this folder.","thirdParty":[{"name":"three.js","version":"0.185.1","license":"MIT","url":"https://github.com/mrdoob/three.js"}]},"rights":{"approvedForPublicRelease":true},"provenance":"Adapted from the owner's threejs-sketches/objects-scenes/astrolabe-align (MIT), rebuilt for AI Pixel Wizard in October 2026 as a true armillary sphere: celestial rings in their real geometry, engraved scales, an enamel Earth and Sun bead, a turned stand, a seamless loop and the frame/time contract.","changelog":[{"version":"1.0.0","date":"2026-10-05","notes":"Initial release."}],"verification":{"testedOn":"2026-10-05","inputs":{"armillary-sphere@1.0.0":"9c6ad08ee47b52d74783b25436f226e734e64ab5060e02cab7814224af993073","three@0.185.1":"664ca387e5fab46ff2daaa6895e1d015426850891af5ea5082cbbcc3985b068c","chrome-material@1.1.0":"ecb41776bfc1ee88997604f916a5ffe833f971d7edcc97c855697a5792d6f1dd","apw-runtime@1.0.0":"5be859cdac74823ba0bcc32c6daf06688a871104d24db5d4ceaffffd84d7c40d"},"environment":"Chrome 154.0.8037.97 headless on Linux 7.0.0-38-generic (x64), Node 22.14.0","renderer":"WebGL 2 via SwiftShader (software)","width":1080,"height":1080,"fps":30,"frames":360,"renderSeconds":356.7,"loopCheck":{"checked":true,"seamless":true,"maxDifference":0,"note":"Frame 0 vs end state (progress 1): mean |Δ| 0.0000, max |Δ| 0 of 255."},"determinism":{"checked":true,"identical":true},"errors":[],"media":{"poster":"/media/armillary-sphere/1.0.0/poster.webp","preview":"/media/armillary-sphere/1.0.0/preview.mp4","sample":"/media/armillary-sphere/1.0.0/sample.mp4","sampleBytes":5208546}},"files":[{"path":"LICENSE","size":1072,"sha256":"8a5f3a96f07e11522ec4bdd0a583356f99bad1245920f9709cee09b995a45153","contentType":"text/plain; charset=utf-8","url":"https://aipixelwizard.com/registry/armillary-sphere/1.0.0/LICENSE"},{"path":"asset.json","size":8481,"sha256":"a0a1dac81899990543424e7c66879e114f84a28678c95373eecd6b77e344e67a","contentType":"application/json; charset=utf-8","url":"https://aipixelwizard.com/registry/armillary-sphere/1.0.0/asset.json"},{"path":"demo.js","size":3433,"sha256":"1ac7eb9ab2d5992a801c00c0336da9a124c81ed0bf8aed9fa75aefc695eec1b8","contentType":"text/javascript; charset=utf-8","url":"https://aipixelwizard.com/registry/armillary-sphere/1.0.0/demo.js"},{"path":"index.html","size":530,"sha256":"b4e13781aa985ee4e02ec1e5d27891df2928219abd8eaca69e5c07856a5b575f","contentType":"text/html; charset=utf-8","url":"https://aipixelwizard.com/registry/armillary-sphere/1.0.0/index.html"},{"path":"src/armillary-sphere.js","size":13915,"sha256":"a01cc25d2e0d152dee5f57261e95d842fcf03d1e85a0b9d49a7607bd6c3cdbc3","contentType":"text/javascript; charset=utf-8","url":"https://aipixelwizard.com/registry/armillary-sphere/1.0.0/src/armillary-sphere.js"}],"warnings":[]}