@splnlss/3d-story-viewer 0.8.2 → 0.8.3

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.
@@ -4,14 +4,24 @@ export class GlobeManager extends EventDispatcher {
4
4
  camera: any;
5
5
  renderer: any;
6
6
  tiles: TilesRenderer<import("3d-tiles-renderer").TilesRendererEventMap>;
7
+ destinationTileCamera: PerspectiveCamera;
8
+ destinationTileResolution: number;
9
+ destinationTileTimeout: number;
10
+ previousAutoDisableRendererCulling: boolean;
7
11
  dracoLoader: any;
8
12
  ownsDecoders: boolean;
9
13
  decoders: any;
10
14
  apiToken: any;
11
15
  googleMapsToken: any;
12
16
  initTiles(): void;
17
+ attachTileLoadListener(): void;
18
+ /** The renderer shares one cache and request scheduler between both registered cameras. */
19
+ setDestinationTilePrefetch(target: any): void;
20
+ updateDestinationTileResolution(): void;
21
+ clearDestinationTilePrefetch(): void;
13
22
  update(): void;
14
23
  dispose(): void;
15
24
  }
16
25
  import { EventDispatcher } from '../modules/EventDispatcher';
17
26
  import { TilesRenderer } from '3d-tiles-renderer';
27
+ import { PerspectiveCamera } from 'three';
@@ -23,6 +23,7 @@ export class WebXRSession {
23
23
  starting: any;
24
24
  bridge: {
25
25
  getHeadPose: () => import("./XRPlayerRig.js").XRHeadPose;
26
+ getHeadForward: () => import("three").Vector3Tuple;
26
27
  getControllerWorldRay: (controller: any) => {
27
28
  origin: import("three").Vector3Tuple;
28
29
  direction: import("three").Vector3Tuple;
@@ -30,6 +31,7 @@ export class WebXRSession {
30
31
  setNavigationCue: (cue: any) => void;
31
32
  setTerrainCredits: (credits: any) => void;
32
33
  setPlayerPose(pose: any): void;
34
+ setVisualBlend(blend: any): void;
33
35
  hasUi(): boolean;
34
36
  setNavigationLimit(reason: any): void;
35
37
  setComfortMoving(moving: any): void;
@@ -1,9 +1,18 @@
1
- /** @typedef {{worldEcef: [number, number, number], geodetic: {longitude: number, latitude: number, altitude: number}, headingDegrees: number, localHeadOffset: [number, number, number]}} XRHeadPose */
2
1
  /** Keeps metre-scale tracked poses separate from double-precision WGS84 ECEF positions. */
3
2
  export class XRPlayerRig {
4
3
  /** @param {Matrix4} initialCameraWorld @param {XRRigidTransform} initialHeadPose */
5
4
  constructor(initialCameraWorld: Matrix4, initialHeadPose: XRRigidTransform);
6
5
  headLocal: Matrix4;
6
+ /** @type {Matrix4 | null} */
7
+ trackingReference: Matrix4 | null;
8
+ /** @type {Matrix4 | null} */
9
+ visualReference: Matrix4 | null;
10
+ /** @type {{pitchDegrees: number, rollDegrees: number} | null} */
11
+ visualOrientation: {
12
+ pitchDegrees: number;
13
+ rollDegrees: number;
14
+ } | null;
15
+ visualBlend: number;
7
16
  worldFromLocal: Matrix4;
8
17
  anchor: {
9
18
  longitude: number;
@@ -14,6 +23,18 @@ export class XRPlayerRig {
14
23
  updateHeadPose(pose: XRRigidTransform): void;
15
24
  getWorldFromLocalMatrix(): Matrix4;
16
25
  getWorldHeadMatrix(): Matrix4;
26
+ getVisualWorldFromLocalMatrix(): Matrix4;
27
+ getVisualWorldHeadMatrix(): Matrix4;
28
+ getVisualHeadForward(): import("three").Vector3Tuple;
29
+ poseFromWorld(world: any): {
30
+ worldEcef: import("three").Vector3Tuple;
31
+ geodetic: {
32
+ longitude: number;
33
+ latitude: number;
34
+ altitude: number;
35
+ };
36
+ headingDegrees: number;
37
+ };
17
38
  /** @returns {XRHeadPose} WGS84 degrees, ellipsoidal altitude metres, ECEF metres, local-floor metres. */
18
39
  getHeadPose(): XRHeadPose;
19
40
  getNavigationFrame(): Matrix4;
@@ -26,13 +47,10 @@ export class XRPlayerRig {
26
47
  * Places the tracked head at a WGS84 ellipsoidal position plus ENU metres.
27
48
  * Heading is clockwise degrees from true north. Physical room-scale motion remains tracked.
28
49
  */
29
- setPose({ anchor, east, north, up, headingDegrees }: {
30
- anchor: any;
31
- east?: number;
32
- north?: number;
33
- up?: number;
34
- headingDegrees: any;
35
- }): void;
50
+ /** @param {XRPlayerPose} pose */
51
+ setPose({ anchor, east, north, up, headingDegrees, trackingReference, visualOrientation }: XRPlayerPose): void;
52
+ /** Fade the authored camera correction while retaining live six-degree head tracking. */
53
+ setVisualBlend(blend: any): void;
36
54
  reanchor(headingDegrees: any): void;
37
55
  }
38
56
  export type XRHeadPose = {
@@ -44,5 +62,31 @@ export type XRHeadPose = {
44
62
  };
45
63
  headingDegrees: number;
46
64
  localHeadOffset: [number, number, number];
65
+ localHeadOrientation: [number, number, number, number];
66
+ displayedOrientation: {
67
+ pitch: number;
68
+ yaw: number;
69
+ roll: number;
70
+ };
71
+ };
72
+ export type XRTrackingReference = {
73
+ position: [number, number, number];
74
+ orientation: [number, number, number, number];
75
+ };
76
+ export type XRPlayerPose = {
77
+ anchor: {
78
+ longitude: number;
79
+ latitude: number;
80
+ altitude: number;
81
+ };
82
+ east?: number;
83
+ north?: number;
84
+ up?: number;
85
+ headingDegrees: number;
86
+ trackingReference?: XRTrackingReference;
87
+ visualOrientation?: {
88
+ pitchDegrees: number;
89
+ rollDegrees: number;
90
+ } | null;
47
91
  };
48
92
  import { Matrix4 } from 'three';
@@ -9,6 +9,7 @@ export function createXRRenderBridge(viewer: import("./index.js").default, initi
9
9
  showAttribution?: boolean;
10
10
  }): {
11
11
  getHeadPose: () => import("./XRPlayerRig.js").XRHeadPose;
12
+ getHeadForward: () => import("three").Vector3Tuple;
12
13
  getControllerWorldRay: (controller: any) => {
13
14
  origin: import("three").Vector3Tuple;
14
15
  direction: import("three").Vector3Tuple;
@@ -16,6 +17,7 @@ export function createXRRenderBridge(viewer: import("./index.js").default, initi
16
17
  setNavigationCue: (cue: any) => void;
17
18
  setTerrainCredits: (credits: any) => void;
18
19
  setPlayerPose(pose: any): void;
20
+ setVisualBlend(blend: any): void;
19
21
  hasUi(): boolean;
20
22
  setNavigationLimit(reason: any): void;
21
23
  setComfortMoving(moving: any): void;
@@ -46,6 +46,7 @@ declare class Viewer extends EventDispatcher {
46
46
  transitionControls: TransitionControls;
47
47
  tileDecoders: TileDecoders;
48
48
  globeManager: GlobeManager;
49
+ _onGlobeTileLoaded: () => void;
49
50
  /** @type {ViewerCoords} */
50
51
  cameraCoords: ViewerCoords;
51
52
  /** @type {ViewerCoords} */
@@ -118,20 +119,14 @@ declare class Viewer extends EventDispatcher {
118
119
  };
119
120
  }[];
120
121
  };
121
- /** @param {{ anchor: { longitude: number, latitude: number, altitude: number }, east?: number, north?: number, up?: number, headingDegrees: number }} pose */
122
- setXRPlayerPose(pose: {
123
- anchor: {
124
- longitude: number;
125
- latitude: number;
126
- altitude: number;
127
- };
128
- east?: number;
129
- north?: number;
130
- up?: number;
131
- headingDegrees: number;
132
- }): void;
122
+ /** @param {import('./XRPlayerRig.js').XRPlayerPose} pose */
123
+ setXRPlayerPose(pose: import("./XRPlayerRig.js").XRPlayerPose): void;
124
+ /** @param {number} blend 1 keeps the saved camera pitch, 0 restores natural tracked orientation. */
125
+ setXRVisualBlend(blend: number): void;
133
126
  /** @returns {import('./XRPlayerRig.js').XRHeadPose | null} */
134
127
  getXRHeadPose(): import("./XRPlayerRig.js").XRHeadPose | null;
128
+ /** @returns {number[] | null} Displayed head-forward unit vector in WGS84 ECEF axes. */
129
+ getXRHeadForward(): number[] | null;
135
130
  /** @param {{ray: {position: number[], orientation: number[]} | null}} controller @returns {{origin: number[], direction: number[]} | null} */
136
131
  getXRControllerWorldRay(controller: {
137
132
  ray: {
@@ -256,6 +251,20 @@ declare class Viewer extends EventDispatcher {
256
251
  * @param {number} [duration]
257
252
  */
258
253
  focusCamera(lon: number, lat: number, alt: number, distance?: number, pitch?: number, duration?: number): Promise<void>;
254
+ /**
255
+ * Temporarily load Google 3D tiles around a WGS84 destination without changing the live view.
256
+ * Position and altitude use degrees and WGS84 ellipsoidal metres; rotation uses degrees.
257
+ * @param {{longitude:number, latitude:number, altitude:number, pitch:number, yaw:number, roll:number, resolutionPixels:128|256} | null} target
258
+ */
259
+ setDestinationTilePrefetch(target: {
260
+ longitude: number;
261
+ latitude: number;
262
+ altitude: number;
263
+ pitch: number;
264
+ yaw: number;
265
+ roll: number;
266
+ resolutionPixels: 128 | 256;
267
+ } | null): void;
259
268
  /**
260
269
  * @param {number} [pitch]
261
270
  * @param {number} [yaw]
@@ -276,6 +285,7 @@ export namespace ViewerEvents {
276
285
  let CONTENT_LAYER_LOAD_PROGRESS: "content-layer-load-progress";
277
286
  let CONTENT_LAYER_READY: "content-layer-ready";
278
287
  let CONTENT_LAYER_ERROR: "content-layer-error";
288
+ let GLOBE_TILE_LOADED: "globe-tile-loaded";
279
289
  }
280
290
  import { EventDispatcher } from '../modules/EventDispatcher';
281
291
  import { WebXRSession } from './WebXRSession.js';
package/build/viewer.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./main-yri0wVzb.cjs"),t=require("./index-XZNzHig1.cjs");exports.Viewer=e.Viewer,exports.ViewerEvents=e.ViewerEvents,exports.computeElevation=t.computeElevation;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./main-DOWS9MQ7.cjs"),t=require("./index-XZNzHig1.cjs");exports.Viewer=e.Viewer,exports.ViewerEvents=e.ViewerEvents,exports.computeElevation=t.computeElevation;
package/build/viewer.js CHANGED
@@ -1,5 +1,5 @@
1
- import { V, a } from "./main-BUCkukV4.js";
2
- import { by } from "./index-BgprA821.js";
1
+ import { V, a } from "./main-CEG3MR57.js";
2
+ import { by } from "./index-a8PLKOvo.js";
3
3
  export {
4
4
  V as Viewer,
5
5
  a as ViewerEvents,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@splnlss/3d-story-viewer",
3
- "version": "0.8.2",
3
+ "version": "0.8.3",
4
4
  "publishConfig": {
5
5
  "access": "public",
6
6
  "registry": "https://registry.npmjs.org/"