Examples
SimpleModelViewer
The lightweight inspection experience for quick model review:
- Upload-first workflow
- Scene objects panel
- Environment and lighting controls
- Click-to-select focus flow
Live Demo · Starter App · Open in CodeSandbox
ModelViewer
The fuller ModelViewer experience used for the richer hosted demo:
- Object bindings and per-object actions
- Scene config wiring
- Measurement tools
- Annotation navigation
- XR flags and performance tuning
Live Demo · Starter App · Open in CodeSandbox
Guided Tour
A guided walkthrough demo that uses scene annotations as tour stops instead of per-object bindings:
- SceneAnnotationMarker stops
- Built-in annotation navigation
- Camera flies to saved world positions
- Position-only markers, no object binding needed
Live Demo · Starter App · Open in CodeSandbox
Shareable View / Deep Link
Create a client-ready link to an exact walkthrough state:
- Pick an object to fly the camera to it
- Hide selected objects from the walkthrough
- Copy or open a link that restores camera, selection, and visibility state
- Built with
useShareableViewerState
Live Demo · Starter App · Open in CodeSandbox
AR Product Viewer
A standalone, mobile-first retail demo for placing a model in the customer’s space:
- WebXR via
enableXRon supported Android devices - iOS Quick Look using
usdzUrl - Real-world initial scale using
arScaleMode="real-world" - Desktop-to-phone QR handoff for opening the same experience in mobile AR
- Minimal viewer UI focused on the product and AR handoff
Live Demo · Starter App · Open in CodeSandbox
Switch Demo
A focused room-level example where two switches control four lights through app state:
- Start with exported
objectBindings. - Add declarative
effectsto the switch actions. - Target each light circuit as a binding group instead of listing every light.
- Pass the bindings into
ModelVieweras React state. - Pass
useViewerActions().handleActiontoModelViewerand callrunActionfrom the panel buttons. - Use the
useSceneConfiglight controller to synchronize ambient and key-light intensity. - Attach each point light to its bound bulb object without writing R3F light components.
Live Demo · Starter App · Open in CodeSandbox
Light Flicker
An atmospheric lighting example that turns nine static bulb meshes into an unstable electrical circuit:
useObjectBindingsapplies the BindingBuilder-exported model setupuseSceneConfigchanges the environment, bloom, and vignette by presetuseViewerEffectsdrives filament, glass, and point-light channels without Three.js access- Runtime point lights attach to their filament meshes and follow them automatically
- Failing-circuit mode dims every bulb together from one shared signal
- Possessed mode gives every bulb independent dim, flash, and blackout timing
- Lit-up, failing-circuit, and possessed presets change the power behavior
- BindingBuilder-exported bindings and scene configuration drive the model
Live Demo · Starter App · Open in CodeSandbox
Vehicle Configurator
A product-configurator example that shows how BindingBuilder-exported object bindings can drive grouped customization flows:
- Binding
groupselectors patch body paint, wheels, trim, and other multi-mesh sets without manual ID arrays - Built-in
change-color/change-material/toggle-visibilityactions are reinterpreted as real configurator controls - An aero-kit toggle hides or restores a whole package of parts
- Window tint and headlight state update the same binding map the viewer renders
- Clickable parts and side-panel controls stay in sync through React state
Live Demo · Starter App · Open in CodeSandbox
Exploded View
An assembly-inspection demo that separates a multi-part model into its components with a single slider:
showExplodeControlsrenders the built-in explode slider in the viewer- Every bound mesh slides outward from the model center along its own direction
- Nested parts ride their exploding parent instead of being displaced twice
- Fully reversible, dragging back to zero reassembles the model exactly
- Best suited to static product / CAD models (engines, gadgets, vehicles)
Live Demo · Starter App · Open in CodeSandbox
Mouse Controller
An on-screen navigation control for touchscreen, kiosk, and guided viewing experiences:
- Enable the built-in controller with
showMouseController - Tune movement with
moveSensitivity - Adjust its visibility with
mouseControllerOpacity - Move it to a safe part of the interface with
mouseControllerPosition
Live Demo · Starter App · Open in CodeSandbox
Cinematic Tour
An automatic camera that glides through a space on its own, like a film:
- The
cinematicprop takes a list ofwaypoints(camera position + look-at keyframes) - The camera follows a smooth Catmull-Rom spline through them at a constant on-screen speed, looping seamlessly
autoPlaystarts the glide once the model has loaded and framed- A play / pause control appears in the viewer; grabbing the camera pauses it
- Waypoints are authored visually in BindingBuilder’s Cinematic tab and carried
on
sceneConfig.cinematic
Live Demo · Starter App · Open in CodeSandbox
Animation Studio
A playback studio for a rigged, animated GLB, driven entirely by
useViewerAnimations:
- Clip picker for every animation baked into the model
- Play, pause, and stop transport controls
- A scrubbable timeline bound to the live playback position
- Playback speed presets
- A loop-mode toggle (repeat vs. play once) driven through
sceneConfig.animations
Live Demo · Starter App · Open in CodeSandbox
Texture Upload / Custom Print
A custom-apparel demo where shoppers upload their own artwork onto a product:
- The built-in Upload Artwork action hands the file to
onTextureUpload - A real app uploads it to storage and returns a durable URL (here a data URL)
- The returned URL is committed to
style.material.texture.path copyMaterialand theshirtbinding group broadcast the print without a manual ID arraysetBaseColorandclearTexturedrive the same grouped binding state- The viewer download menu exports the shirt’s editable UV layout as SVG
Live Demo · Starter App · Open in CodeSandbox
BindingBuilder
The hosted BindingBuilder surface for authoring bindings in the browser:
- Desktop-first editor shell
- License-key based access
- Full-height authoring workspace
Live Demo · Starter App · Open in CodeSandbox
Public Code Examples
If you want starter code, see the public community examples in the GitHub repo:
Running Examples
For local starter apps, clone the public examples and run the example you want from its own folder.
Some examples require a valid license key. Create a free key at react-immersive.liveroom.dev/console before running gated demos locally.