@loaders.gl/3d-tiles 4.0.0-alpha.4 → 4.0.0-alpha.5

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 (155) hide show
  1. package/dist/bundle.d.ts +2 -0
  2. package/dist/bundle.d.ts.map +1 -0
  3. package/dist/cesium-ion-loader.d.ts +6 -0
  4. package/dist/cesium-ion-loader.d.ts.map +1 -0
  5. package/dist/dist.min.js +12227 -0
  6. package/dist/index.d.ts +10 -0
  7. package/dist/index.d.ts.map +1 -0
  8. package/dist/index.js +1 -0
  9. package/dist/index.js.map +1 -1
  10. package/dist/lib/classes/helpers/tile-3d-accessor-utils.d.ts +8 -0
  11. package/dist/lib/classes/helpers/tile-3d-accessor-utils.d.ts.map +1 -0
  12. package/dist/lib/classes/helpers/tile-3d-accessor-utils.js.map +1 -1
  13. package/dist/lib/classes/tile-3d-batch-table-hierarchy.d.ts +10 -0
  14. package/dist/lib/classes/tile-3d-batch-table-hierarchy.d.ts.map +1 -0
  15. package/dist/lib/classes/tile-3d-batch-table-hierarchy.js.map +1 -1
  16. package/dist/lib/classes/tile-3d-batch-table.d.ts +34 -0
  17. package/dist/lib/classes/tile-3d-batch-table.d.ts.map +1 -0
  18. package/dist/lib/classes/tile-3d-batch-table.js +16 -1
  19. package/dist/lib/classes/tile-3d-batch-table.js.map +1 -1
  20. package/dist/lib/classes/tile-3d-feature-table.d.ts +15 -0
  21. package/dist/lib/classes/tile-3d-feature-table.d.ts.map +1 -0
  22. package/dist/lib/classes/tile-3d-feature-table.js +9 -2
  23. package/dist/lib/classes/tile-3d-feature-table.js.map +1 -1
  24. package/dist/lib/constants.d.ts +22 -0
  25. package/dist/lib/constants.d.ts.map +1 -0
  26. package/dist/lib/constants.js +2 -1
  27. package/dist/lib/constants.js.map +1 -1
  28. package/dist/lib/encoders/encode-3d-tile-batched-model.d.ts +2 -0
  29. package/dist/lib/encoders/encode-3d-tile-batched-model.d.ts.map +1 -0
  30. package/dist/lib/encoders/encode-3d-tile-batched-model.js.map +1 -1
  31. package/dist/lib/encoders/encode-3d-tile-composite.d.ts +2 -0
  32. package/dist/lib/encoders/encode-3d-tile-composite.d.ts.map +1 -0
  33. package/dist/lib/encoders/encode-3d-tile-composite.js.map +1 -1
  34. package/dist/lib/encoders/encode-3d-tile-instanced-model.d.ts +2 -0
  35. package/dist/lib/encoders/encode-3d-tile-instanced-model.d.ts.map +1 -0
  36. package/dist/lib/encoders/encode-3d-tile-instanced-model.js.map +1 -1
  37. package/dist/lib/encoders/encode-3d-tile-point-cloud.d.ts +2 -0
  38. package/dist/lib/encoders/encode-3d-tile-point-cloud.d.ts.map +1 -0
  39. package/dist/lib/encoders/encode-3d-tile-point-cloud.js.map +1 -1
  40. package/dist/lib/encoders/encode-3d-tile.d.ts +2 -0
  41. package/dist/lib/encoders/encode-3d-tile.d.ts.map +1 -0
  42. package/dist/lib/encoders/encode-3d-tile.js.map +1 -1
  43. package/dist/lib/encoders/helpers/encode-3d-tile-header.d.ts +3 -0
  44. package/dist/lib/encoders/helpers/encode-3d-tile-header.d.ts.map +1 -0
  45. package/dist/lib/encoders/helpers/encode-3d-tile-header.js.map +1 -1
  46. package/dist/lib/ion/ion.d.ts +4 -0
  47. package/dist/lib/ion/ion.d.ts.map +1 -0
  48. package/dist/lib/ion/ion.js.map +1 -1
  49. package/dist/lib/parsers/helpers/normalize-3d-tile-colors.d.ts +7 -0
  50. package/dist/lib/parsers/helpers/normalize-3d-tile-colors.d.ts.map +1 -0
  51. package/dist/lib/parsers/helpers/normalize-3d-tile-colors.js.map +1 -1
  52. package/dist/lib/parsers/helpers/normalize-3d-tile-normals.d.ts +6 -0
  53. package/dist/lib/parsers/helpers/normalize-3d-tile-normals.d.ts.map +1 -0
  54. package/dist/lib/parsers/helpers/normalize-3d-tile-normals.js.map +1 -1
  55. package/dist/lib/parsers/helpers/normalize-3d-tile-positions.d.ts +2 -0
  56. package/dist/lib/parsers/helpers/normalize-3d-tile-positions.d.ts.map +1 -0
  57. package/dist/lib/parsers/helpers/normalize-3d-tile-positions.js.map +1 -1
  58. package/dist/lib/parsers/helpers/parse-3d-implicit-tiles.d.ts +46 -0
  59. package/dist/lib/parsers/helpers/parse-3d-implicit-tiles.d.ts.map +1 -0
  60. package/dist/lib/parsers/helpers/parse-3d-implicit-tiles.js +222 -0
  61. package/dist/lib/parsers/helpers/parse-3d-implicit-tiles.js.map +1 -0
  62. package/dist/lib/parsers/helpers/parse-3d-tile-gltf-view.d.ts +7 -0
  63. package/dist/lib/parsers/helpers/parse-3d-tile-gltf-view.d.ts.map +1 -0
  64. package/dist/lib/parsers/helpers/parse-3d-tile-gltf-view.js +1 -1
  65. package/dist/lib/parsers/helpers/parse-3d-tile-gltf-view.js.map +1 -1
  66. package/dist/lib/parsers/helpers/parse-3d-tile-header.d.ts +2 -0
  67. package/dist/lib/parsers/helpers/parse-3d-tile-header.d.ts.map +1 -0
  68. package/dist/lib/parsers/helpers/parse-3d-tile-header.js.map +1 -1
  69. package/dist/lib/parsers/helpers/parse-3d-tile-subtree.d.ts +9 -0
  70. package/dist/lib/parsers/helpers/parse-3d-tile-subtree.d.ts.map +1 -0
  71. package/dist/lib/parsers/helpers/parse-3d-tile-subtree.js +64 -0
  72. package/dist/lib/parsers/helpers/parse-3d-tile-subtree.js.map +1 -0
  73. package/dist/lib/parsers/helpers/parse-3d-tile-tables.d.ts +3 -0
  74. package/dist/lib/parsers/helpers/parse-3d-tile-tables.d.ts.map +1 -0
  75. package/dist/lib/parsers/helpers/parse-3d-tile-tables.js +1 -1
  76. package/dist/lib/parsers/helpers/parse-3d-tile-tables.js.map +1 -1
  77. package/dist/lib/parsers/helpers/parse-utils.d.ts +4 -0
  78. package/dist/lib/parsers/helpers/parse-utils.d.ts.map +1 -0
  79. package/dist/lib/parsers/helpers/parse-utils.js.map +1 -1
  80. package/dist/lib/parsers/parse-3d-tile-batched-model.d.ts +2 -0
  81. package/dist/lib/parsers/parse-3d-tile-batched-model.d.ts.map +1 -0
  82. package/dist/lib/parsers/parse-3d-tile-batched-model.js.map +1 -1
  83. package/dist/lib/parsers/parse-3d-tile-composite.d.ts +2 -0
  84. package/dist/lib/parsers/parse-3d-tile-composite.d.ts.map +1 -0
  85. package/dist/lib/parsers/parse-3d-tile-composite.js.map +1 -1
  86. package/dist/lib/parsers/parse-3d-tile-gltf.d.ts +2 -0
  87. package/dist/lib/parsers/parse-3d-tile-gltf.d.ts.map +1 -0
  88. package/dist/lib/parsers/parse-3d-tile-gltf.js +10 -0
  89. package/dist/lib/parsers/parse-3d-tile-gltf.js.map +1 -0
  90. package/dist/lib/parsers/parse-3d-tile-header.d.ts +19 -0
  91. package/dist/lib/parsers/parse-3d-tile-header.d.ts.map +1 -0
  92. package/dist/lib/parsers/parse-3d-tile-header.js +72 -0
  93. package/dist/lib/parsers/parse-3d-tile-header.js.map +1 -1
  94. package/dist/lib/parsers/parse-3d-tile-instanced-model.d.ts +2 -0
  95. package/dist/lib/parsers/parse-3d-tile-instanced-model.d.ts.map +1 -0
  96. package/dist/lib/parsers/parse-3d-tile-instanced-model.js.map +1 -1
  97. package/dist/lib/parsers/parse-3d-tile-point-cloud.d.ts +3 -0
  98. package/dist/lib/parsers/parse-3d-tile-point-cloud.d.ts.map +1 -0
  99. package/dist/lib/parsers/parse-3d-tile-point-cloud.js +1 -1
  100. package/dist/lib/parsers/parse-3d-tile-point-cloud.js.map +1 -1
  101. package/dist/lib/parsers/parse-3d-tile.d.ts +2 -0
  102. package/dist/lib/parsers/parse-3d-tile.d.ts.map +1 -0
  103. package/dist/lib/parsers/parse-3d-tile.js +4 -0
  104. package/dist/lib/parsers/parse-3d-tile.js.map +1 -1
  105. package/dist/lib/utils/version.d.ts +2 -0
  106. package/dist/lib/utils/version.d.ts.map +1 -0
  107. package/dist/lib/utils/version.js +1 -1
  108. package/dist/lib/utils/version.js.map +1 -1
  109. package/dist/tile-3d-subtree-loader.d.ts +7 -0
  110. package/dist/tile-3d-subtree-loader.d.ts.map +1 -0
  111. package/dist/tile-3d-subtree-loader.js +14 -0
  112. package/dist/tile-3d-subtree-loader.js.map +1 -0
  113. package/dist/tile-3d-writer.d.ts +6 -0
  114. package/dist/tile-3d-writer.d.ts.map +1 -0
  115. package/dist/tiles-3d-loader.d.ts +6 -0
  116. package/dist/tiles-3d-loader.d.ts.map +1 -0
  117. package/dist/tiles-3d-loader.js +9 -2
  118. package/dist/tiles-3d-loader.js.map +1 -1
  119. package/dist/types.d.ts +80 -0
  120. package/dist/types.d.ts.map +1 -0
  121. package/package.json +10 -10
  122. package/src/index.ts +1 -0
  123. package/src/lib/classes/helpers/{tile-3d-accessor-utils.js → tile-3d-accessor-utils.ts} +0 -0
  124. package/src/lib/classes/{tile-3d-batch-table-hierarchy.js → tile-3d-batch-table-hierarchy.ts} +0 -0
  125. package/src/lib/classes/{tile-3d-batch-table.js → tile-3d-batch-table.ts} +14 -4
  126. package/src/lib/classes/{tile-3d-feature-table.js → tile-3d-feature-table.ts} +5 -2
  127. package/src/lib/{constants.js → constants.ts} +2 -1
  128. package/src/lib/encoders/{encode-3d-tile-batched-model.js → encode-3d-tile-batched-model.ts} +0 -0
  129. package/src/lib/encoders/{encode-3d-tile-composite.js → encode-3d-tile-composite.ts} +0 -0
  130. package/src/lib/encoders/{encode-3d-tile-instanced-model.js → encode-3d-tile-instanced-model.ts} +0 -0
  131. package/src/lib/encoders/{encode-3d-tile-point-cloud.js → encode-3d-tile-point-cloud.ts} +0 -0
  132. package/src/lib/encoders/{encode-3d-tile.js → encode-3d-tile.ts} +0 -0
  133. package/src/lib/encoders/helpers/{encode-3d-tile-header.js → encode-3d-tile-header.ts} +0 -0
  134. package/src/lib/ion/{ion.js → ion.ts} +0 -0
  135. package/src/lib/parsers/helpers/{normalize-3d-tile-colors.js → normalize-3d-tile-colors.ts} +1 -1
  136. package/src/lib/parsers/helpers/{normalize-3d-tile-normals.js → normalize-3d-tile-normals.ts} +0 -0
  137. package/src/lib/parsers/helpers/{normalize-3d-tile-positions.js → normalize-3d-tile-positions.ts} +0 -0
  138. package/src/lib/parsers/helpers/parse-3d-implicit-tiles.ts +319 -0
  139. package/src/lib/parsers/helpers/{parse-3d-tile-gltf-view.js → parse-3d-tile-gltf-view.ts} +1 -1
  140. package/src/lib/parsers/helpers/{parse-3d-tile-header.js → parse-3d-tile-header.ts} +0 -0
  141. package/src/lib/parsers/helpers/parse-3d-tile-subtree.ts +105 -0
  142. package/src/lib/parsers/helpers/{parse-3d-tile-tables.js → parse-3d-tile-tables.ts} +1 -1
  143. package/src/lib/parsers/helpers/{parse-utils.js → parse-utils.ts} +0 -0
  144. package/src/lib/parsers/{parse-3d-tile-batched-model.js → parse-3d-tile-batched-model.ts} +0 -0
  145. package/src/lib/parsers/{parse-3d-tile-composite.js → parse-3d-tile-composite.ts} +0 -0
  146. package/src/lib/parsers/parse-3d-tile-gltf.js +16 -0
  147. package/src/lib/parsers/parse-3d-tile-header.ts +152 -0
  148. package/src/lib/parsers/{parse-3d-tile-instanced-model.js → parse-3d-tile-instanced-model.ts} +6 -0
  149. package/src/lib/parsers/{parse-3d-tile-point-cloud.js → parse-3d-tile-point-cloud.ts} +2 -2
  150. package/src/lib/parsers/{parse-3d-tile.js → parse-3d-tile.ts} +8 -0
  151. package/src/lib/utils/{version.js → version.ts} +0 -0
  152. package/src/tile-3d-subtree-loader.ts +19 -0
  153. package/src/tiles-3d-loader.ts +17 -2
  154. package/src/types.ts +40 -1
  155. package/src/lib/parsers/parse-3d-tile-header.js +0 -69
@@ -8,12 +8,16 @@ import {parsePointCloud3DTile} from './parse-3d-tile-point-cloud';
8
8
  import {parseBatchedModel3DTile} from './parse-3d-tile-batched-model';
9
9
  import {parseInstancedModel3DTile} from './parse-3d-tile-instanced-model';
10
10
  import {parseComposite3DTile} from './parse-3d-tile-composite';
11
+ import {parseGltf3DTile} from './parse-3d-tile-gltf';
11
12
 
12
13
  // Extracts
13
14
  export async function parse3DTile(arrayBuffer, byteOffset = 0, options, context, tile = {}) {
15
+ // @ts-expect-error
14
16
  tile.byteOffset = byteOffset;
17
+ // @ts-expect-error
15
18
  tile.type = getMagicString(arrayBuffer, byteOffset);
16
19
 
20
+ // @ts-expect-error
17
21
  switch (tile.type) {
18
22
  case TILE3D_TYPE.COMPOSITE:
19
23
  // Note: We pass this function as argument so that embedded tiles can be parsed recursively
@@ -29,6 +33,9 @@ export async function parse3DTile(arrayBuffer, byteOffset = 0, options, context,
29
33
  case TILE3D_TYPE.BATCHED_3D_MODEL:
30
34
  return await parseBatchedModel3DTile(tile, arrayBuffer, byteOffset, options, context);
31
35
 
36
+ case TILE3D_TYPE.GLTF:
37
+ return await parseGltf3DTile(tile, arrayBuffer, options, context);
38
+
32
39
  case TILE3D_TYPE.INSTANCED_3D_MODEL:
33
40
  return await parseInstancedModel3DTile(tile, arrayBuffer, byteOffset, options, context);
34
41
 
@@ -36,6 +43,7 @@ export async function parse3DTile(arrayBuffer, byteOffset = 0, options, context,
36
43
  return await parsePointCloud3DTile(tile, arrayBuffer, byteOffset, options, context);
37
44
 
38
45
  default:
46
+ // @ts-expect-error
39
47
  throw new Error(`3DTileLoader: unknown type ${tile.type}`); // eslint-disable-line
40
48
  }
41
49
  }
File without changes
@@ -0,0 +1,19 @@
1
+ import type {LoaderWithParser} from '@loaders.gl/loader-utils';
2
+ import parse3DTilesSubtree from './lib/parsers/helpers/parse-3d-tile-subtree';
3
+ import {VERSION} from './lib/utils/version';
4
+
5
+ /**
6
+ * Loader for 3D Tiles Subtree
7
+ *
8
+ */
9
+ export const Tile3DSubtreeLoader: LoaderWithParser = {
10
+ id: '3d-tiles-subtree',
11
+ name: '3D Tiles Subtree',
12
+ module: '3d-tiles',
13
+ version: VERSION,
14
+ extensions: ['subtree'],
15
+ mimeTypes: ['application/octet-stream'],
16
+ tests: ['subtree'],
17
+ parse: parse3DTilesSubtree,
18
+ options: {}
19
+ };
@@ -3,7 +3,12 @@ import {path} from '@loaders.gl/loader-utils';
3
3
  import {TILESET_TYPE, LOD_METRIC_TYPE} from '@loaders.gl/tiles';
4
4
  import {VERSION} from './lib/utils/version';
5
5
  import {parse3DTile} from './lib/parsers/parse-3d-tile';
6
- import {normalizeTileHeaders} from './lib/parsers/parse-3d-tile-header';
6
+ import {
7
+ normalizeTileHeaders,
8
+ normalizeImplicitTileHeaders
9
+ } from './lib/parsers/parse-3d-tile-header';
10
+
11
+ const IMPLICIT_TILING_EXTENSION_NAME = '3DTILES_implicit_tiling';
7
12
 
8
13
  /**
9
14
  * Loader for 3D Tiles
@@ -49,7 +54,10 @@ async function parseTileset(data, options, context) {
49
54
  tilesetJson.url = context.url;
50
55
  // base path that non-absolute paths in tileset are relative to.
51
56
  tilesetJson.basePath = getBaseUri(tilesetJson);
52
- tilesetJson.root = normalizeTileHeaders(tilesetJson);
57
+ tilesetJson.root = hasImplicitTilingExtension(tilesetJson)
58
+ ? await normalizeImplicitTileHeaders(tilesetJson)
59
+ : normalizeTileHeaders(tilesetJson);
60
+
53
61
  tilesetJson.type = TILESET_TYPE.TILES3D;
54
62
 
55
63
  tilesetJson.lodMetricType = LOD_METRIC_TYPE.GEOMETRIC_ERROR;
@@ -76,3 +84,10 @@ async function parse(data, options, context) {
76
84
 
77
85
  return data;
78
86
  }
87
+
88
+ function hasImplicitTilingExtension(tilesetJson) {
89
+ return (
90
+ tilesetJson?.extensionsRequired?.includes(IMPLICIT_TILING_EXTENSION_NAME) &&
91
+ tilesetJson?.extensionsUsed?.includes(IMPLICIT_TILING_EXTENSION_NAME)
92
+ );
93
+ }
package/src/types.ts CHANGED
@@ -45,7 +45,46 @@ export type Node3D = {
45
45
  };
46
46
  };
47
47
 
48
- type BoundingVolume = {
48
+ export type BoundingVolume = {
49
49
  box?: number[];
50
50
  sphere?: number[];
51
+ region?: number[];
52
+ };
53
+
54
+ /**
55
+ * 3DTILES_implicit_tiling types
56
+ * Spec - https://github.com/CesiumGS/3d-tiles/tree/main/extensions/3DTILES_implicit_tiling#subtree-file-format
57
+ */
58
+ export type Subtree = {
59
+ buffers: Buffer[];
60
+ bufferViews: BufferView[];
61
+ tileAvailability: Availability;
62
+ contentAvailability: Availability;
63
+ childSubtreeAvailability: Availability;
64
+ };
65
+
66
+ export type Availability = {
67
+ constant?: 0 | 1;
68
+ bufferView?: number;
69
+ // Internal bitstream type
70
+ explicitBitstream?: ExplicitBitstream;
71
+ };
72
+
73
+ export type ExplicitBitstream = Uint8Array;
74
+
75
+ /**
76
+ * Spec - https://github.com/CesiumGS/3d-tiles/tree/main/extensions/3DTILES_implicit_tiling#subdivision-scheme
77
+ */
78
+ export type SubdivisionScheme = 'QUADTREE' | 'OCTREE';
79
+
80
+ type Buffer = {
81
+ name: string;
82
+ uri?: string;
83
+ byteLength: number;
84
+ };
85
+
86
+ type BufferView = {
87
+ buffer: number;
88
+ byteOffset: number;
89
+ byteLength: number;
51
90
  };
@@ -1,69 +0,0 @@
1
- import {LOD_METRIC_TYPE, TILE_REFINEMENT, TILE_TYPE} from '@loaders.gl/tiles';
2
-
3
- function getTileType(tile) {
4
- if (!tile.contentUrl) {
5
- return TILE_TYPE.EMPTY;
6
- }
7
-
8
- const contentUrl = tile.contentUrl;
9
- const fileExtension = contentUrl.split('.').pop();
10
- switch (fileExtension) {
11
- case 'pnts':
12
- return TILE_TYPE.POINTCLOUD;
13
- case 'i3dm':
14
- case 'b3dm':
15
- return TILE_TYPE.SCENEGRAPH;
16
- default:
17
- return fileExtension;
18
- }
19
- }
20
-
21
- function getRefine(refine) {
22
- switch (refine) {
23
- case 'REPLACE':
24
- case 'replace':
25
- return TILE_REFINEMENT.REPLACE;
26
- case 'ADD':
27
- case 'add':
28
- return TILE_REFINEMENT.ADD;
29
- default:
30
- return refine;
31
- }
32
- }
33
-
34
- export function normalizeTileData(tile, options) {
35
- if (!tile) {
36
- return null;
37
- }
38
- if (tile.content) {
39
- const contentUri = tile.content.uri || tile.content.url;
40
- tile.contentUrl = `${options.basePath}/${contentUri}`;
41
- }
42
- tile.id = tile.contentUrl;
43
- tile.lodMetricType = LOD_METRIC_TYPE.GEOMETRIC_ERROR;
44
- tile.lodMetricValue = tile.geometricError;
45
- tile.transformMatrix = tile.transform;
46
- tile.type = getTileType(tile);
47
- tile.refine = getRefine(tile.refine);
48
- return tile;
49
- }
50
-
51
- // normalize tile headers
52
- export function normalizeTileHeaders(tileset) {
53
- const basePath = tileset.basePath;
54
- const root = normalizeTileData(tileset.root, tileset);
55
-
56
- const stack = [];
57
- stack.push(root);
58
-
59
- while (stack.length > 0) {
60
- const tile = stack.pop() || {};
61
- const children = tile.children || [];
62
- for (const childHeader of children) {
63
- normalizeTileData(childHeader, {basePath});
64
- stack.push(childHeader);
65
- }
66
- }
67
-
68
- return root;
69
- }