@splnlss/3d-story-viewer 0.7.0 → 0.8.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.
Files changed (37) hide show
  1. package/build/assets/viewer/{geojson.worker-QNi-d8kU.js → geojson.worker-D3uq_RbR.js} +1 -1
  2. package/build/assets/viewer/spark-a62bdfe36d20.wasm +0 -0
  3. package/build/assets/viewer/{spark-worker-5ec8a483b87c.js → spark-worker-c1a6c013b888.js} +194 -43
  4. package/build/computeElevation.cjs +1 -1
  5. package/build/computeElevation.js +2 -2
  6. package/build/index-D87IZDc6.cjs +1 -0
  7. package/build/{index-CsZhc21b.js → index-DaqGSC4W.js} +1302 -829
  8. package/build/main-CY1MzgxV.js +15888 -0
  9. package/build/main-DFAyOsl5.cjs +1 -0
  10. package/build/spark.module-BGYmUUum.js +18168 -0
  11. package/build/spark.module-Y1ABc5im.cjs +1 -0
  12. package/build/types/src/viewer/ContentLayer/GaussianSplatLayer.d.ts +4 -6
  13. package/build/types/src/viewer/ContentLayer/MeshLayer.d.ts +1 -1
  14. package/build/types/src/viewer/ContentLayer/TilesLayer.d.ts +2 -0
  15. package/build/types/src/viewer/ContentLayer/gaussianSplatUtils.d.ts +2 -1
  16. package/build/types/src/viewer/ContentLayer/index.d.ts +5 -3
  17. package/build/types/src/viewer/EnvironmentControls.d.ts +18 -12
  18. package/build/types/src/viewer/GlobeControls.d.ts +9 -6
  19. package/build/types/src/viewer/GlobeManager.d.ts +2 -0
  20. package/build/types/src/viewer/Sky.d.ts +5 -2
  21. package/build/types/src/viewer/TileDecoders.d.ts +11 -0
  22. package/build/types/src/viewer/TransitionControls.d.ts +2 -1
  23. package/build/types/src/viewer/index.d.ts +50 -18
  24. package/build/types/src/viewer/loadSpark.d.ts +1 -0
  25. package/build/types/src/viewer/mods.d.ts +1 -0
  26. package/build/types/src/viewer/shaders/chunks.d.ts +1 -0
  27. package/build/types/src/viewer/surfacePicking.d.ts +31 -0
  28. package/build/types/src/viewer/utils.d.ts +6 -4
  29. package/build/types/src/workers/geojson.worker.d.ts +2 -2
  30. package/build/types/utils/elevation/gltf.d.ts +2 -1
  31. package/build/viewer.cjs +1 -1
  32. package/build/viewer.js +5 -28044
  33. package/package.json +18 -16
  34. package/build/assets/viewer/spark-8b93f8c03d97.wasm +0 -0
  35. package/build/assets/viewer/spark-old-worker-932b4a2c87ca.js +0 -8168
  36. package/build/assets/viewer/spark-worker-015de49d2d00.wasm +0 -0
  37. package/build/index-wUFLgXbb.cjs +0 -1
@@ -7,13 +7,11 @@ export class GaussianSplatLayer extends ContentLayer {
7
7
  loadState: string;
8
8
  loadAttempt: number;
9
9
  abortController: AbortController;
10
- splatMesh: SplatMesh;
11
- visible: boolean;
12
- transformMatrix: any;
10
+ splatMesh: any;
11
+ transformMatrix: import("three").Matrix4;
13
12
  load(): Promise<void>;
14
- createPagedMesh(): SplatMesh;
15
- createDirectMesh(attempt: any): Promise<SplatMesh>;
13
+ createPagedMesh(spark: any): any;
14
+ createDirectMesh(spark: any, attempt: any): Promise<any>;
16
15
  disposeMesh(mesh: any): void;
17
16
  }
18
17
  import { ContentLayer } from '.';
19
- import { SplatMesh } from '@sparkjsdev/spark';
@@ -1,6 +1,6 @@
1
1
  export class MeshLayer extends ContentLayer {
2
2
  constructor(url: any, options?: {}, callbacks?: {});
3
3
  isMeshLayer: boolean;
4
- mesh: any;
4
+ mesh: import("three").Group<import("three").Object3DEventMap>;
5
5
  }
6
6
  import { ContentLayer } from '.';
@@ -4,6 +4,8 @@ export class TilesLayer extends ContentLayer {
4
4
  firstSet: any;
5
5
  camera: any;
6
6
  renderer: any;
7
+ ownsDecoders: boolean;
8
+ decoders: any;
7
9
  dracoLoader: any;
8
10
  ktx2loader: any;
9
11
  tiles: TilesRenderer<import("3d-tiles-renderer").TilesRendererEventMap>;
@@ -1,2 +1,3 @@
1
1
  export function validateGaussianSplatLayerDefinition(definition: any): any;
2
- export function makeGaussianSplatTransform(transform: any): any;
2
+ export function makeGaussianSplatTransform(transform: any): Matrix4;
3
+ import { Matrix4 } from 'three';
@@ -1,11 +1,13 @@
1
- export class ContentLayer {
1
+ export class ContentLayer extends Object3D<import("three").Object3DEventMap> {
2
+ constructor();
2
3
  type: string;
3
4
  isContentLayer: boolean;
5
+ /** @type {string | null} */
6
+ contentLayerId: string | null;
4
7
  labels: Set<any>;
5
8
  setLabels(labels: any): void;
6
9
  setEnabled(enabled: any): void;
7
- visible: any;
8
10
  update(): void;
9
- dispose(): void;
10
11
  disposeObjectResources(root?: this): void;
11
12
  }
13
+ import { Object3D } from 'three';
@@ -3,7 +3,7 @@ export const DRAG: 1;
3
3
  export const ROTATE: 2;
4
4
  export const ZOOM: 3;
5
5
  export const WAITING: 4;
6
- export class EnvironmentControls {
6
+ export class EnvironmentControls extends EventDispatcher<any> {
7
7
  constructor(scene?: any, camera?: any, domElement?: any, tilesRenderer?: any);
8
8
  set enabled(v: boolean);
9
9
  get enabled(): boolean;
@@ -25,7 +25,7 @@ export class EnvironmentControls {
25
25
  adjustHeight: boolean;
26
26
  enableDamping: boolean;
27
27
  dampingFactor: number;
28
- fallbackPlane: any;
28
+ fallbackPlane: Plane;
29
29
  useFallbackPlane: boolean;
30
30
  scaleZoomOrientationAtEdges: boolean;
31
31
  autoAdjustCameraRotation: boolean;
@@ -33,21 +33,21 @@ export class EnvironmentControls {
33
33
  pointerTracker: any;
34
34
  needsUpdate: boolean;
35
35
  actionHeightOffset: number;
36
- pivotPoint: any;
36
+ pivotPoint: Vector3;
37
37
  zoomDirectionSet: boolean;
38
38
  zoomPointSet: boolean;
39
- zoomDirection: any;
40
- zoomPoint: any;
39
+ zoomDirection: Vector3;
40
+ zoomPoint: Vector3;
41
41
  zoomDelta: number;
42
- rotationInertiaPivot: any;
43
- rotationInertia: any;
44
- dragInertia: any;
42
+ rotationInertiaPivot: Vector3;
43
+ rotationInertia: Vector2;
44
+ dragInertia: Vector3;
45
45
  inertiaTargetDistance: number;
46
46
  inertiaStableFrames: number;
47
47
  pivotMesh: any;
48
- raycaster: any;
49
- up: any;
50
- clock: any;
48
+ raycaster: Raycaster;
49
+ up: Vector3;
50
+ clock: Clock;
51
51
  _detachCallback: () => void;
52
52
  _upInitialized: boolean;
53
53
  _lastUsedState: number;
@@ -71,7 +71,7 @@ export class EnvironmentControls {
71
71
  _updateZoom(): void;
72
72
  _updateZoomDirection(): void;
73
73
  _updateZoomPoint(): boolean;
74
- _getPointBelowCamera(point?: any, up?: any): any;
74
+ _getPointBelowCamera(point?: any, up?: Vector3): any;
75
75
  _updatePosition(deltaTime: any): void;
76
76
  _updateRotation(deltaTime: any): void;
77
77
  _applyRotation(x: any, y: any, pivotPoint: any): void;
@@ -80,3 +80,9 @@ export class EnvironmentControls {
80
80
  _alignCameraUp(up: any, alpha?: number): void;
81
81
  _clampRotation(up: any): void;
82
82
  }
83
+ import { EventDispatcher } from 'three';
84
+ import { Plane } from 'three';
85
+ import { Vector3 } from 'three';
86
+ import { Vector2 } from 'three';
87
+ import { Raycaster } from 'three';
88
+ import { Clock } from 'three';
@@ -1,17 +1,17 @@
1
1
  export class GlobeControls extends EnvironmentControls {
2
- get tilesGroup(): any;
3
- get ellipsoidFrame(): any;
2
+ get tilesGroup(): Matrix4;
3
+ get ellipsoidFrame(): Matrix4;
4
4
  get ellipsoidFrameInverse(): any;
5
5
  isGlobeControls: boolean;
6
6
  _dragMode: number;
7
7
  _rotationMode: number;
8
8
  nearMargin: number;
9
9
  farMargin: number;
10
- globeInertia: any;
10
+ globeInertia: Quaternion;
11
11
  globeInertiaFactor: number;
12
12
  ellipsoid: Ellipsoid;
13
- ellipsoidGroup: any;
14
- _ellipsoidFrameInverse: any;
13
+ ellipsoidGroup: Group<import("three").Object3DEventMap>;
14
+ _ellipsoidFrameInverse: Matrix4;
15
15
  setEllipsoid(ellipsoid: any, ellipsoidGroup: any): void;
16
16
  getVectorToCenter(target: any): any;
17
17
  getDistanceToCenter(): any;
@@ -27,4 +27,7 @@ export class GlobeControls extends EnvironmentControls {
27
27
  _isNearControls(): boolean;
28
28
  }
29
29
  import { EnvironmentControls } from './EnvironmentControls.js';
30
- import { Ellipsoid } from '../../node_modules/3d-tiles-renderer/src/three/renderer/math/Ellipsoid.js';
30
+ import { Matrix4 } from 'three';
31
+ import { Quaternion } from 'three';
32
+ import { Ellipsoid } from '3d-tiles-renderer';
33
+ import { Group } from 'three';
@@ -5,6 +5,8 @@ export class GlobeManager extends EventDispatcher {
5
5
  renderer: any;
6
6
  tiles: TilesRenderer<import("3d-tiles-renderer").TilesRendererEventMap>;
7
7
  dracoLoader: any;
8
+ ownsDecoders: boolean;
9
+ decoders: any;
8
10
  apiToken: any;
9
11
  googleMapsToken: any;
10
12
  initTiles(): void;
@@ -1,6 +1,9 @@
1
- export class Sky {
1
+ export class Sky extends Mesh<import("three").BufferGeometry<import("three").NormalBufferAttributes, import("three").BufferGeometryEventMap>, import("three").Material<import("three").MaterialEventMap> | import("three").Material<import("three").MaterialEventMap>[], import("three").Object3DEventMap> {
2
+ constructor();
2
3
  isSky: boolean;
3
4
  type: string;
4
- material: any;
5
+ material: ShaderMaterial;
5
6
  setSurfaceUp(v: any): void;
6
7
  }
8
+ import { Mesh } from 'three';
9
+ import { ShaderMaterial } from 'three';
@@ -0,0 +1,11 @@
1
+ /** One lazy decoder owner per Viewer/WebGLRenderer. No tile queue or cache ownership. */
2
+ export class TileDecoders {
3
+ constructor(renderer: any);
4
+ renderer: any;
5
+ draco: any;
6
+ ktx2: any;
7
+ disposed: boolean;
8
+ getDraco(): any;
9
+ getKTX2(): any;
10
+ dispose(): void;
11
+ }
@@ -1,7 +1,7 @@
1
1
  export class TransitionControls extends EventDispatcher {
2
2
  constructor(camera: any);
3
3
  camera: any;
4
- lookAt: any;
4
+ lookAt: Vector3;
5
5
  cameraTween: any;
6
6
  lookAtTween: any;
7
7
  activeTransition: {
@@ -17,3 +17,4 @@ export class TransitionControls extends EventDispatcher {
17
17
  cameraUpTween: any;
18
18
  }
19
19
  import { EventDispatcher } from '../modules/EventDispatcher';
20
+ import { Vector3 } from 'three';
@@ -24,18 +24,18 @@ declare class Viewer extends EventDispatcher {
24
24
  isViewer: boolean;
25
25
  type: string;
26
26
  disposed: boolean;
27
- sparkRenderer: SparkRenderer;
27
+ sparkRenderer: any;
28
28
  transparentBackground: boolean;
29
29
  state: StateDispatcher;
30
- renderer: any;
31
- css2DRenderer: any;
32
- clock: any;
33
- camera: any;
34
- cameraForward: any;
35
- cameraRight: any;
36
- cameraUp: any;
37
- scene: any;
38
- content: any;
30
+ renderer: WebGLRenderer;
31
+ css2DRenderer: CSS2DRenderer;
32
+ clock: Clock;
33
+ camera: PerspectiveCamera;
34
+ cameraForward: Vector3;
35
+ cameraRight: Vector3;
36
+ cameraUp: Vector3;
37
+ scene: Scene<import("three").Object3DEventMap>;
38
+ content: Group<import("three").Object3DEventMap>;
39
39
  topLayerIndex: number;
40
40
  enabledLayers: any[];
41
41
  labels: Map<any, any>;
@@ -43,12 +43,13 @@ declare class Viewer extends EventDispatcher {
43
43
  globeControls: GlobeControls;
44
44
  _onGlobeControlsStart: () => void;
45
45
  transitionControls: TransitionControls;
46
+ tileDecoders: TileDecoders;
46
47
  globeManager: GlobeManager;
47
48
  /** @type {ViewerCoords} */
48
49
  cameraCoords: ViewerCoords;
49
50
  /** @type {ViewerCoords} */
50
51
  pointerCoords: ViewerCoords;
51
- pointerXYZ: any;
52
+ pointerXYZ: Vector3;
52
53
  keysDown: {};
53
54
  _keysEnabled: boolean;
54
55
  /** Camera-relative translation speed in WGS84 ECEF metres/second. */
@@ -77,7 +78,7 @@ declare class Viewer extends EventDispatcher {
77
78
  _onKeyUp: (event: any) => void;
78
79
  _onResize: (event: any) => void;
79
80
  sky: Sky;
80
- pointerRaycaster: any;
81
+ pointerRaycaster: Raycaster;
81
82
  _onPointerMove: (event: any) => void;
82
83
  set keysEnabled(enabled: boolean);
83
84
  get keysEnabled(): boolean;
@@ -85,12 +86,15 @@ declare class Viewer extends EventDispatcher {
85
86
  /**
86
87
  * @param {number} lon
87
88
  * @param {number} lat
88
- * @returns {{ lon: number, lat: number, alt: number }}
89
+ * @param {import('./surfacePicking.js').SurfacePickOptions} [options]
90
+ * @returns {{ lon: number, lat: number, alt: number, source: 'splats' | 'globe' | 'content', layerId: string | null }} WGS84 degrees and ellipsoidal meters, from loaded surfaces only.
89
91
  */
90
- getElevation(lon: number, lat: number): {
92
+ getElevation(lon: number, lat: number, options?: import("./surfacePicking.js").SurfacePickOptions): {
91
93
  lon: number;
92
94
  lat: number;
93
95
  alt: number;
96
+ source: "splats" | "globe" | "content";
97
+ layerId: string | null;
94
98
  };
95
99
  /**
96
100
  * @param {[number, number, number?][]} coords
@@ -100,15 +104,16 @@ declare class Viewer extends EventDispatcher {
100
104
  setBackgroundColor(color: any): void;
101
105
  appendTo(container: any): void;
102
106
  container: any;
103
- stats: any;
107
+ stats: Stats;
104
108
  updateCameraDirections(): void;
105
109
  setAnimate(bool?: boolean): void;
106
110
  /** @param {Event} [event] */
107
111
  resizeView(event?: Event): void;
108
112
  loadEnv(url: any): Promise<void>;
109
113
  clearContentLayers(): void;
110
- ensureSparkRenderer(): SparkRenderer;
114
+ ensureSparkRenderer(): Promise<any>;
111
115
  disposeSparkRenderer(): void;
116
+ sparkRendererGeneration: any;
112
117
  /** @param {import('../main.js').ContentLayerDefinition[]} content */
113
118
  defineContentLayers(content?: import("../main.js").ContentLayerDefinition[]): void;
114
119
  enableContentLayers(labels?: any[]): void;
@@ -132,7 +137,25 @@ declare class Viewer extends EventDispatcher {
132
137
  }): HTMLElement;
133
138
  animate(time: any): void;
134
139
  render(): void;
135
- getCameraPivot(): any;
140
+ /**
141
+ * Explicit-action raycast; do not call on every pointermove. Returns the nearest
142
+ * loaded surface, not a survey measurement. RAD accuracy depends on streamed LOD.
143
+ * @param {number} screenX Client X in CSS pixels.
144
+ * @param {number} screenY Client Y in CSS pixels.
145
+ * @param {import('./surfacePicking.js').SurfacePickOptions} [options]
146
+ * @returns {{ lon: number, lat: number, alt: number, point: Vector3, source: 'splats' | 'globe' | 'content', layerId: string | null } | null} WGS84 degrees, ellipsoidal meters, ECEF point in meters.
147
+ */
148
+ pickCoordinates(screenX: number, screenY: number, options?: import("./surfacePicking.js").SurfacePickOptions): {
149
+ lon: number;
150
+ lat: number;
151
+ alt: number;
152
+ point: Vector3;
153
+ source: "splats" | "globe" | "content";
154
+ layerId: string | null;
155
+ } | null;
156
+ /** @param {Raycaster} raycaster @param {import('./surfacePicking.js').SurfacePickOptions} [options] */
157
+ _raycastSurfaces(raycaster: Raycaster, options?: import("./surfacePicking.js").SurfacePickOptions): any;
158
+ getCameraPivot(): Vector3;
136
159
  /**
137
160
  * @param {number} lon
138
161
  * @param {number} lat
@@ -174,10 +197,19 @@ export namespace ViewerEvents {
174
197
  let CONTENT_LAYER_ERROR: "content-layer-error";
175
198
  }
176
199
  import { EventDispatcher } from '../modules/EventDispatcher';
177
- import { SparkRenderer } from '@sparkjsdev/spark';
178
200
  import { StateDispatcher } from '../modules/StateDispatcher';
201
+ import { WebGLRenderer } from 'three';
202
+ import { CSS2DRenderer } from 'three/examples/jsm/renderers/CSS2DRenderer.js';
203
+ import { Clock } from 'three';
204
+ import { PerspectiveCamera } from 'three';
205
+ import { Vector3 } from 'three';
206
+ import { Scene } from 'three';
207
+ import { Group } from 'three';
179
208
  import { GlobeControls } from './GlobeControls';
180
209
  import { TransitionControls } from './TransitionControls';
210
+ import { TileDecoders } from './TileDecoders.js';
181
211
  import { GlobeManager } from './GlobeManager';
182
212
  import { Sky } from './Sky';
213
+ import { Raycaster } from 'three';
214
+ import Stats from 'stats.js';
183
215
  export { Viewer as default };
@@ -0,0 +1 @@
1
+ export function loadSpark(): any;
@@ -1 +1,2 @@
1
1
  export { ShaderChunk as default };
2
+ import { ShaderChunk } from 'three';
@@ -1 +1,2 @@
1
1
  export { ShaderChunk as default };
2
+ import { ShaderChunk } from 'three';
@@ -0,0 +1,31 @@
1
+ /**
2
+ * @typedef {Object} SurfacePickOptions
3
+ * @property {'all' | 'splats' | 'globe' | 'content'} [source] Defaults to all (nearest hit).
4
+ * @property {string[]} [layerIds] Restrict content to these IDs; never includes the globe.
5
+ */
6
+ /**
7
+ * Explicit-action splat picking, deliberately separate from camera/hover raycasts.
8
+ * Spark 2.2's WASM quadratic uses float32 b*b-a*c: long rays against small splats
9
+ * lose the discriminant. Work in float64 and calculate closest approach instead.
10
+ * Uses Spark's public iterator: original direct-format splats, or currently selected
11
+ * RAD pages (not its coarser raycastIndices). This is not a full-resolution survey.
12
+ * Gaussian ellipsoid/disk approximation follows Spark 2.2's rust raycast.rs.
13
+ */
14
+ export function raycastGaussianSplats(mesh: any, raycaster: any): {
15
+ distance: any;
16
+ point: any;
17
+ object: any;
18
+ splatIndex: number;
19
+ };
20
+ /** @param {SurfacePickOptions} options */
21
+ export function raycastSurfaces(viewer: any, raycaster: any, options?: SurfacePickOptions): any;
22
+ export type SurfacePickOptions = {
23
+ /**
24
+ * Defaults to all (nearest hit).
25
+ */
26
+ source?: "all" | "splats" | "globe" | "content";
27
+ /**
28
+ * Restrict content to these IDs; never includes the globe.
29
+ */
30
+ layerIds?: string[];
31
+ };
@@ -3,10 +3,12 @@ export function ecefToGeodeticRotation(x: any, y: any, z: any, quaternion: any):
3
3
  lat: number;
4
4
  alt: number;
5
5
  pitch: number;
6
- yaw: any;
7
- roll: any;
6
+ yaw: number;
7
+ roll: number;
8
8
  };
9
- export function geodeticToEcefUpVector(lon: any, lat: any): any;
10
- export function geodeticToEcefRotation(lon: any, lat: any, pitch: any, yaw: any, roll: any): any;
9
+ export function geodeticToEcefUpVector(lon: any, lat: any): Vector3;
10
+ export function geodeticToEcefRotation(lon: any, lat: any, pitch: any, yaw: any, roll: any): Quaternion;
11
11
  export function exportScene(root: any): void;
12
+ import { Vector3 } from 'three';
13
+ import { Quaternion } from 'three';
12
14
  export { ecefToGeodeticPosition, geodeticToEcefPosition } from "../geospatial.js";
@@ -1,9 +1,9 @@
1
1
  export function createArrowGeometry(data: any): {
2
- origin: any;
2
+ origin: import("three").Vector3Tuple;
3
3
  meshVertexBuffer: Float32Array<any>;
4
4
  };
5
5
  export function createPerimeterGeometry(data: any, color: any): {
6
- origin: any;
6
+ origin: import("three").Vector3Tuple;
7
7
  lineVertexBuffer: Float32Array<any>;
8
8
  lineVertexRGBBuffer: Uint8Array<ArrayBuffer>;
9
9
  meshVertexBuffer: Float32Array<any>;
@@ -12,4 +12,5 @@ export function raycastMesh(rayOrigin: any, rayDir: any, positions: any, indices
12
12
  point: any[];
13
13
  barycentric: number[];
14
14
  };
15
- export function intersectGltf(nodes: any, meshes: any, point: any): any;
15
+ export function intersectGltf(nodes: any, meshes: any, point: any): Vector3;
16
+ import { Vector3 } from 'three';