@loaders.gl/tile-converter 4.0.0-alpha.7 → 4.0.0-alpha.9

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 (149) hide show
  1. package/dist/3d-tiles-attributes-worker.js +2 -2
  2. package/dist/3d-tiles-attributes-worker.js.map +2 -2
  3. package/dist/converter.min.js +67 -67
  4. package/dist/deps-installer/deps-installer.d.ts.map +1 -1
  5. package/dist/deps-installer/deps-installer.js +3 -2
  6. package/dist/dist.min.js +698 -340
  7. package/dist/es5/3d-tiles-attributes-worker.js +1 -1
  8. package/dist/es5/3d-tiles-converter/3d-tiles-converter.js.map +1 -1
  9. package/dist/es5/deps-installer/deps-installer.js +4 -3
  10. package/dist/es5/deps-installer/deps-installer.js.map +1 -1
  11. package/dist/es5/i3s-attributes-worker.js +1 -1
  12. package/dist/es5/i3s-converter/helpers/batch-ids-extensions.js +2 -2
  13. package/dist/es5/i3s-converter/helpers/batch-ids-extensions.js.map +1 -1
  14. package/dist/es5/i3s-converter/helpers/coordinate-converter.js +6 -7
  15. package/dist/es5/i3s-converter/helpers/coordinate-converter.js.map +1 -1
  16. package/dist/es5/i3s-converter/helpers/geometry-converter.js +25 -14
  17. package/dist/es5/i3s-converter/helpers/geometry-converter.js.map +1 -1
  18. package/dist/es5/i3s-converter/helpers/gltf-attributes.js +45 -12
  19. package/dist/es5/i3s-converter/helpers/gltf-attributes.js.map +1 -1
  20. package/dist/es5/i3s-converter/helpers/load-3d-tiles.js +82 -0
  21. package/dist/es5/i3s-converter/helpers/load-3d-tiles.js.map +1 -0
  22. package/dist/es5/i3s-converter/helpers/node-index-document.js +74 -45
  23. package/dist/es5/i3s-converter/helpers/node-index-document.js.map +1 -1
  24. package/dist/es5/i3s-converter/helpers/preprocess-3d-tiles.js +111 -0
  25. package/dist/es5/i3s-converter/helpers/preprocess-3d-tiles.js.map +1 -0
  26. package/dist/es5/i3s-converter/helpers/tileset-traversal.js +82 -0
  27. package/dist/es5/i3s-converter/helpers/tileset-traversal.js.map +1 -0
  28. package/dist/es5/i3s-converter/i3s-converter.js +545 -516
  29. package/dist/es5/i3s-converter/i3s-converter.js.map +1 -1
  30. package/dist/es5/i3s-converter/types.js +16 -0
  31. package/dist/es5/i3s-converter/types.js.map +1 -1
  32. package/dist/es5/i3s-server/README.md +19 -0
  33. package/dist/es5/i3s-server/app.js +10 -1
  34. package/dist/es5/i3s-server/app.js.map +1 -1
  35. package/dist/es5/i3s-server/controllers/slpk-controller.js +84 -0
  36. package/dist/es5/i3s-server/controllers/slpk-controller.js.map +1 -0
  37. package/dist/es5/i3s-server/routes/slpk-router.js +71 -0
  38. package/dist/es5/i3s-server/routes/slpk-router.js.map +1 -0
  39. package/dist/es5/i3s-server/utils/create-scene-server.js +17 -0
  40. package/dist/es5/i3s-server/utils/create-scene-server.js.map +1 -0
  41. package/dist/es5/lib/utils/file-utils.js +1 -1
  42. package/dist/es5/lib/utils/file-utils.js.map +1 -1
  43. package/dist/es5/lib/utils/lod-conversion-utils.js.map +1 -1
  44. package/dist/es5/pgm-loader.js +1 -1
  45. package/dist/esm/3d-tiles-attributes-worker.js +1 -1
  46. package/dist/esm/3d-tiles-converter/3d-tiles-converter.js.map +1 -1
  47. package/dist/esm/deps-installer/deps-installer.js +4 -3
  48. package/dist/esm/deps-installer/deps-installer.js.map +1 -1
  49. package/dist/esm/i3s-attributes-worker.js +1 -1
  50. package/dist/esm/i3s-converter/helpers/batch-ids-extensions.js +2 -2
  51. package/dist/esm/i3s-converter/helpers/batch-ids-extensions.js.map +1 -1
  52. package/dist/esm/i3s-converter/helpers/coordinate-converter.js +6 -7
  53. package/dist/esm/i3s-converter/helpers/coordinate-converter.js.map +1 -1
  54. package/dist/esm/i3s-converter/helpers/geometry-converter.js +19 -8
  55. package/dist/esm/i3s-converter/helpers/geometry-converter.js.map +1 -1
  56. package/dist/esm/i3s-converter/helpers/gltf-attributes.js +49 -12
  57. package/dist/esm/i3s-converter/helpers/gltf-attributes.js.map +1 -1
  58. package/dist/esm/i3s-converter/helpers/load-3d-tiles.js +35 -0
  59. package/dist/esm/i3s-converter/helpers/load-3d-tiles.js.map +1 -0
  60. package/dist/esm/i3s-converter/helpers/node-index-document.js +14 -1
  61. package/dist/esm/i3s-converter/helpers/node-index-document.js.map +1 -1
  62. package/dist/esm/i3s-converter/helpers/preprocess-3d-tiles.js +48 -0
  63. package/dist/esm/i3s-converter/helpers/preprocess-3d-tiles.js.map +1 -0
  64. package/dist/esm/i3s-converter/helpers/tileset-traversal.js +14 -0
  65. package/dist/esm/i3s-converter/helpers/tileset-traversal.js.map +1 -0
  66. package/dist/esm/i3s-converter/i3s-converter.js +134 -120
  67. package/dist/esm/i3s-converter/i3s-converter.js.map +1 -1
  68. package/dist/esm/i3s-converter/types.js +10 -1
  69. package/dist/esm/i3s-converter/types.js.map +1 -1
  70. package/dist/esm/i3s-server/README.md +19 -0
  71. package/dist/esm/i3s-server/app.js +11 -1
  72. package/dist/esm/i3s-server/app.js.map +1 -1
  73. package/dist/esm/i3s-server/controllers/slpk-controller.js +36 -0
  74. package/dist/esm/i3s-server/controllers/slpk-controller.js.map +1 -0
  75. package/dist/esm/i3s-server/routes/slpk-router.js +33 -0
  76. package/dist/esm/i3s-server/routes/slpk-router.js.map +1 -0
  77. package/dist/esm/i3s-server/utils/create-scene-server.js +16 -0
  78. package/dist/esm/i3s-server/utils/create-scene-server.js.map +1 -0
  79. package/dist/esm/lib/utils/file-utils.js +1 -1
  80. package/dist/esm/lib/utils/file-utils.js.map +1 -1
  81. package/dist/esm/lib/utils/lod-conversion-utils.js.map +1 -1
  82. package/dist/esm/pgm-loader.js +1 -1
  83. package/dist/i3s-attributes-worker.js +2 -2
  84. package/dist/i3s-attributes-worker.js.map +2 -2
  85. package/dist/i3s-converter/helpers/batch-ids-extensions.js +2 -5
  86. package/dist/i3s-converter/helpers/coordinate-converter.d.ts +3 -4
  87. package/dist/i3s-converter/helpers/coordinate-converter.d.ts.map +1 -1
  88. package/dist/i3s-converter/helpers/coordinate-converter.js +8 -9
  89. package/dist/i3s-converter/helpers/geometry-converter.d.ts +9 -4
  90. package/dist/i3s-converter/helpers/geometry-converter.d.ts.map +1 -1
  91. package/dist/i3s-converter/helpers/geometry-converter.js +34 -12
  92. package/dist/i3s-converter/helpers/gltf-attributes.d.ts +22 -3
  93. package/dist/i3s-converter/helpers/gltf-attributes.d.ts.map +1 -1
  94. package/dist/i3s-converter/helpers/gltf-attributes.js +61 -18
  95. package/dist/i3s-converter/helpers/load-3d-tiles.d.ts +18 -0
  96. package/dist/i3s-converter/helpers/load-3d-tiles.d.ts.map +1 -0
  97. package/dist/i3s-converter/helpers/load-3d-tiles.js +53 -0
  98. package/dist/i3s-converter/helpers/node-index-document.d.ts +8 -0
  99. package/dist/i3s-converter/helpers/node-index-document.d.ts.map +1 -1
  100. package/dist/i3s-converter/helpers/node-index-document.js +20 -2
  101. package/dist/i3s-converter/helpers/node-pages.js +1 -1
  102. package/dist/i3s-converter/helpers/preprocess-3d-tiles.d.ts +23 -0
  103. package/dist/i3s-converter/helpers/preprocess-3d-tiles.d.ts.map +1 -0
  104. package/dist/i3s-converter/helpers/preprocess-3d-tiles.js +76 -0
  105. package/dist/i3s-converter/helpers/tileset-traversal.d.ts +25 -0
  106. package/dist/i3s-converter/helpers/tileset-traversal.d.ts.map +1 -0
  107. package/dist/i3s-converter/helpers/tileset-traversal.js +29 -0
  108. package/dist/i3s-converter/i3s-converter.d.ts +40 -40
  109. package/dist/i3s-converter/i3s-converter.d.ts.map +1 -1
  110. package/dist/i3s-converter/i3s-converter.js +150 -126
  111. package/dist/i3s-converter/types.d.ts +18 -0
  112. package/dist/i3s-converter/types.d.ts.map +1 -1
  113. package/dist/i3s-converter/types.js +15 -0
  114. package/dist/i3s-server/app.d.ts.map +1 -1
  115. package/dist/i3s-server/app.js +9 -1
  116. package/dist/i3s-server/controllers/slpk-controller.d.ts +3 -0
  117. package/dist/i3s-server/controllers/slpk-controller.d.ts.map +1 -0
  118. package/dist/i3s-server/controllers/slpk-controller.js +32 -0
  119. package/dist/i3s-server/routes/slpk-router.d.ts +3 -0
  120. package/dist/i3s-server/routes/slpk-router.d.ts.map +1 -0
  121. package/dist/i3s-server/routes/slpk-router.js +33 -0
  122. package/dist/i3s-server/utils/create-scene-server.d.ts +11 -0
  123. package/dist/i3s-server/utils/create-scene-server.d.ts.map +1 -0
  124. package/dist/i3s-server/utils/create-scene-server.js +14 -0
  125. package/dist/lib/utils/file-utils.d.ts.map +1 -1
  126. package/dist/lib/utils/file-utils.js +2 -1
  127. package/dist/lib/utils/lod-conversion-utils.d.ts +3 -2
  128. package/dist/lib/utils/lod-conversion-utils.d.ts.map +1 -1
  129. package/dist/lib/utils/lod-conversion-utils.js +1 -1
  130. package/package.json +15 -15
  131. package/src/3d-tiles-converter/3d-tiles-converter.ts +5 -5
  132. package/src/deps-installer/deps-installer.ts +3 -2
  133. package/src/i3s-converter/helpers/batch-ids-extensions.ts +2 -5
  134. package/src/i3s-converter/helpers/coordinate-converter.ts +11 -10
  135. package/src/i3s-converter/helpers/geometry-converter.ts +51 -19
  136. package/src/i3s-converter/helpers/gltf-attributes.ts +84 -21
  137. package/src/i3s-converter/helpers/load-3d-tiles.ts +68 -0
  138. package/src/i3s-converter/helpers/node-index-document.ts +22 -2
  139. package/src/i3s-converter/helpers/preprocess-3d-tiles.ts +81 -0
  140. package/src/i3s-converter/helpers/tileset-traversal.ts +51 -0
  141. package/src/i3s-converter/i3s-converter.ts +228 -178
  142. package/src/i3s-converter/types.ts +20 -0
  143. package/src/i3s-server/README.md +19 -0
  144. package/src/i3s-server/app.js +8 -1
  145. package/src/i3s-server/controllers/slpk-controller.js +38 -0
  146. package/src/i3s-server/routes/slpk-router.js +33 -0
  147. package/src/i3s-server/utils/create-scene-server.js +15 -0
  148. package/src/lib/utils/file-utils.ts +2 -1
  149. package/src/lib/utils/lod-conversion-utils.ts +6 -2
@@ -0,0 +1,81 @@
1
+ import {Tiles3DTileContent, Tiles3DTileJSONPostprocessed} from '@loaders.gl/3d-tiles';
2
+ import {GltfPrimitiveModeString, PreprocessData} from '../types';
3
+ import {GLTF, GLTFLoader} from '@loaders.gl/gltf';
4
+ import {parse} from '@loaders.gl/core';
5
+
6
+ /**
7
+ * glTF primitive modes
8
+ * @see https://registry.khronos.org/glTF/specs/2.0/glTF-2.0.html#_mesh_primitive_mode
9
+ */
10
+ export const GLTF_PRIMITIVE_MODES = [
11
+ GltfPrimitiveModeString.POINTS, // 0
12
+ GltfPrimitiveModeString.LINES, // 1
13
+ GltfPrimitiveModeString.LINE_LOOP, // 2
14
+ GltfPrimitiveModeString.LINE_STRIP, // 3
15
+ GltfPrimitiveModeString.TRIANGLES, // 4
16
+ GltfPrimitiveModeString.TRIANGLE_STRIP, // 5
17
+ GltfPrimitiveModeString.TRIANGLE_FAN // 6
18
+ ];
19
+
20
+ /**
21
+ * Analyze tile content. This function is used during preprocess stage of
22
+ * conversion
23
+ * @param tile - 3DTiles tile JSON metadata
24
+ * @param tileContent - 3DTiles tile content ArrayBuffer
25
+ * @returns
26
+ */
27
+ export const analyzeTileContent = async (
28
+ tile: Tiles3DTileJSONPostprocessed,
29
+ tileContent: Tiles3DTileContent | null
30
+ ): Promise<PreprocessData> => {
31
+ const result: PreprocessData = {
32
+ meshTopologyTypes: new Set()
33
+ };
34
+ if (!tileContent?.gltfArrayBuffer) {
35
+ return result;
36
+ }
37
+
38
+ const gltfData = await parse(tileContent.gltfArrayBuffer, GLTFLoader, {
39
+ gltf: {normalize: false, loadBuffers: false, loadImages: false, decompressMeshes: false}
40
+ });
41
+ const gltf = gltfData.json;
42
+
43
+ if (!gltf) {
44
+ return result;
45
+ }
46
+ const meshTypes = getMeshTypesFromGltf(gltf);
47
+ result.meshTopologyTypes = meshTypes;
48
+ return result;
49
+ };
50
+
51
+ /**
52
+ * Get mesh topology types that the glb content has
53
+ * @param gltfJson - JSON part of GLB content
54
+ * @returns array of mesh types found
55
+ */
56
+ const getMeshTypesFromGltf = (gltfJson: GLTF): Set<GltfPrimitiveModeString> => {
57
+ const result: Set<GltfPrimitiveModeString> = new Set();
58
+ for (const mesh of gltfJson.meshes || []) {
59
+ for (const primitive of mesh.primitives) {
60
+ let {mode} = primitive;
61
+ if (typeof mode !== 'number') {
62
+ mode = 4; // Default is 4 - TRIANGLES
63
+ }
64
+ result.add(GLTF_PRIMITIVE_MODES[mode]);
65
+ }
66
+ }
67
+ return result;
68
+ };
69
+
70
+ /**
71
+ * Merge object2 into object1
72
+ * @param object1
73
+ * @param object2
74
+ * @returns nothing
75
+ */
76
+ export const mergePreprocessData = (object1: PreprocessData, object2: PreprocessData): void => {
77
+ // Merge topology mesh types info
78
+ for (const type of object2.meshTopologyTypes) {
79
+ object1.meshTopologyTypes.add(type);
80
+ }
81
+ };
@@ -0,0 +1,51 @@
1
+ import {Tiles3DTileJSONPostprocessed} from '@loaders.gl/3d-tiles';
2
+ import {NodeIndexDocument} from './node-index-document';
3
+ import {Matrix4} from '@math.gl/core';
4
+
5
+ /** Traversal props for the conversion stage */
6
+ export type TraversalConversionProps = {
7
+ /** Transformation matrix for the specific tile */
8
+ transform: Matrix4;
9
+ /** Parent nodes of the converted tile. Multiple nodes can be if one tile is converted to multiple nodes*/
10
+ parentNodes: NodeIndexDocument[];
11
+ };
12
+
13
+ /**
14
+ * Travesal of 3DTile tiles tree with making specific actions with each tile
15
+ * @param tile - 3DTiles tile JSON metadata
16
+ * @param traversalProps - traversal props used to pass data through recursive calls
17
+ * @param processTile - callback to make some actions with the current tile
18
+ * @param postprocessTile - callback to make some action after processing of the current tile and all the subtree
19
+ * @param maxDepth - max recursive calls number the travesal function will do. If not set, the traversal function will
20
+ * go through all the tree.
21
+ * This value is used to limit the convertion with only partial number of levels of the tileset
22
+ * @param level - counter to keep recursive calls number of the tiles tree. This value used to be able to break
23
+ * traversal at the some level of the tree
24
+ * @returns void
25
+ */
26
+ export const traverseDatasetWith = async <TProps>(
27
+ tile: Tiles3DTileJSONPostprocessed,
28
+ traversalProps: TProps,
29
+ processTile: (tile: Tiles3DTileJSONPostprocessed, traversalProps: TProps) => Promise<TProps>,
30
+ postprocessTile?: (processResults: TProps[], currentTraversalProps: TProps) => Promise<void>,
31
+ maxDepth?: number,
32
+ level = 0
33
+ ): Promise<void> => {
34
+ if (maxDepth && level > maxDepth) {
35
+ return;
36
+ }
37
+ const processResults: TProps[] = [];
38
+ const newTraversalProps: TProps = await processTile(tile, traversalProps);
39
+ processResults.push(newTraversalProps);
40
+ for (const childTile of tile.children) {
41
+ await traverseDatasetWith(
42
+ childTile,
43
+ newTraversalProps,
44
+ processTile,
45
+ postprocessTile,
46
+ maxDepth,
47
+ level + 1
48
+ );
49
+ }
50
+ postprocessTile && (await postprocessTile(processResults, traversalProps));
51
+ };