Spatial Interaction Model — visionOS

Eye is intent. Hand is commit.

A spatial UI built by people who have not used a Vision Pro looks like a floating iPad — buttons reached for, hovers translated from web, persistent toolbars. A spatial UI built by people who understand the platform looks like peripheral attention plus deliberate confirmation.

Scroll through the six states of the canonical “select a transit route” interaction.

State 00

Resting

Trigger: Ambient state — no attention paid to any route.

All routes render at 60% opacity. Spatial audio is a low, slow city tempo bed at -36 LUFS.

Audio · ambient bed · -36 LUFS

State 01

Look-Target

Trigger: Eye gaze dwells on a route for ~120ms.

Route rises to 100% opacity over 280ms (Settle spring). Route ornament appears at the geometric centroid in Meridian Glass. Ambient bed drops 3dB; a positional tone emits from the route's anchor.

Audio · bed -3dB · positional tone -42 LUFS

State 02

Pinch-Commit

Trigger: Thumb-and-index pinch (hand can rest in lap; targeting is gaze).

Other routes drop to 22% over 240ms (Decisive spring). Ornament expands into a full information panel. Sonic confirm plays — 340ms, -28 LUFS, spatially anchored. Vehicle particles brighten ×1.4.

Audio · sonic confirm · 340ms · -28 LUFS

State 03

Pull-to-Detach

Trigger: Pinch + outward hand translation.

Ornament transitions from object-anchored to user-anchored. A faint Meridian Light thread connects window to route in space.

Audio · tether-thread resonance · -38 LUFS

State 04

Voice + Gaze Compound

Trigger: User speaks: "Show today versus last Tuesday."

Gazed-at route is the implicit subject. Comparison overlays without losing the spatial anchor.

Audio · voice confirm · faint sub-pulse

State 05

Dismiss

Trigger: Look away + pinch on empty space, or voice "Done."

Selection releases over 360ms. Ornament collapses, dissolves after -2s of no attention. Audio returns to State 0.

Audio · return to ambient bed · -36 LUFS

Hard rules