@loaders.gl/tiles 4.4.0-alpha.2 → 4.4.0
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 +1 -1
- package/dist/constants.js +1 -0
- package/dist/constants.js.map +1 -0
- package/dist/dist.dev.js +89 -6
- package/dist/dist.min.js +1 -1
- package/dist/index.cjs +75 -5
- package/dist/index.cjs.map +3 -3
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -0
- package/dist/tileset/format-3d-tiles/tileset-3d-traverser.js +1 -0
- package/dist/tileset/format-3d-tiles/tileset-3d-traverser.js.map +1 -0
- package/dist/tileset/format-i3s/i3s-pending-tiles-register.js +1 -0
- package/dist/tileset/format-i3s/i3s-pending-tiles-register.js.map +1 -0
- package/dist/tileset/format-i3s/i3s-tile-manager.js +1 -0
- package/dist/tileset/format-i3s/i3s-tile-manager.js.map +1 -0
- package/dist/tileset/format-i3s/i3s-tileset-traverser.js +1 -0
- package/dist/tileset/format-i3s/i3s-tileset-traverser.js.map +1 -0
- package/dist/tileset/helpers/3d-tiles-options.js +1 -0
- package/dist/tileset/helpers/3d-tiles-options.js.map +1 -0
- package/dist/tileset/helpers/bounding-volume.js +1 -0
- package/dist/tileset/helpers/bounding-volume.js.map +1 -0
- package/dist/tileset/helpers/frame-state.js +1 -0
- package/dist/tileset/helpers/frame-state.js.map +1 -0
- package/dist/tileset/helpers/i3s-lod.js +1 -0
- package/dist/tileset/helpers/i3s-lod.js.map +1 -0
- package/dist/tileset/helpers/tiles-3d-lod.js +1 -0
- package/dist/tileset/helpers/tiles-3d-lod.js.map +1 -0
- package/dist/tileset/helpers/transform-utils.d.ts +2 -1
- package/dist/tileset/helpers/transform-utils.d.ts.map +1 -1
- package/dist/tileset/helpers/transform-utils.js +35 -0
- package/dist/tileset/helpers/transform-utils.js.map +1 -0
- package/dist/tileset/helpers/zoom.js +1 -0
- package/dist/tileset/helpers/zoom.js.map +1 -0
- package/dist/tileset/tile-3d.d.ts +7 -0
- package/dist/tileset/tile-3d.d.ts.map +1 -1
- package/dist/tileset/tile-3d.js +12 -3
- package/dist/tileset/tile-3d.js.map +1 -0
- package/dist/tileset/tileset-3d.d.ts +5 -0
- package/dist/tileset/tileset-3d.d.ts.map +1 -1
- package/dist/tileset/tileset-3d.js +50 -5
- package/dist/tileset/tileset-3d.js.map +1 -0
- package/dist/tileset/tileset-cache.js +1 -0
- package/dist/tileset/tileset-cache.js.map +1 -0
- package/dist/tileset/tileset-traverser.js +2 -1
- package/dist/tileset/tileset-traverser.js.map +1 -0
- package/dist/types.js +1 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/doubly-linked-list-node.js +1 -0
- package/dist/utils/doubly-linked-list-node.js.map +1 -0
- package/dist/utils/doubly-linked-list.js +1 -0
- package/dist/utils/doubly-linked-list.js.map +1 -0
- package/dist/utils/managed-array.js +1 -0
- package/dist/utils/managed-array.js.map +1 -0
- package/package.json +5 -5
- package/src/tileset/helpers/transform-utils.ts +41 -1
- package/src/tileset/tile-3d.ts +13 -3
- package/src/tileset/tileset-3d.ts +55 -5
- package/src/tileset/tileset-traverser.ts +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tileset-traverser.js","sourceRoot":"","sources":["../../src/tileset/tileset-traverser.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doubly-linked-list-node.js","sourceRoot":"","sources":["../../src/utils/doubly-linked-list-node.ts"],"names":[],"mappings":"AAAA,aAAa;AACb,+BAA+B;AAC/B,oCAAoC;AAEpC,wEAAwE;AACxE,4FAA4F;AAE5F;;;GAGG;AACH,MAAM,OAAO,oBAAoB;IAC/B,IAAI,CAAC;IACL,QAAQ,CAAC;IACT,IAAI,CAAC;IAEL,YAAY,IAAI,EAAE,QAAQ,EAAE,IAAI;QAC9B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doubly-linked-list.js","sourceRoot":"","sources":["../../src/utils/doubly-linked-list.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"managed-array.js","sourceRoot":"","sources":["../../src/utils/managed-array.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@loaders.gl/tiles",
|
|
3
|
-
"version": "4.4.0
|
|
3
|
+
"version": "4.4.0",
|
|
4
4
|
"description": "Common components for different tiles loaders.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -42,13 +42,13 @@
|
|
|
42
42
|
"build-bundle-dev": "ocular-bundle ./bundle.ts --env=dev --output=dist/dist.dev.js"
|
|
43
43
|
},
|
|
44
44
|
"dependencies": {
|
|
45
|
-
"@loaders.gl/loader-utils": "4.4.0
|
|
46
|
-
"@loaders.gl/math": "4.4.0
|
|
45
|
+
"@loaders.gl/loader-utils": "4.4.0",
|
|
46
|
+
"@loaders.gl/math": "4.4.0",
|
|
47
47
|
"@math.gl/core": "^4.1.0",
|
|
48
48
|
"@math.gl/culling": "^4.1.0",
|
|
49
49
|
"@math.gl/geospatial": "^4.1.0",
|
|
50
50
|
"@math.gl/web-mercator": "^4.1.0",
|
|
51
|
-
"@probe.gl/stats": "^4.
|
|
51
|
+
"@probe.gl/stats": "^4.1.1"
|
|
52
52
|
},
|
|
53
53
|
"devDependencies": {
|
|
54
54
|
"@deck.gl/core": "^9.0.33"
|
|
@@ -56,5 +56,5 @@
|
|
|
56
56
|
"peerDependencies": {
|
|
57
57
|
"@loaders.gl/core": "4.4.0-alpha.1"
|
|
58
58
|
},
|
|
59
|
-
"gitHead": "
|
|
59
|
+
"gitHead": "b8a23bc05946bde7089936ff3ea1651ee9a45536"
|
|
60
60
|
}
|
|
@@ -6,7 +6,9 @@ import {Ellipsoid} from '@math.gl/geospatial';
|
|
|
6
6
|
import {Matrix4, Vector3} from '@math.gl/core';
|
|
7
7
|
import {assert} from '@loaders.gl/loader-utils';
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
import {Tile3D} from '../tile-3d';
|
|
10
|
+
|
|
11
|
+
export function calculateTransformProps(tileHeader: Tile3D, tile: Tile3D['content']) {
|
|
10
12
|
assert(tileHeader);
|
|
11
13
|
assert(tile);
|
|
12
14
|
|
|
@@ -62,8 +64,46 @@ export function calculateTransformProps(tileHeader, tile) {
|
|
|
62
64
|
tile.cartographicModelMatrix = toFixedFrameMatrix.multiplyRight(modelMatrix);
|
|
63
65
|
tile.cartographicOrigin = cartographicOrigin;
|
|
64
66
|
|
|
67
|
+
// Absorb glTF root node matrix into model matrices for Float32 precision.
|
|
68
|
+
// The glTF root node matrix (applied as sceneModelMatrix in the shader) may contain
|
|
69
|
+
// ECEF-scale translations (~millions of meters). When both cartographicModelMatrix
|
|
70
|
+
// and sceneModelMatrix are applied in the Float32 GPU shader, catastrophic cancellation
|
|
71
|
+
// occurs causing visible seams between adjacent tiles. By combining them here in Float64,
|
|
72
|
+
// the result has small ENU-scale values that preserve precision.
|
|
73
|
+
const rootNode = _getRootNode(tile);
|
|
74
|
+
if (rootNode) {
|
|
75
|
+
tile.cartesianModelMatrix = new Matrix4(modelMatrix).multiplyRight(rootNode.matrix);
|
|
76
|
+
tile.cartographicModelMatrix.multiplyRight(rootNode.matrix);
|
|
77
|
+
rootNode.matrix = Matrix4.IDENTITY;
|
|
78
|
+
}
|
|
79
|
+
|
|
65
80
|
// Deprecated, drop
|
|
66
81
|
if (!tile.coordinateSystem) {
|
|
67
82
|
tile.modelMatrix = tile.cartographicModelMatrix;
|
|
68
83
|
}
|
|
69
84
|
}
|
|
85
|
+
|
|
86
|
+
const TRANSLATION_LIMIT_SQUARED = 10e5 ** 2; // 100km
|
|
87
|
+
|
|
88
|
+
/**
|
|
89
|
+
* Returns the glTF root node if it has a matrix with earth-scale translations (> 100km).
|
|
90
|
+
* These large translations cause Float32 precision issues when applied in the GPU shader.
|
|
91
|
+
*/
|
|
92
|
+
function _getRootNode(tile: Tile3D['content']): {matrix: number[]} | null {
|
|
93
|
+
const gltf = tile.gltf;
|
|
94
|
+
if (!gltf) {
|
|
95
|
+
return null;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
const sceneIndex = typeof gltf.scene === 'number' ? gltf.scene : 0;
|
|
99
|
+
const scene = gltf.scenes?.[sceneIndex];
|
|
100
|
+
const rootNode = scene?.nodes?.[0];
|
|
101
|
+
if (!rootNode?.matrix) return null;
|
|
102
|
+
|
|
103
|
+
// Extract translation and compare magnitude (meters) to limit
|
|
104
|
+
const m = rootNode.matrix;
|
|
105
|
+
const translationMagnitude = m[12] * m[12] + m[13] * m[13] + m[14] * m[14];
|
|
106
|
+
if (translationMagnitude <= TRANSLATION_LIMIT_SQUARED) return null;
|
|
107
|
+
|
|
108
|
+
return rootNode;
|
|
109
|
+
}
|
package/src/tileset/tile-3d.ts
CHANGED
|
@@ -130,6 +130,14 @@ export class Tile3D {
|
|
|
130
130
|
_inRequestVolume: boolean = false;
|
|
131
131
|
_lodJudge: any = null; // TODO i3s specific, needs to remove
|
|
132
132
|
|
|
133
|
+
/**
|
|
134
|
+
* Indicates whether the tile has been drawn by the renderer.
|
|
135
|
+
* Defaults to true for backwards compatibility — renderers that support
|
|
136
|
+
* transition hold (e.g. deck.gl 9.3+) should set this to false on tile load,
|
|
137
|
+
* then back to true after first draw to avoid flashes (see deck.gl #7914).
|
|
138
|
+
*/
|
|
139
|
+
tileDrawn: boolean = true;
|
|
140
|
+
|
|
133
141
|
/**
|
|
134
142
|
* @constructs
|
|
135
143
|
* Create a Tile3D instance
|
|
@@ -379,14 +387,15 @@ export class Tile3D {
|
|
|
379
387
|
const contentUrl = this.tileset.getTileUrl(this.contentUrl);
|
|
380
388
|
// The content can be a binary tile ot a JSON tileset
|
|
381
389
|
const loader = this.tileset.loader;
|
|
390
|
+
const tilesetLoaderOptions =
|
|
391
|
+
(this.tileset.loadOptions[loader.id] as Record<string, unknown>) || {};
|
|
382
392
|
const options = {
|
|
383
393
|
...this.tileset.loadOptions,
|
|
384
394
|
[loader.id]: {
|
|
385
|
-
|
|
386
|
-
...this.tileset.loadOptions[loader.id],
|
|
395
|
+
...tilesetLoaderOptions,
|
|
387
396
|
isTileset: this.type === 'json',
|
|
388
397
|
...this._getLoaderSpecificOptions(loader.id)
|
|
389
|
-
}
|
|
398
|
+
} // TODO add typecheck - as const satisfies ...
|
|
390
399
|
};
|
|
391
400
|
|
|
392
401
|
this.content = await load(contentUrl, loader, options);
|
|
@@ -425,6 +434,7 @@ export class Tile3D {
|
|
|
425
434
|
}
|
|
426
435
|
this.header.content = null;
|
|
427
436
|
this.contentState = TILE_CONTENT_STATE.UNLOADED;
|
|
437
|
+
this.tileDrawn = true;
|
|
428
438
|
return true;
|
|
429
439
|
}
|
|
430
440
|
|
|
@@ -77,6 +77,7 @@ export type Tileset3DProps = {
|
|
|
77
77
|
onTileError?: (tile: Tile3D, message: string, url: string) => any;
|
|
78
78
|
contentLoader?: (tile: Tile3D) => Promise<void>;
|
|
79
79
|
onTraversalComplete?: (selectedTiles: Tile3D[]) => Tile3D[];
|
|
80
|
+
onUpdate?: () => void;
|
|
80
81
|
};
|
|
81
82
|
|
|
82
83
|
type Props = {
|
|
@@ -104,6 +105,8 @@ type Props = {
|
|
|
104
105
|
onTileError: (tile: Tile3D, message: string, url: string) => void;
|
|
105
106
|
/** Callback. Allows post-process selectedTiles right after traversal. */
|
|
106
107
|
onTraversalComplete: (selectedTiles: Tile3D[]) => Tile3D[];
|
|
108
|
+
/** Callback. Called when the set of selected tiles changes. */
|
|
109
|
+
onUpdate: () => void;
|
|
107
110
|
/** The maximum screen space error used to drive level of detail refinement. */
|
|
108
111
|
maximumScreenSpaceError: number;
|
|
109
112
|
/** Whether to adjust the maximum screen space error to comply with the maximum memory limitation */
|
|
@@ -137,6 +140,7 @@ const DEFAULT_PROPS: Props = {
|
|
|
137
140
|
onTileUnload: () => {},
|
|
138
141
|
onTileError: () => {},
|
|
139
142
|
onTraversalComplete: (selectedTiles: Tile3D[]) => selectedTiles,
|
|
143
|
+
onUpdate: () => {},
|
|
140
144
|
contentLoader: undefined,
|
|
141
145
|
viewDistanceScale: 1.0,
|
|
142
146
|
maximumScreenSpaceError: 8,
|
|
@@ -284,6 +288,9 @@ export class Tileset3D {
|
|
|
284
288
|
_cache = new TilesetCache();
|
|
285
289
|
_requestScheduler: RequestScheduler;
|
|
286
290
|
|
|
291
|
+
/** Tile IDs held visible during transitions until replacements have drawn */
|
|
292
|
+
private _heldTiles: Set<string> = new Set();
|
|
293
|
+
|
|
287
294
|
// Promise tracking
|
|
288
295
|
private updatePromise: Promise<number> | null = null;
|
|
289
296
|
tilesetInitializationPromise: Promise<void>;
|
|
@@ -538,6 +545,7 @@ export class Tileset3D {
|
|
|
538
545
|
* Update tiles relying on data from all traversers
|
|
539
546
|
*/
|
|
540
547
|
_updateTiles(): void {
|
|
548
|
+
const previousSelectedTiles = this.selectedTiles;
|
|
541
549
|
this.selectedTiles = [];
|
|
542
550
|
this._requestedTiles = [];
|
|
543
551
|
this._emptyTiles = [];
|
|
@@ -551,6 +559,45 @@ export class Tileset3D {
|
|
|
551
559
|
|
|
552
560
|
this.selectedTiles = this.options.onTraversalComplete(this.selectedTiles);
|
|
553
561
|
|
|
562
|
+
// Transition hold: keep recently-deselected tiles visible until all their
|
|
563
|
+
// replacements have been drawn by the renderer (e.g. deck.gl).
|
|
564
|
+
// Without this, there are single-frame flashes during REPLACE refinement transitions.
|
|
565
|
+
const selectedIds = new Set(this.selectedTiles.map((t) => t.id));
|
|
566
|
+
const hasUndrawnTiles = this.selectedTiles.some((t) => !t.tileDrawn);
|
|
567
|
+
|
|
568
|
+
// Keep recently-deselected tiles visible while new tiles haven't drawn yet
|
|
569
|
+
let heldBackCount = 0;
|
|
570
|
+
if (hasUndrawnTiles) {
|
|
571
|
+
for (const tileId of selectedIds) {
|
|
572
|
+
this._heldTiles.add(tileId);
|
|
573
|
+
}
|
|
574
|
+
for (const tileId of this._heldTiles) {
|
|
575
|
+
// Skip tiles that are already selected
|
|
576
|
+
if (selectedIds.has(tileId)) continue; // eslint-disable-line no-continue
|
|
577
|
+
|
|
578
|
+
// Keep tiles previously drawn selected
|
|
579
|
+
const tile = this._tiles[tileId];
|
|
580
|
+
if (tile && tile.contentAvailable) {
|
|
581
|
+
tile._selectedFrame = this._frameNumber;
|
|
582
|
+
this.selectedTiles.push(tile);
|
|
583
|
+
heldBackCount++;
|
|
584
|
+
} else {
|
|
585
|
+
this._heldTiles.delete(tileId);
|
|
586
|
+
}
|
|
587
|
+
}
|
|
588
|
+
} else {
|
|
589
|
+
// Store current selected ids for next frame
|
|
590
|
+
this._heldTiles = selectedIds;
|
|
591
|
+
}
|
|
592
|
+
|
|
593
|
+
if (heldBackCount > 0) {
|
|
594
|
+
// Schedule another update so that once all replacement tiles
|
|
595
|
+
// have drawn, the held tiles get released
|
|
596
|
+
setTimeout(() => {
|
|
597
|
+
this.selectTiles();
|
|
598
|
+
}, 0);
|
|
599
|
+
}
|
|
600
|
+
|
|
554
601
|
for (const tile of this.selectedTiles) {
|
|
555
602
|
this._tiles[tile.id] = tile;
|
|
556
603
|
}
|
|
@@ -558,6 +605,10 @@ export class Tileset3D {
|
|
|
558
605
|
this._loadTiles();
|
|
559
606
|
this._unloadTiles();
|
|
560
607
|
this._updateStats();
|
|
608
|
+
|
|
609
|
+
if (this._tilesChanged(previousSelectedTiles, this.selectedTiles)) {
|
|
610
|
+
this.options.onUpdate();
|
|
611
|
+
}
|
|
561
612
|
}
|
|
562
613
|
|
|
563
614
|
_tilesChanged(oldSelectedTiles: Tile3D[], selectedTiles: Tile3D[]): boolean {
|
|
@@ -574,7 +625,7 @@ export class Tileset3D {
|
|
|
574
625
|
_loadTiles(): void {
|
|
575
626
|
// Sort requests by priority before making any requests.
|
|
576
627
|
// This makes it less likely this requests will be cancelled after being issued.
|
|
577
|
-
|
|
628
|
+
this._requestedTiles.sort((a, b) => a._priority - b._priority);
|
|
578
629
|
for (const tile of this._requestedTiles) {
|
|
579
630
|
if (tile.contentUnloaded) {
|
|
580
631
|
// eslint-disable-next-line @typescript-eslint/no-floating-promises
|
|
@@ -978,10 +1029,9 @@ export class Tileset3D {
|
|
|
978
1029
|
}
|
|
979
1030
|
|
|
980
1031
|
_initializeI3STileset() {
|
|
981
|
-
|
|
982
|
-
if (
|
|
983
|
-
|
|
984
|
-
this._queryParams.token = this.loadOptions.i3s.token as string;
|
|
1032
|
+
const i3sOptions = this.loadOptions.i3s;
|
|
1033
|
+
if (i3sOptions && typeof i3sOptions === 'object' && 'token' in i3sOptions) {
|
|
1034
|
+
this._queryParams.token = (i3sOptions as Record<string, unknown>).token as string;
|
|
985
1035
|
}
|
|
986
1036
|
}
|
|
987
1037
|
}
|