@loaders.gl/tile-converter 4.0.0-alpha.18 → 4.0.0-alpha.20

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 (107) hide show
  1. package/bin/converter.js +1 -1
  2. package/dist/constants.d.ts +2 -0
  3. package/dist/constants.d.ts.map +1 -1
  4. package/dist/constants.js +3 -1
  5. package/dist/converter-cli.js +10 -2
  6. package/dist/converter.min.js +172 -103
  7. package/dist/deps-installer/deps-installer.d.ts +3 -2
  8. package/dist/deps-installer/deps-installer.d.ts.map +1 -1
  9. package/dist/deps-installer/deps-installer.js +36 -10
  10. package/dist/dist.min.js +226 -151
  11. package/dist/es5/constants.js +5 -1
  12. package/dist/es5/constants.js.map +1 -1
  13. package/dist/es5/converter-cli.js +7 -2
  14. package/dist/es5/converter-cli.js.map +1 -1
  15. package/dist/es5/deps-installer/deps-installer.js +112 -38
  16. package/dist/es5/deps-installer/deps-installer.js.map +1 -1
  17. package/dist/es5/i3s-converter/helpers/batch-ids-extensions.js +21 -8
  18. package/dist/es5/i3s-converter/helpers/batch-ids-extensions.js.map +1 -1
  19. package/dist/es5/i3s-converter/helpers/geometry-attributes.js +7 -6
  20. package/dist/es5/i3s-converter/helpers/geometry-attributes.js.map +1 -1
  21. package/dist/es5/i3s-converter/helpers/geometry-converter.js +78 -67
  22. package/dist/es5/i3s-converter/helpers/geometry-converter.js.map +1 -1
  23. package/dist/es5/i3s-converter/helpers/preprocess-3d-tiles.js +38 -9
  24. package/dist/es5/i3s-converter/helpers/preprocess-3d-tiles.js.map +1 -1
  25. package/dist/es5/i3s-converter/i3s-converter.js +86 -99
  26. package/dist/es5/i3s-converter/i3s-converter.js.map +1 -1
  27. package/dist/es5/i3s-converter/types.js +11 -11
  28. package/dist/es5/i3s-converter/types.js.map +1 -1
  29. package/dist/es5/i3s-server/controllers/slpk-controller.js +1 -1
  30. package/dist/es5/i3s-server/controllers/slpk-controller.js.map +1 -1
  31. package/dist/es5/index.js +3 -3
  32. package/dist/es5/index.js.map +1 -1
  33. package/dist/es5/pgm-loader.js +1 -1
  34. package/dist/es5/slpk-extractor/helpers/{file-handle-provider.js → file-handle-file.js} +9 -9
  35. package/dist/es5/slpk-extractor/helpers/file-handle-file.js.map +1 -0
  36. package/dist/es5/slpk-extractor/slpk-extractor.js +5 -5
  37. package/dist/es5/slpk-extractor/slpk-extractor.js.map +1 -1
  38. package/dist/esm/constants.js +2 -0
  39. package/dist/esm/constants.js.map +1 -1
  40. package/dist/esm/converter-cli.js +7 -2
  41. package/dist/esm/converter-cli.js.map +1 -1
  42. package/dist/esm/deps-installer/deps-installer.js +37 -11
  43. package/dist/esm/deps-installer/deps-installer.js.map +1 -1
  44. package/dist/esm/i3s-converter/helpers/batch-ids-extensions.js +18 -6
  45. package/dist/esm/i3s-converter/helpers/batch-ids-extensions.js.map +1 -1
  46. package/dist/esm/i3s-converter/helpers/geometry-attributes.js +7 -6
  47. package/dist/esm/i3s-converter/helpers/geometry-attributes.js.map +1 -1
  48. package/dist/esm/i3s-converter/helpers/geometry-converter.js +37 -25
  49. package/dist/esm/i3s-converter/helpers/geometry-converter.js.map +1 -1
  50. package/dist/esm/i3s-converter/helpers/preprocess-3d-tiles.js +28 -9
  51. package/dist/esm/i3s-converter/helpers/preprocess-3d-tiles.js.map +1 -1
  52. package/dist/esm/i3s-converter/i3s-converter.js +49 -36
  53. package/dist/esm/i3s-converter/i3s-converter.js.map +1 -1
  54. package/dist/esm/i3s-converter/types.js +9 -9
  55. package/dist/esm/i3s-converter/types.js.map +1 -1
  56. package/dist/esm/i3s-server/bin/i3s-server.min.js +71 -71
  57. package/dist/esm/i3s-server/controllers/slpk-controller.js +2 -2
  58. package/dist/esm/i3s-server/controllers/slpk-controller.js.map +1 -1
  59. package/dist/esm/index.js +1 -1
  60. package/dist/esm/index.js.map +1 -1
  61. package/dist/esm/pgm-loader.js +1 -1
  62. package/dist/esm/slpk-extractor/helpers/{file-handle-provider.js → file-handle-file.js} +3 -3
  63. package/dist/esm/slpk-extractor/helpers/file-handle-file.js.map +1 -0
  64. package/dist/esm/slpk-extractor/slpk-extractor.js +3 -3
  65. package/dist/esm/slpk-extractor/slpk-extractor.js.map +1 -1
  66. package/dist/i3s-converter/helpers/batch-ids-extensions.d.ts +11 -1
  67. package/dist/i3s-converter/helpers/batch-ids-extensions.d.ts.map +1 -1
  68. package/dist/i3s-converter/helpers/batch-ids-extensions.js +33 -13
  69. package/dist/i3s-converter/helpers/geometry-attributes.js +7 -6
  70. package/dist/i3s-converter/helpers/geometry-converter.d.ts +7 -6
  71. package/dist/i3s-converter/helpers/geometry-converter.d.ts.map +1 -1
  72. package/dist/i3s-converter/helpers/geometry-converter.js +59 -47
  73. package/dist/i3s-converter/helpers/preprocess-3d-tiles.d.ts +2 -2
  74. package/dist/i3s-converter/helpers/preprocess-3d-tiles.d.ts.map +1 -1
  75. package/dist/i3s-converter/helpers/preprocess-3d-tiles.js +39 -14
  76. package/dist/i3s-converter/i3s-converter.d.ts +2 -1
  77. package/dist/i3s-converter/i3s-converter.d.ts.map +1 -1
  78. package/dist/i3s-converter/i3s-converter.js +49 -31
  79. package/dist/i3s-converter/types.d.ts +4 -2
  80. package/dist/i3s-converter/types.d.ts.map +1 -1
  81. package/dist/i3s-converter/types.js +11 -11
  82. package/dist/i3s-server/controllers/slpk-controller.js +1 -1
  83. package/dist/index.d.ts +1 -1
  84. package/dist/index.d.ts.map +1 -1
  85. package/dist/index.js +3 -3
  86. package/dist/slpk-extractor/helpers/{file-handle-provider.d.ts → file-handle-file.d.ts} +5 -5
  87. package/dist/slpk-extractor/helpers/file-handle-file.d.ts.map +1 -0
  88. package/dist/slpk-extractor/helpers/{file-handle-provider.js → file-handle-file.js} +5 -5
  89. package/dist/slpk-extractor/slpk-extractor.js +5 -5
  90. package/dist/slpk-extractor.min.js +32 -32
  91. package/package.json +15 -14
  92. package/src/constants.ts +3 -0
  93. package/src/converter-cli.ts +9 -2
  94. package/src/deps-installer/deps-installer.ts +55 -10
  95. package/src/i3s-converter/helpers/batch-ids-extensions.ts +39 -12
  96. package/src/i3s-converter/helpers/geometry-attributes.ts +15 -8
  97. package/src/i3s-converter/helpers/geometry-converter.ts +84 -48
  98. package/src/i3s-converter/helpers/preprocess-3d-tiles.ts +48 -18
  99. package/src/i3s-converter/i3s-converter.ts +65 -39
  100. package/src/i3s-converter/types.ts +4 -2
  101. package/src/i3s-server/controllers/slpk-controller.ts +2 -2
  102. package/src/index.ts +1 -1
  103. package/src/slpk-extractor/helpers/{file-handle-provider.ts → file-handle-file.ts} +5 -5
  104. package/src/slpk-extractor/slpk-extractor.ts +3 -3
  105. package/dist/es5/slpk-extractor/helpers/file-handle-provider.js.map +0 -1
  106. package/dist/esm/slpk-extractor/helpers/file-handle-provider.js.map +0 -1
  107. package/dist/slpk-extractor/helpers/file-handle-provider.d.ts.map +0 -1
@@ -10,25 +10,27 @@ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/
10
10
  var _types = require("../types");
11
11
  var _gltf = require("@loaders.gl/gltf");
12
12
  var _core = require("@loaders.gl/core");
13
+ var _constants = require("../../constants");
13
14
  function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
14
15
  function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
15
16
  function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
16
- var GLTF_PRIMITIVE_MODES = [_types.GltfPrimitiveModeString.POINTS, _types.GltfPrimitiveModeString.LINES, _types.GltfPrimitiveModeString.LINE_LOOP, _types.GltfPrimitiveModeString.LINE_STRIP, _types.GltfPrimitiveModeString.TRIANGLES, _types.GltfPrimitiveModeString.TRIANGLE_STRIP, _types.GltfPrimitiveModeString.TRIANGLE_FAN];
17
+ var GLTF_PRIMITIVE_MODES = [_types.GLTFPrimitiveModeString.POINTS, _types.GLTFPrimitiveModeString.LINES, _types.GLTFPrimitiveModeString.LINE_LOOP, _types.GLTFPrimitiveModeString.LINE_STRIP, _types.GLTFPrimitiveModeString.TRIANGLES, _types.GLTFPrimitiveModeString.TRIANGLE_STRIP, _types.GLTFPrimitiveModeString.TRIANGLE_FAN];
17
18
  exports.GLTF_PRIMITIVE_MODES = GLTF_PRIMITIVE_MODES;
18
19
  var analyzeTileContent = function () {
19
20
  var _ref = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee(tileContent) {
20
- var result, gltfData, gltf, meshTypes;
21
+ var defaultResult, gltfData, gltf, meshTopologyTypes, metadataClasses;
21
22
  return _regenerator.default.wrap(function _callee$(_context) {
22
23
  while (1) switch (_context.prev = _context.next) {
23
24
  case 0:
24
- result = {
25
- meshTopologyTypes: new Set()
25
+ defaultResult = {
26
+ meshTopologyTypes: new Set(),
27
+ metadataClasses: new Set()
26
28
  };
27
29
  if (tileContent !== null && tileContent !== void 0 && tileContent.gltfArrayBuffer) {
28
30
  _context.next = 3;
29
31
  break;
30
32
  }
31
- return _context.abrupt("return", result);
33
+ return _context.abrupt("return", defaultResult);
32
34
  case 3:
33
35
  _context.next = 5;
34
36
  return (0, _core.parse)(tileContent.gltfArrayBuffer, _gltf.GLTFLoader, {
@@ -46,11 +48,14 @@ var analyzeTileContent = function () {
46
48
  _context.next = 9;
47
49
  break;
48
50
  }
49
- return _context.abrupt("return", result);
51
+ return _context.abrupt("return", defaultResult);
50
52
  case 9:
51
- meshTypes = getMeshTypesFromGltf(gltf);
52
- result.meshTopologyTypes = meshTypes;
53
- return _context.abrupt("return", result);
53
+ meshTopologyTypes = getMeshTypesFromGltf(gltf);
54
+ metadataClasses = getMetadataClassesFromGltf(gltf);
55
+ return _context.abrupt("return", {
56
+ meshTopologyTypes: meshTopologyTypes,
57
+ metadataClasses: metadataClasses
58
+ });
54
59
  case 12:
55
60
  case "end":
56
61
  return _context.stop();
@@ -93,6 +98,18 @@ var getMeshTypesFromGltf = function getMeshTypesFromGltf(gltfJson) {
93
98
  }
94
99
  return result;
95
100
  };
101
+ var getMetadataClassesFromGltf = function getMetadataClassesFromGltf(gltfJson) {
102
+ var _gltfJson$extensions, _gltfJson$extensions$, _gltfJson$extensions$2;
103
+ var result = new Set();
104
+ var classes = (_gltfJson$extensions = gltfJson.extensions) === null || _gltfJson$extensions === void 0 ? void 0 : (_gltfJson$extensions$ = _gltfJson$extensions[_constants.EXT_FEATURE_METADATA]) === null || _gltfJson$extensions$ === void 0 ? void 0 : (_gltfJson$extensions$2 = _gltfJson$extensions$.schema) === null || _gltfJson$extensions$2 === void 0 ? void 0 : _gltfJson$extensions$2.classes;
105
+ if (classes) {
106
+ for (var _i = 0, _Object$keys = Object.keys(classes); _i < _Object$keys.length; _i++) {
107
+ var classKey = _Object$keys[_i];
108
+ result.add(classKey);
109
+ }
110
+ }
111
+ return result;
112
+ };
96
113
  var mergePreprocessData = function mergePreprocessData(object1, object2) {
97
114
  var _iterator3 = _createForOfIteratorHelper(object2.meshTopologyTypes),
98
115
  _step3;
@@ -106,6 +123,18 @@ var mergePreprocessData = function mergePreprocessData(object1, object2) {
106
123
  } finally {
107
124
  _iterator3.f();
108
125
  }
126
+ var _iterator4 = _createForOfIteratorHelper(object2.metadataClasses),
127
+ _step4;
128
+ try {
129
+ for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
130
+ var metadataClass = _step4.value;
131
+ object1.metadataClasses.add(metadataClass);
132
+ }
133
+ } catch (err) {
134
+ _iterator4.e(err);
135
+ } finally {
136
+ _iterator4.f();
137
+ }
109
138
  };
110
139
  exports.mergePreprocessData = mergePreprocessData;
111
140
  //# sourceMappingURL=preprocess-3d-tiles.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"preprocess-3d-tiles.js","names":["_types","require","_gltf","_core","_createForOfIteratorHelper","o","allowArrayLike","it","Symbol","iterator","Array","isArray","_unsupportedIterableToArray","length","i","F","s","n","done","value","e","_e","f","TypeError","normalCompletion","didErr","err","call","step","next","_e2","return","minLen","_arrayLikeToArray","Object","prototype","toString","slice","constructor","name","from","test","arr","len","arr2","GLTF_PRIMITIVE_MODES","GltfPrimitiveModeString","POINTS","LINES","LINE_LOOP","LINE_STRIP","TRIANGLES","TRIANGLE_STRIP","TRIANGLE_FAN","exports","analyzeTileContent","_ref","_asyncToGenerator2","default","_regenerator","mark","_callee","tileContent","result","gltfData","gltf","meshTypes","wrap","_callee$","_context","prev","meshTopologyTypes","Set","gltfArrayBuffer","abrupt","parse","GLTFLoader","normalize","loadBuffers","loadImages","decompressMeshes","sent","json","getMeshTypesFromGltf","stop","_x","apply","arguments","gltfJson","_iterator","meshes","_step","mesh","_iterator2","primitives","_step2","primitive","mode","add","mergePreprocessData","object1","object2","_iterator3","_step3","type"],"sources":["../../../../src/i3s-converter/helpers/preprocess-3d-tiles.ts"],"sourcesContent":["import {Tiles3DTileContent} from '@loaders.gl/3d-tiles';\nimport {GltfPrimitiveModeString, PreprocessData} from '../types';\nimport {GLTF, GLTFLoader} from '@loaders.gl/gltf';\nimport {parse} from '@loaders.gl/core';\n\n/**\n * glTF primitive modes\n * @see https://registry.khronos.org/glTF/specs/2.0/glTF-2.0.html#_mesh_primitive_mode\n */\nexport const GLTF_PRIMITIVE_MODES = [\n GltfPrimitiveModeString.POINTS, // 0\n GltfPrimitiveModeString.LINES, // 1\n GltfPrimitiveModeString.LINE_LOOP, // 2\n GltfPrimitiveModeString.LINE_STRIP, // 3\n GltfPrimitiveModeString.TRIANGLES, // 4\n GltfPrimitiveModeString.TRIANGLE_STRIP, // 5\n GltfPrimitiveModeString.TRIANGLE_FAN // 6\n];\n\n/**\n * Analyze tile content. This function is used during preprocess stage of\n * conversion\n * @param tileContent - 3DTiles tile content ArrayBuffer\n * @returns\n */\nexport const analyzeTileContent = async (\n tileContent: Tiles3DTileContent | null\n): Promise<PreprocessData> => {\n const result: PreprocessData = {\n meshTopologyTypes: new Set()\n };\n if (!tileContent?.gltfArrayBuffer) {\n return result;\n }\n\n const gltfData = await parse(tileContent.gltfArrayBuffer, GLTFLoader, {\n gltf: {normalize: false, loadBuffers: false, loadImages: false, decompressMeshes: false}\n });\n const gltf = gltfData.json;\n\n if (!gltf) {\n return result;\n }\n const meshTypes = getMeshTypesFromGltf(gltf);\n result.meshTopologyTypes = meshTypes;\n return result;\n};\n\n/**\n * Get mesh topology types that the glb content has\n * @param gltfJson - JSON part of GLB content\n * @returns array of mesh types found\n */\nconst getMeshTypesFromGltf = (gltfJson: GLTF): Set<GltfPrimitiveModeString> => {\n const result: Set<GltfPrimitiveModeString> = new Set();\n for (const mesh of gltfJson.meshes || []) {\n for (const primitive of mesh.primitives) {\n let {mode} = primitive;\n if (typeof mode !== 'number') {\n mode = 4; // Default is 4 - TRIANGLES\n }\n result.add(GLTF_PRIMITIVE_MODES[mode]);\n }\n }\n return result;\n};\n\n/**\n * Merge object2 into object1\n * @param object1\n * @param object2\n * @returns nothing\n */\nexport const mergePreprocessData = (object1: PreprocessData, object2: PreprocessData): void => {\n // Merge topology mesh types info\n for (const type of object2.meshTopologyTypes) {\n object1.meshTopologyTypes.add(type);\n }\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"preprocess-3d-tiles.js","names":["_types","require","_gltf","_core","_constants","_createForOfIteratorHelper","o","allowArrayLike","it","Symbol","iterator","Array","isArray","_unsupportedIterableToArray","length","i","F","s","n","done","value","e","_e","f","TypeError","normalCompletion","didErr","err","call","step","next","_e2","return","minLen","_arrayLikeToArray","Object","prototype","toString","slice","constructor","name","from","test","arr","len","arr2","GLTF_PRIMITIVE_MODES","GLTFPrimitiveModeString","POINTS","LINES","LINE_LOOP","LINE_STRIP","TRIANGLES","TRIANGLE_STRIP","TRIANGLE_FAN","exports","analyzeTileContent","_ref","_asyncToGenerator2","default","_regenerator","mark","_callee","tileContent","defaultResult","gltfData","gltf","meshTopologyTypes","metadataClasses","wrap","_callee$","_context","prev","Set","gltfArrayBuffer","abrupt","parse","GLTFLoader","normalize","loadBuffers","loadImages","decompressMeshes","sent","json","getMeshTypesFromGltf","getMetadataClassesFromGltf","stop","_x","apply","arguments","gltfJson","result","_iterator","meshes","_step","mesh","_iterator2","primitives","_step2","primitive","mode","add","_gltfJson$extensions","_gltfJson$extensions$","_gltfJson$extensions$2","classes","extensions","EXT_FEATURE_METADATA","schema","_i","_Object$keys","keys","classKey","mergePreprocessData","object1","object2","_iterator3","_step3","type","_iterator4","_step4","metadataClass"],"sources":["../../../../src/i3s-converter/helpers/preprocess-3d-tiles.ts"],"sourcesContent":["import {Tiles3DTileContent} from '@loaders.gl/3d-tiles';\nimport {GLTFPrimitiveModeString, PreprocessData} from '../types';\nimport {GLTF, GLTFLoader, GLTF_EXT_feature_metadata_GLTF} from '@loaders.gl/gltf';\nimport {parse} from '@loaders.gl/core';\nimport {EXT_FEATURE_METADATA} from '../../constants';\n\n/**\n * glTF primitive modes\n * @see https://registry.khronos.org/glTF/specs/2.0/glTF-2.0.html#_mesh_primitive_mode\n */\nexport const GLTF_PRIMITIVE_MODES = [\n GLTFPrimitiveModeString.POINTS, // 0\n GLTFPrimitiveModeString.LINES, // 1\n GLTFPrimitiveModeString.LINE_LOOP, // 2\n GLTFPrimitiveModeString.LINE_STRIP, // 3\n GLTFPrimitiveModeString.TRIANGLES, // 4\n GLTFPrimitiveModeString.TRIANGLE_STRIP, // 5\n GLTFPrimitiveModeString.TRIANGLE_FAN // 6\n];\n\n/**\n * Analyze tile content. This function is used during preprocess stage of\n * conversion\n * @param tileContent - 3DTiles tile content ArrayBuffer\n * @returns\n */\nexport const analyzeTileContent = async (\n tileContent: Tiles3DTileContent | null\n): Promise<PreprocessData> => {\n const defaultResult = {\n meshTopologyTypes: new Set<GLTFPrimitiveModeString>(),\n metadataClasses: new Set<string>()\n };\n if (!tileContent?.gltfArrayBuffer) {\n return defaultResult;\n }\n\n const gltfData = await parse(tileContent.gltfArrayBuffer, GLTFLoader, {\n gltf: {normalize: false, loadBuffers: false, loadImages: false, decompressMeshes: false}\n });\n const gltf = gltfData.json;\n\n if (!gltf) {\n return defaultResult;\n }\n const meshTopologyTypes = getMeshTypesFromGltf(gltf);\n const metadataClasses = getMetadataClassesFromGltf(gltf);\n return {\n meshTopologyTypes,\n metadataClasses\n };\n};\n\n/**\n * Get mesh topology types that the glb content has\n * @param gltfJson - JSON part of GLB content\n * @returns array of mesh types found\n */\nconst getMeshTypesFromGltf = (gltfJson: GLTF): Set<GLTFPrimitiveModeString> => {\n const result: Set<GLTFPrimitiveModeString> = new Set();\n for (const mesh of gltfJson.meshes || []) {\n for (const primitive of mesh.primitives) {\n let {mode} = primitive;\n if (typeof mode !== 'number') {\n mode = 4; // Default is 4 - TRIANGLES\n }\n result.add(GLTF_PRIMITIVE_MODES[mode]);\n }\n }\n return result;\n};\n\n/**\n * Get feature metadata classes from glTF\n * @param gltfJson - JSON part of GLB content\n * @returns array of classes\n */\nconst getMetadataClassesFromGltf = (gltfJson: GLTF): Set<string> => {\n const result: Set<string> = new Set();\n\n const classes = (gltfJson.extensions?.[EXT_FEATURE_METADATA] as GLTF_EXT_feature_metadata_GLTF)\n ?.schema?.classes;\n\n if (classes) {\n for (const classKey of Object.keys(classes)) {\n result.add(classKey);\n }\n }\n\n return result;\n};\n\n/**\n * Merge object2 into object1\n * @param object1\n * @param object2\n * @returns nothing\n */\nexport const mergePreprocessData = (object1: PreprocessData, object2: PreprocessData): void => {\n // Merge topology mesh types info\n for (const type of object2.meshTopologyTypes) {\n object1.meshTopologyTypes.add(type);\n }\n\n // Merge feature metadata classes\n for (const metadataClass of object2.metadataClasses) {\n object1.metadataClasses.add(metadataClass);\n }\n};\n"],"mappings":"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"}
@@ -36,7 +36,6 @@ var _textures = require("@loaders.gl/textures");
36
36
  var _images = require("@loaders.gl/images");
37
37
  var _types = require("./types");
38
38
  var _workerUtils = require("@loaders.gl/worker-utils");
39
- var _draco = require("@loaders.gl/draco");
40
39
  var _writeQueue = _interopRequireDefault(require("../lib/utils/write-queue"));
41
40
  var _constants = require("../constants");
42
41
  var _featureAttributes = require("./helpers/feature-attributes");
@@ -54,7 +53,7 @@ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o =
54
53
  function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
55
54
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
56
55
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
57
- var ION_DEFAULT_TOKEN = ((_process$env = _process.default.env) === null || _process$env === void 0 ? void 0 : _process$env.IonToken) || 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiJlYWMxMzcyYy0zZjJkLTQwODctODNlNi01MDRkZmMzMjIxOWIiLCJpZCI6OTYyMCwic2NvcGVzIjpbImFzbCIsImFzciIsImdjIl0sImlhdCI6MTU2Mjg2NjI3M30.1FNiClUyk00YH_nWfSGpiQAjR5V2OvREDq1PJ5QMjWQ';
56
+ var ION_DEFAULT_TOKEN = (_process$env = _process.default.env) === null || _process$env === void 0 ? void 0 : _process$env.IonToken;
58
57
  var HARDCODED_NODES_PER_PAGE = 64;
59
58
  var _3D_TILES = '3DTILES';
60
59
  var _3D_OBJECT_LAYER_TYPE = '3DObject';
@@ -82,6 +81,7 @@ var I3SConverter = function () {
82
81
  (0, _defineProperty2.default)(this, "loadOptions", {
83
82
  _nodeWorkers: true,
84
83
  reuseWorkers: true,
84
+ useLocalLibraries: true,
85
85
  basis: {
86
86
  format: 'rgba32',
87
87
  workerUrl: './modules/textures/dist/basis-worker-node.js'
@@ -89,7 +89,8 @@ var I3SConverter = function () {
89
89
  draco: {
90
90
  workerUrl: './modules/draco/dist/draco-worker-node.js'
91
91
  },
92
- fetch: {}
92
+ fetch: {},
93
+ modules: {}
93
94
  });
94
95
  (0, _defineProperty2.default)(this, "geoidHeightModel", null);
95
96
  (0, _defineProperty2.default)(this, "Loader", _dTiles.Tiles3DLoader);
@@ -100,7 +101,8 @@ var I3SConverter = function () {
100
101
  (0, _defineProperty2.default)(this, "writeQueue", new _writeQueue.default());
101
102
  (0, _defineProperty2.default)(this, "compressList", null);
102
103
  (0, _defineProperty2.default)(this, "preprocessData", {
103
- meshTopologyTypes: new Set()
104
+ meshTopologyTypes: new Set(),
105
+ metadataClasses: new Set()
104
106
  });
105
107
  this.nodePages = new _nodePages.default(_fileUtils.writeFile, HARDCODED_NODES_PER_PAGE, this);
106
108
  this.options = {};
@@ -126,7 +128,7 @@ var I3SConverter = function () {
126
128
  key: "convert",
127
129
  value: function () {
128
130
  var _convert = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee(options) {
129
- var tilesetName, slpk, egmFilePath, inputUrl, validate, outputPath, _options$draco, draco, sevenZipExe, maxDepth, token, generateTextures, generateBoundingVolumes, _options$instantNodeW, instantNodeWriting, _options$mergeMateria, mergeMaterials, preloadOptions, tilesetUrl, preprocessResult, workerFarm;
131
+ var tilesetName, slpk, egmFilePath, inputUrl, validate, outputPath, _options$draco, draco, sevenZipExe, maxDepth, token, generateTextures, generateBoundingVolumes, _options$instantNodeW, instantNodeWriting, _options$mergeMateria, mergeMaterials, inquirer, metadataClass, preloadOptions, tilesetUrl, preprocessResult, workerFarm;
130
132
  return _regenerator.default.wrap(function _callee$(_context) {
131
133
  while (1) switch (_context.prev = _context.next) {
132
134
  case 0:
@@ -138,7 +140,7 @@ var I3SConverter = function () {
138
140
  return _context.abrupt("return", _constants.BROWSER_ERROR_MESSAGE);
139
141
  case 3:
140
142
  this.conversionStartTime = _process.default.hrtime();
141
- tilesetName = options.tilesetName, slpk = options.slpk, egmFilePath = options.egmFilePath, inputUrl = options.inputUrl, validate = options.validate, outputPath = options.outputPath, _options$draco = options.draco, draco = _options$draco === void 0 ? true : _options$draco, sevenZipExe = options.sevenZipExe, maxDepth = options.maxDepth, token = options.token, generateTextures = options.generateTextures, generateBoundingVolumes = options.generateBoundingVolumes, _options$instantNodeW = options.instantNodeWriting, instantNodeWriting = _options$instantNodeW === void 0 ? false : _options$instantNodeW, _options$mergeMateria = options.mergeMaterials, mergeMaterials = _options$mergeMateria === void 0 ? true : _options$mergeMateria;
143
+ tilesetName = options.tilesetName, slpk = options.slpk, egmFilePath = options.egmFilePath, inputUrl = options.inputUrl, validate = options.validate, outputPath = options.outputPath, _options$draco = options.draco, draco = _options$draco === void 0 ? true : _options$draco, sevenZipExe = options.sevenZipExe, maxDepth = options.maxDepth, token = options.token, generateTextures = options.generateTextures, generateBoundingVolumes = options.generateBoundingVolumes, _options$instantNodeW = options.instantNodeWriting, instantNodeWriting = _options$instantNodeW === void 0 ? false : _options$instantNodeW, _options$mergeMateria = options.mergeMaterials, mergeMaterials = _options$mergeMateria === void 0 ? true : _options$mergeMateria, inquirer = options.inquirer, metadataClass = options.metadataClass;
142
144
  this.options = {
143
145
  maxDepth: maxDepth,
144
146
  slpk: slpk,
@@ -148,7 +150,9 @@ var I3SConverter = function () {
148
150
  token: token,
149
151
  inputUrl: inputUrl,
150
152
  instantNodeWriting: instantNodeWriting,
151
- mergeMaterials: mergeMaterials
153
+ mergeMaterials: mergeMaterials,
154
+ inquirer: inquirer,
155
+ metadataClass: metadataClass
152
156
  };
153
157
  this.compressList = this.options.instantNodeWriting && [] || null;
154
158
  this.validate = Boolean(validate);
@@ -166,13 +170,10 @@ var I3SConverter = function () {
166
170
  if (slpk) {
167
171
  this.nodePages.useWriteFunction(_fileUtils.writeFileForSlpk);
168
172
  }
169
- _context.next = 21;
170
- return this.loadWorkers();
171
- case 21:
172
- _context.prev = 21;
173
- _context.next = 24;
173
+ _context.prev = 19;
174
+ _context.next = 22;
174
175
  return this._fetchPreloadOptions();
175
- case 24:
176
+ case 22:
176
177
  preloadOptions = _context.sent;
177
178
  tilesetUrl = inputUrl;
178
179
  if (preloadOptions.url) {
@@ -183,49 +184,49 @@ var I3SConverter = function () {
183
184
  headers: preloadOptions.headers
184
185
  };
185
186
  }
186
- _context.next = 30;
187
+ _context.next = 28;
187
188
  return (0, _core.load)(tilesetUrl, this.Loader, this.loadOptions);
188
- case 30:
189
+ case 28:
189
190
  this.sourceTileset = _context.sent;
190
- _context.next = 33;
191
+ _context.next = 31;
191
192
  return this.preprocessConversion();
192
- case 33:
193
+ case 31:
193
194
  preprocessResult = _context.sent;
194
195
  if (!preprocessResult) {
195
- _context.next = 39;
196
+ _context.next = 37;
196
197
  break;
197
198
  }
198
- _context.next = 37;
199
+ _context.next = 35;
199
200
  return this._createAndSaveTileset(outputPath, tilesetName);
200
- case 37:
201
- _context.next = 39;
201
+ case 35:
202
+ _context.next = 37;
202
203
  return this._finishConversion({
203
204
  slpk: Boolean(slpk),
204
205
  outputPath: outputPath,
205
206
  tilesetName: tilesetName
206
207
  });
207
- case 39:
208
- _context.next = 44;
208
+ case 37:
209
+ _context.next = 42;
209
210
  break;
210
- case 41:
211
- _context.prev = 41;
212
- _context.t0 = _context["catch"](21);
211
+ case 39:
212
+ _context.prev = 39;
213
+ _context.t0 = _context["catch"](19);
213
214
  throw _context.t0;
214
- case 44:
215
- _context.prev = 44;
216
- _context.next = 47;
215
+ case 42:
216
+ _context.prev = 42;
217
+ _context.next = 45;
217
218
  return this.writeQueue.finalize();
218
- case 47:
219
+ case 45:
219
220
  workerFarm = _workerUtils.WorkerFarm.getWorkerFarm({});
220
221
  workerFarm.destroy();
221
- return _context.finish(44);
222
- case 50:
222
+ return _context.finish(42);
223
+ case 48:
223
224
  return _context.abrupt("return", 'success');
224
- case 51:
225
+ case 49:
225
226
  case "end":
226
227
  return _context.stop();
227
228
  }
228
- }, _callee, this, [[21, 41, 44, 50]]);
229
+ }, _callee, this, [[19, 39, 42, 48]]);
229
230
  }));
230
231
  function convert(_x) {
231
232
  return _convert.apply(this, arguments);
@@ -236,7 +237,7 @@ var I3SConverter = function () {
236
237
  key: "preprocessConversion",
237
238
  value: function () {
238
239
  var _preprocessConversion = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee2() {
239
- var sourceRootTile, meshTopologyTypes;
240
+ var sourceRootTile, _this$preprocessData, meshTopologyTypes, metadataClasses, _this$options$metadat, result;
240
241
  return _regenerator.default.wrap(function _callee2$(_context2) {
241
242
  while (1) switch (_context2.prev = _context2.next) {
242
243
  case 0:
@@ -245,21 +246,60 @@ var I3SConverter = function () {
245
246
  _context2.next = 4;
246
247
  return (0, _tilesetTraversal.traverseDatasetWith)(sourceRootTile, null, this.analyzeTile.bind(this), undefined, this.options.maxDepth);
247
248
  case 4:
248
- meshTopologyTypes = this.preprocessData.meshTopologyTypes;
249
+ _this$preprocessData = this.preprocessData, meshTopologyTypes = _this$preprocessData.meshTopologyTypes, metadataClasses = _this$preprocessData.metadataClasses;
249
250
  console.log("------------------------------------------------");
250
251
  console.log("Preprocess results:");
251
252
  console.log("glTF mesh topology types: ".concat(Array.from(meshTopologyTypes).join(', ')));
253
+ if (metadataClasses.size) {
254
+ console.log("Feature metadata classes have been found: ".concat(Array.from(metadataClasses).join(', ')));
255
+ } else {
256
+ console.log('Feature metadata classes have not been found');
257
+ }
252
258
  console.log("------------------------------------------------");
253
- if (!(!meshTopologyTypes.has(_types.GltfPrimitiveModeString.TRIANGLES) && !meshTopologyTypes.has(_types.GltfPrimitiveModeString.TRIANGLE_STRIP))) {
254
- _context2.next = 13;
259
+ if (!(!meshTopologyTypes.has(_types.GLTFPrimitiveModeString.TRIANGLES) && !meshTopologyTypes.has(_types.GLTFPrimitiveModeString.TRIANGLE_STRIP))) {
260
+ _context2.next = 14;
255
261
  break;
256
262
  }
257
263
  console.log('The tileset is of unsupported mesh topology types. The conversion will be interrupted.');
258
264
  console.log("------------------------------------------------");
259
265
  return _context2.abrupt("return", false);
260
- case 13:
261
- return _context2.abrupt("return", true);
262
266
  case 14:
267
+ if (!(metadataClasses.size > 1)) {
268
+ _context2.next = 30;
269
+ break;
270
+ }
271
+ if (!((_this$options$metadat = this.options.metadataClass) !== null && _this$options$metadat !== void 0 && _this$options$metadat.length)) {
272
+ _context2.next = 19;
273
+ break;
274
+ }
275
+ console.log("".concat(this.options.metadataClass, " has been selected"));
276
+ _context2.next = 30;
277
+ break;
278
+ case 19:
279
+ if (!this.options.inquirer) {
280
+ _context2.next = 27;
281
+ break;
282
+ }
283
+ _context2.next = 22;
284
+ return this.options.inquirer.prompt([{
285
+ name: 'metadataClass',
286
+ type: 'list',
287
+ message: 'Select feature metadata data class to convert...',
288
+ choices: Array.from(metadataClasses)
289
+ }]);
290
+ case 22:
291
+ result = _context2.sent;
292
+ this.options.metadataClass = result.metadataClass;
293
+ console.log("".concat(result.metadataClass, " has been selected"));
294
+ _context2.next = 30;
295
+ break;
296
+ case 27:
297
+ console.log("A feature metadata class has not been selected. Start the converter with option \"--metadata-class\". For example, \"npx tile-converter ... --metadata-class ".concat(Array.from(metadataClasses)[0], "\""));
298
+ console.log("------------------------------------------------");
299
+ return _context2.abrupt("return", false);
300
+ case 30:
301
+ return _context2.abrupt("return", true);
302
+ case 31:
263
303
  case "end":
264
304
  return _context2.stop();
265
305
  }
@@ -721,7 +761,7 @@ var I3SConverter = function () {
721
761
  case 13:
722
762
  sourceBoundingVolume = (0, _tiles.createBoundingVolume)(sourceTile.boundingVolume, transformationMatrix, null);
723
763
  boundingVolumes = (0, _coordinateConverter.createBoundingVolumes)(sourceBoundingVolume, this.geoidHeightModel);
724
- propertyTable = (0, _geometryConverter.getPropertyTable)(tileContent);
764
+ propertyTable = (0, _geometryConverter.getPropertyTable)(tileContent, this.options.metadataClass);
725
765
  if (propertyTable && !((_this$layers = this.layers0) !== null && _this$layers !== void 0 && (_this$layers$attribut = _this$layers.attributeStorageInfo) !== null && _this$layers$attribut !== void 0 && _this$layers$attribut.length)) {
726
766
  this._convertPropertyTableToNodeAttributes(propertyTable);
727
767
  }
@@ -856,7 +896,7 @@ var I3SConverter = function () {
856
896
  return _context10.stop();
857
897
  }
858
898
  }, _callee10);
859
- })), propertyTable, this.featuresHashArray, (_this$layers2 = this.layers0) === null || _this$layers2 === void 0 ? void 0 : _this$layers2.attributeStorageInfo, this.options.draco, this.generateBoundingVolumes, this.options.mergeMaterials, this.geoidHeightModel, this.workerSource);
899
+ })), propertyTable, this.featuresHashArray, (_this$layers2 = this.layers0) === null || _this$layers2 === void 0 ? void 0 : _this$layers2.attributeStorageInfo, this.options.draco, this.generateBoundingVolumes, this.options.mergeMaterials, this.geoidHeightModel, this.loadOptions.modules, this.options.metadataClass);
860
900
  case 5:
861
901
  resourcesData = _context11.sent;
862
902
  return _context11.abrupt("return", resourcesData);
@@ -1107,7 +1147,7 @@ var I3SConverter = function () {
1107
1147
  key: "_writeTexture",
1108
1148
  value: function () {
1109
1149
  var _writeTexture2 = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee16(texture, childPath, slpkChildPath) {
1110
- var format, formats, textureData, copyArrayBuffer, arrayToEncode, ktx2TextureData, decodedFromKTX2TextureData;
1150
+ var format, formats, textureData, _objectSpread2, copyArrayBuffer, arrayToEncode, ktx2TextureData, decodedFromKTX2TextureData;
1111
1151
  return _regenerator.default.wrap(function _callee16$(_context16) {
1112
1152
  while (1) switch (_context16.prev = _context16.next) {
1113
1153
  case 0:
@@ -1141,11 +1181,9 @@ var I3SConverter = function () {
1141
1181
  arrayToEncode = new Uint8Array(copyArrayBuffer);
1142
1182
  ktx2TextureData = (0, _core.encode)(_objectSpread(_objectSpread({}, texture.image), {}, {
1143
1183
  data: arrayToEncode
1144
- }), _textures.KTX2BasisWriterWorker, _objectSpread(_objectSpread({}, _textures.KTX2BasisWriterWorker.options), {}, {
1145
- source: this.workerSource.ktx2,
1146
- reuseWorkers: true,
1147
- _nodeWorkers: true
1148
- }));
1184
+ }), _textures.KTX2BasisWriterWorker, _objectSpread(_objectSpread({}, _textures.KTX2BasisWriterWorker.options), {}, (_objectSpread2 = {}, (0, _defineProperty2.default)(_objectSpread2, 'ktx2-basis-writer', {
1185
+ workerUrl: './modules/textures/dist/ktx2-basis-writer-worker-node.js'
1186
+ }), (0, _defineProperty2.default)(_objectSpread2, "reuseWorkers", true), (0, _defineProperty2.default)(_objectSpread2, "_nodeWorkers", true), (0, _defineProperty2.default)(_objectSpread2, "useLocalLibraries", true), _objectSpread2)));
1149
1187
  _context16.next = 17;
1150
1188
  return this.writeTextureFile(ktx2TextureData, '1', 'ktx2', childPath, slpkChildPath);
1151
1189
  case 17:
@@ -1497,57 +1535,6 @@ var I3SConverter = function () {
1497
1535
  value: function isContentSupported(sourceTile) {
1498
1536
  return ['b3dm', 'glTF', 'scenegraph'].includes(sourceTile.type || '');
1499
1537
  }
1500
- }, {
1501
- key: "loadWorkers",
1502
- value: function () {
1503
- var _loadWorkers = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee22() {
1504
- var url, sourceResponse, source, _url, _sourceResponse, _source;
1505
- return _regenerator.default.wrap(function _callee22$(_context23) {
1506
- while (1) switch (_context23.prev = _context23.next) {
1507
- case 0:
1508
- console.log("Loading workers source...");
1509
- if (!this.options.draco) {
1510
- _context23.next = 10;
1511
- break;
1512
- }
1513
- url = (0, _workerUtils.getWorkerURL)(_draco.DracoWriterWorker, _objectSpread({}, (0, _core.getLoaderOptions)()));
1514
- _context23.next = 5;
1515
- return (0, _core.fetchFile)(url);
1516
- case 5:
1517
- sourceResponse = _context23.sent;
1518
- _context23.next = 8;
1519
- return sourceResponse.text();
1520
- case 8:
1521
- source = _context23.sent;
1522
- this.workerSource.draco = source;
1523
- case 10:
1524
- if (!this.generateTextures) {
1525
- _context23.next = 19;
1526
- break;
1527
- }
1528
- _url = (0, _workerUtils.getWorkerURL)(_textures.KTX2BasisWriterWorker, _objectSpread({}, (0, _core.getLoaderOptions)()));
1529
- _context23.next = 14;
1530
- return (0, _core.fetchFile)(_url);
1531
- case 14:
1532
- _sourceResponse = _context23.sent;
1533
- _context23.next = 17;
1534
- return _sourceResponse.text();
1535
- case 17:
1536
- _source = _context23.sent;
1537
- this.workerSource.ktx2 = _source;
1538
- case 19:
1539
- console.log("Loading workers source completed!");
1540
- case 20:
1541
- case "end":
1542
- return _context23.stop();
1543
- }
1544
- }, _callee22, this);
1545
- }));
1546
- function loadWorkers() {
1547
- return _loadWorkers.apply(this, arguments);
1548
- }
1549
- return loadWorkers;
1550
- }()
1551
1538
  }]);
1552
1539
  return I3SConverter;
1553
1540
  }();