@liveroom-tech/react-immersive 5.1.0 → 5.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +10 -6
- package/README.md +106 -3427
- package/dist/binding-builder.css +1 -1
- package/dist/binding-builder.js +64 -13
- package/dist/binding-builder.mjs +1 -1
- package/dist/chunk-4FDMYUGT.mjs +3 -0
- package/dist/chunk-CV4E7DOO.mjs +79 -0
- package/dist/chunk-F4WT3HEK.mjs +1 -0
- package/dist/chunk-FPJZDEON.mjs +1 -0
- package/dist/chunk-JHKMRMJH.mjs +1 -0
- package/dist/chunk-TW2M4UXT.mjs +1 -0
- package/dist/chunk-W24UP6NM.mjs +1 -0
- package/dist/hosted.css +1 -1
- package/dist/hosted.d.mts +8 -5
- package/dist/hosted.d.ts +8 -5
- package/dist/hosted.js +63 -12
- package/dist/hosted.mjs +1 -1
- package/dist/index.css +1 -1
- package/dist/index.d.mts +48 -9
- package/dist/index.d.ts +48 -9
- package/dist/index.js +62 -11
- package/dist/index.mjs +1 -1
- package/dist/materialVariants-DjTuiWmN.d.mts +314 -0
- package/dist/materialVariants-DjTuiWmN.d.ts +314 -0
- package/dist/modelInfo-BQ5UZu95.d.ts +43 -0
- package/dist/modelInfo-CcYpydB7.d.mts +43 -0
- package/dist/{ModelViewer-Bj-KjiDL.d.mts → modelViewerProps-BalkRDni.d.ts} +133 -12
- package/dist/{ModelViewer-BkQ73y6N.d.ts → modelViewerProps-DdsJDRB7.d.mts} +133 -12
- package/dist/{objectCatalog-BIeXURoq.d.ts → rendererBackend-C_Jb4_Jy.d.mts} +47 -5
- package/dist/{objectCatalog-BIeXURoq.d.mts → rendererBackend-C_Jb4_Jy.d.ts} +47 -5
- package/dist/simple-model-viewer.css +1 -1
- package/dist/simple-model-viewer.d.mts +32 -4
- package/dist/simple-model-viewer.d.ts +32 -4
- package/dist/simple-model-viewer.js +3 -3
- package/dist/simple-model-viewer.mjs +1 -1
- package/dist/utils.d.mts +5 -4
- package/dist/utils.d.ts +5 -4
- package/dist/utils.js +1 -1
- package/dist/utils.mjs +1 -1
- package/package.json +3 -1
- package/dist/chunk-32WCLPTZ.mjs +0 -1
- package/dist/chunk-CSGNL4XU.mjs +0 -3
- package/dist/chunk-F2ILTIPG.mjs +0 -28
- package/dist/chunk-SEESCGUS.mjs +0 -1
- package/dist/chunk-V6GALFL5.mjs +0 -1
- package/dist/chunk-WN6GMMHF.mjs +0 -1
- package/dist/modelInfo-DnkmTGMd.d.mts +0 -23
- package/dist/modelInfo-DnkmTGMd.d.ts +0 -23
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { ReactNode } from 'react';
|
|
2
|
-
import { r as ObjectBindingDecal, Q as ObjectSurfacePoint, o as ObjectBinding, al as ViewerCameraState, U as SceneAnnotationMarker, n as ObjectActionEvent, an as ViewerObjectInfo, P as ObjectPointerEvent, e as AnimationControls, ak as ViewerCameraConfig, Z as SceneConfig, am as ViewerIsolation } from './objectCatalog-BIeXURoq.mjs';
|
|
3
|
-
import { M as ModelFormat, a as ViewerModelInfo } from './modelInfo-DnkmTGMd.mjs';
|
|
4
|
-
import { CameraControls } from '@react-three/drei';
|
|
5
2
|
import { Object3D } from 'three';
|
|
3
|
+
import { R as ReducedMotionSetting, c as ModelViewerLabels } from './materialVariants-DjTuiWmN.js';
|
|
4
|
+
import { V as ViewerLoading, c as ViewerReveal, M as ModelFormat, b as ViewerModelInfo } from './modelInfo-BQ5UZu95.js';
|
|
5
|
+
import { r as ObjectBindingDecal, Q as ObjectSurfacePoint, o as ObjectBinding, S as RendererBackend, ap as ViewerCameraState, Y as SceneAnnotationMarker, ar as ViewerObjectInfo, P as ObjectPointerEvent, n as ObjectActionEvent, e as AnimationControls, ao as ViewerCameraConfig, a1 as SceneConfig, aq as ViewerIsolation } from './rendererBackend-C_Jb4_Jy.js';
|
|
6
|
+
import { CameraControls } from '@react-three/drei';
|
|
6
7
|
|
|
7
8
|
/** Engagement from deliberate viewer interactions, with model/session context. */
|
|
8
9
|
type ViewerEngagementEvent = {
|
|
@@ -19,11 +20,15 @@ type ViewerEngagementEvent = {
|
|
|
19
20
|
objectId: string;
|
|
20
21
|
objectKey: string;
|
|
21
22
|
label?: string;
|
|
22
|
-
source: "canvas" | "panel";
|
|
23
|
+
source: "canvas" | "panel" | "keyboard";
|
|
23
24
|
} | {
|
|
24
25
|
type: "variant-chosen";
|
|
26
|
+
/** The variant chosen; null when a group's choice was cleared. */
|
|
25
27
|
variant: string | null;
|
|
28
|
+
/** The group's previous choice. */
|
|
26
29
|
previousVariant: string | null;
|
|
30
|
+
/** The option group's name; null for a group without one. */
|
|
31
|
+
group: string | null;
|
|
27
32
|
} | {
|
|
28
33
|
type: "ar-started";
|
|
29
34
|
} | {
|
|
@@ -107,10 +112,17 @@ type ModelViewerUiOptions = {
|
|
|
107
112
|
annotationNavigation?: boolean;
|
|
108
113
|
/** Show an annotation's details when its marker is hovered. Default `false`. */
|
|
109
114
|
annotationOnHover?: boolean;
|
|
115
|
+
/** Category filter chips. Default `true` when annotations have categories. */
|
|
116
|
+
annotationFilters?: boolean;
|
|
110
117
|
/** Highlight objects under the pointer. Default `true`. */
|
|
111
118
|
highlightOnHover?: boolean;
|
|
112
|
-
/**
|
|
119
|
+
/** Swatch rows for the model's glTF material variants, one per option group. Default `true`. */
|
|
113
120
|
materialVariants?: boolean;
|
|
121
|
+
/**
|
|
122
|
+
* A tab stop for moving through and selecting objects with the keyboard,
|
|
123
|
+
* shown only while it has focus. Default `true`.
|
|
124
|
+
*/
|
|
125
|
+
objectNavigator?: boolean;
|
|
114
126
|
};
|
|
115
127
|
/**
|
|
116
128
|
* Takes over parts of texture positioning (`texturePositioning`). Fields left
|
|
@@ -151,13 +163,19 @@ type ModelViewerControlsOptions = {
|
|
|
151
163
|
enabled?: boolean;
|
|
152
164
|
/** Move the camera with the keyboard while the canvas has focus. Default `false`. */
|
|
153
165
|
keyboard?: boolean;
|
|
166
|
+
/**
|
|
167
|
+
* Cut motion the viewer starts on its own (auto-rotate, cinematic autoplay,
|
|
168
|
+
* camera glides). `"user"` follows the visitor's reduced-motion setting.
|
|
169
|
+
* Default `"user"`.
|
|
170
|
+
*/
|
|
171
|
+
reducedMotion?: ReducedMotionSetting;
|
|
154
172
|
/** Allow zooming. Default `true`. */
|
|
155
173
|
zoom?: boolean;
|
|
156
174
|
/** Zoom to an object when it's selected. Default `true`. */
|
|
157
175
|
zoomOnSelect?: boolean;
|
|
158
176
|
/** Turn the model slowly; a number sets the speed (1 is normal). Default `false`. */
|
|
159
177
|
autoRotate?: boolean | number;
|
|
160
|
-
/** Re-frame the model when the viewer is resized. Default `true`. */
|
|
178
|
+
/** Re-frame the model, or the selected object it zoomed to, when the viewer is resized. Default `true`. */
|
|
161
179
|
refitOnResize?: boolean;
|
|
162
180
|
/** Distance, angle and pan limits for the camera. */
|
|
163
181
|
limits?: CameraLimits;
|
|
@@ -175,6 +193,12 @@ type ModelViewerPerfOptions = {
|
|
|
175
193
|
profile?: PerformanceProfile;
|
|
176
194
|
/** Needed for Download PNG and captureImage; costs GPU time. Default `false`. */
|
|
177
195
|
preserveDrawingBuffer?: boolean;
|
|
196
|
+
/**
|
|
197
|
+
* Draw with three's WebGPU renderer where the browser has WebGPU, WebGL
|
|
198
|
+
* elsewhere. Leaves out post-processing effects, contact shadows and WebXR.
|
|
199
|
+
* Default `false`.
|
|
200
|
+
*/
|
|
201
|
+
webgpu?: boolean;
|
|
178
202
|
};
|
|
179
203
|
type ModelViewerTilesOptions = {
|
|
180
204
|
/** A 3D Tiles `tileset.json` to stream instead of loading `modelUrl` whole. */
|
|
@@ -256,14 +280,25 @@ type CaptureImageOptions = {
|
|
|
256
280
|
type CaptureVideoOptions = {
|
|
257
281
|
/** Defaults to cinematic when a path is enabled, otherwise turntable. */
|
|
258
282
|
mode?: "cinematic" | "turntable";
|
|
259
|
-
/**
|
|
260
|
-
|
|
261
|
-
|
|
283
|
+
/**
|
|
284
|
+
* Auto prefers WebM, then MP4. `"gif"` makes an animated GIF that loops
|
|
285
|
+
* forever. Explicit formats reject if unsupported.
|
|
286
|
+
*/
|
|
287
|
+
format?: "auto" | "webm" | "mp4" | "gif";
|
|
288
|
+
/**
|
|
289
|
+
* Seconds per pass, in (0, 300]. Defaults to path timing, or an orbit of
|
|
290
|
+
* 24s (8s for a GIF).
|
|
291
|
+
*/
|
|
262
292
|
duration?: number;
|
|
263
|
-
/** Capture frame rate, from 1 to 60. Default 30. */
|
|
293
|
+
/** Capture frame rate, from 1 to 60. Default 30 (15 for a GIF). */
|
|
264
294
|
fps?: number;
|
|
265
|
-
/** Encoder target bitrate in bits per second. Default 8,000,000. */
|
|
295
|
+
/** Encoder target bitrate in bits per second. Default 8,000,000. Not used for GIFs. */
|
|
266
296
|
videoBitsPerSecond?: number;
|
|
297
|
+
/**
|
|
298
|
+
* GIF width in pixels, from 16 to 4096; the height follows the canvas. Never
|
|
299
|
+
* wider than the canvas. Default 480.
|
|
300
|
+
*/
|
|
301
|
+
gifWidth?: number;
|
|
267
302
|
/** Aborting discards the recording and restores the viewer. */
|
|
268
303
|
signal?: AbortSignal;
|
|
269
304
|
};
|
|
@@ -297,6 +332,11 @@ type ViewerReadyState = {
|
|
|
297
332
|
/** Records one cinematic pass or turntable revolution as a video Blob. */
|
|
298
333
|
captureVideo: (options?: CaptureVideoOptions) => Promise<Blob>;
|
|
299
334
|
invalidate: () => void;
|
|
335
|
+
/**
|
|
336
|
+
* The renderer drawing the viewer: "webgpu" only when ModelViewer's
|
|
337
|
+
* `webgpu` asked for it and the browser has WebGPU.
|
|
338
|
+
*/
|
|
339
|
+
rendererBackend: RendererBackend;
|
|
300
340
|
/**
|
|
301
341
|
* The live three.js scene, camera-controls instance, and model nodes, for
|
|
302
342
|
* integrations the rest of the API doesn't cover. Their shapes are those
|
|
@@ -334,6 +374,11 @@ declare function useViewerCamera(options?: UseViewerCameraOptions): ViewerCamera
|
|
|
334
374
|
|
|
335
375
|
type ObjectTransformSpace = "local" | "world";
|
|
336
376
|
|
|
377
|
+
type ModelMergeSource = {
|
|
378
|
+
url: string;
|
|
379
|
+
namePrefix: string;
|
|
380
|
+
};
|
|
381
|
+
|
|
337
382
|
type AnnotationMarker = SceneAnnotationMarker & {
|
|
338
383
|
markerId?: string;
|
|
339
384
|
};
|
|
@@ -351,7 +396,27 @@ type CustomSceneObjectsPanelProps = {
|
|
|
351
396
|
onHover?: (binding: ObjectBinding | null) => void;
|
|
352
397
|
};
|
|
353
398
|
type ModelViewerProps = GroupedModelViewerProps & {
|
|
399
|
+
/** Plain-text overrides for built-in UI labels. Missing keys use English. */
|
|
400
|
+
labels?: ModelViewerLabels;
|
|
354
401
|
modelUrl: string;
|
|
402
|
+
/**
|
|
403
|
+
* An image shown in the viewer's place until its 3D view is drawn: a render
|
|
404
|
+
* or photo of the model, best framed as the viewer frames it. Fitted inside
|
|
405
|
+
* the viewer; set the CSS variable `--ri-poster-fit: cover` to fill it.
|
|
406
|
+
*/
|
|
407
|
+
poster?: string;
|
|
408
|
+
/**
|
|
409
|
+
* `"lazy"` (default) starts the 3D view when the viewer is on or near the
|
|
410
|
+
* screen. When the page needs room for viewers in view, one scrolled away
|
|
411
|
+
* from goes back to a picture of itself, and comes back as it was. `"eager"`
|
|
412
|
+
* starts at once and keeps its view.
|
|
413
|
+
*/
|
|
414
|
+
loading?: ViewerLoading;
|
|
415
|
+
/**
|
|
416
|
+
* `"interaction"` keeps the poster, with a "View in 3D" button, until the
|
|
417
|
+
* visitor asks for the 3D view. Default `"auto"`.
|
|
418
|
+
*/
|
|
419
|
+
reveal?: ViewerReveal;
|
|
355
420
|
/** Optional 3D Tiles manifest used instead of loading `modelUrl` monolithically. */
|
|
356
421
|
tilesetUrl?: string | null;
|
|
357
422
|
/** Screen-space error target for streamed 3D Tiles. Lower is sharper. */
|
|
@@ -375,6 +440,15 @@ type ModelViewerProps = GroupedModelViewerProps & {
|
|
|
375
440
|
*/
|
|
376
441
|
objectBindings?: Record<string, ObjectBinding> | "auto";
|
|
377
442
|
selectedObject?: ObjectBinding | null;
|
|
443
|
+
/**
|
|
444
|
+
* Binding keys of several selected objects. Each is outlined in green.
|
|
445
|
+
* While set, the single-selection (blue) outline is hidden.
|
|
446
|
+
*/
|
|
447
|
+
multiSelectedKeys?: readonly string[];
|
|
448
|
+
/** Explicit nodes to outline together, overriding multiSelectedKeys. */
|
|
449
|
+
selectedObjectRefs?: Object3D[] | null;
|
|
450
|
+
/** Color of the multi-selection outlines. Defaults to green. */
|
|
451
|
+
selectedObjectOutlineColor?: string;
|
|
378
452
|
panelHoveredObject?: ObjectBinding | null;
|
|
379
453
|
onObjectBindingsChange?: (next: Record<string, ObjectBinding>) => void;
|
|
380
454
|
onObjectSelect?: (binding: ObjectBinding | null) => void;
|
|
@@ -385,6 +459,8 @@ type ModelViewerProps = GroupedModelViewerProps & {
|
|
|
385
459
|
* texture positioning when that's enabled.
|
|
386
460
|
*/
|
|
387
461
|
onObjectDoubleClick?: (event: ObjectPointerEvent) => boolean | void;
|
|
462
|
+
/** A decal on the model was double-clicked (the editor uses this to enable Move). */
|
|
463
|
+
onDecalDoubleClick?: (binding: ObjectBinding, decalId: string) => void;
|
|
388
464
|
/**
|
|
389
465
|
* An object was right-clicked or, on touch screens, long-pressed. Use it to
|
|
390
466
|
* open your own menu at `clientX`/`clientY`. A right-drag still pans.
|
|
@@ -409,6 +485,7 @@ type ModelViewerProps = GroupedModelViewerProps & {
|
|
|
409
485
|
onViewerReady?: (viewer: ViewerReadyState) => void;
|
|
410
486
|
onTextureUpload?: (file: File, objectId: string) => Promise<string>;
|
|
411
487
|
onAnimationsReady?: (controls: AnimationControls) => void;
|
|
488
|
+
onModelAnimationsReady?: (url: string, controls: AnimationControls) => void;
|
|
412
489
|
onAnnotationsChange?: (annotations: AnnotationMarker[]) => void;
|
|
413
490
|
activeAnnotation?: AnnotationMarker | null;
|
|
414
491
|
onActiveAnnotationChange?: (annotation: AnnotationMarker | null) => void;
|
|
@@ -438,14 +515,24 @@ type ModelViewerProps = GroupedModelViewerProps & {
|
|
|
438
515
|
onAutoFit?: () => Promise<boolean>;
|
|
439
516
|
enableCameraControls?: boolean;
|
|
440
517
|
moveModeEnabled?: boolean;
|
|
518
|
+
/** Shows a draggable corner handle to resize the selected object, independently of moveModeEnabled. */
|
|
519
|
+
scaleModeEnabled?: boolean;
|
|
441
520
|
/** Aligns PivotControls to the scene or to the selected object. */
|
|
442
521
|
objectTransformSpace?: ObjectTransformSpace;
|
|
443
522
|
/** Enables canvas-focused camera shortcuts. Disabled by default. */
|
|
444
523
|
enableKeyboardNavigation?: boolean;
|
|
524
|
+
/**
|
|
525
|
+
* Cuts motion the viewer starts on its own: auto-rotate and cinematic
|
|
526
|
+
* autoplay don't start, and camera moves jump instead of gliding. `"user"`
|
|
527
|
+
* (default) follows the visitor's `prefers-reduced-motion` setting;
|
|
528
|
+
* `"always"` and `"never"` override it.
|
|
529
|
+
*/
|
|
530
|
+
reducedMotion?: ReducedMotionSetting;
|
|
445
531
|
refitOnResize?: boolean;
|
|
446
532
|
renderMode?: "always" | "demand";
|
|
447
533
|
maxDpr?: number;
|
|
448
534
|
preserveDrawingBuffer?: boolean;
|
|
535
|
+
webgpu?: boolean;
|
|
449
536
|
performanceProfile?: PerformanceProfile;
|
|
450
537
|
dracoDecoderPath?: string | false;
|
|
451
538
|
ktx2TranscoderPath?: string | false;
|
|
@@ -458,6 +545,7 @@ type ModelViewerProps = GroupedModelViewerProps & {
|
|
|
458
545
|
showIsolateControls?: boolean;
|
|
459
546
|
showSectionTools?: boolean;
|
|
460
547
|
showMaterialVariants?: boolean;
|
|
548
|
+
showObjectNavigator?: boolean;
|
|
461
549
|
cinematic?: boolean | CinematicConfig;
|
|
462
550
|
measurementUnit?: string;
|
|
463
551
|
enableXR?: boolean;
|
|
@@ -466,6 +554,9 @@ type ModelViewerProps = GroupedModelViewerProps & {
|
|
|
466
554
|
mobileHandoffUrl?: string;
|
|
467
555
|
showAnnotationNavigation?: boolean;
|
|
468
556
|
showAnnotationOnHover?: boolean;
|
|
557
|
+
showAnnotationFilters?: boolean;
|
|
558
|
+
annotationCategories?: string[] | null;
|
|
559
|
+
onAnnotationCategoriesChange?: (categories: string[] | null) => void;
|
|
469
560
|
onSceneConfigChange?: (config: SceneConfig) => void;
|
|
470
561
|
showViewGizmo?: boolean;
|
|
471
562
|
/**
|
|
@@ -492,6 +583,36 @@ type ModelViewerProps = GroupedModelViewerProps & {
|
|
|
492
583
|
* binding's `style.material.texture`.
|
|
493
584
|
*/
|
|
494
585
|
texturePositioning?: boolean | TexturePositioningControls;
|
|
586
|
+
extraModelUrls?: string[];
|
|
587
|
+
onExtraModelError?: (url: string, error: unknown) => void;
|
|
588
|
+
onExtraModelLoaded?: (url: string, scene: Object3D) => void;
|
|
589
|
+
originalNodePoses?: Record<string, {
|
|
590
|
+
position: [number, number, number];
|
|
591
|
+
rotation?: [number, number, number];
|
|
592
|
+
scale?: [number, number, number];
|
|
593
|
+
}>;
|
|
594
|
+
/** Each entry supplies its own bindings. Uncontrolled edits are kept per URL. */
|
|
595
|
+
models?: ModelViewerModelEntry[];
|
|
596
|
+
mergeModels?: ModelMergeSource[];
|
|
597
|
+
onMergeModelLoaded?: (url: string, mergedRoot: Object3D) => void;
|
|
598
|
+
onMergeModelError?: (url: string, error: unknown) => void;
|
|
599
|
+
/** Selects a model from the switcher. The switcher is hidden when omitted. */
|
|
600
|
+
onModelChange?: (url: string) => void;
|
|
601
|
+
};
|
|
602
|
+
type ModelViewerModelEntry = {
|
|
603
|
+
url: string;
|
|
604
|
+
/** Display name for the model switcher; falls back to the URL's filename. */
|
|
605
|
+
label?: string;
|
|
606
|
+
/** Bindings for this model; used in preference to top-level objectBindings. */
|
|
607
|
+
objectBindings: Record<string, ObjectBinding>;
|
|
608
|
+
originalNodePoses?: Record<string, {
|
|
609
|
+
position: [number, number, number];
|
|
610
|
+
rotation?: [number, number, number];
|
|
611
|
+
scale?: [number, number, number];
|
|
612
|
+
}>;
|
|
613
|
+
mergeModels?: ModelMergeSource[];
|
|
614
|
+
/** Scene settings for this slot while parked; the active slot uses the viewer's sceneConfig. */
|
|
615
|
+
sceneConfig?: SceneConfig;
|
|
495
616
|
};
|
|
496
617
|
|
|
497
|
-
export { type AnnotationMarker as A, type CameraControllerType as C, type DecalMoveTarget as D, type GroupedModelViewerProps as G, type HomeCameraState as H, MODEL_VIEWER_PRESETS as M, type ObjectTransformSpace as O, type PerformanceProfile as P, type TexturePositioningControls as T, type UseViewerCameraOptions as U, type ViewerCameraPreset as V, type XRScaleMode as X, type CameraLimits as a, type CaptureImageOptions as b, type CaptureVideoOptions as c, type CinematicConfig as d, type CinematicWaypoint as e, type CustomObjectBindingDataPanelProps as f, type CustomSceneObjectsPanelProps as g, type
|
|
618
|
+
export { type AnnotationMarker as A, type CameraControllerType as C, type DecalMoveTarget as D, type GroupedModelViewerProps as G, type HomeCameraState as H, MODEL_VIEWER_PRESETS as M, type ObjectTransformSpace as O, type PerformanceProfile as P, type TexturePositioningControls as T, type UseViewerCameraOptions as U, type ViewerCameraPreset as V, type XRScaleMode as X, type CameraLimits as a, type CaptureImageOptions as b, type CaptureVideoOptions as c, type CinematicConfig as d, type CinematicWaypoint as e, type CustomObjectBindingDataPanelProps as f, type CustomSceneObjectsPanelProps as g, type ModelMergeSource as h, type ModelViewerControlsOptions as i, type ModelViewerDecoderOptions as j, type ModelViewerModelEntry as k, type ModelViewerPerfOptions as l, type ModelViewerPreset as m, type ModelViewerProps as n, type ModelViewerTilesOptions as o, type ModelViewerToolsOptions as p, type ModelViewerUiOptions as q, type ModelViewerXrOptions as r, type MouseControllerPosition as s, type ViewerCameraProps as t, type ViewerEngagementEvent as u, type ViewerReadyState as v, useViewerCamera as w };
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { ReactNode } from 'react';
|
|
2
|
-
import { r as ObjectBindingDecal, Q as ObjectSurfacePoint, o as ObjectBinding, al as ViewerCameraState, U as SceneAnnotationMarker, n as ObjectActionEvent, an as ViewerObjectInfo, P as ObjectPointerEvent, e as AnimationControls, ak as ViewerCameraConfig, Z as SceneConfig, am as ViewerIsolation } from './objectCatalog-BIeXURoq.js';
|
|
3
|
-
import { M as ModelFormat, a as ViewerModelInfo } from './modelInfo-DnkmTGMd.js';
|
|
4
|
-
import { CameraControls } from '@react-three/drei';
|
|
5
2
|
import { Object3D } from 'three';
|
|
3
|
+
import { R as ReducedMotionSetting, c as ModelViewerLabels } from './materialVariants-DjTuiWmN.mjs';
|
|
4
|
+
import { V as ViewerLoading, c as ViewerReveal, M as ModelFormat, b as ViewerModelInfo } from './modelInfo-CcYpydB7.mjs';
|
|
5
|
+
import { r as ObjectBindingDecal, Q as ObjectSurfacePoint, o as ObjectBinding, S as RendererBackend, ap as ViewerCameraState, Y as SceneAnnotationMarker, ar as ViewerObjectInfo, P as ObjectPointerEvent, n as ObjectActionEvent, e as AnimationControls, ao as ViewerCameraConfig, a1 as SceneConfig, aq as ViewerIsolation } from './rendererBackend-C_Jb4_Jy.mjs';
|
|
6
|
+
import { CameraControls } from '@react-three/drei';
|
|
6
7
|
|
|
7
8
|
/** Engagement from deliberate viewer interactions, with model/session context. */
|
|
8
9
|
type ViewerEngagementEvent = {
|
|
@@ -19,11 +20,15 @@ type ViewerEngagementEvent = {
|
|
|
19
20
|
objectId: string;
|
|
20
21
|
objectKey: string;
|
|
21
22
|
label?: string;
|
|
22
|
-
source: "canvas" | "panel";
|
|
23
|
+
source: "canvas" | "panel" | "keyboard";
|
|
23
24
|
} | {
|
|
24
25
|
type: "variant-chosen";
|
|
26
|
+
/** The variant chosen; null when a group's choice was cleared. */
|
|
25
27
|
variant: string | null;
|
|
28
|
+
/** The group's previous choice. */
|
|
26
29
|
previousVariant: string | null;
|
|
30
|
+
/** The option group's name; null for a group without one. */
|
|
31
|
+
group: string | null;
|
|
27
32
|
} | {
|
|
28
33
|
type: "ar-started";
|
|
29
34
|
} | {
|
|
@@ -107,10 +112,17 @@ type ModelViewerUiOptions = {
|
|
|
107
112
|
annotationNavigation?: boolean;
|
|
108
113
|
/** Show an annotation's details when its marker is hovered. Default `false`. */
|
|
109
114
|
annotationOnHover?: boolean;
|
|
115
|
+
/** Category filter chips. Default `true` when annotations have categories. */
|
|
116
|
+
annotationFilters?: boolean;
|
|
110
117
|
/** Highlight objects under the pointer. Default `true`. */
|
|
111
118
|
highlightOnHover?: boolean;
|
|
112
|
-
/**
|
|
119
|
+
/** Swatch rows for the model's glTF material variants, one per option group. Default `true`. */
|
|
113
120
|
materialVariants?: boolean;
|
|
121
|
+
/**
|
|
122
|
+
* A tab stop for moving through and selecting objects with the keyboard,
|
|
123
|
+
* shown only while it has focus. Default `true`.
|
|
124
|
+
*/
|
|
125
|
+
objectNavigator?: boolean;
|
|
114
126
|
};
|
|
115
127
|
/**
|
|
116
128
|
* Takes over parts of texture positioning (`texturePositioning`). Fields left
|
|
@@ -151,13 +163,19 @@ type ModelViewerControlsOptions = {
|
|
|
151
163
|
enabled?: boolean;
|
|
152
164
|
/** Move the camera with the keyboard while the canvas has focus. Default `false`. */
|
|
153
165
|
keyboard?: boolean;
|
|
166
|
+
/**
|
|
167
|
+
* Cut motion the viewer starts on its own (auto-rotate, cinematic autoplay,
|
|
168
|
+
* camera glides). `"user"` follows the visitor's reduced-motion setting.
|
|
169
|
+
* Default `"user"`.
|
|
170
|
+
*/
|
|
171
|
+
reducedMotion?: ReducedMotionSetting;
|
|
154
172
|
/** Allow zooming. Default `true`. */
|
|
155
173
|
zoom?: boolean;
|
|
156
174
|
/** Zoom to an object when it's selected. Default `true`. */
|
|
157
175
|
zoomOnSelect?: boolean;
|
|
158
176
|
/** Turn the model slowly; a number sets the speed (1 is normal). Default `false`. */
|
|
159
177
|
autoRotate?: boolean | number;
|
|
160
|
-
/** Re-frame the model when the viewer is resized. Default `true`. */
|
|
178
|
+
/** Re-frame the model, or the selected object it zoomed to, when the viewer is resized. Default `true`. */
|
|
161
179
|
refitOnResize?: boolean;
|
|
162
180
|
/** Distance, angle and pan limits for the camera. */
|
|
163
181
|
limits?: CameraLimits;
|
|
@@ -175,6 +193,12 @@ type ModelViewerPerfOptions = {
|
|
|
175
193
|
profile?: PerformanceProfile;
|
|
176
194
|
/** Needed for Download PNG and captureImage; costs GPU time. Default `false`. */
|
|
177
195
|
preserveDrawingBuffer?: boolean;
|
|
196
|
+
/**
|
|
197
|
+
* Draw with three's WebGPU renderer where the browser has WebGPU, WebGL
|
|
198
|
+
* elsewhere. Leaves out post-processing effects, contact shadows and WebXR.
|
|
199
|
+
* Default `false`.
|
|
200
|
+
*/
|
|
201
|
+
webgpu?: boolean;
|
|
178
202
|
};
|
|
179
203
|
type ModelViewerTilesOptions = {
|
|
180
204
|
/** A 3D Tiles `tileset.json` to stream instead of loading `modelUrl` whole. */
|
|
@@ -256,14 +280,25 @@ type CaptureImageOptions = {
|
|
|
256
280
|
type CaptureVideoOptions = {
|
|
257
281
|
/** Defaults to cinematic when a path is enabled, otherwise turntable. */
|
|
258
282
|
mode?: "cinematic" | "turntable";
|
|
259
|
-
/**
|
|
260
|
-
|
|
261
|
-
|
|
283
|
+
/**
|
|
284
|
+
* Auto prefers WebM, then MP4. `"gif"` makes an animated GIF that loops
|
|
285
|
+
* forever. Explicit formats reject if unsupported.
|
|
286
|
+
*/
|
|
287
|
+
format?: "auto" | "webm" | "mp4" | "gif";
|
|
288
|
+
/**
|
|
289
|
+
* Seconds per pass, in (0, 300]. Defaults to path timing, or an orbit of
|
|
290
|
+
* 24s (8s for a GIF).
|
|
291
|
+
*/
|
|
262
292
|
duration?: number;
|
|
263
|
-
/** Capture frame rate, from 1 to 60. Default 30. */
|
|
293
|
+
/** Capture frame rate, from 1 to 60. Default 30 (15 for a GIF). */
|
|
264
294
|
fps?: number;
|
|
265
|
-
/** Encoder target bitrate in bits per second. Default 8,000,000. */
|
|
295
|
+
/** Encoder target bitrate in bits per second. Default 8,000,000. Not used for GIFs. */
|
|
266
296
|
videoBitsPerSecond?: number;
|
|
297
|
+
/**
|
|
298
|
+
* GIF width in pixels, from 16 to 4096; the height follows the canvas. Never
|
|
299
|
+
* wider than the canvas. Default 480.
|
|
300
|
+
*/
|
|
301
|
+
gifWidth?: number;
|
|
267
302
|
/** Aborting discards the recording and restores the viewer. */
|
|
268
303
|
signal?: AbortSignal;
|
|
269
304
|
};
|
|
@@ -297,6 +332,11 @@ type ViewerReadyState = {
|
|
|
297
332
|
/** Records one cinematic pass or turntable revolution as a video Blob. */
|
|
298
333
|
captureVideo: (options?: CaptureVideoOptions) => Promise<Blob>;
|
|
299
334
|
invalidate: () => void;
|
|
335
|
+
/**
|
|
336
|
+
* The renderer drawing the viewer: "webgpu" only when ModelViewer's
|
|
337
|
+
* `webgpu` asked for it and the browser has WebGPU.
|
|
338
|
+
*/
|
|
339
|
+
rendererBackend: RendererBackend;
|
|
300
340
|
/**
|
|
301
341
|
* The live three.js scene, camera-controls instance, and model nodes, for
|
|
302
342
|
* integrations the rest of the API doesn't cover. Their shapes are those
|
|
@@ -334,6 +374,11 @@ declare function useViewerCamera(options?: UseViewerCameraOptions): ViewerCamera
|
|
|
334
374
|
|
|
335
375
|
type ObjectTransformSpace = "local" | "world";
|
|
336
376
|
|
|
377
|
+
type ModelMergeSource = {
|
|
378
|
+
url: string;
|
|
379
|
+
namePrefix: string;
|
|
380
|
+
};
|
|
381
|
+
|
|
337
382
|
type AnnotationMarker = SceneAnnotationMarker & {
|
|
338
383
|
markerId?: string;
|
|
339
384
|
};
|
|
@@ -351,7 +396,27 @@ type CustomSceneObjectsPanelProps = {
|
|
|
351
396
|
onHover?: (binding: ObjectBinding | null) => void;
|
|
352
397
|
};
|
|
353
398
|
type ModelViewerProps = GroupedModelViewerProps & {
|
|
399
|
+
/** Plain-text overrides for built-in UI labels. Missing keys use English. */
|
|
400
|
+
labels?: ModelViewerLabels;
|
|
354
401
|
modelUrl: string;
|
|
402
|
+
/**
|
|
403
|
+
* An image shown in the viewer's place until its 3D view is drawn: a render
|
|
404
|
+
* or photo of the model, best framed as the viewer frames it. Fitted inside
|
|
405
|
+
* the viewer; set the CSS variable `--ri-poster-fit: cover` to fill it.
|
|
406
|
+
*/
|
|
407
|
+
poster?: string;
|
|
408
|
+
/**
|
|
409
|
+
* `"lazy"` (default) starts the 3D view when the viewer is on or near the
|
|
410
|
+
* screen. When the page needs room for viewers in view, one scrolled away
|
|
411
|
+
* from goes back to a picture of itself, and comes back as it was. `"eager"`
|
|
412
|
+
* starts at once and keeps its view.
|
|
413
|
+
*/
|
|
414
|
+
loading?: ViewerLoading;
|
|
415
|
+
/**
|
|
416
|
+
* `"interaction"` keeps the poster, with a "View in 3D" button, until the
|
|
417
|
+
* visitor asks for the 3D view. Default `"auto"`.
|
|
418
|
+
*/
|
|
419
|
+
reveal?: ViewerReveal;
|
|
355
420
|
/** Optional 3D Tiles manifest used instead of loading `modelUrl` monolithically. */
|
|
356
421
|
tilesetUrl?: string | null;
|
|
357
422
|
/** Screen-space error target for streamed 3D Tiles. Lower is sharper. */
|
|
@@ -375,6 +440,15 @@ type ModelViewerProps = GroupedModelViewerProps & {
|
|
|
375
440
|
*/
|
|
376
441
|
objectBindings?: Record<string, ObjectBinding> | "auto";
|
|
377
442
|
selectedObject?: ObjectBinding | null;
|
|
443
|
+
/**
|
|
444
|
+
* Binding keys of several selected objects. Each is outlined in green.
|
|
445
|
+
* While set, the single-selection (blue) outline is hidden.
|
|
446
|
+
*/
|
|
447
|
+
multiSelectedKeys?: readonly string[];
|
|
448
|
+
/** Explicit nodes to outline together, overriding multiSelectedKeys. */
|
|
449
|
+
selectedObjectRefs?: Object3D[] | null;
|
|
450
|
+
/** Color of the multi-selection outlines. Defaults to green. */
|
|
451
|
+
selectedObjectOutlineColor?: string;
|
|
378
452
|
panelHoveredObject?: ObjectBinding | null;
|
|
379
453
|
onObjectBindingsChange?: (next: Record<string, ObjectBinding>) => void;
|
|
380
454
|
onObjectSelect?: (binding: ObjectBinding | null) => void;
|
|
@@ -385,6 +459,8 @@ type ModelViewerProps = GroupedModelViewerProps & {
|
|
|
385
459
|
* texture positioning when that's enabled.
|
|
386
460
|
*/
|
|
387
461
|
onObjectDoubleClick?: (event: ObjectPointerEvent) => boolean | void;
|
|
462
|
+
/** A decal on the model was double-clicked (the editor uses this to enable Move). */
|
|
463
|
+
onDecalDoubleClick?: (binding: ObjectBinding, decalId: string) => void;
|
|
388
464
|
/**
|
|
389
465
|
* An object was right-clicked or, on touch screens, long-pressed. Use it to
|
|
390
466
|
* open your own menu at `clientX`/`clientY`. A right-drag still pans.
|
|
@@ -409,6 +485,7 @@ type ModelViewerProps = GroupedModelViewerProps & {
|
|
|
409
485
|
onViewerReady?: (viewer: ViewerReadyState) => void;
|
|
410
486
|
onTextureUpload?: (file: File, objectId: string) => Promise<string>;
|
|
411
487
|
onAnimationsReady?: (controls: AnimationControls) => void;
|
|
488
|
+
onModelAnimationsReady?: (url: string, controls: AnimationControls) => void;
|
|
412
489
|
onAnnotationsChange?: (annotations: AnnotationMarker[]) => void;
|
|
413
490
|
activeAnnotation?: AnnotationMarker | null;
|
|
414
491
|
onActiveAnnotationChange?: (annotation: AnnotationMarker | null) => void;
|
|
@@ -438,14 +515,24 @@ type ModelViewerProps = GroupedModelViewerProps & {
|
|
|
438
515
|
onAutoFit?: () => Promise<boolean>;
|
|
439
516
|
enableCameraControls?: boolean;
|
|
440
517
|
moveModeEnabled?: boolean;
|
|
518
|
+
/** Shows a draggable corner handle to resize the selected object, independently of moveModeEnabled. */
|
|
519
|
+
scaleModeEnabled?: boolean;
|
|
441
520
|
/** Aligns PivotControls to the scene or to the selected object. */
|
|
442
521
|
objectTransformSpace?: ObjectTransformSpace;
|
|
443
522
|
/** Enables canvas-focused camera shortcuts. Disabled by default. */
|
|
444
523
|
enableKeyboardNavigation?: boolean;
|
|
524
|
+
/**
|
|
525
|
+
* Cuts motion the viewer starts on its own: auto-rotate and cinematic
|
|
526
|
+
* autoplay don't start, and camera moves jump instead of gliding. `"user"`
|
|
527
|
+
* (default) follows the visitor's `prefers-reduced-motion` setting;
|
|
528
|
+
* `"always"` and `"never"` override it.
|
|
529
|
+
*/
|
|
530
|
+
reducedMotion?: ReducedMotionSetting;
|
|
445
531
|
refitOnResize?: boolean;
|
|
446
532
|
renderMode?: "always" | "demand";
|
|
447
533
|
maxDpr?: number;
|
|
448
534
|
preserveDrawingBuffer?: boolean;
|
|
535
|
+
webgpu?: boolean;
|
|
449
536
|
performanceProfile?: PerformanceProfile;
|
|
450
537
|
dracoDecoderPath?: string | false;
|
|
451
538
|
ktx2TranscoderPath?: string | false;
|
|
@@ -458,6 +545,7 @@ type ModelViewerProps = GroupedModelViewerProps & {
|
|
|
458
545
|
showIsolateControls?: boolean;
|
|
459
546
|
showSectionTools?: boolean;
|
|
460
547
|
showMaterialVariants?: boolean;
|
|
548
|
+
showObjectNavigator?: boolean;
|
|
461
549
|
cinematic?: boolean | CinematicConfig;
|
|
462
550
|
measurementUnit?: string;
|
|
463
551
|
enableXR?: boolean;
|
|
@@ -466,6 +554,9 @@ type ModelViewerProps = GroupedModelViewerProps & {
|
|
|
466
554
|
mobileHandoffUrl?: string;
|
|
467
555
|
showAnnotationNavigation?: boolean;
|
|
468
556
|
showAnnotationOnHover?: boolean;
|
|
557
|
+
showAnnotationFilters?: boolean;
|
|
558
|
+
annotationCategories?: string[] | null;
|
|
559
|
+
onAnnotationCategoriesChange?: (categories: string[] | null) => void;
|
|
469
560
|
onSceneConfigChange?: (config: SceneConfig) => void;
|
|
470
561
|
showViewGizmo?: boolean;
|
|
471
562
|
/**
|
|
@@ -492,6 +583,36 @@ type ModelViewerProps = GroupedModelViewerProps & {
|
|
|
492
583
|
* binding's `style.material.texture`.
|
|
493
584
|
*/
|
|
494
585
|
texturePositioning?: boolean | TexturePositioningControls;
|
|
586
|
+
extraModelUrls?: string[];
|
|
587
|
+
onExtraModelError?: (url: string, error: unknown) => void;
|
|
588
|
+
onExtraModelLoaded?: (url: string, scene: Object3D) => void;
|
|
589
|
+
originalNodePoses?: Record<string, {
|
|
590
|
+
position: [number, number, number];
|
|
591
|
+
rotation?: [number, number, number];
|
|
592
|
+
scale?: [number, number, number];
|
|
593
|
+
}>;
|
|
594
|
+
/** Each entry supplies its own bindings. Uncontrolled edits are kept per URL. */
|
|
595
|
+
models?: ModelViewerModelEntry[];
|
|
596
|
+
mergeModels?: ModelMergeSource[];
|
|
597
|
+
onMergeModelLoaded?: (url: string, mergedRoot: Object3D) => void;
|
|
598
|
+
onMergeModelError?: (url: string, error: unknown) => void;
|
|
599
|
+
/** Selects a model from the switcher. The switcher is hidden when omitted. */
|
|
600
|
+
onModelChange?: (url: string) => void;
|
|
601
|
+
};
|
|
602
|
+
type ModelViewerModelEntry = {
|
|
603
|
+
url: string;
|
|
604
|
+
/** Display name for the model switcher; falls back to the URL's filename. */
|
|
605
|
+
label?: string;
|
|
606
|
+
/** Bindings for this model; used in preference to top-level objectBindings. */
|
|
607
|
+
objectBindings: Record<string, ObjectBinding>;
|
|
608
|
+
originalNodePoses?: Record<string, {
|
|
609
|
+
position: [number, number, number];
|
|
610
|
+
rotation?: [number, number, number];
|
|
611
|
+
scale?: [number, number, number];
|
|
612
|
+
}>;
|
|
613
|
+
mergeModels?: ModelMergeSource[];
|
|
614
|
+
/** Scene settings for this slot while parked; the active slot uses the viewer's sceneConfig. */
|
|
615
|
+
sceneConfig?: SceneConfig;
|
|
495
616
|
};
|
|
496
617
|
|
|
497
|
-
export { type AnnotationMarker as A, type CameraControllerType as C, type DecalMoveTarget as D, type GroupedModelViewerProps as G, type HomeCameraState as H, MODEL_VIEWER_PRESETS as M, type ObjectTransformSpace as O, type PerformanceProfile as P, type TexturePositioningControls as T, type UseViewerCameraOptions as U, type ViewerCameraPreset as V, type XRScaleMode as X, type CameraLimits as a, type CaptureImageOptions as b, type CaptureVideoOptions as c, type CinematicConfig as d, type CinematicWaypoint as e, type CustomObjectBindingDataPanelProps as f, type CustomSceneObjectsPanelProps as g, type
|
|
618
|
+
export { type AnnotationMarker as A, type CameraControllerType as C, type DecalMoveTarget as D, type GroupedModelViewerProps as G, type HomeCameraState as H, MODEL_VIEWER_PRESETS as M, type ObjectTransformSpace as O, type PerformanceProfile as P, type TexturePositioningControls as T, type UseViewerCameraOptions as U, type ViewerCameraPreset as V, type XRScaleMode as X, type CameraLimits as a, type CaptureImageOptions as b, type CaptureVideoOptions as c, type CinematicConfig as d, type CinematicWaypoint as e, type CustomObjectBindingDataPanelProps as f, type CustomSceneObjectsPanelProps as g, type ModelMergeSource as h, type ModelViewerControlsOptions as i, type ModelViewerDecoderOptions as j, type ModelViewerModelEntry as k, type ModelViewerPerfOptions as l, type ModelViewerPreset as m, type ModelViewerProps as n, type ModelViewerTilesOptions as o, type ModelViewerToolsOptions as p, type ModelViewerUiOptions as q, type ModelViewerXrOptions as r, type MouseControllerPosition as s, type ViewerCameraProps as t, type ViewerEngagementEvent as u, type ViewerReadyState as v, useViewerCamera as w };
|
|
@@ -105,10 +105,11 @@ type SceneModelConfig = {
|
|
|
105
105
|
autoRotate?: boolean;
|
|
106
106
|
autoRotateSpeed?: number;
|
|
107
107
|
/**
|
|
108
|
-
* The glTF material
|
|
109
|
-
*
|
|
108
|
+
* The glTF material variants (KHR_materials_variants) to show, by name: at
|
|
109
|
+
* most one from each option group (see `MaterialVariantGroup`). Empty, or
|
|
110
|
+
* left out, for the model's default materials.
|
|
110
111
|
*/
|
|
111
|
-
|
|
112
|
+
activeVariants?: string[];
|
|
112
113
|
};
|
|
113
114
|
type SceneCameraConfig = {
|
|
114
115
|
fieldOfView: number;
|
|
@@ -360,6 +361,22 @@ type ScenePostProcessingConfig = {
|
|
|
360
361
|
rampInvert: boolean;
|
|
361
362
|
};
|
|
362
363
|
};
|
|
364
|
+
type SceneAnnotationCameraView = {
|
|
365
|
+
position: [number, number, number];
|
|
366
|
+
target: [number, number, number];
|
|
367
|
+
azimuthAngle?: number;
|
|
368
|
+
polarAngle?: number;
|
|
369
|
+
fov?: number | null;
|
|
370
|
+
zoom?: number;
|
|
371
|
+
};
|
|
372
|
+
type SceneAnnotationImage = {
|
|
373
|
+
src: string;
|
|
374
|
+
alt?: string;
|
|
375
|
+
};
|
|
376
|
+
type SceneAnnotationLink = {
|
|
377
|
+
href: string;
|
|
378
|
+
label: string;
|
|
379
|
+
};
|
|
363
380
|
type SceneAnnotationMarker = {
|
|
364
381
|
id: number;
|
|
365
382
|
worldPosition: [number, number, number];
|
|
@@ -369,6 +386,14 @@ type SceneAnnotationMarker = {
|
|
|
369
386
|
anchorLocalPosition?: [number, number, number];
|
|
370
387
|
title: string;
|
|
371
388
|
description: string;
|
|
389
|
+
/** World-space camera framing restored on selection and during tours. */
|
|
390
|
+
cameraView?: SceneAnnotationCameraView;
|
|
391
|
+
images?: SceneAnnotationImage[];
|
|
392
|
+
links?: SceneAnnotationLink[];
|
|
393
|
+
category?: string;
|
|
394
|
+
/** Inclusive camera-to-marker distance bounds, in scene units. */
|
|
395
|
+
minDistance?: number;
|
|
396
|
+
maxDistance?: number;
|
|
372
397
|
};
|
|
373
398
|
type SceneCinematicWaypoint = {
|
|
374
399
|
position: [number, number, number];
|
|
@@ -568,6 +593,8 @@ type ViewerAnimationsProps = {
|
|
|
568
593
|
setSpeed: (speed: number, clipName?: string) => void;
|
|
569
594
|
seek: (time: number, clipName?: string) => void;
|
|
570
595
|
handleAnimationsReady: (controls: AnimationControls) => void;
|
|
596
|
+
/** Disconnect the previous model while the next one is loading. */
|
|
597
|
+
clearAnimations: () => void;
|
|
571
598
|
};
|
|
572
599
|
declare function useViewerAnimations(): ViewerAnimationsProps;
|
|
573
600
|
|
|
@@ -709,12 +736,23 @@ type ObjectBindingTextureSlot = {
|
|
|
709
736
|
};
|
|
710
737
|
type ObjectBindingTextureChannel = "baseColor" | "metalness" | "roughness" | "emissive" | "alpha" | "normal" | "bump" | "ao" | "displacement" | "clearcoat" | "clearcoatRoughness" | "clearcoatNormal" | "anisotropy" | "transmission" | "thickness" | "sheenColor" | "sheenRoughness" | "specularIntensity" | "specularColor";
|
|
711
738
|
type ObjectBindingTransform = {
|
|
712
|
-
/** Local
|
|
739
|
+
/** Local xy/xz/yz shear, applied between rotation and scale. Preserves rigid world edits under non-uniform parents. */
|
|
740
|
+
shear?: [number, number, number];
|
|
741
|
+
/** Local-space node-origin position, or the reference-pose position when pivot is set. */
|
|
713
742
|
position?: [number, number, number];
|
|
714
743
|
/** Local-space Euler rotation in radians. */
|
|
715
744
|
rotation?: [number, number, number];
|
|
716
745
|
/** Local-space scale. */
|
|
717
746
|
scale?: [number, number, number];
|
|
747
|
+
/**
|
|
748
|
+
* Opt-in centered editing. Legacy transforms without this field remain direct
|
|
749
|
+
* local P/R/S. The reference offset keeps position independent of later
|
|
750
|
+
* rotation/scale edits: rendered origin = position + offset - R * H * S * point (H is shear).
|
|
751
|
+
*/
|
|
752
|
+
pivot?: {
|
|
753
|
+
point: [number, number, number];
|
|
754
|
+
offset: [number, number, number];
|
|
755
|
+
};
|
|
718
756
|
};
|
|
719
757
|
declare const MATERIAL_SIDES: readonly ["front", "back", "double"];
|
|
720
758
|
type ObjectBindingMaterialSide = (typeof MATERIAL_SIDES)[number];
|
|
@@ -819,6 +857,7 @@ type ObjectBinding = {
|
|
|
819
857
|
group?: string;
|
|
820
858
|
tags?: string[];
|
|
821
859
|
status?: ObjectBindingStatus;
|
|
860
|
+
removed?: boolean;
|
|
822
861
|
visible?: boolean;
|
|
823
862
|
selectable?: boolean;
|
|
824
863
|
hoverable?: boolean;
|
|
@@ -872,4 +911,7 @@ type ViewerObjectInfo = {
|
|
|
872
911
|
maximum: [number, number, number];
|
|
873
912
|
};
|
|
874
913
|
|
|
875
|
-
|
|
914
|
+
/** Which three.js renderer draws a viewer. */
|
|
915
|
+
type RendererBackend = "webgl" | "webgpu";
|
|
916
|
+
|
|
917
|
+
export { type SceneCinematicConfig as $, type AnimationAction as A, type BindingEdit as B, type CameraAction as C, DEFAULT_SCENE_CONFIG as D, type EnvironmentPreset as E, type ObjectBindingTextureChannel as F, type GlitchModeName as G, type ObjectBindingTextureSlot as H, type IsolatedObjectBindings as I, type ObjectBindingTransform as J, type KernelSizeName as K, type ObjectBindingType as L, MATERIAL_BLENDING_MODES as M, type ObjectBindingsActionEffect as N, type ObjectActionEffect as O, type ObjectPointerEvent as P, type ObjectSurfacePoint as Q, type RampTypeName as R, type RendererBackend as S, type SceneAnimationClipConfig as T, type SceneAnimationConfig as U, type SceneAnnotationCameraView as V, type SceneAnnotationImage as W, type SceneAnnotationLink as X, type SceneAnnotationMarker as Y, type SceneBackgroundConfig as Z, type SceneCameraConfig as _, type AnimationActionEffect as a, type SceneCinematicWaypoint as a0, type SceneConfig as a1, type SceneConfigActionEffect as a2, type SceneConfigPatch as a3, type SceneEnvironmentConfig as a4, type SceneGroundShadowConfig as a5, type SceneLight as a6, type SceneLightAttachment as a7, type SceneLightType as a8, type SceneLightingConfig as a9, selectBindingKeys as aA, selectBindings as aB, useViewerAnimations as aC, type SceneModelConfig as aa, type SceneModelRenderer as ab, type ScenePostProcessingConfig as ac, type SceneSectionAxis as ad, type SceneSectionConfig as ae, type SceneShadowConfig as af, type SceneStyleColorScale as ag, type SceneStyleCondition as ah, type SceneStylePulse as ai, type SceneStyleRule as aj, type SceneWireframeConfig as ak, type StyledObjectBindings as al, type StyledObjectPulse as am, type ViewerAnimationsProps as an, type ViewerCameraConfig as ao, type ViewerCameraState as ap, type ViewerIsolation as aq, type ViewerObjectInfo as ar, type VisibilityActionEffect as as, applyIsolation as at, applyStyleRules as au, colorScaleValue as av, isolatedBindingKeys as aw, material as ax, patchBindings as ay, patchSceneConfig as az, type AnimationClipInfo as b, type AnimationClipState as c, type AnimationClipStatus as d, type AnimationControls as e, type AnimationLoopMode as f, type AnimationPlayOptions as g, type AnimationPlaybackState as h, type CameraActionEffect as i, DEFAULT_SECTION_CONFIG as j, type DeepPartial as k, type IsolationActionEffect as l, MATERIAL_SIDES as m, type ObjectActionEvent as n, type ObjectBinding as o, type ObjectBindingAction as p, type ObjectBindingCameraState as q, type ObjectBindingDecal as r, type ObjectBindingMaterial as s, type ObjectBindingMaterialBlendingMode as t, type ObjectBindingMaterialSide as u, type ObjectBindingPatch as v, type ObjectBindingSelector as w, type ObjectBindingStatus as x, type ObjectBindingStyle as y, type ObjectBindingTarget as z };
|