| src | string | "" | Model source URL. |
| alt | string | "3D model" | Accessible description text. |
| poster | null | string | null | Poster image URL shown before reveal. |
| reveal | VuModelViewerReveal | "auto" | Reveal mode for poster/model transition. |
| loading | VuModelViewerLoading | "auto" | Loading behavior hint. |
| cameraControls | boolean | true | Enables orbit controls. |
| cameraOrbit | string | "0deg 75deg 105%" | Camera orbit string (theta phi radius). |
| cameraTarget | string | "auto auto auto" | Camera target string. |
| autoRotate | boolean | false | Enables continuous auto-rotation. |
| pmiSrc | string | "" | Sidecar PMI JSON source. |
| pmiVisible | boolean | true | Toggles PMI visibility. |
| loadingLabel | string | "" | Override for loading poster / progress accessible copy. |
| interactionPromptLabel | string | "" | Override for the orbit/zoom hint text. |
| fullscreenLabel | string | "" | Override for enter-fullscreen accessible name. |
| exitFullscreenLabel | string | "" | Override for exit-fullscreen accessible name. |
| showPmiLabel | string | "" | Override for show-PMI button copy. |
| hidePmiLabel | string | "" | Override for hide-PMI button copy. |
| unlimitedOrbit | boolean | false | When true, orbit has no angle limits so the model can rotate freely on all axes. |
| axesIndicator | VuModelViewerAxesIndicator | "none" | Show X/Y/Z axis lines in a corner for orientation reference. Use "none" to hide. |
| axesIndicatorSpace | VuModelViewerAxesSpace | "world" | `world` = screen-projected world axes; `model` = local axes after `heightAxis` (CAD / Z-up). |
| environment | string | "" | HDR environment map URL (.hdr — loaded via RGBELoader). |
| skyboxImage | string | "" | Equirectangular HDR for background (.hdr, loaded via RGBELoader). |
| disableContextMenu | boolean | false | When true, right-click context menu on the canvas is disabled. |
| withFullscreenButton | boolean | false | Shows a fullscreen toggle in the corner. |
| withPmiToggleButton | boolean | false | Shows a built-in PMI visibility toggle in the corner. |
| dracoDecoderPath | string | "" | Optional DRACO decoder base path for compressed glTF. |
| ktx2TranscoderPath | string | "" | Optional KTX2/Basis transcoder path for glTF textures. |
| texture | string | "" | Comma-separated base-color map URLs mapped onto materials in order (cycles if fewer). |
| pmiWorldLeaderLength | number | 40 | Default leader length in **model units** for simple leaders (`leader.leader_points` not used). |
| pmiDefaultLineColor | string | "var(--vu-color-foreground)" | PMI line/arrow/datum color; supports `var(--token)` resolved via computed style. |
| pmiDefaultTextColor | string | "" | PMI label fill when JSON omits `textColor`; empty uses the resolved line color. |
| pmiLabelOrientation | PmiLabelOrientation | "billboard" | PMI label orientation: `billboard` (face camera) or `plane` (annotation normal). |
| heightAxis | VuModelViewerHeightAxis | "z" | Model up axis: `y` (glTF/Blender) or `z` (CAD); `z` rotates so Z is vertical in the viewer. |
| format | VuModelViewerFormat | "" | Explicit format (`gltf` | `stl` | `obj`) when URL/MIME sniffing is insufficient. |
| preserveCameraOnSrcChange | boolean | false | Keep orbit/target and interaction state when `src` changes instead of reframing. |