@loaders.gl/tile-converter 4.0.0-alpha.19 → 4.0.0-alpha.21

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/dist/constants.d.ts +2 -0
  2. package/dist/constants.d.ts.map +1 -1
  3. package/dist/constants.js +3 -1
  4. package/dist/converter-cli.js +10 -2
  5. package/dist/converter.min.js +172 -103
  6. package/dist/dist.min.js +33357 -33374
  7. package/dist/es5/constants.js +5 -1
  8. package/dist/es5/constants.js.map +1 -1
  9. package/dist/es5/converter-cli.js +7 -2
  10. package/dist/es5/converter-cli.js.map +1 -1
  11. package/dist/es5/deps-installer/deps-installer.js +1 -1
  12. package/dist/es5/i3s-converter/helpers/batch-ids-extensions.js +21 -8
  13. package/dist/es5/i3s-converter/helpers/batch-ids-extensions.js.map +1 -1
  14. package/dist/es5/i3s-converter/helpers/geometry-attributes.js +7 -6
  15. package/dist/es5/i3s-converter/helpers/geometry-attributes.js.map +1 -1
  16. package/dist/es5/i3s-converter/helpers/geometry-converter.js +67 -59
  17. package/dist/es5/i3s-converter/helpers/geometry-converter.js.map +1 -1
  18. package/dist/es5/i3s-converter/helpers/preprocess-3d-tiles.js +38 -9
  19. package/dist/es5/i3s-converter/helpers/preprocess-3d-tiles.js.map +1 -1
  20. package/dist/es5/i3s-converter/i3s-converter.js +55 -13
  21. package/dist/es5/i3s-converter/i3s-converter.js.map +1 -1
  22. package/dist/es5/i3s-converter/types.js +11 -11
  23. package/dist/es5/i3s-converter/types.js.map +1 -1
  24. package/dist/es5/i3s-server/controllers/slpk-controller.js +2 -2
  25. package/dist/es5/i3s-server/controllers/slpk-controller.js.map +1 -1
  26. package/dist/es5/index.js +0 -7
  27. package/dist/es5/index.js.map +1 -1
  28. package/dist/es5/pgm-loader.js +1 -1
  29. package/dist/es5/slpk-extractor/slpk-extractor.js +10 -11
  30. package/dist/es5/slpk-extractor/slpk-extractor.js.map +1 -1
  31. package/dist/esm/constants.js +2 -0
  32. package/dist/esm/constants.js.map +1 -1
  33. package/dist/esm/converter-cli.js +7 -2
  34. package/dist/esm/converter-cli.js.map +1 -1
  35. package/dist/esm/deps-installer/deps-installer.js +1 -1
  36. package/dist/esm/i3s-converter/helpers/batch-ids-extensions.js +18 -6
  37. package/dist/esm/i3s-converter/helpers/batch-ids-extensions.js.map +1 -1
  38. package/dist/esm/i3s-converter/helpers/geometry-attributes.js +7 -6
  39. package/dist/esm/i3s-converter/helpers/geometry-attributes.js.map +1 -1
  40. package/dist/esm/i3s-converter/helpers/geometry-converter.js +28 -20
  41. package/dist/esm/i3s-converter/helpers/geometry-converter.js.map +1 -1
  42. package/dist/esm/i3s-converter/helpers/preprocess-3d-tiles.js +28 -9
  43. package/dist/esm/i3s-converter/helpers/preprocess-3d-tiles.js.map +1 -1
  44. package/dist/esm/i3s-converter/i3s-converter.js +39 -9
  45. package/dist/esm/i3s-converter/i3s-converter.js.map +1 -1
  46. package/dist/esm/i3s-converter/types.js +9 -9
  47. package/dist/esm/i3s-converter/types.js.map +1 -1
  48. package/dist/esm/i3s-server/bin/i3s-server.min.js +69 -69
  49. package/dist/esm/i3s-server/controllers/slpk-controller.js +2 -2
  50. package/dist/esm/i3s-server/controllers/slpk-controller.js.map +1 -1
  51. package/dist/esm/index.js +0 -1
  52. package/dist/esm/index.js.map +1 -1
  53. package/dist/esm/pgm-loader.js +1 -1
  54. package/dist/esm/slpk-extractor/slpk-extractor.js +3 -4
  55. package/dist/esm/slpk-extractor/slpk-extractor.js.map +1 -1
  56. package/dist/i3s-converter/helpers/batch-ids-extensions.d.ts +11 -1
  57. package/dist/i3s-converter/helpers/batch-ids-extensions.d.ts.map +1 -1
  58. package/dist/i3s-converter/helpers/batch-ids-extensions.js +33 -13
  59. package/dist/i3s-converter/helpers/geometry-attributes.js +7 -6
  60. package/dist/i3s-converter/helpers/geometry-converter.d.ts +6 -3
  61. package/dist/i3s-converter/helpers/geometry-converter.d.ts.map +1 -1
  62. package/dist/i3s-converter/helpers/geometry-converter.js +42 -35
  63. package/dist/i3s-converter/helpers/preprocess-3d-tiles.d.ts +2 -2
  64. package/dist/i3s-converter/helpers/preprocess-3d-tiles.d.ts.map +1 -1
  65. package/dist/i3s-converter/helpers/preprocess-3d-tiles.js +39 -14
  66. package/dist/i3s-converter/i3s-converter.d.ts +2 -0
  67. package/dist/i3s-converter/i3s-converter.d.ts.map +1 -1
  68. package/dist/i3s-converter/i3s-converter.js +40 -10
  69. package/dist/i3s-converter/types.d.ts +4 -2
  70. package/dist/i3s-converter/types.d.ts.map +1 -1
  71. package/dist/i3s-converter/types.js +11 -11
  72. package/dist/i3s-server/controllers/slpk-controller.js +2 -2
  73. package/dist/index.d.ts +0 -1
  74. package/dist/index.d.ts.map +1 -1
  75. package/dist/index.js +1 -3
  76. package/dist/slpk-extractor/slpk-extractor.d.ts +1 -1
  77. package/dist/slpk-extractor/slpk-extractor.d.ts.map +1 -1
  78. package/dist/slpk-extractor/slpk-extractor.js +6 -7
  79. package/dist/slpk-extractor.min.js +42 -42
  80. package/package.json +15 -14
  81. package/src/constants.ts +3 -0
  82. package/src/converter-cli.ts +9 -2
  83. package/src/i3s-converter/helpers/batch-ids-extensions.ts +39 -12
  84. package/src/i3s-converter/helpers/geometry-attributes.ts +15 -8
  85. package/src/i3s-converter/helpers/geometry-converter.ts +66 -35
  86. package/src/i3s-converter/helpers/preprocess-3d-tiles.ts +48 -18
  87. package/src/i3s-converter/i3s-converter.ts +54 -12
  88. package/src/i3s-converter/types.ts +4 -2
  89. package/src/i3s-server/controllers/slpk-controller.ts +2 -2
  90. package/src/index.ts +0 -1
  91. package/src/slpk-extractor/slpk-extractor.ts +3 -4
  92. package/dist/es5/slpk-extractor/helpers/file-handle-provider.js +0 -214
  93. package/dist/es5/slpk-extractor/helpers/file-handle-provider.js.map +0 -1
  94. package/dist/es5/slpk-extractor/helpers/fs-promises.js +0 -77
  95. package/dist/es5/slpk-extractor/helpers/fs-promises.js.map +0 -1
  96. package/dist/esm/slpk-extractor/helpers/file-handle-provider.js +0 -54
  97. package/dist/esm/slpk-extractor/helpers/file-handle-provider.js.map +0 -1
  98. package/dist/esm/slpk-extractor/helpers/fs-promises.js +0 -32
  99. package/dist/esm/slpk-extractor/helpers/fs-promises.js.map +0 -1
  100. package/dist/slpk-extractor/helpers/file-handle-provider.d.ts +0 -51
  101. package/dist/slpk-extractor/helpers/file-handle-provider.d.ts.map +0 -1
  102. package/dist/slpk-extractor/helpers/file-handle-provider.js +0 -86
  103. package/dist/slpk-extractor/helpers/fs-promises.d.ts +0 -38
  104. package/dist/slpk-extractor/helpers/fs-promises.d.ts.map +0 -1
  105. package/dist/slpk-extractor/helpers/fs-promises.js +0 -51
  106. package/src/slpk-extractor/helpers/file-handle-provider.ts +0 -109
  107. package/src/slpk-extractor/helpers/fs-promises.ts +0 -66
@@ -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":";;;;;;;;;AACA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,KAAA,GAAAD,OAAA;AACA,IAAAE,KAAA,GAAAF,OAAA;AAAuC,SAAAG,2BAAAC,CAAA,EAAAC,cAAA,QAAAC,EAAA,UAAAC,MAAA,oBAAAH,CAAA,CAAAG,MAAA,CAAAC,QAAA,KAAAJ,CAAA,qBAAAE,EAAA,QAAAG,KAAA,CAAAC,OAAA,CAAAN,CAAA,MAAAE,EAAA,GAAAK,2BAAA,CAAAP,CAAA,MAAAC,cAAA,IAAAD,CAAA,WAAAA,CAAA,CAAAQ,MAAA,qBAAAN,EAAA,EAAAF,CAAA,GAAAE,EAAA,MAAAO,CAAA,UAAAC,CAAA,YAAAA,EAAA,eAAAC,CAAA,EAAAD,CAAA,EAAAE,CAAA,WAAAA,EAAA,QAAAH,CAAA,IAAAT,CAAA,CAAAQ,MAAA,WAAAK,IAAA,mBAAAA,IAAA,SAAAC,KAAA,EAAAd,CAAA,CAAAS,CAAA,UAAAM,CAAA,WAAAA,EAAAC,EAAA,UAAAA,EAAA,KAAAC,CAAA,EAAAP,CAAA,gBAAAQ,SAAA,iJAAAC,gBAAA,SAAAC,MAAA,UAAAC,GAAA,WAAAV,CAAA,WAAAA,EAAA,IAAAT,EAAA,GAAAA,EAAA,CAAAoB,IAAA,CAAAtB,CAAA,MAAAY,CAAA,WAAAA,EAAA,QAAAW,IAAA,GAAArB,EAAA,CAAAsB,IAAA,IAAAL,gBAAA,GAAAI,IAAA,CAAAV,IAAA,SAAAU,IAAA,KAAAR,CAAA,WAAAA,EAAAU,GAAA,IAAAL,MAAA,SAAAC,GAAA,GAAAI,GAAA,KAAAR,CAAA,WAAAA,EAAA,eAAAE,gBAAA,IAAAjB,EAAA,CAAAwB,MAAA,UAAAxB,EAAA,CAAAwB,MAAA,oBAAAN,MAAA,QAAAC,GAAA;AAAA,SAAAd,4BAAAP,CAAA,EAAA2B,MAAA,SAAA3B,CAAA,qBAAAA,CAAA,sBAAA4B,iBAAA,CAAA5B,CAAA,EAAA2B,MAAA,OAAAf,CAAA,GAAAiB,MAAA,CAAAC,SAAA,CAAAC,QAAA,CAAAT,IAAA,CAAAtB,CAAA,EAAAgC,KAAA,aAAApB,CAAA,iBAAAZ,CAAA,CAAAiC,WAAA,EAAArB,CAAA,GAAAZ,CAAA,CAAAiC,WAAA,CAAAC,IAAA,MAAAtB,CAAA,cAAAA,CAAA,mBAAAP,KAAA,CAAA8B,IAAA,CAAAnC,CAAA,OAAAY,CAAA,+DAAAwB,IAAA,CAAAxB,CAAA,UAAAgB,iBAAA,CAAA5B,CAAA,EAAA2B,MAAA;AAAA,SAAAC,kBAAAS,GAAA,EAAAC,GAAA,QAAAA,GAAA,YAAAA,GAAA,GAAAD,GAAA,CAAA7B,MAAA,EAAA8B,GAAA,GAAAD,GAAA,CAAA7B,MAAA,WAAAC,CAAA,MAAA8B,IAAA,OAAAlC,KAAA,CAAAiC,GAAA,GAAA7B,CAAA,GAAA6B,GAAA,EAAA7B,CAAA,IAAA8B,IAAA,CAAA9B,CAAA,IAAA4B,GAAA,CAAA5B,CAAA,UAAA8B,IAAA;AAMhC,IAAMC,oBAAoB,GAAG,CAClCC,8BAAuB,CAACC,MAAM,EAC9BD,8BAAuB,CAACE,KAAK,EAC7BF,8BAAuB,CAACG,SAAS,EACjCH,8BAAuB,CAACI,UAAU,EAClCJ,8BAAuB,CAACK,SAAS,EACjCL,8BAAuB,CAACM,cAAc,EACtCN,8BAAuB,CAACO,YAAY,CACrC;AAACC,OAAA,CAAAT,oBAAA,GAAAA,oBAAA;AAQK,IAAMU,kBAAkB;EAAA,IAAAC,IAAA,OAAAC,kBAAA,CAAAC,OAAA,EAAAC,YAAA,CAAAD,OAAA,CAAAE,IAAA,CAAG,SAAAC,QAChCC,WAAsC;IAAA,IAAAC,MAAA,EAAAC,QAAA,EAAAC,IAAA,EAAAC,SAAA;IAAA,OAAAP,YAAA,CAAAD,OAAA,CAAAS,IAAA,UAAAC,SAAAC,QAAA;MAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAxC,IAAA;QAAA;UAEhCkC,MAAsB,GAAG;YAC7BQ,iBAAiB,EAAE,IAAIC,GAAG,CAAC;UAC7B,CAAC;UAAA,IACIV,WAAW,aAAXA,WAAW,eAAXA,WAAW,CAAEW,eAAe;YAAAJ,QAAA,CAAAxC,IAAA;YAAA;UAAA;UAAA,OAAAwC,QAAA,CAAAK,MAAA,WACxBX,MAAM;QAAA;UAAAM,QAAA,CAAAxC,IAAA;UAAA,OAGQ,IAAA8C,WAAK,EAACb,WAAW,CAACW,eAAe,EAAEG,gBAAU,EAAE;YACpEX,IAAI,EAAE;cAACY,SAAS,EAAE,KAAK;cAAEC,WAAW,EAAE,KAAK;cAAEC,UAAU,EAAE,KAAK;cAAEC,gBAAgB,EAAE;YAAK;UACzF,CAAC,CAAC;QAAA;UAFIhB,QAAQ,GAAAK,QAAA,CAAAY,IAAA;UAGRhB,IAAI,GAAGD,QAAQ,CAACkB,IAAI;UAAA,IAErBjB,IAAI;YAAAI,QAAA,CAAAxC,IAAA;YAAA;UAAA;UAAA,OAAAwC,QAAA,CAAAK,MAAA,WACAX,MAAM;QAAA;UAETG,SAAS,GAAGiB,oBAAoB,CAAClB,IAAI,CAAC;UAC5CF,MAAM,CAACQ,iBAAiB,GAAGL,SAAS;UAAC,OAAAG,QAAA,CAAAK,MAAA,WAC9BX,MAAM;QAAA;QAAA;UAAA,OAAAM,QAAA,CAAAe,IAAA;MAAA;IAAA,GAAAvB,OAAA;EAAA,CACd;EAAA,gBArBYN,kBAAkBA,CAAA8B,EAAA;IAAA,OAAA7B,IAAA,CAAA8B,KAAA,OAAAC,SAAA;EAAA;AAAA,GAqB9B;AAACjC,OAAA,CAAAC,kBAAA,GAAAA,kBAAA;AAOF,IAAM4B,oBAAoB,GAAG,SAAvBA,oBAAoBA,CAAIK,QAAc,EAAmC;EAC7E,IAAMzB,MAAoC,GAAG,IAAIS,GAAG,CAAC,CAAC;EAAC,IAAAiB,SAAA,GAAArF,0BAAA,CACpCoF,QAAQ,CAACE,MAAM,IAAI,EAAE;IAAAC,KAAA;EAAA;IAAxC,KAAAF,SAAA,CAAAzE,CAAA,MAAA2E,KAAA,GAAAF,SAAA,CAAAxE,CAAA,IAAAC,IAAA,GAA0C;MAAA,IAA/B0E,IAAI,GAAAD,KAAA,CAAAxE,KAAA;MAAA,IAAA0E,UAAA,GAAAzF,0BAAA,CACWwF,IAAI,CAACE,UAAU;QAAAC,MAAA;MAAA;QAAvC,KAAAF,UAAA,CAAA7E,CAAA,MAAA+E,MAAA,GAAAF,UAAA,CAAA5E,CAAA,IAAAC,IAAA,GAAyC;UAAA,IAA9B8E,SAAS,GAAAD,MAAA,CAAA5E,KAAA;UAClB,IAAK8E,IAAI,GAAID,SAAS,CAAjBC,IAAI;UACT,IAAI,OAAOA,IAAI,KAAK,QAAQ,EAAE;YAC5BA,IAAI,GAAG,CAAC;UACV;UACAlC,MAAM,CAACmC,GAAG,CAACrD,oBAAoB,CAACoD,IAAI,CAAC,CAAC;QACxC;MAAC,SAAAvE,GAAA;QAAAmE,UAAA,CAAAzE,CAAA,CAAAM,GAAA;MAAA;QAAAmE,UAAA,CAAAvE,CAAA;MAAA;IACH;EAAC,SAAAI,GAAA;IAAA+D,SAAA,CAAArE,CAAA,CAAAM,GAAA;EAAA;IAAA+D,SAAA,CAAAnE,CAAA;EAAA;EACD,OAAOyC,MAAM;AACf,CAAC;AAQM,IAAMoC,mBAAmB,GAAG,SAAtBA,mBAAmBA,CAAIC,OAAuB,EAAEC,OAAuB,EAAW;EAAA,IAAAC,UAAA,GAAAlG,0BAAA,CAE1EiG,OAAO,CAAC9B,iBAAiB;IAAAgC,MAAA;EAAA;IAA5C,KAAAD,UAAA,CAAAtF,CAAA,MAAAuF,MAAA,GAAAD,UAAA,CAAArF,CAAA,IAAAC,IAAA,GAA8C;MAAA,IAAnCsF,IAAI,GAAAD,MAAA,CAAApF,KAAA;MACbiF,OAAO,CAAC7B,iBAAiB,CAAC2B,GAAG,CAACM,IAAI,CAAC;IACrC;EAAC,SAAA9E,GAAA;IAAA4E,UAAA,CAAAlF,CAAA,CAAAM,GAAA;EAAA;IAAA4E,UAAA,CAAAhF,CAAA;EAAA;AACH,CAAC;AAACgC,OAAA,CAAA6C,mBAAA,GAAAA,mBAAA"}
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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"}
@@ -53,7 +53,7 @@ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o =
53
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; }
54
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; }
55
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; }
56
- 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;
57
57
  var HARDCODED_NODES_PER_PAGE = 64;
58
58
  var _3D_TILES = '3DTILES';
59
59
  var _3D_OBJECT_LAYER_TYPE = '3DObject';
@@ -101,7 +101,8 @@ var I3SConverter = function () {
101
101
  (0, _defineProperty2.default)(this, "writeQueue", new _writeQueue.default());
102
102
  (0, _defineProperty2.default)(this, "compressList", null);
103
103
  (0, _defineProperty2.default)(this, "preprocessData", {
104
- meshTopologyTypes: new Set()
104
+ meshTopologyTypes: new Set(),
105
+ metadataClasses: new Set()
105
106
  });
106
107
  this.nodePages = new _nodePages.default(_fileUtils.writeFile, HARDCODED_NODES_PER_PAGE, this);
107
108
  this.options = {};
@@ -127,7 +128,7 @@ var I3SConverter = function () {
127
128
  key: "convert",
128
129
  value: function () {
129
130
  var _convert = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee(options) {
130
- 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;
131
132
  return _regenerator.default.wrap(function _callee$(_context) {
132
133
  while (1) switch (_context.prev = _context.next) {
133
134
  case 0:
@@ -139,7 +140,7 @@ var I3SConverter = function () {
139
140
  return _context.abrupt("return", _constants.BROWSER_ERROR_MESSAGE);
140
141
  case 3:
141
142
  this.conversionStartTime = _process.default.hrtime();
142
- 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;
143
144
  this.options = {
144
145
  maxDepth: maxDepth,
145
146
  slpk: slpk,
@@ -149,7 +150,9 @@ var I3SConverter = function () {
149
150
  token: token,
150
151
  inputUrl: inputUrl,
151
152
  instantNodeWriting: instantNodeWriting,
152
- mergeMaterials: mergeMaterials
153
+ mergeMaterials: mergeMaterials,
154
+ inquirer: inquirer,
155
+ metadataClass: metadataClass
153
156
  };
154
157
  this.compressList = this.options.instantNodeWriting && [] || null;
155
158
  this.validate = Boolean(validate);
@@ -234,7 +237,7 @@ var I3SConverter = function () {
234
237
  key: "preprocessConversion",
235
238
  value: function () {
236
239
  var _preprocessConversion = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee2() {
237
- var sourceRootTile, meshTopologyTypes;
240
+ var sourceRootTile, _this$preprocessData, meshTopologyTypes, metadataClasses, _this$options$metadat, result;
238
241
  return _regenerator.default.wrap(function _callee2$(_context2) {
239
242
  while (1) switch (_context2.prev = _context2.next) {
240
243
  case 0:
@@ -243,21 +246,60 @@ var I3SConverter = function () {
243
246
  _context2.next = 4;
244
247
  return (0, _tilesetTraversal.traverseDatasetWith)(sourceRootTile, null, this.analyzeTile.bind(this), undefined, this.options.maxDepth);
245
248
  case 4:
246
- meshTopologyTypes = this.preprocessData.meshTopologyTypes;
249
+ _this$preprocessData = this.preprocessData, meshTopologyTypes = _this$preprocessData.meshTopologyTypes, metadataClasses = _this$preprocessData.metadataClasses;
247
250
  console.log("------------------------------------------------");
248
251
  console.log("Preprocess results:");
249
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
+ }
250
258
  console.log("------------------------------------------------");
251
- if (!(!meshTopologyTypes.has(_types.GltfPrimitiveModeString.TRIANGLES) && !meshTopologyTypes.has(_types.GltfPrimitiveModeString.TRIANGLE_STRIP))) {
252
- _context2.next = 13;
259
+ if (!(!meshTopologyTypes.has(_types.GLTFPrimitiveModeString.TRIANGLES) && !meshTopologyTypes.has(_types.GLTFPrimitiveModeString.TRIANGLE_STRIP))) {
260
+ _context2.next = 14;
253
261
  break;
254
262
  }
255
263
  console.log('The tileset is of unsupported mesh topology types. The conversion will be interrupted.');
256
264
  console.log("------------------------------------------------");
257
265
  return _context2.abrupt("return", false);
258
- case 13:
259
- return _context2.abrupt("return", true);
260
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:
261
303
  case "end":
262
304
  return _context2.stop();
263
305
  }
@@ -719,7 +761,7 @@ var I3SConverter = function () {
719
761
  case 13:
720
762
  sourceBoundingVolume = (0, _tiles.createBoundingVolume)(sourceTile.boundingVolume, transformationMatrix, null);
721
763
  boundingVolumes = (0, _coordinateConverter.createBoundingVolumes)(sourceBoundingVolume, this.geoidHeightModel);
722
- propertyTable = (0, _geometryConverter.getPropertyTable)(tileContent);
764
+ propertyTable = (0, _geometryConverter.getPropertyTable)(tileContent, this.options.metadataClass);
723
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)) {
724
766
  this._convertPropertyTableToNodeAttributes(propertyTable);
725
767
  }
@@ -854,7 +896,7 @@ var I3SConverter = function () {
854
896
  return _context10.stop();
855
897
  }
856
898
  }, _callee10);
857
- })), 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);
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);
858
900
  case 5:
859
901
  resourcesData = _context11.sent;
860
902
  return _context11.abrupt("return", resourcesData);