Home▸Physics & Mechanics▸Bubble World: Soap and Gas Bubble Physics in 3D

🫧 Bubble World: Soap and Gas Bubble Physics in 3D

Interactive 3D bubble physics: Young-Laplace pressure, buoyancy and terminal velocity, coalescence, dissolved-gas growth and thin-film interference colours of soap bubbles.

Physics & Mechanics3DModerate60 FPS📱 Mobile-adapted🟠 Blender⇄ 2D version
Bubble World: Soap and Gas Bubble Physics in 3D ↗ Open standalone

About Soap Bubbles

The same minimal-surface mathematics that keeps bubbles spherical guides foams, lightweight roof structures and tensioned-fabric architecture.

Frequently Asked Questions

Why are real soap bubbles always round?

Surface tension pulls the film inward until it reaches the smallest possible surface area for the air trapped inside. A sphere is the unique shape that minimises surface area for a fixed volume, so a free bubble settles into a sphere.

What is the key equation behind a soap bubble?

The Laplace pressure inside a soap bubble is P = 4 * gamma / r, where gamma is the surface tension of the film and r is the radius. The factor of four arises because a bubble has two surfaces (inner and outer); a single liquid surface gives P = 2 * gamma / r. Smaller bubbles squeeze the air harder.

Where does bubble mathematics appear in the real world?

Minimal surfaces and surface tension appear throughout science and design: in foams and froths, in tensioned-fabric roofs and tents, in the shape of liquid droplets, and in Plateau's laws describing how soap films meet. Joseph Plateau showed that three films always join at exactly 120 degrees, nature solving a minimisation problem instantly.

⚙ Under the hood

Interactive 3D bubble lab built in Blender: Young-Laplace pressure, buoyancy and terminal velocity, coalescence, dissolved-gas growth and the thin-film interference colours of soap bubbles in an aquarium, a champagne flute and open air.

BubblesSoap BubblesSurface TensionThin-Film InterferenceTerminal VelocityBlenderThree.js

3D · Three.js / WebGL renderer · 60 FPS target · runs fully client-side, no install

What did you find?

Add reproduction steps (optional)