angular-three-soba 4.1.1 → 4.2.1

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.
@@ -16,6 +16,7 @@ npm install three-mesh-bvh
16
16
  - [NgtsAdaptiveEvents](#ngtsadaptiveevents)
17
17
  - [NgtsBVH](#ngtsbvh)
18
18
  - [NgtsDetailed](#ngtsdetailed)
19
+ - [NgtsLOD](#ngtslod)
19
20
  - [NgtsInstances](#ngtsinstances)
20
21
  - [NgtsSegments](#ngtssegments)
21
22
  - [NgtsPoints](#ngtspoints)
@@ -94,6 +95,52 @@ Implements Level of Detail (LOD) rendering. Automatically switches between diffe
94
95
  </ngts-detailed>
95
96
  ```
96
97
 
98
+ ## NgtsLOD
99
+
100
+ Implements Level of Detail (LOD) rendering. Automatically switches between different detail levels of child objects based on camera distance.
101
+
102
+ Unlike `NgtsDetailed`, this is an implementation based on Angular and angular-three APIs rather than Three's LOD class.
103
+ The component adds and remove objects from the scene graph rather than hiding them with `visible = false`.
104
+ This solves a number of issues such as avoid raycasting over hidden objects.
105
+
106
+ Usage:
107
+
108
+ ```html
109
+ <ngt-group lod [maxDistance]="10000">
110
+ <ngt-mesh *lodLevel />
111
+ <ngt-mesh *lodLevel="{distance: 100, hysteresis: 0.1}" />
112
+ <ngt-mesh *lodLevel="{distance: 1000}" />
113
+ </ngt-group>
114
+ ```
115
+
116
+ The `[lod]` directive (`NgtsLODImpl`) supports the following optional input:
117
+
118
+ | Property | Description | Default Value |
119
+ | ------------- | ----------------------------------------------------------------------------- | ------------- |
120
+ | `maxDistance` | Distance beyond which nothing is displayed (equivalent to a last empty level) | `undefined` |
121
+
122
+ The `[lodLevel]` directive (`NgtsLODLevel`) supports the following object inputs:
123
+
124
+ | Property | Description | Default Value |
125
+ | ------------ | ---------------------------------------------------- | ------------- |
126
+ | `distance` | Distance threshold above which to display the object | `0` |
127
+ | `hysteresis` | Prevents rapid switching near distance thresholds | `0` |
128
+
129
+ This directive may also be used with the following shorthand syntax:
130
+
131
+ ```html
132
+ <ngt-group lod>
133
+ <ng-template lodLevel>
134
+ <ngt-mesh />
135
+ <ngt-mesh />
136
+ </ng-template>
137
+ <ng-template [lodLevel]="{distance: 100}">
138
+ <ngt-mesh />
139
+ <ngt-mesh />
140
+ </ng-template>
141
+ </ngt-group>
142
+ ```
143
+
97
144
  ## NgtsInstances
98
145
 
99
146
  Efficiently renders many instances of the same geometry and material using a single draw call via `THREE.InstancedMesh`.
@@ -238,11 +238,9 @@ declare class NgtsCatmullRomLine {
238
238
  frustumCulled?: Readonly<boolean | undefined>;
239
239
  renderOrder?: Readonly<number | undefined>;
240
240
  animations?: THREE.AnimationClip[] | Readonly<THREE.AnimationClip[] | undefined>;
241
+ userData?: Record<string, any> | (Record<string, any> & Readonly<Record<string, any>>) | undefined;
241
242
  customDepthMaterial?: THREE.Material | Readonly<THREE.Material | undefined>;
242
243
  customDistanceMaterial?: THREE.Material | Readonly<THREE.Material | undefined>;
243
- static?: Readonly<boolean | undefined>;
244
- userData?: Record<string, any> | (Record<string, any> & Readonly<Record<string, any>>) | undefined;
245
- pivot?: THREE.Vector3 | Readonly<THREE.Vector3 | null | undefined>;
246
244
  onBeforeShadow?: ((renderer: THREE.WebGLRenderer, scene: THREE.Scene, camera: THREE.Camera, shadowCamera: THREE.Camera, geometry: THREE.BufferGeometry, depthMaterial: THREE.Material, group: THREE.Group) => void) | Readonly<((renderer: THREE.WebGLRenderer, scene: THREE.Scene, camera: THREE.Camera, shadowCamera: THREE.Camera, geometry: THREE.BufferGeometry, depthMaterial: THREE.Material, group: THREE.Group) => void) | undefined>;
247
245
  onAfterShadow?: ((renderer: THREE.WebGLRenderer, scene: THREE.Scene, camera: THREE.Camera, shadowCamera: THREE.Camera, geometry: THREE.BufferGeometry, depthMaterial: THREE.Material, group: THREE.Group) => void) | Readonly<((renderer: THREE.WebGLRenderer, scene: THREE.Scene, camera: THREE.Camera, shadowCamera: THREE.Camera, geometry: THREE.BufferGeometry, depthMaterial: THREE.Material, group: THREE.Group) => void) | undefined>;
248
246
  onBeforeRender?: ((((renderer: THREE.WebGLRenderer, scene: THREE.Scene, camera: THREE.Camera, geometry: THREE.BufferGeometry, material: THREE.Material, group: THREE.Group) => void) | Readonly<(renderer: THREE.WebGLRenderer, scene: THREE.Scene, camera: THREE.Camera, geometry: THREE.BufferGeometry, material: THREE.Material, group: THREE.Group) => void>) & (((renderer: THREE.WebGLRenderer, scene: THREE.Scene, camera: THREE.Camera, geometry: THREE.BufferGeometry, object: THREE.Object3D, group: THREE.Group) => void) | Readonly<(renderer: THREE.WebGLRenderer, scene: THREE.Scene, camera: THREE.Camera, geometry: THREE.BufferGeometry, object: THREE.Object3D, group: THREE.Group) => void>)) | undefined;
@@ -293,8 +291,6 @@ declare class NgtsCatmullRomLine {
293
291
  toJSON?: ((((meta?: THREE.JSONMeta) => THREE.MeshJSON) | Readonly<(meta?: THREE.JSONMeta) => THREE.MeshJSON>) & (((meta?: THREE.JSONMeta) => THREE.ShaderMaterialJSON) | Readonly<(meta?: THREE.JSONMeta) => THREE.ShaderMaterialJSON>)) | undefined;
294
292
  clone?: ((((recursive?: boolean) => three_stdlib.Line2) | Readonly<(recursive?: boolean) => three_stdlib.Line2>) & ((() => three_stdlib.LineMaterial) | Readonly<() => three_stdlib.LineMaterial>)) | undefined;
295
293
  copy?: ((((object: THREE.Object3D, recursive?: boolean) => three_stdlib.Line2) | Readonly<(object: THREE.Object3D, recursive?: boolean) => three_stdlib.Line2>) & (((source: THREE.Material) => three_stdlib.LineMaterial) | Readonly<(source: THREE.Material) => three_stdlib.LineMaterial>)) | undefined;
296
- count?: Readonly<number | undefined>;
297
- occlusionTest?: Readonly<boolean | undefined>;
298
294
  addEventListener?: ((((<T extends keyof THREE.Object3DEventMap>(type: T, listener: THREE.EventListener<THREE.Object3DEventMap[T], T, three_stdlib.Line2>) => void) | Readonly<(<T extends keyof THREE.Object3DEventMap>(type: T, listener: THREE.EventListener<THREE.Object3DEventMap[T], T, three_stdlib.Line2>) => void) | undefined>) & (<TEventKey extends keyof angular_three.NgtEventHandlers | "added" | "removed" | "childadded" | "childremoved" | "change" | keyof angular_three.NgtNodeEventMap<three_stdlib.Line2>>(type: TEventKey, listener: (this: angular_three.NgtNodeElement<typeof three_stdlib.Line2, three_stdlib.Line2>, ev: angular_three.NgtAllObject3DEventsMap<three_stdlib.Line2>[TEventKey]) => any) => void)) & (((<T extends "dispose">(type: T, listener: THREE.EventListener<{
299
295
  dispose: {};
300
296
  }[T], T, three_stdlib.LineMaterial>) => void) | Readonly<(<T extends "dispose">(type: T, listener: THREE.EventListener<{
@@ -318,7 +314,7 @@ declare class NgtsCatmullRomLine {
318
314
  dispose?: (((() => void) | Readonly<() => void> | null) & (((() => void) & (() => void)) | Readonly<(() => void) & (() => void)>)) | undefined;
319
315
  parameters?: ((Partial<three_stdlib.Line2> | Readonly<Partial<three_stdlib.Line2>>) & (Partial<three_stdlib.LineMaterial> | Readonly<Partial<three_stdlib.LineMaterial>>)) | undefined;
320
316
  color?: THREE.ColorRepresentation | undefined;
321
- blending?: 0 | 1 | 2 | 3 | 4 | 5 | 6 | undefined;
317
+ blending?: 0 | 1 | 2 | 3 | 4 | 5 | undefined;
322
318
  side?: 0 | 1 | 2 | undefined;
323
319
  opacity?: number | undefined;
324
320
  transparent?: boolean | undefined;
@@ -379,6 +375,7 @@ declare class NgtsCatmullRomLine {
379
375
  } | Readonly<{
380
376
  [key: string]: number;
381
377
  } | undefined>;
378
+ count?: Readonly<number | undefined>;
382
379
  updateMorphTargets?: (() => void) | Readonly<(() => void) | undefined>;
383
380
  getVertexPosition?: ((index: number, target: THREE.Vector3) => THREE.Vector3) | Readonly<((index: number, target: THREE.Vector3) => THREE.Vector3) | undefined>;
384
381
  isLineMaterial?: true | undefined;
@@ -537,21 +534,19 @@ declare class NgtsEdges {
537
534
  frustumCulled?: Readonly<boolean | undefined>;
538
535
  renderOrder?: Readonly<number | undefined>;
539
536
  animations?: THREE.AnimationClip[] | Readonly<THREE.AnimationClip[] | undefined>;
537
+ userData?: Record<string, any> | (Readonly<Record<string, any>> & Record<string, any>) | undefined;
540
538
  customDepthMaterial?: THREE.Material | Readonly<THREE.Material | undefined>;
541
539
  customDistanceMaterial?: THREE.Material | Readonly<THREE.Material | undefined>;
542
- static?: Readonly<boolean | undefined>;
543
- userData?: Record<string, any> | (Readonly<Record<string, any>> & Record<string, any>) | undefined;
544
- pivot?: THREE.Vector3 | Readonly<THREE.Vector3 | null | undefined>;
545
- onBeforeShadow?: ((((renderer: THREE.WebGLRenderer, scene: THREE.Scene, camera: THREE.Camera, shadowCamera: THREE.Camera, geometry: THREE.BufferGeometry, depthMaterial: THREE.Material, group: THREE.Group) => void) | Readonly<(renderer: THREE.WebGLRenderer, scene: THREE.Scene, camera: THREE.Camera, shadowCamera: THREE.Camera, geometry: THREE.BufferGeometry, depthMaterial: THREE.Material, group: THREE.Group) => void>) & (((renderer: THREE.WebGLRenderer, scene: THREE.Scene, camera: THREE.Camera, shadowCamera: THREE.Camera, geometry: THREE.BufferGeometry, depthMaterial: THREE.Material, group: THREE.Group) => void) | Readonly<(renderer: THREE.WebGLRenderer, scene: THREE.Scene, camera: THREE.Camera, shadowCamera: THREE.Camera, geometry: THREE.BufferGeometry, depthMaterial: THREE.Material, group: THREE.Group) => void>)) | undefined;
546
- onAfterShadow?: ((((renderer: THREE.WebGLRenderer, scene: THREE.Scene, camera: THREE.Camera, shadowCamera: THREE.Camera, geometry: THREE.BufferGeometry, depthMaterial: THREE.Material, group: THREE.Group) => void) | Readonly<(renderer: THREE.WebGLRenderer, scene: THREE.Scene, camera: THREE.Camera, shadowCamera: THREE.Camera, geometry: THREE.BufferGeometry, depthMaterial: THREE.Material, group: THREE.Group) => void>) & (((renderer: THREE.WebGLRenderer, scene: THREE.Scene, camera: THREE.Camera, shadowCamera: THREE.Camera, geometry: THREE.BufferGeometry, depthMaterial: THREE.Material, group: THREE.Group) => void) | Readonly<(renderer: THREE.WebGLRenderer, scene: THREE.Scene, camera: THREE.Camera, shadowCamera: THREE.Camera, geometry: THREE.BufferGeometry, depthMaterial: THREE.Material, group: THREE.Group) => void>)) | undefined;
547
- onBeforeRender?: ((((renderer: THREE.WebGLRenderer, scene: THREE.Scene, camera: THREE.Camera, geometry: THREE.BufferGeometry, material: THREE.Material, group: THREE.Group) => void) | Readonly<(renderer: THREE.WebGLRenderer, scene: THREE.Scene, camera: THREE.Camera, geometry: THREE.BufferGeometry, material: THREE.Material, group: THREE.Group) => void>) & ((((renderer: THREE.WebGLRenderer, scene: THREE.Scene, camera: THREE.Camera, geometry: THREE.BufferGeometry, material: THREE.Material, group: THREE.Group) => void) | Readonly<(renderer: THREE.WebGLRenderer, scene: THREE.Scene, camera: THREE.Camera, geometry: THREE.BufferGeometry, material: THREE.Material, group: THREE.Group) => void>) & (((renderer: THREE.WebGLRenderer, scene: THREE.Scene, camera: THREE.Camera, geometry: THREE.BufferGeometry, object: THREE.Object3D, group: THREE.Group) => void) | Readonly<(renderer: THREE.WebGLRenderer, scene: THREE.Scene, camera: THREE.Camera, geometry: THREE.BufferGeometry, object: THREE.Object3D, group: THREE.Group) => void>))) | undefined;
548
- onAfterRender?: ((((renderer: THREE.WebGLRenderer, scene: THREE.Scene, camera: THREE.Camera, geometry: THREE.BufferGeometry, material: THREE.Material, group: THREE.Group) => void) | Readonly<(renderer: THREE.WebGLRenderer, scene: THREE.Scene, camera: THREE.Camera, geometry: THREE.BufferGeometry, material: THREE.Material, group: THREE.Group) => void>) & (((renderer: THREE.WebGLRenderer, scene: THREE.Scene, camera: THREE.Camera, geometry: THREE.BufferGeometry, material: THREE.Material, group: THREE.Group) => void) | Readonly<(renderer: THREE.WebGLRenderer, scene: THREE.Scene, camera: THREE.Camera, geometry: THREE.BufferGeometry, material: THREE.Material, group: THREE.Group) => void>)) | undefined;
549
- applyMatrix4?: ((((matrix: THREE.Matrix4) => void) | Readonly<(matrix: THREE.Matrix4) => void>) & (((matrix: THREE.Matrix4) => void) | Readonly<(matrix: THREE.Matrix4) => void>)) | undefined;
540
+ onBeforeShadow?: ((renderer: THREE.WebGLRenderer, scene: THREE.Scene, camera: THREE.Camera, shadowCamera: THREE.Camera, geometry: THREE.BufferGeometry, depthMaterial: THREE.Material, group: THREE.Group) => void) | Readonly<((renderer: THREE.WebGLRenderer, scene: THREE.Scene, camera: THREE.Camera, shadowCamera: THREE.Camera, geometry: THREE.BufferGeometry, depthMaterial: THREE.Material, group: THREE.Group) => void) | undefined>;
541
+ onAfterShadow?: ((renderer: THREE.WebGLRenderer, scene: THREE.Scene, camera: THREE.Camera, shadowCamera: THREE.Camera, geometry: THREE.BufferGeometry, depthMaterial: THREE.Material, group: THREE.Group) => void) | Readonly<((renderer: THREE.WebGLRenderer, scene: THREE.Scene, camera: THREE.Camera, shadowCamera: THREE.Camera, geometry: THREE.BufferGeometry, depthMaterial: THREE.Material, group: THREE.Group) => void) | undefined>;
542
+ onBeforeRender?: ((((renderer: THREE.WebGLRenderer, scene: THREE.Scene, camera: THREE.Camera, geometry: THREE.BufferGeometry, material: THREE.Material, group: THREE.Group) => void) | Readonly<(renderer: THREE.WebGLRenderer, scene: THREE.Scene, camera: THREE.Camera, geometry: THREE.BufferGeometry, material: THREE.Material, group: THREE.Group) => void>) & (((renderer: THREE.WebGLRenderer, scene: THREE.Scene, camera: THREE.Camera, geometry: THREE.BufferGeometry, object: THREE.Object3D, group: THREE.Group) => void) | Readonly<(renderer: THREE.WebGLRenderer, scene: THREE.Scene, camera: THREE.Camera, geometry: THREE.BufferGeometry, object: THREE.Object3D, group: THREE.Group) => void>)) | undefined;
543
+ onAfterRender?: ((renderer: THREE.WebGLRenderer, scene: THREE.Scene, camera: THREE.Camera, geometry: THREE.BufferGeometry, material: THREE.Material, group: THREE.Group) => void) | Readonly<((renderer: THREE.WebGLRenderer, scene: THREE.Scene, camera: THREE.Camera, geometry: THREE.BufferGeometry, material: THREE.Material, group: THREE.Group) => void) | undefined>;
544
+ applyMatrix4?: ((matrix: THREE.Matrix4) => void) | Readonly<((matrix: THREE.Matrix4) => void) | undefined>;
550
545
  applyQuaternion?: ((((quaternion: THREE.Quaternion) => THREE.Mesh<THREE.BufferGeometry<THREE.NormalBufferAttributes, THREE.BufferGeometryEventMap>, THREE.Material | THREE.Material[], THREE.Object3DEventMap>) | Readonly<(quaternion: THREE.Quaternion) => THREE.Mesh<THREE.BufferGeometry<THREE.NormalBufferAttributes, THREE.BufferGeometryEventMap>, THREE.Material | THREE.Material[], THREE.Object3DEventMap>>) & (((quaternion: THREE.Quaternion) => three_stdlib.Line2) | Readonly<(quaternion: THREE.Quaternion) => three_stdlib.Line2>)) | undefined;
551
- setRotationFromAxisAngle?: ((((axis: THREE.Vector3, angle: number) => void) | Readonly<(axis: THREE.Vector3, angle: number) => void>) & (((axis: THREE.Vector3, angle: number) => void) | Readonly<(axis: THREE.Vector3, angle: number) => void>)) | undefined;
552
- setRotationFromEuler?: ((((euler: THREE.Euler) => void) | Readonly<(euler: THREE.Euler) => void>) & (((euler: THREE.Euler) => void) | Readonly<(euler: THREE.Euler) => void>)) | undefined;
553
- setRotationFromMatrix?: ((((m: THREE.Matrix4) => void) | Readonly<(m: THREE.Matrix4) => void>) & (((m: THREE.Matrix4) => void) | Readonly<(m: THREE.Matrix4) => void>)) | undefined;
554
- setRotationFromQuaternion?: ((((q: THREE.Quaternion) => void) | Readonly<(q: THREE.Quaternion) => void>) & (((q: THREE.Quaternion) => void) | Readonly<(q: THREE.Quaternion) => void>)) | undefined;
546
+ setRotationFromAxisAngle?: ((axis: THREE.Vector3, angle: number) => void) | Readonly<((axis: THREE.Vector3, angle: number) => void) | undefined>;
547
+ setRotationFromEuler?: ((euler: THREE.Euler) => void) | Readonly<((euler: THREE.Euler) => void) | undefined>;
548
+ setRotationFromMatrix?: ((m: THREE.Matrix4) => void) | Readonly<((m: THREE.Matrix4) => void) | undefined>;
549
+ setRotationFromQuaternion?: ((q: THREE.Quaternion) => void) | Readonly<((q: THREE.Quaternion) => void) | undefined>;
555
550
  rotateOnAxis?: ((((axis: THREE.Vector3, angle: number) => THREE.Mesh<THREE.BufferGeometry<THREE.NormalBufferAttributes, THREE.BufferGeometryEventMap>, THREE.Material | THREE.Material[], THREE.Object3DEventMap>) | Readonly<(axis: THREE.Vector3, angle: number) => THREE.Mesh<THREE.BufferGeometry<THREE.NormalBufferAttributes, THREE.BufferGeometryEventMap>, THREE.Material | THREE.Material[], THREE.Object3DEventMap>>) & (((axis: THREE.Vector3, angle: number) => three_stdlib.Line2) | Readonly<(axis: THREE.Vector3, angle: number) => three_stdlib.Line2>)) | undefined;
556
551
  rotateOnWorldAxis?: ((((axis: THREE.Vector3, angle: number) => THREE.Mesh<THREE.BufferGeometry<THREE.NormalBufferAttributes, THREE.BufferGeometryEventMap>, THREE.Material | THREE.Material[], THREE.Object3DEventMap>) | Readonly<(axis: THREE.Vector3, angle: number) => THREE.Mesh<THREE.BufferGeometry<THREE.NormalBufferAttributes, THREE.BufferGeometryEventMap>, THREE.Material | THREE.Material[], THREE.Object3DEventMap>>) & (((axis: THREE.Vector3, angle: number) => three_stdlib.Line2) | Readonly<(axis: THREE.Vector3, angle: number) => three_stdlib.Line2>)) | undefined;
557
552
  rotateX?: ((((angle: number) => THREE.Mesh<THREE.BufferGeometry<THREE.NormalBufferAttributes, THREE.BufferGeometryEventMap>, THREE.Material | THREE.Material[], THREE.Object3DEventMap>) | Readonly<(angle: number) => THREE.Mesh<THREE.BufferGeometry<THREE.NormalBufferAttributes, THREE.BufferGeometryEventMap>, THREE.Material | THREE.Material[], THREE.Object3DEventMap>>) & (((angle: number) => three_stdlib.Line2) | Readonly<(angle: number) => three_stdlib.Line2>)) | undefined;
@@ -561,45 +556,37 @@ declare class NgtsEdges {
561
556
  translateX?: ((((distance: number) => THREE.Mesh<THREE.BufferGeometry<THREE.NormalBufferAttributes, THREE.BufferGeometryEventMap>, THREE.Material | THREE.Material[], THREE.Object3DEventMap>) | Readonly<(distance: number) => THREE.Mesh<THREE.BufferGeometry<THREE.NormalBufferAttributes, THREE.BufferGeometryEventMap>, THREE.Material | THREE.Material[], THREE.Object3DEventMap>>) & (((distance: number) => three_stdlib.Line2) | Readonly<(distance: number) => three_stdlib.Line2>)) | undefined;
562
557
  translateY?: ((((distance: number) => THREE.Mesh<THREE.BufferGeometry<THREE.NormalBufferAttributes, THREE.BufferGeometryEventMap>, THREE.Material | THREE.Material[], THREE.Object3DEventMap>) | Readonly<(distance: number) => THREE.Mesh<THREE.BufferGeometry<THREE.NormalBufferAttributes, THREE.BufferGeometryEventMap>, THREE.Material | THREE.Material[], THREE.Object3DEventMap>>) & (((distance: number) => three_stdlib.Line2) | Readonly<(distance: number) => three_stdlib.Line2>)) | undefined;
563
558
  translateZ?: ((((distance: number) => THREE.Mesh<THREE.BufferGeometry<THREE.NormalBufferAttributes, THREE.BufferGeometryEventMap>, THREE.Material | THREE.Material[], THREE.Object3DEventMap>) | Readonly<(distance: number) => THREE.Mesh<THREE.BufferGeometry<THREE.NormalBufferAttributes, THREE.BufferGeometryEventMap>, THREE.Material | THREE.Material[], THREE.Object3DEventMap>>) & (((distance: number) => three_stdlib.Line2) | Readonly<(distance: number) => three_stdlib.Line2>)) | undefined;
564
- localToWorld?: ((((vector: THREE.Vector3) => THREE.Vector3) | Readonly<(vector: THREE.Vector3) => THREE.Vector3>) & (((vector: THREE.Vector3) => THREE.Vector3) | Readonly<(vector: THREE.Vector3) => THREE.Vector3>)) | undefined;
565
- worldToLocal?: ((((vector: THREE.Vector3) => THREE.Vector3) | Readonly<(vector: THREE.Vector3) => THREE.Vector3>) & (((vector: THREE.Vector3) => THREE.Vector3) | Readonly<(vector: THREE.Vector3) => THREE.Vector3>)) | undefined;
566
- lookAt?: (({
567
- (vector: THREE.Vector3): void;
568
- (x: number, y: number, z: number): void;
569
- } | Readonly<{
570
- (vector: THREE.Vector3): void;
571
- (x: number, y: number, z: number): void;
572
- }>) & ({
559
+ localToWorld?: ((vector: THREE.Vector3) => THREE.Vector3) | Readonly<((vector: THREE.Vector3) => THREE.Vector3) | undefined>;
560
+ worldToLocal?: ((vector: THREE.Vector3) => THREE.Vector3) | Readonly<((vector: THREE.Vector3) => THREE.Vector3) | undefined>;
561
+ lookAt?: {
573
562
  (vector: THREE.Vector3): void;
574
563
  (x: number, y: number, z: number): void;
575
564
  } | Readonly<{
576
565
  (vector: THREE.Vector3): void;
577
566
  (x: number, y: number, z: number): void;
578
- }>)) | undefined;
567
+ } | undefined>;
579
568
  add?: ((((...object: THREE.Object3D[]) => THREE.Mesh<THREE.BufferGeometry<THREE.NormalBufferAttributes, THREE.BufferGeometryEventMap>, THREE.Material | THREE.Material[], THREE.Object3DEventMap>) | Readonly<(...object: THREE.Object3D[]) => THREE.Mesh<THREE.BufferGeometry<THREE.NormalBufferAttributes, THREE.BufferGeometryEventMap>, THREE.Material | THREE.Material[], THREE.Object3DEventMap>>) & (((...object: THREE.Object3D[]) => three_stdlib.Line2) | Readonly<(...object: THREE.Object3D[]) => three_stdlib.Line2>)) | undefined;
580
569
  remove?: ((((...object: THREE.Object3D[]) => THREE.Mesh<THREE.BufferGeometry<THREE.NormalBufferAttributes, THREE.BufferGeometryEventMap>, THREE.Material | THREE.Material[], THREE.Object3DEventMap>) | Readonly<(...object: THREE.Object3D[]) => THREE.Mesh<THREE.BufferGeometry<THREE.NormalBufferAttributes, THREE.BufferGeometryEventMap>, THREE.Material | THREE.Material[], THREE.Object3DEventMap>>) & (((...object: THREE.Object3D[]) => three_stdlib.Line2) | Readonly<(...object: THREE.Object3D[]) => three_stdlib.Line2>)) | undefined;
581
570
  removeFromParent?: (((() => THREE.Mesh<THREE.BufferGeometry<THREE.NormalBufferAttributes, THREE.BufferGeometryEventMap>, THREE.Material | THREE.Material[], THREE.Object3DEventMap>) | Readonly<() => THREE.Mesh<THREE.BufferGeometry<THREE.NormalBufferAttributes, THREE.BufferGeometryEventMap>, THREE.Material | THREE.Material[], THREE.Object3DEventMap>>) & ((() => three_stdlib.Line2) | Readonly<() => three_stdlib.Line2>)) | undefined;
582
571
  clear?: (((() => THREE.Mesh<THREE.BufferGeometry<THREE.NormalBufferAttributes, THREE.BufferGeometryEventMap>, THREE.Material | THREE.Material[], THREE.Object3DEventMap>) | Readonly<() => THREE.Mesh<THREE.BufferGeometry<THREE.NormalBufferAttributes, THREE.BufferGeometryEventMap>, THREE.Material | THREE.Material[], THREE.Object3DEventMap>>) & ((() => three_stdlib.Line2) | Readonly<() => three_stdlib.Line2>)) | undefined;
583
572
  attach?: ((((((object: THREE.Object3D) => THREE.Mesh<THREE.BufferGeometry<THREE.NormalBufferAttributes, THREE.BufferGeometryEventMap>, THREE.Material | THREE.Material[], THREE.Object3DEventMap>) | undefined) & (string | string[] | angular_three.NgtAttachFunction<any, any>)) | Readonly<(((object: THREE.Object3D) => THREE.Mesh<THREE.BufferGeometry<THREE.NormalBufferAttributes, THREE.BufferGeometryEventMap>, THREE.Material | THREE.Material[], THREE.Object3DEventMap>) | undefined) & (string | string[] | angular_three.NgtAttachFunction<any, any>)>) & ((((((object: THREE.Object3D) => three_stdlib.Line2) | undefined) & (string | string[] | angular_three.NgtAttachFunction<any, any>)) | Readonly<(((object: THREE.Object3D) => three_stdlib.Line2) | undefined) & (string | string[] | angular_three.NgtAttachFunction<any, any>)>) & (string[] | angular_three.NgtAttachFunction<any, any> | Readonly<string | string[] | angular_three.NgtAttachFunction<any, any>>))) | undefined;
584
- getObjectById?: ((((id: number) => THREE.Object3D | undefined) | Readonly<(id: number) => THREE.Object3D | undefined>) & (((id: number) => THREE.Object3D | undefined) | Readonly<(id: number) => THREE.Object3D | undefined>)) | undefined;
585
- getObjectByName?: ((((name: string) => THREE.Object3D | undefined) | Readonly<(name: string) => THREE.Object3D | undefined>) & (((name: string) => THREE.Object3D | undefined) | Readonly<(name: string) => THREE.Object3D | undefined>)) | undefined;
586
- getObjectByProperty?: ((((name: string, value: any) => THREE.Object3D | undefined) | Readonly<(name: string, value: any) => THREE.Object3D | undefined>) & (((name: string, value: any) => THREE.Object3D | undefined) | Readonly<(name: string, value: any) => THREE.Object3D | undefined>)) | undefined;
587
- getObjectsByProperty?: ((((name: string, value: any, optionalTarget?: THREE.Object3D[]) => THREE.Object3D[]) | Readonly<(name: string, value: any, optionalTarget?: THREE.Object3D[]) => THREE.Object3D[]>) & (((name: string, value: any, optionalTarget?: THREE.Object3D[]) => THREE.Object3D[]) | Readonly<(name: string, value: any, optionalTarget?: THREE.Object3D[]) => THREE.Object3D[]>)) | undefined;
588
- getWorldPosition?: ((((target: THREE.Vector3) => THREE.Vector3) | Readonly<(target: THREE.Vector3) => THREE.Vector3>) & (((target: THREE.Vector3) => THREE.Vector3) | Readonly<(target: THREE.Vector3) => THREE.Vector3>)) | undefined;
589
- getWorldQuaternion?: ((((target: THREE.Quaternion) => THREE.Quaternion) | Readonly<(target: THREE.Quaternion) => THREE.Quaternion>) & (((target: THREE.Quaternion) => THREE.Quaternion) | Readonly<(target: THREE.Quaternion) => THREE.Quaternion>)) | undefined;
590
- getWorldScale?: ((((target: THREE.Vector3) => THREE.Vector3) | Readonly<(target: THREE.Vector3) => THREE.Vector3>) & (((target: THREE.Vector3) => THREE.Vector3) | Readonly<(target: THREE.Vector3) => THREE.Vector3>)) | undefined;
591
- getWorldDirection?: ((((target: THREE.Vector3) => THREE.Vector3) | Readonly<(target: THREE.Vector3) => THREE.Vector3>) & (((target: THREE.Vector3) => THREE.Vector3) | Readonly<(target: THREE.Vector3) => THREE.Vector3>)) | undefined;
592
- traverse?: ((((callback: (object: THREE.Object3D) => any) => void) | Readonly<(callback: (object: THREE.Object3D) => any) => void>) & (((callback: (object: THREE.Object3D) => any) => void) | Readonly<(callback: (object: THREE.Object3D) => any) => void>)) | undefined;
593
- traverseVisible?: ((((callback: (object: THREE.Object3D) => any) => void) | Readonly<(callback: (object: THREE.Object3D) => any) => void>) & (((callback: (object: THREE.Object3D) => any) => void) | Readonly<(callback: (object: THREE.Object3D) => any) => void>)) | undefined;
594
- traverseAncestors?: ((((callback: (object: THREE.Object3D) => any) => void) | Readonly<(callback: (object: THREE.Object3D) => any) => void>) & (((callback: (object: THREE.Object3D) => any) => void) | Readonly<(callback: (object: THREE.Object3D) => any) => void>)) | undefined;
595
- updateMatrix?: (((() => void) | Readonly<() => void>) & ((() => void) | Readonly<() => void>)) | undefined;
596
- updateMatrixWorld?: ((((force?: boolean) => void) | Readonly<(force?: boolean) => void>) & (((force?: boolean) => void) | Readonly<(force?: boolean) => void>)) | undefined;
597
- updateWorldMatrix?: ((((updateParents: boolean, updateChildren: boolean) => void) | Readonly<(updateParents: boolean, updateChildren: boolean) => void>) & (((updateParents: boolean, updateChildren: boolean) => void) | Readonly<(updateParents: boolean, updateChildren: boolean) => void>)) | undefined;
573
+ getObjectById?: ((id: number) => THREE.Object3D | undefined) | Readonly<((id: number) => THREE.Object3D | undefined) | undefined>;
574
+ getObjectByName?: ((name: string) => THREE.Object3D | undefined) | Readonly<((name: string) => THREE.Object3D | undefined) | undefined>;
575
+ getObjectByProperty?: ((name: string, value: any) => THREE.Object3D | undefined) | Readonly<((name: string, value: any) => THREE.Object3D | undefined) | undefined>;
576
+ getObjectsByProperty?: ((name: string, value: any, optionalTarget?: THREE.Object3D[]) => THREE.Object3D[]) | Readonly<((name: string, value: any, optionalTarget?: THREE.Object3D[]) => THREE.Object3D[]) | undefined>;
577
+ getWorldPosition?: ((target: THREE.Vector3) => THREE.Vector3) | Readonly<((target: THREE.Vector3) => THREE.Vector3) | undefined>;
578
+ getWorldQuaternion?: ((target: THREE.Quaternion) => THREE.Quaternion) | Readonly<((target: THREE.Quaternion) => THREE.Quaternion) | undefined>;
579
+ getWorldScale?: ((target: THREE.Vector3) => THREE.Vector3) | Readonly<((target: THREE.Vector3) => THREE.Vector3) | undefined>;
580
+ getWorldDirection?: ((target: THREE.Vector3) => THREE.Vector3) | Readonly<((target: THREE.Vector3) => THREE.Vector3) | undefined>;
581
+ traverse?: ((callback: (object: THREE.Object3D) => any) => void) | Readonly<((callback: (object: THREE.Object3D) => any) => void) | undefined>;
582
+ traverseVisible?: ((callback: (object: THREE.Object3D) => any) => void) | Readonly<((callback: (object: THREE.Object3D) => any) => void) | undefined>;
583
+ traverseAncestors?: ((callback: (object: THREE.Object3D) => any) => void) | Readonly<((callback: (object: THREE.Object3D) => any) => void) | undefined>;
584
+ updateMatrix?: (() => void) | Readonly<(() => void) | undefined>;
585
+ updateMatrixWorld?: ((force?: boolean) => void) | Readonly<((force?: boolean) => void) | undefined>;
586
+ updateWorldMatrix?: ((updateParents: boolean, updateChildren: boolean) => void) | Readonly<((updateParents: boolean, updateChildren: boolean) => void) | undefined>;
598
587
  toJSON?: ((((meta?: THREE.JSONMeta) => THREE.MeshJSON) | Readonly<(meta?: THREE.JSONMeta) => THREE.MeshJSON>) & (((meta?: THREE.JSONMeta) => THREE.ShaderMaterialJSON) | Readonly<(meta?: THREE.JSONMeta) => THREE.ShaderMaterialJSON>)) | undefined;
599
588
  clone?: ((((recursive?: boolean) => THREE.Mesh<THREE.BufferGeometry<THREE.NormalBufferAttributes, THREE.BufferGeometryEventMap>, THREE.Material | THREE.Material[], THREE.Object3DEventMap>) | Readonly<(recursive?: boolean) => THREE.Mesh<THREE.BufferGeometry<THREE.NormalBufferAttributes, THREE.BufferGeometryEventMap>, THREE.Material | THREE.Material[], THREE.Object3DEventMap>>) & ((((recursive?: boolean) => three_stdlib.Line2) | Readonly<(recursive?: boolean) => three_stdlib.Line2>) & ((() => three_stdlib.LineMaterial) | Readonly<() => three_stdlib.LineMaterial>))) | undefined;
600
589
  copy?: ((((object: THREE.Object3D, recursive?: boolean) => THREE.Mesh<THREE.BufferGeometry<THREE.NormalBufferAttributes, THREE.BufferGeometryEventMap>, THREE.Material | THREE.Material[], THREE.Object3DEventMap>) | Readonly<(object: THREE.Object3D, recursive?: boolean) => THREE.Mesh<THREE.BufferGeometry<THREE.NormalBufferAttributes, THREE.BufferGeometryEventMap>, THREE.Material | THREE.Material[], THREE.Object3DEventMap>>) & ((((object: THREE.Object3D, recursive?: boolean) => three_stdlib.Line2) | Readonly<(object: THREE.Object3D, recursive?: boolean) => three_stdlib.Line2>) & (((source: THREE.Material) => three_stdlib.LineMaterial) | Readonly<(source: THREE.Material) => three_stdlib.LineMaterial>))) | undefined;
601
- count?: Readonly<number | undefined>;
602
- occlusionTest?: Readonly<boolean | undefined>;
603
590
  addEventListener?: ((((<T extends keyof THREE.Object3DEventMap>(type: T, listener: THREE.EventListener<THREE.Object3DEventMap[T], T, THREE.Mesh<THREE.BufferGeometry<THREE.NormalBufferAttributes, THREE.BufferGeometryEventMap>, THREE.Material | THREE.Material[], THREE.Object3DEventMap>>) => void) | Readonly<(<T extends keyof THREE.Object3DEventMap>(type: T, listener: THREE.EventListener<THREE.Object3DEventMap[T], T, THREE.Mesh<THREE.BufferGeometry<THREE.NormalBufferAttributes, THREE.BufferGeometryEventMap>, THREE.Material | THREE.Material[], THREE.Object3DEventMap>>) => void) | undefined>) & (<TEventKey extends keyof angular_three.NgtEventHandlers | "added" | "removed" | "childadded" | "childremoved" | "change" | keyof angular_three.NgtNodeEventMap<THREE.Mesh<THREE.BufferGeometry<THREE.NormalBufferAttributes, THREE.BufferGeometryEventMap>, THREE.Material | THREE.Material[], THREE.Object3DEventMap>>>(type: TEventKey, listener: (this: angular_three.NgtNodeElement<typeof THREE.Mesh, THREE.Mesh<THREE.BufferGeometry<THREE.NormalBufferAttributes, THREE.BufferGeometryEventMap>, THREE.Material | THREE.Material[], THREE.Object3DEventMap>>, ev: angular_three.NgtAllObject3DEventsMap<THREE.Mesh<THREE.BufferGeometry<THREE.NormalBufferAttributes, THREE.BufferGeometryEventMap>, THREE.Material | THREE.Material[], THREE.Object3DEventMap>>[TEventKey]) => any) => void)) & ((((<T extends keyof THREE.Object3DEventMap>(type: T, listener: THREE.EventListener<THREE.Object3DEventMap[T], T, three_stdlib.Line2>) => void) | Readonly<(<T extends keyof THREE.Object3DEventMap>(type: T, listener: THREE.EventListener<THREE.Object3DEventMap[T], T, three_stdlib.Line2>) => void) | undefined>) & (<TEventKey extends keyof angular_three.NgtEventHandlers | "added" | "removed" | "childadded" | "childremoved" | "change" | keyof angular_three.NgtNodeEventMap<three_stdlib.Line2>>(type: TEventKey, listener: (this: angular_three.NgtNodeElement<typeof three_stdlib.Line2, three_stdlib.Line2>, ev: angular_three.NgtAllObject3DEventsMap<three_stdlib.Line2>[TEventKey]) => any) => void)) & (((<T extends "dispose">(type: T, listener: THREE.EventListener<{
604
591
  dispose: {};
605
592
  }[T], T, three_stdlib.LineMaterial>) => void) | Readonly<(<T extends "dispose">(type: T, listener: THREE.EventListener<{
@@ -624,7 +611,7 @@ declare class NgtsEdges {
624
611
  parameters?: ((Partial<THREE.Mesh<THREE.BufferGeometry<THREE.NormalBufferAttributes, THREE.BufferGeometryEventMap>, THREE.Material | THREE.Material[], THREE.Object3DEventMap>> | Readonly<Partial<THREE.Mesh<THREE.BufferGeometry<THREE.NormalBufferAttributes, THREE.BufferGeometryEventMap>, THREE.Material | THREE.Material[], THREE.Object3DEventMap>>>) & ((Partial<three_stdlib.Line2> | Readonly<Partial<three_stdlib.Line2>>) & (Partial<three_stdlib.LineMaterial> | Readonly<Partial<three_stdlib.LineMaterial>>))) | undefined;
625
612
  __ngt_args__?: (([geometry?: THREE.BufferGeometry<THREE.NormalBufferAttributes, THREE.BufferGeometryEventMap> | undefined, material?: THREE.Material | THREE.Material[] | undefined] | readonly [geometry?: THREE.BufferGeometry<THREE.NormalBufferAttributes, THREE.BufferGeometryEventMap> | undefined, material?: THREE.Material | THREE.Material[] | undefined]) & (([geometry?: three_stdlib.LineGeometry | undefined, material?: three_stdlib.LineMaterial | undefined] | readonly [geometry?: three_stdlib.LineGeometry | undefined, material?: three_stdlib.LineMaterial | undefined]) & ([parameters?: LineMaterialParameters | undefined] | readonly [parameters?: LineMaterialParameters | undefined]))) | undefined;
626
613
  color?: THREE.ColorRepresentation | undefined;
627
- blending?: 0 | 1 | 2 | 3 | 4 | 5 | 6 | undefined;
614
+ blending?: 0 | 1 | 2 | 3 | 4 | 5 | undefined;
628
615
  side?: 0 | 1 | 2 | undefined;
629
616
  opacity?: number | undefined;
630
617
  transparent?: boolean | undefined;
@@ -684,6 +671,7 @@ declare class NgtsEdges {
684
671
  } | Readonly<{
685
672
  [key: string]: number;
686
673
  } | undefined>;
674
+ count?: Readonly<number | undefined>;
687
675
  updateMorphTargets?: (() => void) | Readonly<(() => void) | undefined>;
688
676
  getVertexPosition?: ((index: number, target: THREE.Vector3) => THREE.Vector3) | Readonly<((index: number, target: THREE.Vector3) => THREE.Vector3) | undefined>;
689
677
  isLineMaterial?: true | undefined;
@@ -92,7 +92,7 @@ declare class NgtsGizmoHelperImpl {
92
92
  protected renderPriority: _angular_core.Signal<number>;
93
93
  protected margin: _angular_core.Signal<[number, number]>;
94
94
  protected alignment: _angular_core.Signal<"top-left" | "top-right" | "bottom-right" | "bottom-left" | "bottom-center" | "center-right" | "center-left" | "center-center" | "top-center">;
95
- protected scene: THREE.Scene;
95
+ protected scene: THREE.Scene<THREE.Object3DEventMap>;
96
96
  protected content: _angular_core.Signal<TemplateRef<any>>;
97
97
  private gizmoRef;
98
98
  private virtualCameraRef;
@@ -111,7 +111,7 @@ declare class ManagePortalScene {
111
111
  /** Whether events should be enabled inside the portal. */
112
112
  events: _angular_core.InputSignal<boolean | undefined>;
113
113
  /** Reference to the root/world scene for blending. */
114
- rootScene: _angular_core.InputSignal<THREE.Scene>;
114
+ rootScene: _angular_core.InputSignal<THREE.Scene<THREE.Object3DEventMap>>;
115
115
  /** Reference to the portal material for accessing blend values. */
116
116
  material: _angular_core.InputSignal<NgtMeshPortalMaterial>;
117
117
  /** Render priority for the portal scene. */
@@ -206,7 +206,7 @@ declare class NgtsMeshPortalMaterial {
206
206
  /** The content template to render inside the portal. */
207
207
  protected content: _angular_core.Signal<TemplateRef<any>>;
208
208
  private store;
209
- protected rootScene: angular_three.DeepSignal<THREE.Scene>;
209
+ protected rootScene: angular_three.DeepSignal<THREE.Scene<THREE.Object3DEventMap>>;
210
210
  protected materialResolution: _angular_core.Signal<number[]>;
211
211
  private resolution;
212
212
  private parent;
@@ -540,6 +540,12 @@ interface NgtsHTMLContentOptions {
540
540
  * Defaults to the canvas container or `events.connected` element.
541
541
  */
542
542
  parent?: HTMLElement | ElementRef<HTMLElement>;
543
+ /**
544
+ * Computes z-index with a logarithmic scale, which prevents
545
+ * near objects from all having the same z-index when
546
+ * camera.far is very large.
547
+ */
548
+ logarithmicDepth?: boolean;
543
549
  }
544
550
  /**
545
551
  * Renders HTML content positioned relative to a `NgtsHTML` anchor in 3D space.
@@ -1,5 +1,5 @@
1
1
  import * as _angular_core from '@angular/core';
2
- import { ElementRef } from '@angular/core';
2
+ import { ElementRef, TemplateRef } from '@angular/core';
3
3
  import { NgtThreeElements, NgtThreeElement } from 'angular-three';
4
4
  import * as THREE from 'three';
5
5
  import { SplitStrategy } from 'three-mesh-bvh';
@@ -367,6 +367,52 @@ declare class NgtsInstances {
367
367
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<NgtsInstances, "ngts-instances", never, { "options": { "alias": "options"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
368
368
  }
369
369
 
370
+ type NgtsLODLevelOptions = {
371
+ distance: number;
372
+ hysteresis: number;
373
+ };
374
+ /**
375
+ * Helper directive to capture a template to attach to
376
+ * an NgtsLOD component.
377
+ */
378
+ declare class NgtsLODLevel {
379
+ lodLevel: _angular_core.InputSignalWithTransform<NgtsLODLevelOptions, "" | Partial<NgtsLODLevelOptions>>;
380
+ template: TemplateRef<any>;
381
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<NgtsLODLevel, never>;
382
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<NgtsLODLevel, "ng-template[lodLevel]", never, { "lodLevel": { "alias": "lodLevel"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
383
+ }
384
+ /**
385
+ * Angular-native port of THREE.LOD
386
+ *
387
+ * Allows to display an object with several levels of details.
388
+ *
389
+ * The main difference with THREE.LOD is that we use angular-three
390
+ * to add/remove the right object from the scene graph, rather than
391
+ * setting the visible flag on one of the object, but keeping them
392
+ * all in the graph.
393
+ *
394
+ * Usage:
395
+ *
396
+ * ```html
397
+ * <ngt-group lod [maxDistance]="10000">
398
+ * <ngt-mesh *lodLevel />
399
+ * <ngt-mesh *lodLevel="{distance: 100, hysteresis: 0.1}" />
400
+ * <ngt-mesh *lodLevel="{distance: 1000}" />
401
+ * </ngt-group>
402
+ * ```
403
+ */
404
+ declare class NgtsLODImpl {
405
+ maxDistance: _angular_core.InputSignal<number | undefined>;
406
+ private store;
407
+ private container;
408
+ readonly levels: _angular_core.Signal<readonly NgtsLODLevel[]>;
409
+ readonly level: _angular_core.WritableSignal<NgtsLODLevel | undefined>;
410
+ constructor();
411
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<NgtsLODImpl, never>;
412
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<NgtsLODImpl, "[lod]", never, { "maxDistance": { "alias": "maxDistance"; "required": false; "isSignal": true; }; }, {}, ["levels"], never, true, never>;
413
+ }
414
+ declare const NgtsLOD: readonly [typeof NgtsLODImpl, typeof NgtsLODLevel];
415
+
370
416
  /**
371
417
  * Type definition for the PositionPoint element in Angular Three templates.
372
418
  */
@@ -787,5 +833,5 @@ declare class NgtsSegments {
787
833
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<NgtsSegments, "ngts-segments", never, { "options": { "alias": "options"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
788
834
  }
789
835
 
790
- export { NgtsAdaptiveDpr, NgtsAdaptiveEvents, NgtsBVH, NgtsDetailed, NgtsInstance, NgtsInstances, NgtsPoint, NgtsPointsBuffer, NgtsPointsInstances, NgtsSegment, NgtsSegments };
791
- export type { NgtsBVHOptions, NgtsDetailedOptions, NgtsInstancesOptions, NgtsPointsInstancesOptions, NgtsSegmentsOptions };
836
+ export { NgtsAdaptiveDpr, NgtsAdaptiveEvents, NgtsBVH, NgtsDetailed, NgtsInstance, NgtsInstances, NgtsLOD, NgtsLODImpl, NgtsLODLevel, NgtsPoint, NgtsPointsBuffer, NgtsPointsInstances, NgtsSegment, NgtsSegments };
837
+ export type { NgtsBVHOptions, NgtsDetailedOptions, NgtsInstancesOptions, NgtsLODLevelOptions, NgtsPointsInstancesOptions, NgtsSegmentsOptions };
@@ -1390,7 +1390,7 @@ declare class NgtsEnvironmentPortal {
1390
1390
  private resolution;
1391
1391
  private fbo;
1392
1392
  protected cameraArgs: _angular_core.Signal<(number | three.WebGLCubeRenderTarget | undefined)[]>;
1393
- protected virtualScene: three.Scene;
1393
+ protected virtualScene: three.Scene<three.Object3DEventMap>;
1394
1394
  private setEnvEffectRef?;
1395
1395
  constructor();
1396
1396
  onEnvSet(): void;
@@ -2146,7 +2146,7 @@ declare class NgtsRenderTextureImpl {
2146
2146
  protected renderPriority: _angular_core.Signal<number>;
2147
2147
  protected frames: _angular_core.Signal<number>;
2148
2148
  protected fbo: three.WebGLRenderTarget<three.Texture<unknown>>;
2149
- protected virtualScene: three.Scene;
2149
+ protected virtualScene: three.Scene<three.Object3DEventMap>;
2150
2150
  protected eventPriority: _angular_core.Signal<number>;
2151
2151
  protected compute: _angular_core.Signal<NgtComputeFunction>;
2152
2152
  private uvCompute;
@@ -2328,7 +2328,7 @@ type NgtsSparklesOptions = Partial<NgtThreeElements['ngt-points']> & SparklesPro
2328
2328
  declare class NgtsSparkles {
2329
2329
  /** Configuration options for the sparkles effect. */
2330
2330
  options: _angular_core.InputSignalWithTransform<NgtsSparklesOptions, "" | Partial<NgtsSparklesOptions>>;
2331
- protected parameters: _angular_core.Signal<Omit<NgtsSparklesOptions, "scale" | "count" | "opacity" | "color" | "size" | "speed" | "noise">>;
2331
+ protected parameters: _angular_core.Signal<Omit<NgtsSparklesOptions, "scale" | "opacity" | "color" | "size" | "speed" | "count" | "noise">>;
2332
2332
  private sparklesOptions;
2333
2333
  private store;
2334
2334
  /**
@@ -2666,11 +2666,9 @@ declare class NgtsStage {
2666
2666
  frustumCulled?: Readonly<boolean | undefined>;
2667
2667
  renderOrder?: Readonly<number | undefined>;
2668
2668
  animations?: three.AnimationClip[] | Readonly<three.AnimationClip[] | undefined>;
2669
+ userData?: Record<string, any> | Readonly<Record<string, any> | undefined>;
2669
2670
  customDepthMaterial?: three.Material | Readonly<three.Material | undefined>;
2670
2671
  customDistanceMaterial?: three.Material | Readonly<three.Material | undefined>;
2671
- static?: Readonly<boolean | undefined>;
2672
- userData?: Record<string, any> | Readonly<Record<string, any> | undefined>;
2673
- pivot?: three.Vector3 | Readonly<three.Vector3 | null | undefined>;
2674
2672
  onBeforeShadow?: ((renderer: three.WebGLRenderer, scene: three.Scene, camera: three.Camera, shadowCamera: three.Camera, geometry: three.BufferGeometry, depthMaterial: three.Material, group: Group) => void) | Readonly<((renderer: three.WebGLRenderer, scene: three.Scene, camera: three.Camera, shadowCamera: three.Camera, geometry: three.BufferGeometry, depthMaterial: three.Material, group: Group) => void) | undefined>;
2675
2673
  onAfterShadow?: ((renderer: three.WebGLRenderer, scene: three.Scene, camera: three.Camera, shadowCamera: three.Camera, geometry: three.BufferGeometry, depthMaterial: three.Material, group: Group) => void) | Readonly<((renderer: three.WebGLRenderer, scene: three.Scene, camera: three.Camera, shadowCamera: three.Camera, geometry: three.BufferGeometry, depthMaterial: three.Material, group: Group) => void) | undefined>;
2676
2674
  onBeforeRender?: ((renderer: three.WebGLRenderer, scene: three.Scene, camera: three.Camera, geometry: three.BufferGeometry, material: three.Material, group: Group) => void) | Readonly<((renderer: three.WebGLRenderer, scene: three.Scene, camera: three.Camera, geometry: three.BufferGeometry, material: three.Material, group: Group) => void) | undefined>;
@@ -2721,8 +2719,6 @@ declare class NgtsStage {
2721
2719
  toJSON?: ((meta?: three.JSONMeta) => three.Object3DJSON) | Readonly<((meta?: three.JSONMeta) => three.Object3DJSON) | undefined>;
2722
2720
  clone?: ((recursive?: boolean) => Group<three.Object3DEventMap>) | Readonly<((recursive?: boolean) => Group<three.Object3DEventMap>) | undefined>;
2723
2721
  copy?: ((object: three.Object3D, recursive?: boolean) => Group<three.Object3DEventMap>) | Readonly<((object: three.Object3D, recursive?: boolean) => Group<three.Object3DEventMap>) | undefined>;
2724
- count?: Readonly<number | undefined>;
2725
- occlusionTest?: Readonly<boolean | undefined>;
2726
2722
  addEventListener?: (((<T extends keyof three.Object3DEventMap>(type: T, listener: three.EventListener<three.Object3DEventMap[T], T, Group<three.Object3DEventMap>>) => void) | Readonly<(<T extends keyof three.Object3DEventMap>(type: T, listener: three.EventListener<three.Object3DEventMap[T], T, Group<three.Object3DEventMap>>) => void) | undefined>) & (<TEventKey extends keyof angular_three.NgtEventHandlers | "change" | "added" | "removed" | "childadded" | "childremoved" | keyof angular_three.NgtNodeEventMap<Group<three.Object3DEventMap>>>(type: TEventKey, listener: (this: angular_three.NgtNodeElement<typeof Group, Group<three.Object3DEventMap>>, ev: angular_three.NgtAllObject3DEventsMap<Group<three.Object3DEventMap>>[TEventKey]) => any) => void)) | undefined;
2727
2723
  hasEventListener?: (<T extends keyof three.Object3DEventMap>(type: T, listener: three.EventListener<three.Object3DEventMap[T], T, Group<three.Object3DEventMap>>) => boolean) | Readonly<(<T extends keyof three.Object3DEventMap>(type: T, listener: three.EventListener<three.Object3DEventMap[T], T, Group<three.Object3DEventMap>>) => boolean) | undefined>;
2728
2724
  removeEventListener?: (((<T extends keyof three.Object3DEventMap>(type: T, listener: three.EventListener<three.Object3DEventMap[T], T, Group<three.Object3DEventMap>>) => void) | Readonly<(<T extends keyof three.Object3DEventMap>(type: T, listener: three.EventListener<three.Object3DEventMap[T], T, Group<three.Object3DEventMap>>) => void) | undefined>) & (<TEventKey extends keyof angular_three.NgtEventHandlers | "change" | "added" | "removed" | "childadded" | "childremoved" | keyof angular_three.NgtNodeEventMap<Group<three.Object3DEventMap>>>(type: TEventKey, listener: (this: angular_three.NgtNodeElement<typeof Group, Group<three.Object3DEventMap>>, ev: angular_three.NgtAllObject3DEventsMap<Group<three.Object3DEventMap>>[TEventKey]) => any) => void)) | undefined;