{"id":"brass-governor","version":"1.0.0","title":"Brass Governor","summary":"A Watt centrifugal governor in polished brass: the balls fly out as it speeds up and fall back as it slows. Loops perfectly.","kind":"object","target":"three","collections":["chrome-glass","hypnotic-loops","satisfying"],"tags":["governor","centrifugal governor","watt governor","steam engine","brass","steampunk","machine","mechanism","flyball","industrial revolution","loop","3d"],"loopable":true,"motion":"procedural","durationSeconds":12,"status":"published","media":{"poster":"https://aipixelwizard.com/media/brass-governor/1.0.0/poster.webp","preview":"https://aipixelwizard.com/media/brass-governor/1.0.0/preview.mp4","sample":"https://aipixelwizard.com/media/brass-governor/1.0.0/sample.mp4","sampleBytes":2330296,"sampleNote":"Pre-rendered with the default settings. Customised settings must be exported locally (npm run render)."},"urls":{"page":"https://aipixelwizard.com/visuals/brass-governor","manifest":"https://aipixelwizard.com/api/v1/visuals/brass-governor/versions/1.0.0","agentMd":"https://aipixelwizard.com/registry/brass-governor/1.0.0/agent.md","files":"https://aipixelwizard.com/registry/brass-governor/1.0.0/","demo":"https://aipixelwizard.com/registry/brass-governor/1.0.0/index.html"},"description":"A steam-age speed governor on a cast-iron pedestal, in a dark workshop: a vertical spindle turns, two heavy brass balls on arms fly outwards as the speed swells and fall back as it ebbs, and through a pair of links they lift and lower a sleeve on the spindle, which a slotted lever carries to a counterweight. A spoked flywheel turns beside it. The mechanism is the real one: the arms obey the governor equation and the sleeve's height follows from the lengths of the links. Choose the metal (brass, copper, bronze or steel), the colour of the iron, how many turns it makes per loop, and how strongly the speed swells and ebbs.","role":"Hero object (Three.js 3D): a mechanical marvel for engineering, history and steampunk content.","useCases":["A steampunk, industrial-history or engineering-explainer opener","A satisfying mechanical loop behind a quote about balance or regulation","A hero object for a talk on feedback, control and self-regulation"],"synonyms":["flyball governor","watt regulator","speed regulator","steampunk machine","brass machine","spinning balls","mechanical governor","engine governor"],"digest":"43891724f5f52ea383f6f030493331b14b9edf1d1ea19a48359c5dc188fd2ad0","implementation":{"target":"three","runtime":"browser","language":"javascript","module":"esm","entry":"src/brass-governor.js","exports":[{"name":"createBrassGovernor","signature":"createBrassGovernor({ finish?, iron?, turns?, swing? }) => { group, height, turns, update(time, loopSeconds, { swing? }), dispose() }","description":"The whole machine as a THREE.Group (1 unit = 10 cm, standing on y = 0). update(time, loopSeconds) turns the spindle a whole number of times and swells and ebbs the speed; it returns { speed, theta, sleeve }."},{"name":"armAngle","signature":"armAngle(speed) => radians","description":"The arms' angle from vertical for a speed relative to the one at which they stand at 46°: cos θ = cos 46° / s²."},{"name":"sleeveHeight","signature":"sleeveHeight(theta) => y","description":"Height of the sleeve for an arm angle, from the lengths of the links."},{"name":"FINISHES","signature":"FINISHES: { brass, copper, bronze, steel }","description":"Finishes for the balls, arms and sleeve."}],"reusable":["src/brass-governor.js"],"demo":"demo.js","harness":"index.html"},"dependencies":[{"id":"three","version":"0.185.1","scope":"source","reason":"Renderer, geometry and physical metals."},{"id":"chrome-material","version":"1.1.0","scope":"demo","reason":"Studio environment light, backdrop, floor and contact shadow."},{"id":"apw-runtime","version":"1.0.0","scope":"demo","reason":"Demo harness."}],"uses":[],"usedBy":[],"params":[{"key":"finish","label":"Metal","type":"select","default":"brass","options":[{"value":"brass","label":"Brass"},{"value":"copper","label":"Copper"},{"value":"bronze","label":"Dark bronze"},{"value":"steel","label":"Polished steel"}]},{"key":"turns","label":"Turns per loop","type":"integer","min":3,"max":12,"step":1,"default":6},{"key":"swing","label":"How much the speed swells","help":"0.05 is a steady engine, 0.22 a hunting one.","type":"number","min":0.05,"max":0.22,"step":0.01,"default":0.16},{"key":"background","label":"Workshop","type":"color","default":"#14161c"}],"presets":[{"id":"default","label":"Brass, a swelling engine","params":{}},{"id":"copper","label":"Copper, steady","params":{"finish":"copper","swing":0.08,"turns":8,"background":"#1a1412"}},{"id":"steel","label":"Polished steel, hunting","params":{"finish":"steel","swing":0.21,"turns":5,"background":"#10151d"}},{"id":"bronze","label":"Dark bronze, slow","params":{"finish":"bronze","turns":3,"swing":0.14,"background":"#1b1a14"}}],"output":{"width":1080,"height":1080,"fps":30,"durationSeconds":12,"posterSeconds":3.5,"alpha":false,"motion":"procedural","loop":{"seamless":true,"cycleSeconds":12,"method":"The speed swells and ebbs as a sum of two whole-cycle harmonics; the turned angle is its integral, which over the loop is a whole number of turns (the harmonics integrate to zero), so the arms, the sleeve, the lever and the flywheel return exactly and the last frame meets the first."},"seed":null},"composition":{"inputs":"Time within the loop; the metal, iron colour, turns and swing.","outputs":"A THREE.Group: pedestal, spindle, arms, balls, links, sleeve, lever, counterweight and flywheel, standing on y = 0.","coordinates":"1 unit = 10 cm. The machine is 5.5 tall and 7.4 wide at the plinth; the spindle is on the origin and turns about y.","lighting":"Physical metals: needs scene.environment; a shadow-casting key light draws the arms' shadows on the pedestal.","timing":"update(time, loopSeconds) is a pure function of time; frames render in any order.","compatibleWith":["chrome-material","orbit-camera","kinetic-title"],"notes":["The arm angle follows cos θ = cos 46° / s²; the sleeve rises as the balls fly out, as in the real machine.","The lever's slot lets its roller ride the sleeve's groove as the lever swings."]},"reuse":["Engineering explainer: Brass, a swelling engine, with a caption on negative feedback.","Steampunk title: Dark bronze, slow, behind a Victorian-style title.","Calm loop: Copper, steady, camera drift on."],"integration":{"newProject":"Set scene.environment (createStudioEnvironment from Chrome Material works), add createBrassGovernor().group and a shadow-casting light, and call update(time, loopSeconds) each frame.","existingProject":"Copy src/brass-governor.js. Add the group to your scene, scale it, and call update(seconds, loopSeconds) every frame; armAngle and sleeveHeight are exported for your own linkages."},"performance":{"notes":"About sixty meshes built once; only the arms, links, sleeve and lever are reposed each frame. Smooth at 1080p on laptop GPUs.","limits":"Software WebGL (no GPU) renders slowly."},"limitations":["The speed is a prescribed swell and ebb: the governor does not react to a load.","The pedestal hides the gearing between the flywheel and the spindle."],"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/mechanical-kinetic/centrifugal-governor (MIT), rebuilt for AI Pixel Wizard in October 2026 as a Watt governor with the real linkage (governor equation, link geometry), a cast-iron pedestal, a slotted lever with a counterweight, a flywheel, studio light and shadows, an exact loop and the frame/time contract.","changelog":[{"version":"1.0.0","date":"2026-10-05","notes":"Initial release."}],"verification":{"testedOn":"2026-10-06","inputs":{"brass-governor@1.0.0":"43891724f5f52ea383f6f030493331b14b9edf1d1ea19a48359c5dc188fd2ad0","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":1025.2,"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/brass-governor/1.0.0/poster.webp","preview":"/media/brass-governor/1.0.0/preview.mp4","sample":"/media/brass-governor/1.0.0/sample.mp4","sampleBytes":2330296}},"files":[{"path":"LICENSE","size":1072,"sha256":"8a5f3a96f07e11522ec4bdd0a583356f99bad1245920f9709cee09b995a45153","contentType":"text/plain; charset=utf-8","url":"https://aipixelwizard.com/registry/brass-governor/1.0.0/LICENSE"},{"path":"asset.json","size":8756,"sha256":"59fcfb8e59286ab762e8e0c08148a05e617d8b0d6522ed186973202044e1cf06","contentType":"application/json; charset=utf-8","url":"https://aipixelwizard.com/registry/brass-governor/1.0.0/asset.json"},{"path":"demo.js","size":3136,"sha256":"b59c10f77f310d5c2283860081eaf37a15970b0dd6af23cc3bb835d5dd0afcd1","contentType":"text/javascript; charset=utf-8","url":"https://aipixelwizard.com/registry/brass-governor/1.0.0/demo.js"},{"path":"index.html","size":528,"sha256":"893738c831021d80e238ce8d19c7d835bd358d7c18311bd1f6ccc8930836a8ce","contentType":"text/html; charset=utf-8","url":"https://aipixelwizard.com/registry/brass-governor/1.0.0/index.html"},{"path":"src/brass-governor.js","size":12496,"sha256":"5f6150285edc1fbecf91884758049aa642f4b5a51bcfb53e8ccc52975744944a","contentType":"text/javascript; charset=utf-8","url":"https://aipixelwizard.com/registry/brass-governor/1.0.0/src/brass-governor.js"}],"warnings":[]}