Skip to content

Iridescent Morphing Blob

A glossy blob that slowly morphs with a soap-bubble rainbow sheen. Loops perfectly.

3D object, V2 Objects3DSeamless loop, verified134 lines of codev1.1.0

In Food & sweets, Light, glass & shine, Liquids

Next: Torus Wave LoopSurprise me

Iridescent Morphing Blob preview
Starting live preview…
00:00:00:00 / 00:00:00:01

Live, running the real source at reduced resolution.

Your current settings go with it. Combine several clips and hand them over together from your sequence.

Effect controls

Presets

0.16

How far the surface moves in and out.

2.2
1

Morph cycles per loop.

1
3

The preview runs the same code your AI receives. These settings travel with the hand-off.

Info

What it is

A shiny, soft shape that gently swells and ripples like a drop of liquid, with a rainbow oil-slick sheen that shifts as it turns. Pick two colours for the hollows and the peaks, then dial how much it wobbles and how bumpy it is. The movement is built so the last frame flows straight back into the first.

Reuse it in your own idea

  • Swap the material for createChromeMaterial to get a liquid-chrome blob.
  • Use several small blobs with different seeds as floating background shapes.
  • Put it behind a Kinetic Title as a product-launch backdrop.

Which part is reusable

src/iridescent-blob.js is the ingredient your AI reuses. demo.js is only the example scene around it, and uses chrome-material only for the demo.

See it combined with other ingredients in Chrome Orbit.

Good to know

  • Not a fluid simulation: the motion is a sum of waves, which reads as liquid but does not split or merge.

Technical details

Technical details
Implementation
Three.js 0.185.1 (WebGL) · ES module src/iridescent-blob.js
Exports
  • createBlob({ radius?, amplitude?, frequency?, cycles?, waves?, seed?, segments?, colorA?, colorB?, material? }) => { mesh, update(phase), dispose() }
  • createIridescentMaterial({ colorA?, iridescence?, roughness? }) => THREE.MeshPhysicalMaterial
Dependencies (exact)
  • three@0.185.1 (source) — Geometry, physical material with iridescence.
  • chrome-material@1.1.0 (demo) — Demo uses createStudioEnvironment; iridescence needs an environment map to show.
  • apw-runtime@1.0.0 (demo) — Demo harness.
How it fits a scene

Coordinates: Centred on the origin, radius ≈ 1 ± wobble.

Lighting: Image-based (scene.environment). Without it the iridescence is barely visible.

Timing: update(phase) is a pure function of phase; frames can be rendered in any order.

Output
1080×1080, 30 fps, 8 s · procedural (computed from the frame number) · seamless loop — Every wave advances a whole number of cycles and the spin completes whole turns, so frame N equals frame 0.
Tested
Rendered 240 frames on 2026-10-03 in Chrome 154.0.8037.97 headless on Linux 7.0.0-38-generic (x64), Node 22.14.0 (WebGL 2 via SwiftShader (software)). Same frame twice from fresh pages: identical. Loop: Frame 0 vs end state (progress 1): mean |Δ| 0.0000, max |Δ| 0 of 255.
Performance
Deforms ~12,000 vertices on the CPU each frame and recomputes normals. Smooth on laptops at 30–60 fps. Lower segments (e.g. 64) on phones. A GPU vertex-shader port would be faster but is not included.
Export a video yourself
Download the source, then in the folder: npm install npm run render -- iridescent-blob/1.1.0 --out my-video.mp4Needs Node 18+, ffmpeg and Chrome/Chromium. Add --params my-settings.json (from Copy settings) for your own settings.
Version
1.1.0 · sha256:b83fa4be71e6ca16… · other versions: 1.0.0
Files
License
MIT. Copyright (c) 2026 AI Pixel Wizard. Released under the MIT License. See LICENSE in this folder. Third-party: three.js 0.185.1 (MIT). License details
Provenance
Original code written for AI Pixel Wizard in October 2026. Demo polished in October 2026 to the catalog quality bar (docs/QUALITY.md).
BinMore like this

Soap Film

3D object3DSeamless loop12 seconds

Lava Lamp

3D object3DSeamless loop15 seconds

Ferrofluid

3D object3DSeamless loop16 seconds