@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.
- package/bin/converter.js +1 -1
- package/dist/constants.d.ts +2 -0
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +3 -1
- package/dist/converter-cli.js +10 -2
- package/dist/converter.min.js +172 -103
- package/dist/deps-installer/deps-installer.d.ts +3 -2
- package/dist/deps-installer/deps-installer.d.ts.map +1 -1
- package/dist/deps-installer/deps-installer.js +36 -10
- package/dist/dist.min.js +226 -151
- package/dist/es5/constants.js +5 -1
- package/dist/es5/constants.js.map +1 -1
- package/dist/es5/converter-cli.js +7 -2
- package/dist/es5/converter-cli.js.map +1 -1
- package/dist/es5/deps-installer/deps-installer.js +112 -38
- package/dist/es5/deps-installer/deps-installer.js.map +1 -1
- package/dist/es5/i3s-converter/helpers/batch-ids-extensions.js +21 -8
- package/dist/es5/i3s-converter/helpers/batch-ids-extensions.js.map +1 -1
- package/dist/es5/i3s-converter/helpers/geometry-attributes.js +7 -6
- package/dist/es5/i3s-converter/helpers/geometry-attributes.js.map +1 -1
- package/dist/es5/i3s-converter/helpers/geometry-converter.js +78 -67
- package/dist/es5/i3s-converter/helpers/geometry-converter.js.map +1 -1
- package/dist/es5/i3s-converter/helpers/preprocess-3d-tiles.js +38 -9
- package/dist/es5/i3s-converter/helpers/preprocess-3d-tiles.js.map +1 -1
- package/dist/es5/i3s-converter/i3s-converter.js +86 -99
- package/dist/es5/i3s-converter/i3s-converter.js.map +1 -1
- package/dist/es5/i3s-converter/types.js +11 -11
- package/dist/es5/i3s-converter/types.js.map +1 -1
- package/dist/es5/i3s-server/controllers/slpk-controller.js +1 -1
- package/dist/es5/i3s-server/controllers/slpk-controller.js.map +1 -1
- package/dist/es5/index.js +3 -3
- package/dist/es5/index.js.map +1 -1
- package/dist/es5/pgm-loader.js +1 -1
- package/dist/es5/slpk-extractor/helpers/{file-handle-provider.js → file-handle-file.js} +9 -9
- package/dist/es5/slpk-extractor/helpers/file-handle-file.js.map +1 -0
- package/dist/es5/slpk-extractor/slpk-extractor.js +5 -5
- package/dist/es5/slpk-extractor/slpk-extractor.js.map +1 -1
- package/dist/esm/constants.js +2 -0
- package/dist/esm/constants.js.map +1 -1
- package/dist/esm/converter-cli.js +7 -2
- package/dist/esm/converter-cli.js.map +1 -1
- package/dist/esm/deps-installer/deps-installer.js +37 -11
- package/dist/esm/deps-installer/deps-installer.js.map +1 -1
- package/dist/esm/i3s-converter/helpers/batch-ids-extensions.js +18 -6
- package/dist/esm/i3s-converter/helpers/batch-ids-extensions.js.map +1 -1
- package/dist/esm/i3s-converter/helpers/geometry-attributes.js +7 -6
- package/dist/esm/i3s-converter/helpers/geometry-attributes.js.map +1 -1
- package/dist/esm/i3s-converter/helpers/geometry-converter.js +37 -25
- package/dist/esm/i3s-converter/helpers/geometry-converter.js.map +1 -1
- package/dist/esm/i3s-converter/helpers/preprocess-3d-tiles.js +28 -9
- package/dist/esm/i3s-converter/helpers/preprocess-3d-tiles.js.map +1 -1
- package/dist/esm/i3s-converter/i3s-converter.js +49 -36
- package/dist/esm/i3s-converter/i3s-converter.js.map +1 -1
- package/dist/esm/i3s-converter/types.js +9 -9
- package/dist/esm/i3s-converter/types.js.map +1 -1
- package/dist/esm/i3s-server/bin/i3s-server.min.js +71 -71
- package/dist/esm/i3s-server/controllers/slpk-controller.js +2 -2
- package/dist/esm/i3s-server/controllers/slpk-controller.js.map +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/pgm-loader.js +1 -1
- package/dist/esm/slpk-extractor/helpers/{file-handle-provider.js → file-handle-file.js} +3 -3
- package/dist/esm/slpk-extractor/helpers/file-handle-file.js.map +1 -0
- package/dist/esm/slpk-extractor/slpk-extractor.js +3 -3
- package/dist/esm/slpk-extractor/slpk-extractor.js.map +1 -1
- package/dist/i3s-converter/helpers/batch-ids-extensions.d.ts +11 -1
- package/dist/i3s-converter/helpers/batch-ids-extensions.d.ts.map +1 -1
- package/dist/i3s-converter/helpers/batch-ids-extensions.js +33 -13
- package/dist/i3s-converter/helpers/geometry-attributes.js +7 -6
- package/dist/i3s-converter/helpers/geometry-converter.d.ts +7 -6
- package/dist/i3s-converter/helpers/geometry-converter.d.ts.map +1 -1
- package/dist/i3s-converter/helpers/geometry-converter.js +59 -47
- package/dist/i3s-converter/helpers/preprocess-3d-tiles.d.ts +2 -2
- package/dist/i3s-converter/helpers/preprocess-3d-tiles.d.ts.map +1 -1
- package/dist/i3s-converter/helpers/preprocess-3d-tiles.js +39 -14
- package/dist/i3s-converter/i3s-converter.d.ts +2 -1
- package/dist/i3s-converter/i3s-converter.d.ts.map +1 -1
- package/dist/i3s-converter/i3s-converter.js +49 -31
- package/dist/i3s-converter/types.d.ts +4 -2
- package/dist/i3s-converter/types.d.ts.map +1 -1
- package/dist/i3s-converter/types.js +11 -11
- package/dist/i3s-server/controllers/slpk-controller.js +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -3
- package/dist/slpk-extractor/helpers/{file-handle-provider.d.ts → file-handle-file.d.ts} +5 -5
- package/dist/slpk-extractor/helpers/file-handle-file.d.ts.map +1 -0
- package/dist/slpk-extractor/helpers/{file-handle-provider.js → file-handle-file.js} +5 -5
- package/dist/slpk-extractor/slpk-extractor.js +5 -5
- package/dist/slpk-extractor.min.js +32 -32
- package/package.json +15 -14
- package/src/constants.ts +3 -0
- package/src/converter-cli.ts +9 -2
- package/src/deps-installer/deps-installer.ts +55 -10
- package/src/i3s-converter/helpers/batch-ids-extensions.ts +39 -12
- package/src/i3s-converter/helpers/geometry-attributes.ts +15 -8
- package/src/i3s-converter/helpers/geometry-converter.ts +84 -48
- package/src/i3s-converter/helpers/preprocess-3d-tiles.ts +48 -18
- package/src/i3s-converter/i3s-converter.ts +65 -39
- package/src/i3s-converter/types.ts +4 -2
- package/src/i3s-server/controllers/slpk-controller.ts +2 -2
- package/src/index.ts +1 -1
- package/src/slpk-extractor/helpers/{file-handle-provider.ts → file-handle-file.ts} +5 -5
- package/src/slpk-extractor/slpk-extractor.ts +3 -3
- package/dist/es5/slpk-extractor/helpers/file-handle-provider.js.map +0 -1
- package/dist/esm/slpk-extractor/helpers/file-handle-provider.js.map +0 -1
- 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.
|
|
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
|
|
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
|
-
|
|
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",
|
|
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",
|
|
51
|
+
return _context.abrupt("return", defaultResult);
|
|
50
52
|
case 9:
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
return _context.abrupt("return",
|
|
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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"}
|
|
@@ -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 = (
|
|
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.
|
|
170
|
-
|
|
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
|
|
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 =
|
|
187
|
+
_context.next = 28;
|
|
187
188
|
return (0, _core.load)(tilesetUrl, this.Loader, this.loadOptions);
|
|
188
|
-
case
|
|
189
|
+
case 28:
|
|
189
190
|
this.sourceTileset = _context.sent;
|
|
190
|
-
_context.next =
|
|
191
|
+
_context.next = 31;
|
|
191
192
|
return this.preprocessConversion();
|
|
192
|
-
case
|
|
193
|
+
case 31:
|
|
193
194
|
preprocessResult = _context.sent;
|
|
194
195
|
if (!preprocessResult) {
|
|
195
|
-
_context.next =
|
|
196
|
+
_context.next = 37;
|
|
196
197
|
break;
|
|
197
198
|
}
|
|
198
|
-
_context.next =
|
|
199
|
+
_context.next = 35;
|
|
199
200
|
return this._createAndSaveTileset(outputPath, tilesetName);
|
|
200
|
-
case
|
|
201
|
-
_context.next =
|
|
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
|
|
208
|
-
_context.next =
|
|
208
|
+
case 37:
|
|
209
|
+
_context.next = 42;
|
|
209
210
|
break;
|
|
210
|
-
case
|
|
211
|
-
_context.prev =
|
|
212
|
-
_context.t0 = _context["catch"](
|
|
211
|
+
case 39:
|
|
212
|
+
_context.prev = 39;
|
|
213
|
+
_context.t0 = _context["catch"](19);
|
|
213
214
|
throw _context.t0;
|
|
214
|
-
case
|
|
215
|
-
_context.prev =
|
|
216
|
-
_context.next =
|
|
215
|
+
case 42:
|
|
216
|
+
_context.prev = 42;
|
|
217
|
+
_context.next = 45;
|
|
217
218
|
return this.writeQueue.finalize();
|
|
218
|
-
case
|
|
219
|
+
case 45:
|
|
219
220
|
workerFarm = _workerUtils.WorkerFarm.getWorkerFarm({});
|
|
220
221
|
workerFarm.destroy();
|
|
221
|
-
return _context.finish(
|
|
222
|
-
case
|
|
222
|
+
return _context.finish(42);
|
|
223
|
+
case 48:
|
|
223
224
|
return _context.abrupt("return", 'success');
|
|
224
|
-
case
|
|
225
|
+
case 49:
|
|
225
226
|
case "end":
|
|
226
227
|
return _context.stop();
|
|
227
228
|
}
|
|
228
|
-
}, _callee, this, [[
|
|
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
|
-
|
|
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.
|
|
254
|
-
_context2.next =
|
|
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.
|
|
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
|
-
|
|
1146
|
-
|
|
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
|
}();
|