{"id":"plasma-ball","version":"1.0.0","title":"Plasma Ball","summary":"A plasma globe: filaments of electric light writhe from a white-hot core and gather to a finger on the glass. Loops perfectly.","kind":"object","target":"three","collections":["chrome-glass","hypnotic-loops","particles"],"tags":["plasma ball","plasma globe","tesla","lightning","electric","energy","sci-fi","glow","neon","retro","loop","3d"],"loopable":true,"motion":"procedural","durationSeconds":12,"status":"published","media":{"poster":"https://aipixelwizard.com/media/plasma-ball/1.0.0/poster.webp","preview":"https://aipixelwizard.com/media/plasma-ball/1.0.0/preview.mp4","sample":"https://aipixelwizard.com/media/plasma-ball/1.0.0/sample.mp4","sampleBytes":2914502,"sampleNote":"Pre-rendered with the default settings. Customised settings must be exported locally (npm run render)."},"urls":{"page":"https://aipixelwizard.com/visuals/plasma-ball","manifest":"https://aipixelwizard.com/api/v1/visuals/plasma-ball/versions/1.0.0","agentMd":"https://aipixelwizard.com/registry/plasma-ball/1.0.0/agent.md","files":"https://aipixelwizard.com/registry/plasma-ball/1.0.0/","demo":"https://aipixelwizard.com/registry/plasma-ball/1.0.0/index.html"},"description":"A plasma globe on a black glossy base in a dark room: a white-hot electrode at its heart, filaments of violet light that writhe from it to the glass and jump to new paths several times a second, a bright tip where each one meets the glass, a haze that fills the sphere, and a glow that spills over the base and the table. Part-way through, a finger touches the glass and the filaments reach for the spot, then let go again. Choose the colour (violet and pink, cyan and blue, rose and amber, green and aqua), the number of filaments, the strength of the glow, whether a finger touches it, and the room.","role":"Hero object (Three.js 3D): an electric, sci-fi plasma globe for tech, energy and retro-science content.","useCases":["A tech, energy or power opener with an electric glow","A sci-fi or retro-science backdrop for explainers and gaming content","A hypnotic, glowing loop behind titles and music"],"synonyms":["plasma lamp","tesla globe","lightning ball","electric sphere","static ball","energy orb","magic orb","touch plasma"],"digest":"c60a3add2d9cd2ecc7d9e296b746d73f54c9e23913656aac86699a915ec888ec","implementation":{"target":"three","runtime":"browser","language":"javascript","module":"esm","entry":"src/plasma-ball.js","exports":[{"name":"createPlasmaBall","signature":"createPlasmaBall({ color?, filaments?, seed? }) => { group, sphere, height, uniforms, update(time, loopSeconds, camera?, { touch?, point? }), dispose() }","description":"The globe as a THREE.Group (1 unit = 10 cm, standing on y = 0): base, stem, haze, filaments, the glass reflection layer. update(time, loopSeconds) is a pure function of time; touch (0…1) and point (a direction from the globe's centre) draw the filaments to a finger."},{"name":"createBloomPass","signature":"createBloomPass(renderer, { width, height, glow?, exposure?, grain? }) => { render(scene, camera, output?), dispose() }","description":"Draws the scene into a half-float target, blurs its bright parts at three scales and composites them with filmic tone mapping and a fixed grain."},{"name":"PALETTES","signature":"PALETTES: { violet, cyan, rose, green }","description":"The colourways: core, glow and halo colours."}],"reusable":["src/plasma-ball.js"],"demo":"demo.js","harness":"index.html"},"dependencies":[{"id":"three","version":"0.185.1","scope":"source","reason":"Renderer, geometry and the ribbon, tip and haze shaders."},{"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":"color","label":"Colour","type":"select","default":"violet","options":[{"value":"violet","label":"Violet and pink"},{"value":"cyan","label":"Cyan and blue"},{"value":"rose","label":"Rose and amber"},{"value":"green","label":"Green and aqua"}]},{"key":"filaments","label":"Filaments","type":"integer","min":6,"max":24,"step":1,"default":14},{"key":"touch","label":"Finger on the glass","type":"boolean","default":true},{"key":"glow","label":"Glow","type":"number","min":0.4,"max":1.8,"step":0.05,"default":1},{"key":"room","label":"Room colour","type":"color","default":"#07060c"},{"key":"table","label":"Table","type":"color","default":"#0e0d12"},{"key":"seed","label":"Seed","help":"Changes the paths the filaments take.","type":"integer","min":1,"max":999,"step":1,"default":3}],"presets":[{"id":"default","label":"Violet, with a touch","params":{}},{"id":"cyan","label":"Cyan, untouched","params":{"color":"cyan","touch":false,"filaments":18,"room":"#050a10","seed":8}},{"id":"rose","label":"Rose and amber","params":{"color":"rose","filaments":11,"glow":1.2,"room":"#0d0609","seed":12}},{"id":"green","label":"Green, wild","params":{"color":"green","filaments":22,"glow":0.9,"room":"#050b08","seed":5}}],"output":{"width":1080,"height":1080,"fps":30,"durationSeconds":12,"posterSeconds":4.5,"alpha":false,"motion":"procedural","loop":{"seamless":true,"cycleSeconds":12,"method":"The filaments' paths come from a hash of the flicker step, taken modulo a whole number of steps per loop, so the flicker repeats exactly; the finger arrives and leaves within the loop and the camera drift is a sine of it, so the last frame meets the first."},"seed":{"param":"seed","behavior":"Seed changes the hash that decides every filament's path and strength: same seed, same globe."}},"composition":{"inputs":"Time within the loop; the colour, filament count, touch and glow.","outputs":"A THREE.Group (base, stem, haze, filaments, glass layer) that createBloomPass draws with its glow.","coordinates":"1 unit = 10 cm. The sphere has a radius of 2 and is centred 2.75 above the table; the base is 3.6 across.","lighting":"Physical glossy base and a reflection-only glass layer: needs scene.environment. Add a point light in the glow colour near the base to wash it and the table.","timing":"update(time, loopSeconds) is a pure function of time; frames render in any order.","compatibleWith":["chrome-material","kinetic-title","particle-tunnel"],"notes":["The filaments are glowing ribbons built in the vertex shader; there are no per-frame uploads.","The glass is drawn additively as pure reflection, so the glow inside stays visible through it."]},"reuse":["Tech opener: Violet, with a touch, with your title above the globe.","Energy theme: Green, wild, behind a counter or a chart.","Retro science: Rose and amber with a brass-toned table."],"integration":{"newProject":"Set scene.environment (createStudioEnvironment from Chrome Material works), add createPlasmaBall().group and a point light, and call update(time, loopSeconds, camera, { touch, point }) then bloom.render(scene, camera) each frame.","existingProject":"Copy src/plasma-ball.js. Add the group to your scene, and draw it with createBloomPass or your own bloom so the filaments glow."},"performance":{"notes":"Up to 24 filaments as 2 × 57 vertices each, shaped entirely in the vertex shader, a haze sphere, and a small bloom chain. Smooth at 1080p on laptop GPUs.","limits":"Software WebGL (no GPU) renders slowly."},"limitations":["The filaments reach the glass straight from the electrode; they do not fork.","The finger is shown only as a bright spot on the glass and the filaments reaching for it, not as a hand."],"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/light-atmosphere/plasma-globe (MIT), rebuilt for AI Pixel Wizard in October 2026: a modelled globe on a glossy base, filament ribbons whose flicker is a looped hash of the step, tips, haze and a bloom, a finger that draws the filaments, four colourways and the frame/time contract.","changelog":[{"version":"1.0.0","date":"2026-10-05","notes":"Initial release."}],"verification":{"testedOn":"2026-10-06","inputs":{"plasma-ball@1.0.0":"c60a3add2d9cd2ecc7d9e296b746d73f54c9e23913656aac86699a915ec888ec","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":2331.8,"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/plasma-ball/1.0.0/poster.webp","preview":"/media/plasma-ball/1.0.0/preview.mp4","sample":"/media/plasma-ball/1.0.0/sample.mp4","sampleBytes":2914502}},"files":[{"path":"LICENSE","size":1072,"sha256":"8a5f3a96f07e11522ec4bdd0a583356f99bad1245920f9709cee09b995a45153","contentType":"text/plain; charset=utf-8","url":"https://aipixelwizard.com/registry/plasma-ball/1.0.0/LICENSE"},{"path":"asset.json","size":9188,"sha256":"4216626f1cbdd2a60306313a176b9974761a8fcdabfecb94ffabcd6d84c6c44f","contentType":"application/json; charset=utf-8","url":"https://aipixelwizard.com/registry/plasma-ball/1.0.0/asset.json"},{"path":"demo.js","size":4670,"sha256":"b74d200dec5299bd3c8ad6724c1dcdb6e23c225b2aa025c6d4a7a65f88118929","contentType":"text/javascript; charset=utf-8","url":"https://aipixelwizard.com/registry/plasma-ball/1.0.0/demo.js"},{"path":"index.html","size":525,"sha256":"81f253981b90adc5499d9d55dd16365513a9aed25c210ff48532eaf5d24520b1","contentType":"text/html; charset=utf-8","url":"https://aipixelwizard.com/registry/plasma-ball/1.0.0/index.html"},{"path":"src/plasma-ball.js","size":21079,"sha256":"9b80bf16e1e54b755d8a7e7574a20f6a04f5506a92e9264ed248c1a399d82387","contentType":"text/javascript; charset=utf-8","url":"https://aipixelwizard.com/registry/plasma-ball/1.0.0/src/plasma-ball.js"}],"warnings":[]}