@splnlss/3d-story-viewer 0.5.5 → 0.5.7
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/README.md +32 -0
- package/build/types/src/main.d.ts +9 -1
- package/build/types/src/viewer/ContentLayer/GaussianSplatLayer.d.ts +2 -0
- package/build/types/src/viewer/TransitionControls.d.ts +6 -0
- package/build/types/src/viewer/index.d.ts +7 -2
- package/build/viewer.cjs +1 -1
- package/build/viewer.js +159 -85
- package/package.json +10 -3
package/README.md
CHANGED
|
@@ -75,6 +75,38 @@ viewer.enableContentLayers(['default']);
|
|
|
75
75
|
viewer.alignCamera(-105.18896, 39.93, 9000);
|
|
76
76
|
```
|
|
77
77
|
|
|
78
|
+
## Gaussian Splat Layers
|
|
79
|
+
|
|
80
|
+
Gaussian splat content layers support `ply`, `sog`, `spz`, and `rad` data. Every
|
|
81
|
+
layer uses an explicit WGS84 anchor plus an optional local ENU transform:
|
|
82
|
+
|
|
83
|
+
```js
|
|
84
|
+
viewer.defineContentLayers([
|
|
85
|
+
{
|
|
86
|
+
id: 'site-scan',
|
|
87
|
+
name: 'Site scan',
|
|
88
|
+
type: 'gaussian-splat',
|
|
89
|
+
labels: ['default'],
|
|
90
|
+
data: { url: 'https://assets.example.com/site.rad', format: 'rad' },
|
|
91
|
+
options: {
|
|
92
|
+
transform: {
|
|
93
|
+
anchor: { longitude: -105.1, latitude: 40.1, altitude: 1600 },
|
|
94
|
+
translationENU: [0, 0, 0],
|
|
95
|
+
rotationDegrees: [0, 0, 0],
|
|
96
|
+
scale: 1,
|
|
97
|
+
},
|
|
98
|
+
},
|
|
99
|
+
},
|
|
100
|
+
]);
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
PLY, SOG, and SPZ files stream directly and report byte progress. RAD uses
|
|
104
|
+
Spark's paged loader: becoming ready means its metadata is valid and LOD
|
|
105
|
+
streaming can begin, while detail continues to load in response to the camera.
|
|
106
|
+
RAD hosts must support HTTP byte ranges and cross-origin `GET`/`HEAD` requests.
|
|
107
|
+
Expose `Content-Length`, `Content-Range`, and `Accept-Ranges`; relative RAD
|
|
108
|
+
sidecar files must use the same policy.
|
|
109
|
+
|
|
78
110
|
## Environment Variables
|
|
79
111
|
|
|
80
112
|
Viewer tokens can be passed directly in the constructor or provided through Vite environment variables:
|
|
@@ -1,4 +1,12 @@
|
|
|
1
1
|
export type Vector3Tuple = [number, number, number];
|
|
2
|
+
export type ViewerOptions = {
|
|
3
|
+
cesiumToken?: string;
|
|
4
|
+
googleMapsToken?: string;
|
|
5
|
+
/**
|
|
6
|
+
* Defaults to true.
|
|
7
|
+
*/
|
|
8
|
+
transparentBackground?: boolean;
|
|
9
|
+
};
|
|
2
10
|
export type GaussianSplatLayerDefinition = {
|
|
3
11
|
id: string;
|
|
4
12
|
name: string;
|
|
@@ -6,7 +14,7 @@ export type GaussianSplatLayerDefinition = {
|
|
|
6
14
|
labels: string[];
|
|
7
15
|
data: {
|
|
8
16
|
url: string;
|
|
9
|
-
format: "ply" | "sog";
|
|
17
|
+
format: "ply" | "sog" | "spz" | "rad";
|
|
10
18
|
};
|
|
11
19
|
options: {
|
|
12
20
|
renderOrder?: 0;
|
|
@@ -11,6 +11,8 @@ export class GaussianSplatLayer extends ContentLayer {
|
|
|
11
11
|
visible: boolean;
|
|
12
12
|
transformMatrix: any;
|
|
13
13
|
load(): Promise<void>;
|
|
14
|
+
createPagedMesh(): SplatMesh;
|
|
15
|
+
createDirectMesh(attempt: any): Promise<SplatMesh>;
|
|
14
16
|
disposeMesh(mesh: any): void;
|
|
15
17
|
}
|
|
16
18
|
import { ContentLayer } from '.';
|
|
@@ -4,8 +4,14 @@ export class TransitionControls extends EventDispatcher {
|
|
|
4
4
|
lookAt: any;
|
|
5
5
|
cameraTween: any;
|
|
6
6
|
lookAtTween: any;
|
|
7
|
+
activeTransition: {
|
|
8
|
+
resolve: (value: any) => void;
|
|
9
|
+
toPosition: any;
|
|
10
|
+
toQuaternion: any;
|
|
11
|
+
};
|
|
7
12
|
is2D: boolean;
|
|
8
13
|
animateTo(position: any, quaternion: any, duration?: number): Promise<any>;
|
|
14
|
+
complete(transition: any): void;
|
|
9
15
|
update(time: any): void;
|
|
10
16
|
cancel(): void;
|
|
11
17
|
cameraUpTween: any;
|
|
@@ -16,11 +16,16 @@ export type ViewerCoords = {
|
|
|
16
16
|
* @property {number} [roll]
|
|
17
17
|
*/
|
|
18
18
|
declare class Viewer extends EventDispatcher {
|
|
19
|
-
|
|
19
|
+
/**
|
|
20
|
+
* @param {HTMLElement | null} container
|
|
21
|
+
* @param {import('../main.js').ViewerOptions} [options]
|
|
22
|
+
*/
|
|
23
|
+
constructor(container: HTMLElement | null, options?: import("../main.js").ViewerOptions);
|
|
20
24
|
isViewer: boolean;
|
|
21
25
|
type: string;
|
|
22
26
|
disposed: boolean;
|
|
23
27
|
sparkRenderer: SparkRenderer;
|
|
28
|
+
transparentBackground: boolean;
|
|
24
29
|
state: StateDispatcher;
|
|
25
30
|
renderer: any;
|
|
26
31
|
css2DRenderer: any;
|
|
@@ -102,7 +107,7 @@ declare class Viewer extends EventDispatcher {
|
|
|
102
107
|
alignCamera(lon: any, lat: any, alt: any, pitch?: number, yaw?: number, roll?: number, duration?: number): Promise<void>;
|
|
103
108
|
focusCamera(lon: any, lat: any, alt: any, distance?: number, pitch?: number, duration?: number): Promise<void>;
|
|
104
109
|
angleCamera(pitch?: number, yaw?: number, duration?: number): Promise<void>;
|
|
105
|
-
setViewMode(mode?: string): void
|
|
110
|
+
setViewMode(mode?: string): Promise<void>;
|
|
106
111
|
exportScene(): void;
|
|
107
112
|
saveScreenshot(name?: string): void;
|
|
108
113
|
dispose(): void;
|