@loaders.gl/tiles 5.0.0-alpha.1 → 5.0.0-alpha.10

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 (205) hide show
  1. package/LICENSE +14 -3
  2. package/README.md +26 -0
  3. package/dist/dist.dev.js +20271 -5055
  4. package/dist/dist.min.js +3 -1
  5. package/dist/index.cjs +7849 -2081
  6. package/dist/index.cjs.map +3 -4
  7. package/dist/index.d.ts +25 -2
  8. package/dist/index.d.ts.map +1 -1
  9. package/dist/index.js +11 -0
  10. package/dist/index.js.map +1 -1
  11. package/dist/point-cloud/point-cloud-tile.d.ts.map +1 -1
  12. package/dist/point-cloud/point-cloud-tile.js +3 -0
  13. package/dist/point-cloud/point-cloud-tile.js.map +1 -1
  14. package/dist/point-cloud/point-cloud-tileset.d.ts +4 -0
  15. package/dist/point-cloud/point-cloud-tileset.d.ts.map +1 -1
  16. package/dist/point-cloud/point-cloud-tileset.js +54 -12
  17. package/dist/point-cloud/point-cloud-tileset.js.map +1 -1
  18. package/dist/point-cloud/types.d.ts +17 -0
  19. package/dist/point-cloud/types.d.ts.map +1 -1
  20. package/dist/point-cloud/types.js +3 -0
  21. package/dist/point-cloud/types.js.map +1 -1
  22. package/dist/raster-set.d.ts +48 -31
  23. package/dist/raster-set.d.ts.map +1 -1
  24. package/dist/raster-set.js +104 -24
  25. package/dist/raster-set.js.map +1 -1
  26. package/dist/spatial/format-spatial-reference.d.ts +68 -0
  27. package/dist/spatial/format-spatial-reference.d.ts.map +1 -0
  28. package/dist/spatial/format-spatial-reference.js +291 -0
  29. package/dist/spatial/format-spatial-reference.js.map +1 -0
  30. package/dist/spatial/get-spatial-coordinate-frame.d.ts +20 -0
  31. package/dist/spatial/get-spatial-coordinate-frame.d.ts.map +1 -0
  32. package/dist/spatial/get-spatial-coordinate-frame.js +139 -0
  33. package/dist/spatial/get-spatial-coordinate-frame.js.map +1 -0
  34. package/dist/spatial/i3s-elevation.d.ts +20 -0
  35. package/dist/spatial/i3s-elevation.d.ts.map +1 -0
  36. package/dist/spatial/i3s-elevation.js +90 -0
  37. package/dist/spatial/i3s-elevation.js.map +1 -0
  38. package/dist/spatial/i3s-spatial-transformer.d.ts +189 -0
  39. package/dist/spatial/i3s-spatial-transformer.d.ts.map +1 -0
  40. package/dist/spatial/i3s-spatial-transformer.js +686 -0
  41. package/dist/spatial/i3s-spatial-transformer.js.map +1 -0
  42. package/dist/spatial/normalize-crs-identifier.d.ts +15 -0
  43. package/dist/spatial/normalize-crs-identifier.d.ts.map +1 -0
  44. package/dist/spatial/normalize-crs-identifier.js +22 -0
  45. package/dist/spatial/normalize-crs-identifier.js.map +1 -0
  46. package/dist/spatial/spatial-coordinate-transformer.d.ts +52 -0
  47. package/dist/spatial/spatial-coordinate-transformer.d.ts.map +1 -0
  48. package/dist/spatial/spatial-coordinate-transformer.js +295 -0
  49. package/dist/spatial/spatial-coordinate-transformer.js.map +1 -0
  50. package/dist/spatial/spatial-resource-registry.d.ts +44 -0
  51. package/dist/spatial/spatial-resource-registry.d.ts.map +1 -0
  52. package/dist/spatial/spatial-resource-registry.js +67 -0
  53. package/dist/spatial/spatial-resource-registry.js.map +1 -0
  54. package/dist/spatial/spatial-types.d.ts +190 -0
  55. package/dist/spatial/spatial-types.d.ts.map +1 -0
  56. package/dist/spatial/spatial-types.js +192 -0
  57. package/dist/spatial/spatial-types.js.map +1 -0
  58. package/dist/spatial/tiles-3d-spatial-transformer.d.ts +32 -0
  59. package/dist/spatial/tiles-3d-spatial-transformer.d.ts.map +1 -0
  60. package/dist/spatial/tiles-3d-spatial-transformer.js +175 -0
  61. package/dist/spatial/tiles-3d-spatial-transformer.js.map +1 -0
  62. package/dist/tileset-2d/adapter.d.ts +2 -3
  63. package/dist/tileset-2d/adapter.d.ts.map +1 -1
  64. package/dist/tileset-2d/tileset-2d.d.ts +2 -3
  65. package/dist/tileset-2d/tileset-2d.d.ts.map +1 -1
  66. package/dist/tileset-2d/tileset-2d.js.map +1 -1
  67. package/dist/tileset-3d/common/indexed-archive-tileset-source.d.ts +3 -3
  68. package/dist/tileset-3d/common/indexed-archive-tileset-source.d.ts.map +1 -1
  69. package/dist/tileset-3d/common/indexed-archive-tileset-source.js +9 -4
  70. package/dist/tileset-3d/common/indexed-archive-tileset-source.js.map +1 -1
  71. package/dist/tileset-3d/common/tile-3d-contracts.d.ts +63 -0
  72. package/dist/tileset-3d/common/tile-3d-contracts.d.ts.map +1 -0
  73. package/dist/tileset-3d/common/tile-3d-contracts.js +51 -0
  74. package/dist/tileset-3d/common/tile-3d-contracts.js.map +1 -0
  75. package/dist/tileset-3d/common/tile-3d.d.ts +176 -5
  76. package/dist/tileset-3d/common/tile-3d.d.ts.map +1 -1
  77. package/dist/tileset-3d/common/tile-3d.js +523 -89
  78. package/dist/tileset-3d/common/tile-3d.js.map +1 -1
  79. package/dist/tileset-3d/common/tileset-3d.d.ts +192 -9
  80. package/dist/tileset-3d/common/tileset-3d.d.ts.map +1 -1
  81. package/dist/tileset-3d/common/tileset-3d.js +303 -23
  82. package/dist/tileset-3d/common/tileset-3d.js.map +1 -1
  83. package/dist/tileset-3d/common/tileset-cache.d.ts +11 -1
  84. package/dist/tileset-3d/common/tileset-cache.d.ts.map +1 -1
  85. package/dist/tileset-3d/common/tileset-cache.js +11 -3
  86. package/dist/tileset-3d/common/tileset-cache.js.map +1 -1
  87. package/dist/tileset-3d/common/tileset-content-traversal.d.ts +37 -0
  88. package/dist/tileset-3d/common/tileset-content-traversal.d.ts.map +1 -0
  89. package/dist/tileset-3d/common/tileset-content-traversal.js +80 -0
  90. package/dist/tileset-3d/common/tileset-content-traversal.js.map +1 -0
  91. package/dist/tileset-3d/common/tileset-observability.d.ts +60 -0
  92. package/dist/tileset-3d/common/tileset-observability.d.ts.map +1 -0
  93. package/dist/tileset-3d/common/tileset-observability.js +39 -0
  94. package/dist/tileset-3d/common/tileset-observability.js.map +1 -0
  95. package/dist/tileset-3d/common/tileset-source.d.ts +51 -9
  96. package/dist/tileset-3d/common/tileset-source.d.ts.map +1 -1
  97. package/dist/tileset-3d/common/tileset-source.js.map +1 -1
  98. package/dist/tileset-3d/common/tileset-traverser.d.ts +33 -1
  99. package/dist/tileset-3d/common/tileset-traverser.d.ts.map +1 -1
  100. package/dist/tileset-3d/common/tileset-traverser.js +59 -11
  101. package/dist/tileset-3d/common/tileset-traverser.js.map +1 -1
  102. package/dist/tileset-3d/format-3d-tiles/implicit-tiling.d.ts +182 -0
  103. package/dist/tileset-3d/format-3d-tiles/implicit-tiling.d.ts.map +1 -0
  104. package/dist/tileset-3d/format-3d-tiles/implicit-tiling.js +681 -0
  105. package/dist/tileset-3d/format-3d-tiles/implicit-tiling.js.map +1 -0
  106. package/dist/tileset-3d/format-3d-tiles/tiles-3d-source.d.ts +127 -6
  107. package/dist/tileset-3d/format-3d-tiles/tiles-3d-source.d.ts.map +1 -1
  108. package/dist/tileset-3d/format-3d-tiles/tiles-3d-source.js +485 -27
  109. package/dist/tileset-3d/format-3d-tiles/tiles-3d-source.js.map +1 -1
  110. package/dist/tileset-3d/format-3d-tiles/tileset-3d-traverser.d.ts +103 -0
  111. package/dist/tileset-3d/format-3d-tiles/tileset-3d-traverser.d.ts.map +1 -1
  112. package/dist/tileset-3d/format-3d-tiles/tileset-3d-traverser.js +278 -0
  113. package/dist/tileset-3d/format-3d-tiles/tileset-3d-traverser.js.map +1 -1
  114. package/dist/tileset-3d/format-i3s/i3s-pending-tiles-register.d.ts.map +1 -1
  115. package/dist/tileset-3d/format-i3s/i3s-pending-tiles-register.js +3 -0
  116. package/dist/tileset-3d/format-i3s/i3s-pending-tiles-register.js.map +1 -1
  117. package/dist/tileset-3d/format-i3s/i3s-source.d.ts +23 -6
  118. package/dist/tileset-3d/format-i3s/i3s-source.d.ts.map +1 -1
  119. package/dist/tileset-3d/format-i3s/i3s-source.js +176 -25
  120. package/dist/tileset-3d/format-i3s/i3s-source.js.map +1 -1
  121. package/dist/tileset-3d/format-i3s/i3s-tile-manager.d.ts.map +1 -1
  122. package/dist/tileset-3d/format-i3s/i3s-tile-manager.js +3 -0
  123. package/dist/tileset-3d/format-i3s/i3s-tile-manager.js.map +1 -1
  124. package/dist/tileset-3d/format-i3s/i3s-tileset-traverser.d.ts.map +1 -1
  125. package/dist/tileset-3d/format-i3s/i3s-tileset-traverser.js +4 -1
  126. package/dist/tileset-3d/format-i3s/i3s-tileset-traverser.js.map +1 -1
  127. package/dist/tileset-3d/helpers/3d-tiles-options.d.ts.map +1 -1
  128. package/dist/tileset-3d/helpers/3d-tiles-options.js +3 -0
  129. package/dist/tileset-3d/helpers/3d-tiles-options.js.map +1 -1
  130. package/dist/tileset-3d/helpers/bounding-volume.d.ts +7 -3
  131. package/dist/tileset-3d/helpers/bounding-volume.d.ts.map +1 -1
  132. package/dist/tileset-3d/helpers/bounding-volume.js +20 -91
  133. package/dist/tileset-3d/helpers/bounding-volume.js.map +1 -1
  134. package/dist/tileset-3d/helpers/frame-state.d.ts +67 -2
  135. package/dist/tileset-3d/helpers/frame-state.d.ts.map +1 -1
  136. package/dist/tileset-3d/helpers/frame-state.js +92 -10
  137. package/dist/tileset-3d/helpers/frame-state.js.map +1 -1
  138. package/dist/tileset-3d/helpers/i3s-lod.d.ts.map +1 -1
  139. package/dist/tileset-3d/helpers/i3s-lod.js +20 -8
  140. package/dist/tileset-3d/helpers/i3s-lod.js.map +1 -1
  141. package/dist/tileset-3d/helpers/s2-bounding-volume.d.ts +17 -0
  142. package/dist/tileset-3d/helpers/s2-bounding-volume.d.ts.map +1 -0
  143. package/dist/tileset-3d/helpers/s2-bounding-volume.js +20 -0
  144. package/dist/tileset-3d/helpers/s2-bounding-volume.js.map +1 -0
  145. package/dist/tileset-3d/helpers/tiles-3d-lod.d.ts +61 -9
  146. package/dist/tileset-3d/helpers/tiles-3d-lod.d.ts.map +1 -1
  147. package/dist/tileset-3d/helpers/tiles-3d-lod.js +198 -93
  148. package/dist/tileset-3d/helpers/tiles-3d-lod.js.map +1 -1
  149. package/dist/tileset-3d/helpers/tiles-3d-request-priority.d.ts +134 -0
  150. package/dist/tileset-3d/helpers/tiles-3d-request-priority.d.ts.map +1 -0
  151. package/dist/tileset-3d/helpers/tiles-3d-request-priority.js +179 -0
  152. package/dist/tileset-3d/helpers/tiles-3d-request-priority.js.map +1 -0
  153. package/dist/types.d.ts +7 -0
  154. package/dist/types.d.ts.map +1 -1
  155. package/dist/types.js +3 -0
  156. package/dist/types.js.map +1 -1
  157. package/dist/utils/doubly-linked-list.d.ts.map +1 -1
  158. package/dist/utils/doubly-linked-list.js +1 -0
  159. package/dist/utils/doubly-linked-list.js.map +1 -1
  160. package/dist/utils/managed-array.d.ts.map +1 -1
  161. package/dist/utils/managed-array.js +1 -0
  162. package/dist/utils/managed-array.js.map +1 -1
  163. package/package.json +12 -10
  164. package/src/index.ts +78 -1
  165. package/src/point-cloud/point-cloud-tile.ts +4 -0
  166. package/src/point-cloud/point-cloud-tileset.ts +70 -12
  167. package/src/point-cloud/types.ts +21 -0
  168. package/src/raster-set.ts +197 -67
  169. package/src/spatial/format-spatial-reference.ts +385 -0
  170. package/src/spatial/get-spatial-coordinate-frame.ts +169 -0
  171. package/src/spatial/i3s-elevation.ts +96 -0
  172. package/src/spatial/i3s-spatial-transformer.ts +957 -0
  173. package/src/spatial/normalize-crs-identifier.ts +26 -0
  174. package/src/spatial/spatial-coordinate-transformer.ts +376 -0
  175. package/src/spatial/spatial-resource-registry.ts +79 -0
  176. package/src/spatial/spatial-types.ts +422 -0
  177. package/src/spatial/tiles-3d-spatial-transformer.ts +206 -0
  178. package/src/tileset-2d/adapter.ts +2 -3
  179. package/src/tileset-2d/tileset-2d.ts +2 -3
  180. package/src/tileset-3d/common/indexed-archive-tileset-source.ts +13 -13
  181. package/src/tileset-3d/common/tile-3d-contracts.ts +115 -0
  182. package/src/tileset-3d/common/tile-3d.ts +629 -98
  183. package/src/tileset-3d/common/tileset-3d.ts +459 -29
  184. package/src/tileset-3d/common/tileset-cache.ts +15 -7
  185. package/src/tileset-3d/common/tileset-content-traversal.ts +114 -0
  186. package/src/tileset-3d/common/tileset-observability.ts +100 -0
  187. package/src/tileset-3d/common/tileset-source.ts +63 -13
  188. package/src/tileset-3d/common/tileset-traverser.ts +71 -11
  189. package/src/tileset-3d/format-3d-tiles/implicit-tiling.ts +1059 -0
  190. package/src/tileset-3d/format-3d-tiles/tiles-3d-source.ts +674 -28
  191. package/src/tileset-3d/format-3d-tiles/tileset-3d-traverser.ts +316 -0
  192. package/src/tileset-3d/format-i3s/i3s-pending-tiles-register.ts +4 -0
  193. package/src/tileset-3d/format-i3s/i3s-source.ts +220 -29
  194. package/src/tileset-3d/format-i3s/i3s-tile-manager.ts +4 -0
  195. package/src/tileset-3d/format-i3s/i3s-tileset-traverser.ts +6 -1
  196. package/src/tileset-3d/helpers/3d-tiles-options.ts +4 -0
  197. package/src/tileset-3d/helpers/bounding-volume.ts +31 -114
  198. package/src/tileset-3d/helpers/frame-state.ts +152 -13
  199. package/src/tileset-3d/helpers/i3s-lod.ts +22 -8
  200. package/src/tileset-3d/helpers/s2-bounding-volume.ts +35 -0
  201. package/src/tileset-3d/helpers/tiles-3d-lod.ts +291 -112
  202. package/src/tileset-3d/helpers/tiles-3d-request-priority.ts +301 -0
  203. package/src/types.ts +11 -0
  204. package/src/utils/doubly-linked-list.ts +2 -0
  205. package/src/utils/managed-array.ts +2 -0
@@ -8,16 +8,63 @@ import { Stats } from '@probe.gl/stats';
8
8
  import { RequestScheduler } from '@loaders.gl/loader-utils';
9
9
  import { TilesetCache } from "./tileset-cache.js";
10
10
  import { calculateTransformProps } from "../helpers/transform-utils.js";
11
- import { getFrameState, limitSelectedTiles } from "../helpers/frame-state.js";
11
+ import { getFrameState, limitSelectedTiles, updateCameraMotionState } from "../helpers/frame-state.js";
12
+ import { calculateDynamicScreenSpaceErrorDensity, updateRootTransformForDynamicScreenSpaceError } from "../helpers/tiles-3d-lod.js";
13
+ import { interpolateLinearly } from "../helpers/tiles-3d-request-priority.js";
14
+ import { TILESET_TYPE } from "../../constants.js";
15
+ import { applyTilesetSpatialOptions, createTilesetSpatialReference } from "../../spatial/spatial-types.js";
12
16
  import { isTileset3DSource } from "./tileset-source.js";
17
+ const BYTES_PER_MEBIBYTE = 1024 * 1024;
18
+ const DEFAULT_CACHE_BYTES = 512 * BYTES_PER_MEBIBYTE;
19
+ const DEFAULT_MAXIMUM_CACHE_OVERFLOW_BYTES = 512 * BYTES_PER_MEBIBYTE;
20
+ const DEFAULT_I3S_CACHE_BYTES = 32 * BYTES_PER_MEBIBYTE;
21
+ const DEFAULT_I3S_MAXIMUM_CACHE_OVERFLOW_BYTES = BYTES_PER_MEBIBYTE;
22
+ /**
23
+ * Validates a byte-based tile-cache budget.
24
+ *
25
+ * Fractions are accepted because JavaScript memory estimates are numbers, but negative, infinite,
26
+ * and `NaN` values cannot define a stable cache threshold.
27
+ *
28
+ * @param value - Proposed cache budget in bytes.
29
+ * @param optionName - Public option name used in an actionable error message.
30
+ * @returns The validated byte budget.
31
+ */
32
+ function validateCacheByteLength(value, optionName) {
33
+ if (!Number.isFinite(value) || value < 0) {
34
+ throw new Error(`${optionName} must be a finite number greater than or equal to 0`);
35
+ }
36
+ return value;
37
+ }
38
+ /**
39
+ * Resolves the base cache target from the byte-native option or its fallback.
40
+ *
41
+ * @param options - Options that may contain a byte-native cache value.
42
+ * @param fallbackCacheBytes - Existing or default cache target in bytes.
43
+ * @returns The resolved and validated cache target in bytes.
44
+ */
45
+ function resolveCacheBytes(options, fallbackCacheBytes) {
46
+ const cacheBytes = options.cacheBytes ?? fallbackCacheBytes;
47
+ return validateCacheByteLength(cacheBytes, 'cacheBytes');
48
+ }
49
+ /**
50
+ * Resolves cache overflow headroom from the byte-native option or its fallback.
51
+ *
52
+ * @param options - Options that may contain a byte-native overflow value.
53
+ * @param fallbackOverflowBytes - Existing or default overflow headroom in bytes.
54
+ * @returns The resolved and validated overflow headroom in bytes.
55
+ */
56
+ function resolveMaximumCacheOverflowBytes(options, fallbackOverflowBytes) {
57
+ const maximumCacheOverflowBytes = options.maximumCacheOverflowBytes ?? fallbackOverflowBytes;
58
+ return validateCacheByteLength(maximumCacheOverflowBytes, 'maximumCacheOverflowBytes');
59
+ }
13
60
  const DEFAULT_PROPS = {
14
61
  description: '',
15
62
  ellipsoid: Ellipsoid.WGS84,
16
63
  modelMatrix: new Matrix4(),
17
64
  throttleRequests: true,
18
65
  maxRequests: 64,
19
- maximumMemoryUsage: 32,
20
- memoryCacheOverflow: 1,
66
+ cacheBytes: DEFAULT_CACHE_BYTES,
67
+ maximumCacheOverflowBytes: DEFAULT_MAXIMUM_CACHE_OVERFLOW_BYTES,
21
68
  maximumTilesSelected: 0,
22
69
  debounceTime: 0,
23
70
  onTileLoad: () => { },
@@ -29,15 +76,31 @@ const DEFAULT_PROPS = {
29
76
  onUpdate: () => { },
30
77
  contentLoader: undefined,
31
78
  viewDistanceScale: 1.0,
79
+ progressiveResolutionHeightFraction: 0.3,
80
+ foveatedScreenSpaceError: true,
81
+ foveatedConeSize: 0.1,
82
+ foveatedMinimumScreenSpaceErrorRelaxation: 0,
83
+ foveatedInterpolationCallback: interpolateLinearly,
84
+ foveatedTimeDelay: 0.2,
32
85
  maximumScreenSpaceError: 8,
33
- memoryAdjustedScreenSpaceError: false,
86
+ skipLevelOfDetail: false,
87
+ baseScreenSpaceError: 1024,
88
+ skipScreenSpaceErrorFactor: 16,
89
+ skipLevels: 1,
90
+ immediatelyLoadDesiredLevelOfDetail: false,
91
+ dynamicScreenSpaceError: true,
92
+ dynamicScreenSpaceErrorDensity: 2.0e-4,
93
+ dynamicScreenSpaceErrorFactor: 24,
94
+ dynamicScreenSpaceErrorHeightFalloff: 0.25,
95
+ memoryAdjustedScreenSpaceError: true,
34
96
  loadTiles: true,
35
97
  updateTransforms: true,
36
98
  viewportTraversersMap: null,
37
99
  loadOptions: { fetch: {} },
38
100
  attributions: [],
39
101
  basePath: '',
40
- i3s: {}
102
+ i3s: {},
103
+ spatial: {}
41
104
  };
42
105
  const TILES_TOTAL = 'Tiles In Tileset(s)';
43
106
  const TILES_IN_MEMORY = 'Tiles In Memory';
@@ -73,6 +136,18 @@ export class Tileset3D {
73
136
  root = null;
74
137
  roots = {};
75
138
  asset = {};
139
+ /** Inline metadata schema declared by the source tileset, when present. */
140
+ schema = null;
141
+ /** External metadata schema URI declared by the source tileset, when present. */
142
+ schemaUri = null;
143
+ /** Metadata groups declared by the source tileset, in source order. */
144
+ groups = [];
145
+ /** Tileset-wide metadata entity, preserved without property-table decoding. */
146
+ metadata = null;
147
+ /** Tileset statistics metadata, preserved for application-level inspection. */
148
+ statistics = null;
149
+ /** Normalized source and target coordinate reference system metadata. */
150
+ spatialReference = createTilesetSpatialReference({});
76
151
  description = '';
77
152
  properties;
78
153
  extras = null;
@@ -84,12 +159,14 @@ export class Tileset3D {
84
159
  cartesianCenter = null;
85
160
  zoom = 1;
86
161
  boundingVolume = null;
87
- dynamicScreenSpaceErrorComputedDensity = 0.0;
88
- maximumMemoryUsage = 32;
162
+ /** Effective dynamic SSE density calculated for the most recently traversed viewport. */
163
+ dynamicScreenSpaceErrorComputedDensity = 0;
164
+ /** Estimated bytes currently retained by loaded tile content. */
89
165
  gpuMemoryUsageInBytes = 0;
166
+ /** Active SSE threshold after optional cache-pressure adjustment, in logical/CSS pixels. */
90
167
  memoryAdjustedScreenSpaceError = 0.0;
91
- _cacheBytes = 0;
92
- _cacheOverflowBytes = 0;
168
+ _cacheBytes = DEFAULT_CACHE_BYTES;
169
+ _maximumCacheOverflowBytes = DEFAULT_MAXIMUM_CACHE_OVERFLOW_BYTES;
93
170
  _frameNumber = 0;
94
171
  _tiles = {};
95
172
  _pendingCount = 0;
@@ -100,6 +177,10 @@ export class Tileset3D {
100
177
  _requestedTiles = [];
101
178
  _emptyTiles = [];
102
179
  frameStateData = {};
180
+ /** Last camera pose retained independently for each viewport. */
181
+ _cameraMotionStates = {};
182
+ /** Pending traversal that releases requests after camera motion settles. */
183
+ _deferredTraversalTimeout = null;
103
184
  _traverser;
104
185
  _cache = new TilesetCache();
105
186
  _requestScheduler;
@@ -112,11 +193,27 @@ export class Tileset3D {
112
193
  * @param options Traversal and runtime options.
113
194
  */
114
195
  constructor(source, options) {
115
- this.options = { ...DEFAULT_PROPS, ...options };
116
- this.loadOptions = this.options.loadOptions || {};
117
196
  if (!isTileset3DSource(source)) {
118
197
  throw new Error('Tileset3D requires a Tileset3DSource instance');
119
198
  }
199
+ const suppliedOptions = options || {};
200
+ const usesTiles3DCacheDefaults = source.type === TILESET_TYPE.TILES3D;
201
+ const defaultCacheBytes = usesTiles3DCacheDefaults
202
+ ? DEFAULT_PROPS.cacheBytes
203
+ : DEFAULT_I3S_CACHE_BYTES;
204
+ const defaultMaximumCacheOverflowBytes = usesTiles3DCacheDefaults
205
+ ? DEFAULT_PROPS.maximumCacheOverflowBytes
206
+ : DEFAULT_I3S_MAXIMUM_CACHE_OVERFLOW_BYTES;
207
+ const cacheBytes = resolveCacheBytes(suppliedOptions, defaultCacheBytes);
208
+ const maximumCacheOverflowBytes = resolveMaximumCacheOverflowBytes(suppliedOptions, defaultMaximumCacheOverflowBytes);
209
+ this.options = {
210
+ ...DEFAULT_PROPS,
211
+ ...suppliedOptions,
212
+ cacheBytes,
213
+ maximumCacheOverflowBytes,
214
+ memoryAdjustedScreenSpaceError: suppliedOptions.memoryAdjustedScreenSpaceError ?? usesTiles3DCacheDefaults
215
+ };
216
+ this.loadOptions = this.options.loadOptions || {};
120
217
  this.source = source;
121
218
  this.tileset = null;
122
219
  this.loader = this.source.loader;
@@ -135,13 +232,19 @@ export class Tileset3D {
135
232
  maxRequests: this.options.maxRequests
136
233
  });
137
234
  this.memoryAdjustedScreenSpaceError = this.options.maximumScreenSpaceError;
138
- this._cacheBytes = this.options.maximumMemoryUsage * 1024 * 1024;
139
- this._cacheOverflowBytes = this.options.memoryCacheOverflow * 1024 * 1024;
235
+ this._cacheBytes = cacheBytes;
236
+ this._maximumCacheOverflowBytes = maximumCacheOverflowBytes;
237
+ const metadata = this._getSourceMetadata();
238
+ if (metadata) {
239
+ this.spatialReference = applyTilesetSpatialOptions(metadata.spatialReference, this.options.spatial);
240
+ }
140
241
  this.stats = new Stats({ id: this.url });
141
242
  this._initializeStats();
142
243
  this.tilesetInitializationPromise = this._initializeTileSet();
143
244
  }
144
245
  destroy() {
246
+ this._clearDeferredTraversal();
247
+ this.source.destroy?.();
145
248
  this._destroy();
146
249
  }
147
250
  isLoaded() {
@@ -153,13 +256,74 @@ export class Tileset3D {
153
256
  get frameNumber() {
154
257
  return this._frameNumber;
155
258
  }
259
+ /**
260
+ * Returns the tiles requested during the most recent completed traversal.
261
+ *
262
+ * A defensive copy makes request ordering deterministic for diagnostics and prevents callers
263
+ * from mutating the scheduler's working set.
264
+ */
265
+ get requestedTiles() {
266
+ return this._requestedTiles.slice();
267
+ }
268
+ /**
269
+ * Returns empty tiles considered during the most recent completed traversal.
270
+ *
271
+ * Empty tiles can still be useful hierarchy placeholders, but their IDs are included in
272
+ * observability snapshots so applications can distinguish traversal work from render content.
273
+ */
274
+ get emptyTiles() {
275
+ return this._emptyTiles.slice();
276
+ }
277
+ /**
278
+ * Gets or sets the soft target, in bytes, for cached tile content not needed this frame.
279
+ *
280
+ * Current-frame tiles remain protected even when their estimated memory exceeds this target.
281
+ * Reducing the value makes unused least-recently-used tiles eligible for eviction on the next
282
+ * traversal.
283
+ * @default 536870912 for 3D Tiles; 33554432 for I3S
284
+ */
285
+ get cacheBytes() {
286
+ return this._cacheBytes;
287
+ }
288
+ set cacheBytes(value) {
289
+ this._cacheBytes = validateCacheByteLength(value, 'cacheBytes');
290
+ this.options.cacheBytes = this._cacheBytes;
291
+ }
292
+ /**
293
+ * Gets or sets the additional current-frame headroom, in bytes, before memory-adjusted SSE rises.
294
+ *
295
+ * The pressure ceiling is `cacheBytes + maximumCacheOverflowBytes`. This value does not change
296
+ * the base target used to evict tiles that were not touched in the current frame.
297
+ * @default 536870912 for 3D Tiles; 1048576 for I3S
298
+ */
299
+ get maximumCacheOverflowBytes() {
300
+ return this._maximumCacheOverflowBytes;
301
+ }
302
+ set maximumCacheOverflowBytes(value) {
303
+ this._maximumCacheOverflowBytes = validateCacheByteLength(value, 'maximumCacheOverflowBytes');
304
+ this.options.maximumCacheOverflowBytes = this._maximumCacheOverflowBytes;
305
+ }
156
306
  get queryParams() {
157
307
  const rootUrl = this.source.getTileUrl(this.url);
158
308
  const queryIndex = rootUrl.indexOf('?');
159
309
  return queryIndex >= 0 ? rootUrl.slice(queryIndex + 1) : '';
160
310
  }
311
+ /**
312
+ * Updates traversal and runtime options while retaining unspecified byte budgets.
313
+ *
314
+ * @param props - Partial runtime options to apply.
315
+ */
161
316
  setProps(props) {
162
- this.options = { ...this.options, ...props };
317
+ const cacheBytes = resolveCacheBytes(props, this.cacheBytes);
318
+ const maximumCacheOverflowBytes = resolveMaximumCacheOverflowBytes(props, this.maximumCacheOverflowBytes);
319
+ this.options = {
320
+ ...this.options,
321
+ ...props,
322
+ cacheBytes,
323
+ maximumCacheOverflowBytes
324
+ };
325
+ this._cacheBytes = cacheBytes;
326
+ this._maximumCacheOverflowBytes = maximumCacheOverflowBytes;
163
327
  }
164
328
  getTileUrl(tilePath) {
165
329
  return this.source.getTileUrl(tilePath);
@@ -198,11 +362,18 @@ export class Tileset3D {
198
362
  }
199
363
  return this.updatePromise;
200
364
  }
365
+ /**
366
+ * Moves the active LOD threshold toward the configured SSE or away from cache pressure.
367
+ *
368
+ * Usage below {@link Tileset3D.cacheBytes} restores quality in two-percent steps. Usage above
369
+ * `cacheBytes + maximumCacheOverflowBytes` reduces refinement in two-percent steps. Values in
370
+ * the overflow window leave the threshold unchanged, preventing rapid load/evict oscillation.
371
+ */
201
372
  adjustScreenSpaceError() {
202
- if (this.gpuMemoryUsageInBytes < this._cacheBytes) {
373
+ if (this.gpuMemoryUsageInBytes < this.cacheBytes) {
203
374
  this.memoryAdjustedScreenSpaceError = Math.max(this.memoryAdjustedScreenSpaceError / 1.02, this.options.maximumScreenSpaceError);
204
375
  }
205
- else if (this.gpuMemoryUsageInBytes > this._cacheBytes + this._cacheOverflowBytes) {
376
+ else if (this.gpuMemoryUsageInBytes > this.cacheBytes + this.maximumCacheOverflowBytes) {
206
377
  this.memoryAdjustedScreenSpaceError *= 1.02;
207
378
  }
208
379
  }
@@ -214,9 +385,19 @@ export class Tileset3D {
214
385
  return;
215
386
  }
216
387
  const preparedViewports = viewports instanceof Array ? viewports : [viewports];
388
+ const activeViewportIds = new Set(preparedViewports.map(viewport => viewport.id));
389
+ // A viewport may be removed between frames. Discard its completed state before aggregating
390
+ // requested and selected tiles so observability reflects only the current traversal inputs.
391
+ for (const frameStateId of Object.keys(this.frameStateData)) {
392
+ if (!activeViewportIds.has(frameStateId)) {
393
+ delete this.frameStateData[frameStateId];
394
+ }
395
+ }
217
396
  this._cache.reset();
218
397
  this._frameNumber++;
219
398
  this.traverseCounter = preparedViewports.length;
399
+ const currentTime = Date.now();
400
+ let minimumDeferredTraversalDelay = Number.POSITIVE_INFINITY;
220
401
  const viewportsToTraverse = [];
221
402
  for (const viewport of preparedViewports) {
222
403
  const id = viewport.id;
@@ -236,7 +417,57 @@ export class Tileset3D {
236
417
  continue;
237
418
  }
238
419
  const frameState = getFrameState(viewport, this._frameNumber);
239
- this._traverser.traverse(this.roots[id], frameState, this.options);
420
+ const root = this.roots[id];
421
+ const cameraMotionUpdate = updateCameraMotionState(this._cameraMotionStates[id], frameState.camera.position, frameState.camera.direction, currentTime);
422
+ this._cameraMotionStates[id] = cameraMotionUpdate.state;
423
+ frameState.camera.timeSinceMovement = cameraMotionUpdate.timeSinceMovement;
424
+ // Dynamic SSE reads the root's inverse computed transform before traversal updates tile
425
+ // visibility. Refresh it from the current tileset model matrix here so animated local
426
+ // box/sphere tilesets never calculate their height falloff one transform behind the frame.
427
+ updateRootTransformForDynamicScreenSpaceError(root, this.modelMatrix);
428
+ frameState.dynamicScreenSpaceErrorDensity =
429
+ this.type === TILESET_TYPE.TILES3D &&
430
+ this.options.dynamicScreenSpaceError &&
431
+ !frameState.viewport.orthographic
432
+ ? calculateDynamicScreenSpaceErrorDensity(root, frameState, this.options)
433
+ : 0;
434
+ // Keep the legacy diagnostic field, but traversal reads the per-viewport frame value above.
435
+ this.dynamicScreenSpaceErrorComputedDensity = frameState.dynamicScreenSpaceErrorDensity;
436
+ this._traverser.traverse(root, frameState, this.options);
437
+ if (Object.keys(this._traverser.deferredTiles).length > 0) {
438
+ minimumDeferredTraversalDelay = Math.min(minimumDeferredTraversalDelay, Math.max(this.options.foveatedTimeDelay - cameraMotionUpdate.timeSinceMovement, 0));
439
+ }
440
+ }
441
+ if (Number.isFinite(minimumDeferredTraversalDelay)) {
442
+ this._scheduleDeferredTraversal(minimumDeferredTraversalDelay);
443
+ }
444
+ else {
445
+ this._clearDeferredTraversal();
446
+ }
447
+ }
448
+ /**
449
+ * Schedules one follow-up traversal when the moving-camera deferral window expires.
450
+ *
451
+ * Replacing an existing timer ensures continuing camera movement pushes the retry window forward
452
+ * instead of creating a queue of redundant traversals.
453
+ *
454
+ * @param delayInSeconds - Remaining stationary delay before deferred requests become eligible.
455
+ */
456
+ _scheduleDeferredTraversal(delayInSeconds) {
457
+ this._clearDeferredTraversal();
458
+ this._deferredTraversalTimeout = setTimeout(() => {
459
+ this._deferredTraversalTimeout = null;
460
+ this.selectTiles().catch((error) => {
461
+ const traversalError = error instanceof Error ? error : new Error(String(error));
462
+ this._onTilesetError(traversalError);
463
+ });
464
+ }, Math.max(delayInSeconds * 1000, 0));
465
+ }
466
+ /** Clears a pending moving-camera follow-up traversal. */
467
+ _clearDeferredTraversal() {
468
+ if (this._deferredTraversalTimeout !== null) {
469
+ clearTimeout(this._deferredTraversalTimeout);
470
+ this._deferredTraversalTimeout = null;
240
471
  }
241
472
  }
242
473
  _needTraverse(viewportId) {
@@ -337,6 +568,9 @@ export class Tileset3D {
337
568
  }
338
569
  _unloadTiles() {
339
570
  this._cache.unloadTiles(this, (tileset, tile) => tileset._unloadTile(tile));
571
+ if (this.options.memoryAdjustedScreenSpaceError) {
572
+ this.adjustScreenSpaceError();
573
+ }
340
574
  }
341
575
  _updateStats() {
342
576
  let tilesRenderable = 0;
@@ -344,11 +578,14 @@ export class Tileset3D {
344
578
  for (const tile of this.selectedTiles) {
345
579
  if (tile.contentAvailable && tile.content) {
346
580
  tilesRenderable++;
347
- if (tile.content.pointCount) {
348
- pointsRenderable += tile.content.pointCount;
349
- }
350
- else {
351
- pointsRenderable += tile.content.vertexCount;
581
+ const contents = tile.contents.length ? tile.contents : [tile.content];
582
+ for (const content of contents) {
583
+ if (content.pointCount) {
584
+ pointsRenderable += content.pointCount;
585
+ }
586
+ else {
587
+ pointsRenderable += content.vertexCount || 0;
588
+ }
352
589
  }
353
590
  }
354
591
  }
@@ -365,13 +602,15 @@ export class Tileset3D {
365
602
  this._syncSourceState(initialMetadata);
366
603
  }
367
604
  if (initialMetadata?.tileset?.root &&
368
- typeof initialMetadata.tileset.root.then !== 'function') {
605
+ typeof initialMetadata.tileset.root.then !== 'function' &&
606
+ (!this.source.prepareTileset || this.spatialReference?.status === 'native')) {
369
607
  this.root = this._initializeTileHeaders(initialMetadata.tileset, null);
370
608
  this._applyViewState();
371
609
  }
372
610
  await initializePromise;
373
611
  const metadata = this.source.getMetadata();
374
612
  this._syncSourceState(metadata);
613
+ await this.source.prepareTileset?.(this);
375
614
  if (!this.root) {
376
615
  this.root = this._initializeTileHeaders(metadata.tileset, null);
377
616
  }
@@ -425,6 +664,29 @@ export class Tileset3D {
425
664
  this._onTileLoad(tile, loadResult);
426
665
  }
427
666
  }
667
+ /**
668
+ * Loads a source-managed lazy child-header group and reports failures through tile callbacks.
669
+ *
670
+ * Subtree metadata shares the normal loading counters but is not reported as render content and
671
+ * is not added to the GPU cache. Traversal is notified separately after the promise settles.
672
+ *
673
+ * @param tile - Runtime tile that owns the lazy subtree reference.
674
+ * @param frameState - View state that made the subtree eligible for refinement.
675
+ */
676
+ async _loadTileChildren(tile, frameState) {
677
+ try {
678
+ this._onStartTileLoading();
679
+ await tile.loadChildren(frameState);
680
+ }
681
+ catch (error) {
682
+ const tileError = error instanceof Error ? error : new Error('subtree load failed');
683
+ this._onSourceError(tileError, tile);
684
+ this._onTileLoadError(tile, tileError);
685
+ }
686
+ finally {
687
+ this._onEndTileLoading();
688
+ }
689
+ }
428
690
  _onTileLoadError(tile, error) {
429
691
  this.stats.get(TILES_LOAD_FAILED).incrementCount();
430
692
  const message = error.message || error.toString();
@@ -527,6 +789,14 @@ export class Tileset3D {
527
789
  this.refine = metadata.refine;
528
790
  this.contentFormats = this.source.contentFormats;
529
791
  this.asset = this.source.asset || this.asset;
792
+ const tileset = metadata.tileset;
793
+ this.schema = tileset.schema || null;
794
+ this.schemaUri = tileset.schemaUri || null;
795
+ this.groups = tileset.groups || [];
796
+ this.metadata = tileset.metadata || null;
797
+ this.statistics = tileset.statistics ?? null;
798
+ const spatialReference = applyTilesetSpatialOptions(metadata.spatialReference, this.options.spatial);
799
+ this.spatialReference = preserveTransformedSpatialReference(this.spatialReference, spatialReference);
530
800
  this.properties = this.source.properties ?? this.properties;
531
801
  this.extras = this.source.extras ?? this.extras;
532
802
  if (this.options.attributions?.length) {
@@ -563,4 +833,14 @@ export class Tileset3D {
563
833
  }
564
834
  }
565
835
  }
836
+ /** Preserve a completed runtime operation when asynchronous source metadata describes the same request. */
837
+ function preserveTransformedSpatialReference(current, next) {
838
+ return current?.status === 'transformed' &&
839
+ current.sourceCrs === next.sourceCrs &&
840
+ current.targetCrs === next.targetCrs &&
841
+ current.targetHeightReference === next.targetHeightReference &&
842
+ current.outputCoordinates === next.outputCoordinates
843
+ ? current
844
+ : next;
845
+ }
566
846
  //# sourceMappingURL=tileset-3d.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tileset-3d.js","sourceRoot":"","sources":["../../../src/tileset-3d/common/tileset-3d.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tileset-3d.js","sourceRoot":"","sources":["../../../src/tileset-3d/common/tileset-3d.ts"],"names":[],"mappings":"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"}
@@ -13,7 +13,17 @@ export declare class TilesetCache {
13
13
  touch(tile: Tile3D): void;
14
14
  add(tileset: Tileset3D, tile: Tile3D, addCallback?: (tileset: Tileset3D, tile: Tile3D) => void): void;
15
15
  unloadTile(tileset: Tileset3D, tile: Tile3D, unloadCallback?: (tileset: Tileset3D, tile: Tile3D) => void): void;
16
- unloadTiles(tileset: any, unloadCallback: any): void;
16
+ /**
17
+ * Unloads least-recently-used tiles until the byte-native cache target is met.
18
+ *
19
+ * Tiles touched after the frame sentinel remain protected, so {@link Tileset3D.cacheBytes} is a
20
+ * soft target rather than a hard cap on the visible working set. Overflow headroom affects
21
+ * memory-adjusted SSE, not eviction of unused tiles.
22
+ *
23
+ * @param tileset - Tileset that owns the cache and reports estimated content memory.
24
+ * @param unloadCallback - Callback that releases content and decrements the memory estimate.
25
+ */
26
+ unloadTiles(tileset: Tileset3D, unloadCallback?: (tileset: Tileset3D, tile: Tile3D) => void): void;
17
27
  trim(): void;
18
28
  }
19
29
  //# sourceMappingURL=tileset-cache.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tileset-cache.d.ts","sourceRoot":"","sources":["../../../src/tileset-3d/common/tileset-cache.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAC,SAAS,EAAC,wBAAqB;AAC5C,OAAO,KAAK,EAAC,MAAM,EAAC,qBAAkB;AAGtC;;;GAGG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,KAAK,CAAmB;IAChC,OAAO,CAAC,SAAS,CAAM;IACvB,OAAO,CAAC,UAAU,CAAU;;IAU5B,KAAK,IAAI,IAAI;IAOb,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAOzB,GAAG,CACD,OAAO,EAAE,SAAS,EAClB,IAAI,EAAE,MAAM,EACZ,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,GACvD,IAAI;IAUP,UAAU,CACR,OAAO,EAAE,SAAS,EAClB,IAAI,EAAE,MAAM,EACZ,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,GAC1D,IAAI;IAaP,WAAW,CAAC,OAAO,KAAA,EAAE,cAAc,KAAA,GAAG,IAAI;IA0B1C,IAAI,IAAI,IAAI;CAGb"}
1
+ {"version":3,"file":"tileset-cache.d.ts","sourceRoot":"","sources":["../../../src/tileset-3d/common/tileset-cache.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAC,SAAS,EAAC,wBAAqB;AAC5C,OAAO,KAAK,EAAC,MAAM,EAAC,qBAAkB;AAGtC;;;GAGG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,KAAK,CAAmB;IAChC,OAAO,CAAC,SAAS,CAAM;IACvB,OAAO,CAAC,UAAU,CAAU;;IAU5B,KAAK,IAAI,IAAI;IAOb,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAOzB,GAAG,CACD,OAAO,EAAE,SAAS,EAClB,IAAI,EAAE,MAAM,EACZ,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,GACvD,IAAI;IAUP,UAAU,CACR,OAAO,EAAE,SAAS,EAClB,IAAI,EAAE,MAAM,EACZ,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,GAC1D,IAAI;IAaP;;;;;;;;;OASG;IACH,WAAW,CACT,OAAO,EAAE,SAAS,EAClB,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,GAC1D,IAAI;IAqBP,IAAI,IAAI,IAAI;CAGb"}
@@ -48,18 +48,26 @@ export class TilesetCache {
48
48
  unloadCallback(tileset, tile);
49
49
  }
50
50
  }
51
+ /**
52
+ * Unloads least-recently-used tiles until the byte-native cache target is met.
53
+ *
54
+ * Tiles touched after the frame sentinel remain protected, so {@link Tileset3D.cacheBytes} is a
55
+ * soft target rather than a hard cap on the visible working set. Overflow headroom affects
56
+ * memory-adjusted SSE, not eviction of unused tiles.
57
+ *
58
+ * @param tileset - Tileset that owns the cache and reports estimated content memory.
59
+ * @param unloadCallback - Callback that releases content and decrements the memory estimate.
60
+ */
51
61
  unloadTiles(tileset, unloadCallback) {
52
62
  const trimTiles = this._trimTiles;
53
63
  this._trimTiles = false;
54
64
  const list = this._list;
55
- const maximumMemoryUsageInBytes = tileset.maximumMemoryUsage * 1024 * 1024;
56
65
  // Traverse the list only to the sentinel since tiles/nodes to the
57
66
  // right of the sentinel were used this frame.
58
67
  // The sub-list to the left of the sentinel is ordered from LRU to MRU.
59
68
  const sentinel = this._sentinel;
60
69
  let node = list.head;
61
- while (node !== sentinel &&
62
- (tileset.gpuMemoryUsageInBytes > maximumMemoryUsageInBytes || trimTiles)) {
70
+ while (node !== sentinel && (tileset.gpuMemoryUsageInBytes > tileset.cacheBytes || trimTiles)) {
63
71
  // @ts-expect-error
64
72
  const tile = node.item;
65
73
  // @ts-expect-error