@loaders.gl/tiles 4.0.0-alpha.1 → 4.0.0-alpha.11
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/dist/bundle.d.ts +2 -0
- package/dist/bundle.d.ts.map +1 -0
- package/dist/bundle.js +2 -2
- package/dist/constants.d.ts +38 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +37 -30
- package/dist/dist.min.js +9163 -0
- package/dist/es5/bundle.js +6 -0
- package/dist/es5/bundle.js.map +1 -0
- package/dist/es5/constants.js +48 -0
- package/dist/es5/constants.js.map +1 -0
- package/dist/es5/index.js +93 -0
- package/dist/es5/index.js.map +1 -0
- package/dist/es5/tileset/format-3d-tiles/tileset-3d-traverser.js +70 -0
- package/dist/es5/tileset/format-3d-tiles/tileset-3d-traverser.js.map +1 -0
- package/dist/es5/tileset/format-i3s/i3s-pending-tiles-register.js +45 -0
- package/dist/es5/tileset/format-i3s/i3s-pending-tiles-register.js.map +1 -0
- package/dist/es5/tileset/format-i3s/i3s-tile-manager.js +84 -0
- package/dist/es5/tileset/format-i3s/i3s-tile-manager.js.map +1 -0
- package/dist/es5/tileset/format-i3s/i3s-tileset-traverser.js +143 -0
- package/dist/es5/tileset/format-i3s/i3s-tileset-traverser.js.map +1 -0
- package/dist/es5/tileset/helpers/3d-tiles-options.js +12 -0
- package/dist/es5/tileset/helpers/3d-tiles-options.js.map +1 -0
- package/dist/es5/tileset/helpers/bounding-volume.js +176 -0
- package/dist/es5/tileset/helpers/bounding-volume.js.map +1 -0
- package/dist/es5/tileset/helpers/frame-state.js +129 -0
- package/dist/es5/tileset/helpers/frame-state.js.map +1 -0
- package/dist/es5/tileset/helpers/i3s-lod.js +60 -0
- package/dist/es5/tileset/helpers/i3s-lod.js.map +1 -0
- package/dist/es5/tileset/helpers/tiles-3d-lod.js +103 -0
- package/dist/es5/tileset/helpers/tiles-3d-lod.js.map +1 -0
- package/dist/es5/tileset/helpers/transform-utils.js +50 -0
- package/dist/es5/tileset/helpers/transform-utils.js.map +1 -0
- package/dist/es5/tileset/helpers/zoom.js +63 -0
- package/dist/es5/tileset/helpers/zoom.js.map +1 -0
- package/dist/es5/tileset/tile-3d.js +536 -0
- package/dist/es5/tileset/tile-3d.js.map +1 -0
- package/dist/es5/tileset/tileset-3d.js +855 -0
- package/dist/es5/tileset/tileset-3d.js.map +1 -0
- package/dist/es5/tileset/tileset-cache.js +82 -0
- package/dist/es5/tileset/tileset-cache.js.map +1 -0
- package/dist/es5/tileset/tileset-traverser.js +321 -0
- package/dist/es5/tileset/tileset-traverser.js.map +1 -0
- package/dist/es5/types.js +2 -0
- package/dist/es5/types.js.map +1 -0
- package/dist/es5/utils/doubly-linked-list-node.js +21 -0
- package/dist/es5/utils/doubly-linked-list-node.js.map +1 -0
- package/dist/es5/utils/doubly-linked-list.js +88 -0
- package/dist/es5/utils/doubly-linked-list.js.map +1 -0
- package/dist/es5/utils/managed-array.js +126 -0
- package/dist/es5/utils/managed-array.js.map +1 -0
- package/dist/esm/bundle.js +4 -0
- package/dist/esm/bundle.js.map +1 -0
- package/dist/esm/constants.js +36 -0
- package/dist/esm/constants.js.map +1 -0
- package/dist/esm/index.js +10 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/{tileset/traversers → esm/tileset/format-3d-tiles}/tileset-3d-traverser.js +2 -13
- package/dist/esm/tileset/format-3d-tiles/tileset-3d-traverser.js.map +1 -0
- package/dist/esm/tileset/format-i3s/i3s-pending-tiles-register.js +26 -0
- package/dist/esm/tileset/format-i3s/i3s-pending-tiles-register.js.map +1 -0
- package/dist/esm/tileset/format-i3s/i3s-tile-manager.js +79 -0
- package/dist/esm/tileset/format-i3s/i3s-tile-manager.js.map +1 -0
- package/dist/{tileset/traversers → esm/tileset/format-i3s}/i3s-tileset-traverser.js +16 -28
- package/dist/esm/tileset/format-i3s/i3s-tileset-traverser.js.map +1 -0
- package/dist/esm/tileset/helpers/3d-tiles-options.js +6 -0
- package/dist/esm/tileset/helpers/3d-tiles-options.js.map +1 -0
- package/dist/esm/tileset/helpers/bounding-volume.js +155 -0
- package/dist/esm/tileset/helpers/bounding-volume.js.map +1 -0
- package/dist/esm/tileset/helpers/frame-state.js +109 -0
- package/dist/esm/tileset/helpers/frame-state.js.map +1 -0
- package/dist/esm/tileset/helpers/i3s-lod.js +53 -0
- package/dist/esm/tileset/helpers/i3s-lod.js.map +1 -0
- package/dist/esm/tileset/helpers/tiles-3d-lod.js +100 -0
- package/dist/{tileset → esm/tileset}/helpers/tiles-3d-lod.js.map +1 -1
- package/dist/esm/tileset/helpers/transform-utils.js +50 -0
- package/dist/esm/tileset/helpers/transform-utils.js.map +1 -0
- package/dist/esm/tileset/helpers/zoom.js +55 -0
- package/dist/esm/tileset/helpers/zoom.js.map +1 -0
- package/dist/esm/tileset/tile-3d.js +414 -0
- package/dist/esm/tileset/tile-3d.js.map +1 -0
- package/dist/esm/tileset/tileset-3d.js +606 -0
- package/dist/esm/tileset/tileset-3d.js.map +1 -0
- package/dist/esm/tileset/tileset-cache.js +57 -0
- package/dist/esm/tileset/tileset-cache.js.map +1 -0
- package/dist/{tileset/traversers → esm/tileset}/tileset-traverser.js +29 -88
- package/dist/esm/tileset/tileset-traverser.js.map +1 -0
- package/dist/esm/types.js +2 -0
- package/dist/esm/types.js.map +1 -0
- package/dist/esm/utils/doubly-linked-list-node.js +12 -0
- package/dist/esm/utils/doubly-linked-list-node.js.map +1 -0
- package/dist/esm/utils/doubly-linked-list.js +65 -0
- package/dist/esm/utils/doubly-linked-list.js.map +1 -0
- package/dist/esm/utils/managed-array.js +87 -0
- package/dist/esm/utils/managed-array.js.map +1 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +26 -9
- package/dist/tileset/format-3d-tiles/tileset-3d-traverser.d.ts +7 -0
- package/dist/tileset/format-3d-tiles/tileset-3d-traverser.d.ts.map +1 -0
- package/dist/tileset/format-3d-tiles/tileset-3d-traverser.js +54 -0
- package/dist/tileset/format-i3s/i3s-pending-tiles-register.d.ts +27 -0
- package/dist/tileset/format-i3s/i3s-pending-tiles-register.d.ts.map +1 -0
- package/dist/tileset/format-i3s/i3s-pending-tiles-register.js +47 -0
- package/dist/tileset/format-i3s/i3s-tile-manager.d.ts +34 -0
- package/dist/tileset/format-i3s/i3s-tile-manager.d.ts.map +1 -0
- package/dist/tileset/format-i3s/i3s-tile-manager.js +80 -0
- package/dist/tileset/format-i3s/i3s-tileset-traverser.d.ts +25 -0
- package/dist/tileset/format-i3s/i3s-tileset-traverser.d.ts.map +1 -0
- package/dist/tileset/format-i3s/i3s-tileset-traverser.js +92 -0
- package/dist/tileset/helpers/3d-tiles-options.d.ts +5 -0
- package/dist/tileset/helpers/3d-tiles-options.d.ts.map +1 -0
- package/dist/tileset/helpers/3d-tiles-options.js +8 -5
- package/dist/tileset/helpers/bounding-volume.d.ts +19 -0
- package/dist/tileset/helpers/bounding-volume.d.ts.map +1 -0
- package/dist/tileset/helpers/bounding-volume.js +274 -69
- package/dist/tileset/helpers/frame-state.d.ts +28 -0
- package/dist/tileset/helpers/frame-state.d.ts.map +1 -0
- package/dist/tileset/helpers/frame-state.js +131 -49
- package/dist/tileset/helpers/i3s-lod.d.ts +20 -0
- package/dist/tileset/helpers/i3s-lod.d.ts.map +1 -0
- package/dist/tileset/helpers/i3s-lod.js +82 -105
- package/dist/tileset/helpers/tiles-3d-lod.d.ts +8 -0
- package/dist/tileset/helpers/tiles-3d-lod.d.ts.map +1 -0
- package/dist/tileset/helpers/tiles-3d-lod.js +112 -100
- package/dist/tileset/helpers/transform-utils.d.ts +2 -0
- package/dist/tileset/helpers/transform-utils.d.ts.map +1 -0
- package/dist/tileset/helpers/transform-utils.js +51 -56
- package/dist/tileset/helpers/zoom.d.ts +46 -0
- package/dist/tileset/helpers/zoom.d.ts.map +1 -0
- package/dist/tileset/helpers/zoom.js +83 -30
- package/dist/tileset/tile-3d.d.ts +222 -0
- package/dist/tileset/tile-3d.d.ts.map +1 -0
- package/dist/tileset/tile-3d.js +607 -531
- package/dist/tileset/tileset-3d.d.ts +264 -0
- package/dist/tileset/tileset-3d.d.ts.map +1 -0
- package/dist/tileset/tileset-3d.js +693 -652
- package/dist/tileset/tileset-cache.d.ts +19 -0
- package/dist/tileset/tileset-cache.d.ts.map +1 -0
- package/dist/tileset/tileset-cache.js +66 -73
- package/dist/tileset/tileset-traverser.d.ts +57 -0
- package/dist/tileset/tileset-traverser.d.ts.map +1 -0
- package/dist/tileset/tileset-traverser.js +300 -0
- package/dist/types.d.ts +34 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/utils/doubly-linked-list-node.d.ts +11 -0
- package/dist/utils/doubly-linked-list-node.d.ts.map +1 -0
- package/dist/utils/doubly-linked-list-node.js +17 -8
- package/dist/utils/doubly-linked-list.d.ts +30 -0
- package/dist/utils/doubly-linked-list.d.ts.map +1 -0
- package/dist/utils/doubly-linked-list.js +91 -72
- package/dist/utils/managed-array.d.ts +85 -0
- package/dist/utils/managed-array.d.ts.map +1 -0
- package/dist/utils/managed-array.js +144 -103
- package/package.json +13 -10
- package/src/constants.ts +38 -18
- package/src/index.ts +7 -4
- package/src/tileset/{traversers → format-3d-tiles}/tileset-3d-traverser.ts +4 -2
- package/src/tileset/format-i3s/i3s-pending-tiles-register.ts +44 -0
- package/src/tileset/format-i3s/i3s-tile-manager.ts +101 -0
- package/src/tileset/{traversers → format-i3s}/i3s-tileset-traverser.ts +27 -15
- package/src/tileset/helpers/3d-tiles-options.ts +3 -1
- package/src/tileset/helpers/bounding-volume.ts +136 -0
- package/src/tileset/helpers/frame-state.ts +102 -18
- package/src/tileset/helpers/i3s-lod.ts +75 -96
- package/src/tileset/helpers/tiles-3d-lod.ts +2 -0
- package/src/tileset/helpers/transform-utils.ts +2 -0
- package/src/tileset/helpers/zoom.ts +84 -9
- package/src/tileset/tile-3d.ts +139 -123
- package/src/tileset/tileset-3d.ts +379 -252
- package/src/tileset/tileset-cache.ts +26 -17
- package/src/tileset/{traversers/tileset-traverser.ts → tileset-traverser.ts} +71 -72
- package/src/types.ts +36 -0
- package/src/utils/{doubly-linked-list-node.js → doubly-linked-list-node.ts} +7 -2
- package/src/utils/{doubly-linked-list.js → doubly-linked-list.ts} +5 -8
- package/src/utils/{managed-array.js → managed-array.ts} +5 -2
- package/dist/bundle.js.map +0 -1
- package/dist/constants.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/tileset/helpers/3d-tiles-options.js.map +0 -1
- package/dist/tileset/helpers/bounding-volume.js.map +0 -1
- package/dist/tileset/helpers/frame-state.js.map +0 -1
- package/dist/tileset/helpers/i3s-lod.js.map +0 -1
- package/dist/tileset/helpers/transform-utils.js.map +0 -1
- package/dist/tileset/helpers/zoom.js.map +0 -1
- package/dist/tileset/tile-3d.js.map +0 -1
- package/dist/tileset/tileset-3d.js.map +0 -1
- package/dist/tileset/tileset-cache.js.map +0 -1
- package/dist/tileset/traversers/i3s-tile-manager.js +0 -45
- package/dist/tileset/traversers/i3s-tile-manager.js.map +0 -1
- package/dist/tileset/traversers/i3s-tileset-traverser.js.map +0 -1
- package/dist/tileset/traversers/tileset-3d-traverser.js.map +0 -1
- package/dist/tileset/traversers/tileset-traverser.js.map +0 -1
- package/dist/utils/doubly-linked-list-node.js.map +0 -1
- package/dist/utils/doubly-linked-list.js.map +0 -1
- package/dist/utils/managed-array.js.map +0 -1
- package/src/tileset/traversers/i3s-tile-manager.ts +0 -39
package/src/tileset/tile-3d.ts
CHANGED
|
@@ -1,20 +1,28 @@
|
|
|
1
|
+
// loaders.gl, MIT license
|
|
2
|
+
|
|
1
3
|
// This file is derived from the Cesium code base under Apache 2 license
|
|
2
4
|
// See LICENSE.md and https://github.com/AnalyticalGraphicsInc/cesium/blob/master/LICENSE.md
|
|
5
|
+
|
|
3
6
|
import {Vector3, Matrix4} from '@math.gl/core';
|
|
4
7
|
import {CullingVolume} from '@math.gl/culling';
|
|
5
8
|
|
|
6
9
|
import {load} from '@loaders.gl/core';
|
|
10
|
+
|
|
11
|
+
// Note: circular dependency
|
|
12
|
+
import type {Tileset3D} from './tileset-3d';
|
|
13
|
+
import type {DoublyLinkedListNode} from '../utils/doubly-linked-list-node';
|
|
7
14
|
import {TILE_REFINEMENT, TILE_CONTENT_STATE, TILESET_TYPE} from '../constants';
|
|
8
15
|
|
|
9
16
|
import {FrameState} from './helpers/frame-state';
|
|
10
|
-
import {
|
|
17
|
+
import {
|
|
18
|
+
createBoundingVolume,
|
|
19
|
+
getCartographicBounds,
|
|
20
|
+
CartographicBounds
|
|
21
|
+
} from './helpers/bounding-volume';
|
|
11
22
|
import {getTiles3DScreenSpaceError} from './helpers/tiles-3d-lod';
|
|
12
|
-
import {
|
|
23
|
+
import {getProjectedRadius} from './helpers/i3s-lod';
|
|
13
24
|
import {get3dTilesOptions} from './helpers/3d-tiles-options';
|
|
14
|
-
import TilesetTraverser from './
|
|
15
|
-
|
|
16
|
-
// Note: circular dependency
|
|
17
|
-
import type Tileset3D from './tileset-3d';
|
|
25
|
+
import {TilesetTraverser} from './tileset-traverser';
|
|
18
26
|
|
|
19
27
|
const scratchVector = new Vector3();
|
|
20
28
|
|
|
@@ -25,14 +33,14 @@ function defined(x) {
|
|
|
25
33
|
/**
|
|
26
34
|
* @param tileset - Tileset3D instance
|
|
27
35
|
* @param header - tile header - JSON loaded from a dataset
|
|
28
|
-
* @param parentHeader - parent
|
|
36
|
+
* @param parentHeader - parent Tile3D instance
|
|
29
37
|
* @param extendedId - optional ID to separate copies of a tile for different viewports.
|
|
30
38
|
* const extendedId = `${tile.id}-${frameState.viewport.id}`;
|
|
31
39
|
*/
|
|
32
|
-
export type
|
|
40
|
+
export type Tile3DProps = {
|
|
33
41
|
tileset: Tileset3D;
|
|
34
42
|
header: Object;
|
|
35
|
-
parentHeader:
|
|
43
|
+
parentHeader: Tile3D;
|
|
36
44
|
extendedId: string;
|
|
37
45
|
};
|
|
38
46
|
|
|
@@ -41,83 +49,91 @@ export type TileHeaderProps = {
|
|
|
41
49
|
* the content is loaded on-demand when needed based on the view.
|
|
42
50
|
* Do not construct this directly, instead access tiles through {@link Tileset3D#tileVisible}.
|
|
43
51
|
*/
|
|
44
|
-
export
|
|
52
|
+
export class Tile3D {
|
|
45
53
|
tileset: Tileset3D;
|
|
46
54
|
header: any;
|
|
47
55
|
id: string;
|
|
48
56
|
url: string;
|
|
49
|
-
parent:
|
|
57
|
+
parent: Tile3D;
|
|
58
|
+
/* Specifies the type of refine that is used when traversing this tile for rendering. */
|
|
50
59
|
refine: number;
|
|
51
60
|
type: string;
|
|
52
61
|
contentUrl: string;
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
62
|
+
/** Different refinement algorithms used by I3S and 3D tiles */
|
|
63
|
+
lodMetricType: 'geometricError' | 'maxScreenThreshold' = 'geometricError';
|
|
64
|
+
/** The error, in meters, introduced if this tile is rendered and its children are not. */
|
|
65
|
+
lodMetricValue: number = 0;
|
|
66
|
+
|
|
67
|
+
/** @todo math.gl is not exporting BoundingVolume base type? */
|
|
68
|
+
boundingVolume: any = null;
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* The tile's content. This represents the actual tile's payload,
|
|
72
|
+
* not the content's metadata in the tileset JSON file.
|
|
73
|
+
*/
|
|
74
|
+
content: any = null;
|
|
75
|
+
contentState: number = TILE_CONTENT_STATE.UNLOADED;
|
|
76
|
+
gpuMemoryUsageInBytes: number = 0;
|
|
77
|
+
|
|
78
|
+
/** The tile's children - an array of Tile3D objects. */
|
|
79
|
+
children: Tile3D[] = [];
|
|
80
|
+
depth: number = 0;
|
|
81
|
+
viewportIds: any[] = [];
|
|
82
|
+
transform = new Matrix4();
|
|
83
|
+
extensions: any = null;
|
|
84
|
+
/** TODO Cesium 3d tiles specific */
|
|
85
|
+
implicitTiling?: any = null;
|
|
86
|
+
|
|
87
|
+
/** Container to store application specific data */
|
|
88
|
+
userData: Record<string, any> = {};
|
|
89
|
+
|
|
66
90
|
computedTransform: any;
|
|
67
|
-
hasEmptyContent: boolean;
|
|
68
|
-
hasTilesetContent: boolean;
|
|
91
|
+
hasEmptyContent: boolean = false;
|
|
92
|
+
hasTilesetContent: boolean = false;
|
|
69
93
|
|
|
70
|
-
traverser
|
|
94
|
+
traverser = new TilesetTraverser({});
|
|
71
95
|
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
private _frameNumber: any;
|
|
75
|
-
// TODO i3s specific, needs to remove
|
|
76
|
-
// @ts-ignore
|
|
77
|
-
private _lodJudge: any;
|
|
78
|
-
// TODO Cesium 3d tiles specific
|
|
79
|
-
private _expireDate: any;
|
|
80
|
-
private _expiredContent: any;
|
|
81
|
-
// @ts-ignore
|
|
82
|
-
private _shouldRefine: boolean;
|
|
83
|
-
|
|
84
|
-
// Members this are updated every frame for tree traversal and rendering optimizations:
|
|
85
|
-
// @ts-ignore
|
|
86
|
-
private _distanceToCamera: number;
|
|
87
|
-
// @ts-ignore
|
|
88
|
-
private _centerZDepth: number;
|
|
89
|
-
private _screenSpaceError: number;
|
|
90
|
-
private _visibilityPlaneMask: any;
|
|
91
|
-
private _visible?: boolean;
|
|
92
|
-
private _inRequestVolume: boolean;
|
|
96
|
+
/** Used by TilesetCache */
|
|
97
|
+
_cacheNode: DoublyLinkedListNode | null = null;
|
|
93
98
|
|
|
94
|
-
|
|
95
|
-
private _stackLength: number;
|
|
96
|
-
// @ts-ignore
|
|
97
|
-
private _selectionDepth: number;
|
|
99
|
+
private _frameNumber: any = null;
|
|
98
100
|
|
|
99
|
-
//
|
|
100
|
-
private
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
private
|
|
104
|
-
// @ts-ignore
|
|
105
|
-
private _requestedFrame: number;
|
|
101
|
+
// TODO Cesium 3d tiles specific
|
|
102
|
+
private _expireDate: any = null;
|
|
103
|
+
private _expiredContent: any = null;
|
|
104
|
+
|
|
105
|
+
private _boundingBox?: CartographicBounds;
|
|
106
106
|
|
|
107
|
-
|
|
108
|
-
|
|
107
|
+
/** updated every frame for tree traversal and rendering optimizations: */
|
|
108
|
+
public _distanceToCamera: number = 0;
|
|
109
|
+
_screenSpaceError: number = 0;
|
|
110
|
+
private _visibilityPlaneMask: any;
|
|
111
|
+
private _visible: boolean | undefined = undefined;
|
|
109
112
|
|
|
110
113
|
private _contentBoundingVolume: any;
|
|
111
114
|
private _viewerRequestVolume: any;
|
|
112
115
|
|
|
113
|
-
_initialTransform: Matrix4;
|
|
116
|
+
_initialTransform: Matrix4 = new Matrix4();
|
|
117
|
+
|
|
118
|
+
// Used by traverser, cannot be marked private
|
|
119
|
+
_priority: number = 0;
|
|
120
|
+
_selectedFrame: number = 0;
|
|
121
|
+
_requestedFrame: number = 0;
|
|
122
|
+
_selectionDepth: number = 0;
|
|
123
|
+
_touchedFrame: number = 0;
|
|
124
|
+
_centerZDepth: number = 0;
|
|
125
|
+
_shouldRefine: boolean = false;
|
|
126
|
+
_stackLength: number = 0;
|
|
127
|
+
_visitedFrame: number = 0;
|
|
128
|
+
_inRequestVolume: boolean = false;
|
|
129
|
+
_lodJudge: any = null; // TODO i3s specific, needs to remove
|
|
114
130
|
|
|
115
131
|
/**
|
|
116
132
|
* @constructs
|
|
117
|
-
* Create a
|
|
133
|
+
* Create a Tile3D instance
|
|
118
134
|
* @param tileset - Tileset3D instance
|
|
119
135
|
* @param header - tile header - JSON loaded from a dataset
|
|
120
|
-
* @param parentHeader - parent
|
|
136
|
+
* @param parentHeader - parent Tile3D instance
|
|
121
137
|
* @param extendedId - optional ID to separate copies of a tile for different viewports.
|
|
122
138
|
* const extendedId = `${tile.id}-${frameState.viewport.id}`;
|
|
123
139
|
*/
|
|
@@ -125,7 +141,7 @@ export default class TileHeader {
|
|
|
125
141
|
constructor(
|
|
126
142
|
tileset: Tileset3D,
|
|
127
143
|
header: {[key: string]: any},
|
|
128
|
-
parentHeader?:
|
|
144
|
+
parentHeader?: Tile3D,
|
|
129
145
|
extendedId = ''
|
|
130
146
|
) {
|
|
131
147
|
// PUBLIC MEMBERS
|
|
@@ -144,67 +160,12 @@ export default class TileHeader {
|
|
|
144
160
|
this.type = header.type;
|
|
145
161
|
this.contentUrl = header.contentUrl;
|
|
146
162
|
|
|
147
|
-
// The error, in meters, introduced if this tile is rendered and its children are not.
|
|
148
|
-
this.lodMetricType = 'geometricError';
|
|
149
|
-
this.lodMetricValue = 0;
|
|
150
|
-
|
|
151
|
-
// Specifies the type of refine that is used when traversing this tile for rendering.
|
|
152
|
-
this.boundingVolume = null;
|
|
153
|
-
|
|
154
|
-
// The tile's content. This represents the actual tile's payload,
|
|
155
|
-
// not the content's metadata in the tileset JSON file.
|
|
156
|
-
this.content = null;
|
|
157
|
-
this.contentState = TILE_CONTENT_STATE.UNLOADED;
|
|
158
|
-
this.gpuMemoryUsageInBytes = 0;
|
|
159
|
-
|
|
160
|
-
// The tile's children - an array of Tile3D objects.
|
|
161
|
-
this.children = [];
|
|
162
|
-
|
|
163
|
-
this.hasEmptyContent = false;
|
|
164
|
-
this.hasTilesetContent = false;
|
|
165
|
-
|
|
166
|
-
this.depth = 0;
|
|
167
|
-
this.viewportIds = [];
|
|
168
|
-
|
|
169
|
-
// Container to store application specific data
|
|
170
|
-
this.userData = {};
|
|
171
|
-
|
|
172
|
-
// PRIVATE MEMBERS
|
|
173
|
-
this._priority = 0;
|
|
174
|
-
this._touchedFrame = 0;
|
|
175
|
-
this._visitedFrame = 0;
|
|
176
|
-
this._selectedFrame = 0;
|
|
177
|
-
this._requestedFrame = 0;
|
|
178
|
-
this._screenSpaceError = 0;
|
|
179
|
-
|
|
180
|
-
this._cacheNode = null;
|
|
181
|
-
this._frameNumber = null;
|
|
182
|
-
this._cacheNode = null;
|
|
183
|
-
|
|
184
|
-
this.traverser = new TilesetTraverser({});
|
|
185
|
-
this._shouldRefine = false;
|
|
186
|
-
this._distanceToCamera = 0;
|
|
187
|
-
this._centerZDepth = 0;
|
|
188
|
-
this._visible = undefined;
|
|
189
|
-
this._inRequestVolume = false;
|
|
190
|
-
this._stackLength = 0;
|
|
191
|
-
this._selectionDepth = 0;
|
|
192
|
-
this._initialTransform = new Matrix4();
|
|
193
|
-
this.transform = new Matrix4();
|
|
194
|
-
|
|
195
163
|
this._initializeLodMetric(header);
|
|
196
164
|
this._initializeTransforms(header);
|
|
197
165
|
this._initializeBoundingVolumes(header);
|
|
198
166
|
this._initializeContent(header);
|
|
199
167
|
this._initializeRenderingState(header);
|
|
200
168
|
|
|
201
|
-
// TODO i3s specific, needs to remove
|
|
202
|
-
this._lodJudge = null;
|
|
203
|
-
|
|
204
|
-
// TODO Cesium 3d tiles specific
|
|
205
|
-
this._expireDate = null;
|
|
206
|
-
this._expiredContent = null;
|
|
207
|
-
|
|
208
169
|
Object.seal(this);
|
|
209
170
|
}
|
|
210
171
|
|
|
@@ -283,11 +244,36 @@ export default class TileHeader {
|
|
|
283
244
|
return this.contentState === TILE_CONTENT_STATE.FAILED;
|
|
284
245
|
}
|
|
285
246
|
|
|
247
|
+
/**
|
|
248
|
+
* Distance from the tile's bounding volume center to the camera
|
|
249
|
+
*/
|
|
250
|
+
get distanceToCamera(): number {
|
|
251
|
+
return this._distanceToCamera;
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
/**
|
|
255
|
+
* Screen space error for LOD selection
|
|
256
|
+
*/
|
|
257
|
+
get screenSpaceError(): number {
|
|
258
|
+
return this._screenSpaceError;
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
/**
|
|
262
|
+
* Get bounding box in cartographic coordinates
|
|
263
|
+
* @returns [min, max] each in [longitude, latitude, altitude]
|
|
264
|
+
*/
|
|
265
|
+
get boundingBox(): CartographicBounds {
|
|
266
|
+
if (!this._boundingBox) {
|
|
267
|
+
this._boundingBox = getCartographicBounds(this.header.boundingVolume, this.boundingVolume);
|
|
268
|
+
}
|
|
269
|
+
return this._boundingBox;
|
|
270
|
+
}
|
|
271
|
+
|
|
286
272
|
/** Get the tile's screen space error. */
|
|
287
273
|
getScreenSpaceError(frameState, useParentLodMetric) {
|
|
288
274
|
switch (this.tileset.type) {
|
|
289
275
|
case TILESET_TYPE.I3S:
|
|
290
|
-
return
|
|
276
|
+
return getProjectedRadius(this, frameState);
|
|
291
277
|
case TILESET_TYPE.TILES3D:
|
|
292
278
|
return getTiles3DScreenSpaceError(this, frameState, useParentLodMetric);
|
|
293
279
|
default:
|
|
@@ -296,6 +282,21 @@ export default class TileHeader {
|
|
|
296
282
|
}
|
|
297
283
|
}
|
|
298
284
|
|
|
285
|
+
/**
|
|
286
|
+
* Make tile unselected than means it won't be shown
|
|
287
|
+
* but it can be still loaded in memory
|
|
288
|
+
*/
|
|
289
|
+
unselect(): void {
|
|
290
|
+
this._selectedFrame = 0;
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
/**
|
|
294
|
+
* Memory usage of tile on GPU
|
|
295
|
+
*/
|
|
296
|
+
_getGpuMemoryUsageInBytes(): number {
|
|
297
|
+
return this.content.gpuMemoryUsageInBytes || this.content.byteLength || 0;
|
|
298
|
+
}
|
|
299
|
+
|
|
299
300
|
/*
|
|
300
301
|
* If skipLevelOfDetail is off try to load child tiles as soon as possible so that their parent can refine sooner.
|
|
301
302
|
* Tiles are prioritized by screen space error.
|
|
@@ -379,6 +380,7 @@ export default class TileHeader {
|
|
|
379
380
|
const options = {
|
|
380
381
|
...this.tileset.loadOptions,
|
|
381
382
|
[loader.id]: {
|
|
383
|
+
// @ts-expect-error
|
|
382
384
|
...this.tileset.loadOptions[loader.id],
|
|
383
385
|
isTileset: this.type === 'json',
|
|
384
386
|
...this._getLoaderSpecificOptions(loader.id)
|
|
@@ -689,6 +691,8 @@ export default class TileHeader {
|
|
|
689
691
|
// The content may be tileset json
|
|
690
692
|
if (this._isTileset()) {
|
|
691
693
|
this.hasTilesetContent = true;
|
|
694
|
+
} else {
|
|
695
|
+
this.gpuMemoryUsageInBytes = this._getGpuMemoryUsageInBytes();
|
|
692
696
|
}
|
|
693
697
|
}
|
|
694
698
|
|
|
@@ -747,8 +751,20 @@ export default class TileHeader {
|
|
|
747
751
|
case 'i3s':
|
|
748
752
|
return {
|
|
749
753
|
...this.tileset.options.i3s,
|
|
750
|
-
|
|
751
|
-
|
|
754
|
+
_tileOptions: {
|
|
755
|
+
attributeUrls: this.header.attributeUrls,
|
|
756
|
+
textureUrl: this.header.textureUrl,
|
|
757
|
+
textureFormat: this.header.textureFormat,
|
|
758
|
+
textureLoaderOptions: this.header.textureLoaderOptions,
|
|
759
|
+
materialDefinition: this.header.materialDefinition,
|
|
760
|
+
isDracoGeometry: this.header.isDracoGeometry,
|
|
761
|
+
mbs: this.header.mbs
|
|
762
|
+
},
|
|
763
|
+
_tilesetOptions: {
|
|
764
|
+
store: this.tileset.tileset.store,
|
|
765
|
+
attributeStorageInfo: this.tileset.tileset.attributeStorageInfo,
|
|
766
|
+
fields: this.tileset.tileset.fields
|
|
767
|
+
},
|
|
752
768
|
isTileHeader: false
|
|
753
769
|
};
|
|
754
770
|
case '3d-tiles':
|