illutions 0.27.0 → 0.28.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/CHANGELOG.md CHANGED
@@ -1,5 +1,32 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.28.0
4
+
5
+ ### Added
6
+
7
+ - Added `Mesh3D.animMaterialColor()`, `Mesh3D.animMaterialNumeric()`, and `Mesh3D.setMaterialProperties()` as object-bound counterparts to the existing `Engine` material methods.
8
+ - Added the optional `needsUpdate` parameter to `Engine.animMaterialNumeric()`, `Engine.setMaterialProperties()`, `Mesh3D.animMaterialNumeric()`, and `Mesh3D.setMaterialProperties()` to request material recompilation.
9
+ - Added degree-based horizontal orbit constraints through `orbitCtrls.minAzimuthAngle` and `orbitCtrls.maxAzimuthAngle`.
10
+ - Added `ModelLoadedEvent` with `Model_Loaded` for a single model and numbered `Model1_Loaded`, `Model2_Loaded`, etc. events for progressive models.
11
+ - Added the `Model_Ready` event after the final progressive model variant has been applied and rendered.
12
+ - Added the exported `Collider` configuration and `Raycast.setColliders()` and `Raycast.clearColliders()` to configure named scene objects or `Obj3D` instances as occluders, pickables, or hidden colliders.
13
+
14
+ ### Changed
15
+
16
+ - Replaced `Raycast.setOccluders()`, `Raycast.resetOccluders()`, `Raycast.trackPickables()`, and `Raycast.untrackPickables()` with the unified collider API.
17
+ - Renamed `Raycast.enable()` and `Raycast.disable()` to `Raycast.enablePickables()` and `Raycast.disablePickables()`.
18
+ - Renamed `raycast.occlInterval` to `raycast.occludeeInterval` and `raycast.occlMoveFactor` to `raycast.occlusionMoveFactor`.
19
+ - Changed progressive `ModelLoadingEvent` and `SceneRenderedEvent` types to numbered `Model1_Loading`, `Scene1_Rendered`, etc. events; unnumbered events remain available for a single model.
20
+ - Removed the `level` property from `ModelLoadingEvent`; the progressive model level is now identified by the event type.
21
+ - Removed the obsolete `fct` property from `ClipEvent`.
22
+ - Changed pointer raycasts so that registered occluders block pickables behind them.
23
+
24
+ ### Fixed
25
+
26
+ - Corrected `CanvasPointerEvent` to expose `Canvas_Click`, `Canvas_Pointer_Enter`, and `Canvas_Pointer_Leave`.
27
+ - Added the already emitted `FpvCtrls_Disposed` event to `FpvCtrlsEvent`.
28
+ - Delayed the postprocessing noise check until `Model_Ready` so that postprocessing is not disabled before the final progressive model variant is rendered.
29
+
3
30
  ## 0.27.0
4
31
 
5
32
  ### Added
@@ -132,4 +159,4 @@
132
159
 
133
160
  ### Changed
134
161
 
135
- - Added `cfg.audio.enable` to the configuration.
162
+ - Added `cfg.audio.enable` to the configuration.
package/README.md CHANGED
@@ -3,6 +3,11 @@
3
3
  illutions is a proprietary Web 3D engine for building interactive browser-based
4
4
  3D applications with Three.js, XState, GSAP, Tweakpane and more.
5
5
 
6
+ ## Gallery
7
+
8
+ Explore all illutions examples in the GitHub Gallery:
9
+ [https://github.com/illutions](https://github.com/illutions)
10
+
6
11
  ## Highlights
7
12
 
8
13
  **Advanced post-processing**
@@ -11,6 +16,9 @@ Add configurable SSAO, SSR, FXAA and SMAA pipelines for WebGL and WebGPU, plus T
11
16
  **Advanced animation control**
12
17
  Coordinate GLTF animation clips, GSAP transitions, camera paths and custom dolly-rig camera workflows.
13
18
 
19
+ **Progressive model and HDRI loading**
20
+ Load ordered model levels and environment maps progressively for faster initial presentation and seamless quality upgrades.
21
+
14
22
  **XState-powered application logic**
15
23
  Model complex application flows as predictable and inspectable state machines with integrated XState 5 usage.
16
24
 
@@ -32,6 +40,9 @@ Use pointer-based raycasting and distance-aware spatial audio.
32
40
  **Flexible environments**
33
41
  Load HDR, EXR and texture environments with configurable rotation, intensity and background controls.
34
42
 
43
+ **Intelligent web markers**
44
+ Keep screen-space markers responsive with optimized occlusion checks, configurable occluders and movement-aware updates.
45
+
35
46
  **Runtime insights and debugging**
36
47
  Inspect runtime properties, FPS, CPU and renderer statistics with detailed state, event and console reporting.
37
48
 
package/dist/main.d.ts CHANGED
@@ -108,6 +108,7 @@ export declare class App<TClasses extends Classes = {}> {
108
108
  readonly audio: Audio_2;
109
109
  private readonly compCtrls;
110
110
  readonly engine: Engine;
111
+ private readonly lib;
111
112
  readonly envCtrls: EnvCtrls;
112
113
  readonly events: Events;
113
114
  readonly orbitCtrls: OrbitCtrls;
@@ -449,7 +450,7 @@ export declare interface CanvasKeyEvent {
449
450
  /** @event Fired when the user uses the pointer on the canvas and triggers the corresponding XState event. */
450
451
  export declare interface CanvasPointerEvent {
451
452
  /** Identifies this event type. */
452
- type: 'Canvas_Click' | 'Canvas_Pointer_Down' | 'Canvas_Pointer_Move' | 'Canvas_Pointer_Up';
453
+ type: 'Canvas_Click' | 'Canvas_Pointer_Enter' | 'Canvas_Pointer_Leave';
453
454
  /** Native pointer event from the canvas interaction. */
454
455
  event: PointerEvent;
455
456
  }
@@ -516,14 +517,24 @@ export declare interface ClipEvent {
516
517
  type: 'Clip_Start' | 'Clip_Complete' | 'Clip_Cancel' | 'Clip_Fade_Start' | 'Clip_Fade_Complete' | 'Clip_Speed_Start' | 'Clip_Speed_Complete';
517
518
  /** The name of the affected `THREE.AnimationClip`. */
518
519
  clipName: string;
519
- /** The name of the calling method. */
520
- fct: string;
521
520
  /** The associated animation action, when available. */
522
521
  action?: THREE_TYPE.AnimationAction;
523
522
  /** Whether the clip weight is fading in or out. */
524
523
  fadeMode?: ActionFadeMode;
525
524
  }
526
525
 
526
+ /** Defines how a scene object participates in raycasting. */
527
+ export declare interface Collider {
528
+ /** Scene object or scene-object name used for raycasting. */
529
+ obj: Obj3D | string;
530
+ /** Hides the object while it is registered as a collider. */
531
+ hide?: boolean;
532
+ /** Allows the object to occlude tracked occludees and pickables. */
533
+ occluder?: boolean;
534
+ /** Allows the object to emit pointer events. */
535
+ pickable?: boolean;
536
+ }
537
+
527
538
  declare type ColorNode = THREE_WEBGPU_TYPE.Node<'vec4'>;
528
539
 
529
540
  /**
@@ -673,6 +684,7 @@ export declare class Engine {
673
684
  /* Excluded from this release type: scene */
674
685
  private readonly cam3D;
675
686
  private readonly events;
687
+ private readonly lib;
676
688
  private readonly modules;
677
689
  private readonly objs3D;
678
690
  private readonly cfg;
@@ -705,6 +717,7 @@ export declare class Engine {
705
717
  private hemisphereLight;
706
718
  private powerMode;
707
719
  private postNoise;
720
+ private postNoiseCheck;
708
721
  private dTs;
709
722
  private dT;
710
723
  private dTFrameMax;
@@ -787,7 +800,7 @@ export declare class Engine {
787
800
  *
788
801
  * {@link AnimEvent}
789
802
  */
790
- animMaterialColor({ mesh, duration, ease, ...colorProps }: {
803
+ animMaterialColor({ mesh, ...params }: {
791
804
  mesh: string;
792
805
  duration?: number;
793
806
  ease?: string;
@@ -803,6 +816,7 @@ export declare class Engine {
803
816
  * @param params.infinite - If `true`, the animation loops infinitely. Default: **false**
804
817
  * @param params.duration - The animation duration in seconds. Default: **0**
805
818
  * @param params.ease - The easing function name for GSAP. Default: **'power1.inOut'**
819
+ * @param params.needsUpdate - Requests one material recompilation when the animation starts. Default: **false**
806
820
  *
807
821
  * @remarks
808
822
  * Additional properties of `params` can specify one or more material numeric fields to animate (e.g. `metalness`, `roughness`, `opacity`, ...) with their target numeric values. Only the **first** provided
@@ -812,12 +826,13 @@ export declare class Engine {
812
826
  *
813
827
  * {@link AnimFadeEvent}
814
828
  */
815
- animMaterialNumeric({ mesh, startValue, infinite, duration, ease, ...props }: {
829
+ animMaterialNumeric({ mesh, needsUpdate, ...params }: {
816
830
  mesh: string;
817
831
  startValue?: number | null;
818
832
  infinite?: boolean;
819
833
  duration?: number;
820
834
  ease?: string;
835
+ needsUpdate?: boolean;
821
836
  [key: string]: any;
822
837
  }): void;
823
838
  private calcEaseArea;
@@ -990,13 +1005,15 @@ export declare class Engine {
990
1005
  *
991
1006
  * @param params - Parameter object for setting material properties.
992
1007
  * @param params.obj - The name of the mesh whose material properties should be modified.
1008
+ * @param params.needsUpdate - Requests material recompilation after applying the properties. Default: **false**
993
1009
  *
994
1010
  * @remarks
995
1011
  * Additional properties of `params` can define one or more material fields to update (e.g. `color`, `roughness`, `metalness`, `map`, `emissiveMap`, ...), each with its target value. Texture paths provided
996
1012
  * as strings are loaded asynchronously and assigned to the corresponding material slots. Unsupported or mismatched property types are ignored with a warning in debug mode.
997
1013
  */
998
- setMaterialProperties({ obj, ...props }: {
1014
+ setMaterialProperties({ obj, needsUpdate, ...props }: {
999
1015
  obj: string;
1016
+ needsUpdate?: boolean;
1000
1017
  [key: string]: any;
1001
1018
  }): void;
1002
1019
  /* Excluded from this release type: setPostWebGl */
@@ -1204,7 +1221,9 @@ export declare class Events {
1204
1221
  /* Excluded from this release type: audioLoaded */
1205
1222
  /* Excluded from this release type: clip */
1206
1223
  /* Excluded from this release type: modelError */
1224
+ /* Excluded from this release type: modelLoaded */
1207
1225
  /* Excluded from this release type: modelLoading */
1226
+ /* Excluded from this release type: sceneRendered */
1208
1227
  /**
1209
1228
  * Sends an event to the state machine and optionally logs a debug message to the console.
1210
1229
  * @param event - Any XState event object (must include a `type` property) to be dispatched to the actor.
@@ -1392,7 +1411,7 @@ export declare interface FpvCtrlsCfg {
1392
1411
  /** @event Fired when an `FpvCtrls` event occurs and triggers the corresponding XState event. */
1393
1412
  export declare interface FpvCtrlsEvent {
1394
1413
  /** Identifies this event type. */
1395
- type: 'FpvCtrls_Disabled' | 'FpvCtrls_Enabled' | 'FpvCtrls_Lock' | 'FpvCtrls_Unlock';
1414
+ type: 'FpvCtrls_Disabled' | 'FpvCtrls_Disposed' | 'FpvCtrls_Enabled' | 'FpvCtrls_Lock' | 'FpvCtrls_Unlock';
1396
1415
  }
1397
1416
 
1398
1417
  /**
@@ -1522,6 +1541,8 @@ export declare interface InfoBoxCfg {
1522
1541
  logsPerSecond: number;
1523
1542
  }
1524
1543
 
1544
+ /* Excluded from this release type: Lib */
1545
+
1525
1546
  /**
1526
1547
  * The `Light3D` class represents a managed light source.
1527
1548
  * @category 3D Objects
@@ -1639,7 +1660,46 @@ export declare class Mesh3D extends Obj3D {
1639
1660
  groundReflector: ReflectorForSSRPass | null;
1640
1661
  /** Objects that participate in the screen-space reflection (SSR) effect. These objects are used for reflective rendering in the scene. */
1641
1662
  reflectivesSSR: THREE_TYPE.Object3D[];
1663
+ /* Excluded from this release type: lib */
1642
1664
  /* Excluded from this release type: __constructor */
1665
+ /**
1666
+ * Animates one or more color properties of this mesh's material.
1667
+ * @param params - Animation parameters and target material color properties such as `color` or `emissive`.
1668
+ * @param params.duration - Animation duration in seconds. Default: **0**
1669
+ * @param params.ease - GSAP easing function name. Default: **'power1.inOut'**
1670
+ */
1671
+ animMaterialColor(params: {
1672
+ duration?: number;
1673
+ ease?: string;
1674
+ } & {
1675
+ [key: string]: string | number | THREE_TYPE.Color;
1676
+ }): void;
1677
+ /**
1678
+ * Animates the first numeric material property passed for this mesh.
1679
+ * @param params - Animation parameters and the target numeric material property.
1680
+ * @param params.startValue - Starting value. Defaults to the current material value.
1681
+ * @param params.infinite - Whether the animation repeats indefinitely. Default: **false**
1682
+ * @param params.duration - Animation duration in seconds. Default: **0**
1683
+ * @param params.ease - GSAP easing function name. Default: **'power1.inOut'**
1684
+ * @param params.needsUpdate - Requests one material recompilation when the animation starts. Default: **false**
1685
+ */
1686
+ animMaterialNumeric({ needsUpdate, ...params }: {
1687
+ startValue?: number | null;
1688
+ infinite?: boolean;
1689
+ duration?: number;
1690
+ ease?: string;
1691
+ needsUpdate?: boolean;
1692
+ [key: string]: any;
1693
+ }): void;
1694
+ /**
1695
+ * Updates one or more material properties of this mesh.
1696
+ * @param properties - Material properties to update. Texture paths are supported for `map` and `emissiveMap`.
1697
+ * @param properties.needsUpdate - Requests material recompilation after applying the properties. Default: **false**
1698
+ */
1699
+ setMaterialProperties({ needsUpdate, ...properties }: {
1700
+ needsUpdate?: boolean;
1701
+ [key: string]: any;
1702
+ }): void;
1643
1703
  /**
1644
1704
  * Called for each traversed mesh during GLTF parsing. Stores the current `THREE.Mesh` in `this.obj`.
1645
1705
  * @param objGltf - The currently traversed mesh.
@@ -1717,14 +1777,24 @@ export declare interface ModelErrorEvent {
1717
1777
  error: Error;
1718
1778
  }
1719
1779
 
1780
+ /** @event Fired after a model asset has finished loading and parsing. */
1781
+ export declare interface ModelLoadedEvent {
1782
+ /** Identifies the loaded model. */
1783
+ type: 'Model_Loaded' | `Model${number}_Loaded`;
1784
+ }
1785
+
1720
1786
  /** @event Fired while model assets are loading and triggers the corresponding XState event. */
1721
1787
  export declare interface ModelLoadingEvent {
1722
- /** Identifies this event type. */
1723
- type: 'Model_Loading';
1788
+ /** Identifies the loading model. */
1789
+ type: 'Model_Loading' | `Model${number}_Loading`;
1724
1790
  /** Loading progress in percent (0-100). */
1725
1791
  loading: number;
1726
- /** One-based index of the model level currently loading. */
1727
- level: number;
1792
+ }
1793
+
1794
+ /** @event Fired after the final progressive model variant has been applied and rendered and triggers the corresponding XState event. */
1795
+ export declare interface ModelReadyEvent {
1796
+ /** Identifies this event type. */
1797
+ type: 'Model_Ready';
1728
1798
  }
1729
1799
 
1730
1800
  declare class Modules {
@@ -1980,6 +2050,12 @@ export declare interface Obj3DVisibleEvent {
1980
2050
 
1981
2051
  export declare type Objs3D = Cam3D | Light3D | Mesh3D | Obj3D;
1982
2052
 
2053
+ declare interface OccludeeState {
2054
+ obj: THREE_TYPE.Object3D;
2055
+ needsCheck: boolean;
2056
+ visible: boolean;
2057
+ }
2058
+
1983
2059
  /**
1984
2060
  * Integrates three.js OrbitControls directly in the engine's render loop, supporting runtime updates and dynamic enabling/disabling.
1985
2061
  * @category Core
@@ -2081,6 +2157,11 @@ export declare interface OrbitCtrlsCfg {
2081
2157
  * @default false
2082
2158
  */
2083
2159
  load: boolean;
2160
+ /**
2161
+ * Maximum allowed horizontal orbit angle in degrees.
2162
+ * @default Infinity
2163
+ */
2164
+ maxAzimuthAngle: number;
2084
2165
  /**
2085
2166
  * Maximum allowed distance between the camera and the target.
2086
2167
  * @default Infinity
@@ -2091,6 +2172,11 @@ export declare interface OrbitCtrlsCfg {
2091
2172
  * @default 180
2092
2173
  */
2093
2174
  maxPolarAngle: number;
2175
+ /**
2176
+ * Minimum allowed horizontal orbit angle in degrees.
2177
+ * @default -Infinity
2178
+ */
2179
+ minAzimuthAngle: number;
2094
2180
  /**
2095
2181
  * Minimum allowed distance between the camera and the target.
2096
2182
  * @default 0
@@ -2168,9 +2254,7 @@ export declare interface ProgressBarHiddenEvent {
2168
2254
  }
2169
2255
 
2170
2256
  /**
2171
- * The Raycast class manages pointer-based raycasting in a `THREE.Scene`. It tracks specified objects, detects cursor intersections with them, and triggers intersection and non-intersection events via
2172
- * the application state. The class dynamically enables or disables pointer listeners depending on the number of tracked objects. It also handles pointer events (click, down, up, move, enter, leave) for the
2173
- * intersected 3D objects.
2257
+ * Manages collider-based occlusion and pointer picking in a `THREE.Scene`. Collider roles determine which objects block rays, emit pointer events, or remain hidden while participating in raycasting.
2174
2258
  * @category Core
2175
2259
  */
2176
2260
  export declare class Raycast {
@@ -2178,19 +2262,23 @@ export declare class Raycast {
2178
2262
  private readonly canvas;
2179
2263
  private readonly cfg;
2180
2264
  private readonly engine;
2265
+ private readonly events;
2181
2266
  private readonly objs3D;
2182
2267
  private raycasterPick;
2183
2268
  private raycasterVisible;
2269
+ private colliders;
2270
+ private objsColliders;
2184
2271
  private objsOccluders;
2185
- private readonly objsOccls;
2186
- private readonly objsPickables;
2272
+ private readonly objsOccludees;
2273
+ private hasPickables;
2274
+ private useSceneAsOccluder;
2187
2275
  private objActive;
2188
2276
  private objCandidate;
2189
2277
  private closestObjCounter;
2190
- private indexOcclNext;
2191
- private timeOcclNext;
2192
- private isEnabled;
2193
- private callbackOccls;
2278
+ private indexOccludeeNext;
2279
+ private pickablesEnabled;
2280
+ private timeOccludeeNext;
2281
+ private callbackOccludees;
2194
2282
  private callbackPointerHover;
2195
2283
  private listenerClick;
2196
2284
  private listenerCancel;
@@ -2205,14 +2293,19 @@ export declare class Raycast {
2205
2293
  private dirCamToObj;
2206
2294
  private posNdcPointer;
2207
2295
  /* Excluded from this release type: __constructor */
2208
- private checkOcclVisible;
2209
- /** Enables pointer-based raycasting and adds all necessary pointer event listeners and the frame update callback. */
2210
- enable(): void;
2211
- /** Disables pointer-based raycasting and removes all pointer event listeners and the frame update callback. */
2212
- disable(): void;
2296
+ private checkOccludeeVisible;
2297
+ /** Removes all colliders and restores scene objects hidden by `setColliders()`. */
2298
+ clearColliders(): void;
2299
+ /** Enables pickable raycasting and its pointer event listeners. */
2300
+ enablePickables(): void;
2301
+ /** Disables pickable raycasting without removing the collider configuration. */
2302
+ disablePickables(): void;
2303
+ private getColliderState;
2304
+ private getPickableHit;
2213
2305
  private getObjAtPointer;
2214
- private getOcclState;
2215
- /* Excluded from this release type: getOcclVisible */
2306
+ private emitPointerEvent;
2307
+ /* Excluded from this release type: getOccludeeState */
2308
+ /* Excluded from this release type: getOccludeeVisible */
2216
2309
  private onCanvasClick;
2217
2310
  private onCanvasPointerLeave;
2218
2311
  private onCanvasPointerMove;
@@ -2220,49 +2313,20 @@ export declare class Raycast {
2220
2313
  private onCanvasPointerDown;
2221
2314
  private onCanvasPointerExit;
2222
2315
  private onCanvasPointerUp;
2223
- private onPointerEnter;
2224
- private onPointerLeave;
2225
- private onPointerMove;
2226
- /* Excluded from this release type: resetOcclState */
2227
- /** Removes the explicit occlusion-object restriction so that all scene objects are checked again. */
2228
- resetOccluders(): void;
2229
- /**
2230
- * Restricts occlusion raycasts to the specified scene objects. Without an explicit restriction, all scene objects are checked.
2231
- *
2232
- * @param params - Parameter object.
2233
- * @param params.objs3D - The `Obj3D` instances that may block visibility.
2234
- */
2235
- setOccluders({ objs3D }: {
2236
- objs3D: Obj3D[];
2237
- }): void;
2238
- /* Excluded from this release type: trackOccl */
2239
- /**
2240
- * Begins tracking a list of scene objects for pointer intersection detection. If the raycaster is not yet listening for pointer movements, this method automatically attaches pointer event listeners
2241
- * (`pointermove`, `click`, `pointercancel`, `pointerdown`, `pointerleave`, `pointerup`).
2242
- *
2243
- * @param params - Parameter object.
2244
- * @param params.objs3D - The `Obj3D` instances to track.
2245
- */
2246
- trackPickables({ objs3D }: {
2247
- objs3D: Obj3D[];
2248
- }): void;
2249
- /* Excluded from this release type: untrackOccl */
2250
2316
  /**
2251
- * Stops tracking the specified scene objects for ray intersection detection. It automatically removes the pointer event listeners if no tracked objects remain.
2252
- *
2253
- * @param params - Parameter object.
2254
- * @param params.objs3D - The `Obj3D` instances to untrack.
2317
+ * Replaces the current raycast colliders. The complete scene is used for occlusion until this method or `clearColliders()` is called for the first time.
2318
+ * @param colliders - Scene objects and their occluder, pickable, and visibility roles.
2255
2319
  */
2256
- untrackPickables({ objs3D }: {
2257
- objs3D: Obj3D[];
2258
- }): void;
2320
+ setColliders(colliders: Collider[]): void;
2321
+ /* Excluded from this release type: trackOccludee */
2322
+ /* Excluded from this release type: untrackOccludee */
2259
2323
  /**
2260
2324
  * Registers and executes a low-level extension function with access to the public `Raycast` API.
2261
2325
  * @param extension - Function that receives the current `Raycast` instance and can use its public members and methods.
2262
2326
  * @remarks This method is intended for advanced custom integrations where developers need direct access to the engine instance. The extension is executed once immediately when `use()` is called.
2263
2327
  */
2264
2328
  use(extension: (raycast: Raycast) => void): void;
2265
- private updateOccls;
2329
+ private updateOccludees;
2266
2330
  private updatePointerHover;
2267
2331
  private updatePointerPosition;
2268
2332
  }
@@ -2272,16 +2336,6 @@ export declare class Raycast {
2272
2336
  * @category Cfg
2273
2337
  */
2274
2338
  export declare interface RaycastCfg {
2275
- /**
2276
- * Time in milliseconds over which all pending occlusion checks are distributed once. A value of `0` processes all pending checks in one frame.
2277
- * @default 0
2278
- */
2279
- occlInterval: number;
2280
- /**
2281
- * Relative movement threshold used to request a new occlusion check. The value is multiplied by the current distance between the camera and the tracked object. A value of `0` reacts to every position change.
2282
- * @default 0.01
2283
- */
2284
- occlMoveFactor: number;
2285
2339
  /**
2286
2340
  * Circle radius around the pointer in pixels.
2287
2341
  * @default 10
@@ -2297,6 +2351,16 @@ export declare interface RaycastCfg {
2297
2351
  * @default 5
2298
2352
  */
2299
2353
  countClosestObjs: number;
2354
+ /**
2355
+ * Time in milliseconds over which all pending occludee checks are distributed once. A value of `0` processes all pending checks in one frame.
2356
+ * @default 0
2357
+ */
2358
+ occludeeInterval: number;
2359
+ /**
2360
+ * Relative movement threshold used to request a new occlusion check. The value is multiplied by the current distance between the camera and the tracked occludee. A value of `0` reacts to every position change.
2361
+ * @default 0.01
2362
+ */
2363
+ occlusionMoveFactor: number;
2300
2364
  }
2301
2365
 
2302
2366
  /**
@@ -2436,10 +2500,10 @@ export declare interface SceneReadyEvent {
2436
2500
  type: 'Scene_Ready';
2437
2501
  }
2438
2502
 
2439
- /** @event Fired after the scene has been rendered for the first time and triggers the corresponding XState event. */
2503
+ /** @event Fired after the scene or a progressive scene variant has been rendered for the first time and triggers the corresponding XState event. */
2440
2504
  export declare interface SceneRenderedEvent {
2441
- /** Identifies this event type. */
2442
- type: 'Scene_Rendered';
2505
+ /** Identifies the rendered scene or progressive scene variant. */
2506
+ type: 'Scene_Rendered' | `Scene${number}_Rendered`;
2443
2507
  }
2444
2508
 
2445
2509
  /**