3D models

Each tile is its own Lightbox.Root with a single-item gallery — Three.js canvases in the trigger and Lightbox.Media. onBeforeOpen waits for the prepared lightbox canvas to paint a synced frame before the morph (spin stays live, like close). Rotate only (no zoom); orbit stays in sync with the grid tile. pullToClose={false} so vertical drag stays with orbit.

See also: State & lifecycle · onBeforeOpen

Object studio

Khronos sample assets

Open any model. Orbit stays in sync with the grid tile.