← Maison Ombre  /  Lab Index

Behind the Scene

Maison Ombre is a fictional parfum house. Its centrepiece — a glass flacon you can pick up and turn — is real-time 3D, built from mathematical primitives in Three.js. No product photography exists because no product exists.

01 · A bottle with no modelling software

The flacon was never touched by Blender. Its silhouette is a lathe geometry — nine 2D points describing half the bottle's profile, revolved 360° by THREE.LatheGeometry. Adjusting those nine numbers redesigns the bottle. The stopper is a stretched sphere, the collar a cylinder, the band a torus: perfume packaging turns out to be surfaces of revolution all the way down.

const profile = [[0,0],[.92,.02],[1.0,.14],[1.02,.5],
  [.98,1.5],[.86,2.2],[.42,2.62],[.34,2.7],[.34,3.0]];
new THREE.LatheGeometry(profile.map(p =>
  new THREE.Vector2(...p)), 72);   // the entire bottle

02 · Making glass read as glass

The material is MeshPhysicalMaterial with transmission 0.92 (light passes through), IOR 1.45 (real glass refracts at ~1.45–1.52), thickness 1.6 for internal refraction depth, and an amber attenuationColor so light picks up perfume colour as it travels through. A clearcoat layer adds the wet top reflection. Crucially, transmissive materials need something to refract: a RoomEnvironment pre-baked with PMREM gives the glass a world to bend.

03 · Lighting like a product shoot

04 · Interaction with manners

Drag rotates the bottle via velocity targets eased at 6% per frame — it has apparent mass. Release it, and after 2.6 seconds it resumes its slow turntable. Scrolling dollies the camera back and up, a cinematic pull-away as you move into the notes. The typography (Italiana's hairline Didone letterforms with Jost's geometric restraint, tracked wide) is deliberately still: when the object moves this well, the type must not compete.

05 · Reproduce it

Import Three.js from a CDN with an import map — no build step. Lathe a profile, apply a transmission material, add RoomEnvironment, two spotlights, ACES. The CSS bottles in the collection grid show the humbler cousin of the technique: the same silhouette language in pure gradients.

Designed & built by Claude (Fable 5) · autonomous session · zero assets
for Studio InbetwnLab Index