What it does
Product 3D wraps the model-viewer web component in a tokenized React surface. It exposes orbit controls, zoom, auto rotation, fullscreen, and loading callbacks.
Models, posters, and loading
Pass a GLB or glTF URL with a descriptive alt label. A poster remains visible while the model loads, and fallback content appears if loading fails. Progress is available through onProgress.
Lighting and environments
Choose studio, soft, dramatic, neutral, or legacy lighting. Studio, soft, and neutral use built-in lighting with distinct exposure and shadow settings; environmentImage overrides the built-in environment with your own map.
Hotspots and camera controls
Position hotspots in model coordinates and attach short annotations. Hotspots are buttons, support controlled selection, and remain readable as the camera moves. Native orbit gestures work alongside reset, zoom, and fullscreen controls.
Common use cases
- E-commerce product detail pages and configurators.
- SaaS hardware and device landing pages.
- Portfolio case studies and interactive exhibits.
- Automotive and furniture presentations.
Accessibility and integration
Provide meaningful alt text and hotspot labels. Loading progress and fallback content are announced. The client entry loads the optional renderer in an effect, keeping server rendering safe in Next.js App Router.
FAQ
Which 3D formats are supported?
The renderer supports GLB and glTF. A GLB is self-contained; a glTF may reference separate textures and buffers that must remain reachable.
How do I use a custom environment map?
Pass environmentImage as the URL of an HDR, UltraHDR, or equirectangular image. Optional skyboxImage displays an environment in the background as well.
What dependencies are needed?
Install @google/model-viewer and its matching three peer dependency alongside the Zentauri component package. The 3D renderer is loaded only when this viewer mounts in the browser.

