@loaders.gl/tile-converter 4.0.0-alpha.6 → 4.0.0-alpha.8
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/3d-tiles-attributes-worker.js +2 -2
- package/dist/3d-tiles-attributes-worker.js.map +3 -3
- package/dist/3d-tiles-converter/3d-tiles-converter.d.ts.map +1 -1
- package/dist/3d-tiles-converter/3d-tiles-converter.js +4 -3
- package/dist/3d-tiles-converter/helpers/b3dm-converter.d.ts +0 -8
- package/dist/3d-tiles-converter/helpers/b3dm-converter.d.ts.map +1 -1
- package/dist/3d-tiles-converter/helpers/b3dm-converter.js +2 -15
- package/dist/converter.min.js +75 -76
- package/dist/deps-installer/deps-installer.js +4 -4
- package/dist/dist.min.js +2529 -1884
- package/dist/es5/3d-tiles-attributes-worker.js +1 -1
- package/dist/es5/3d-tiles-converter/3d-tiles-converter.js +0 -3
- package/dist/es5/3d-tiles-converter/3d-tiles-converter.js.map +1 -1
- package/dist/es5/3d-tiles-converter/helpers/b3dm-converter.js +2 -10
- package/dist/es5/3d-tiles-converter/helpers/b3dm-converter.js.map +1 -1
- package/dist/es5/deps-installer/deps-installer.js +5 -5
- package/dist/es5/deps-installer/deps-installer.js.map +1 -1
- package/dist/es5/i3s-attributes-worker.js +1 -1
- package/dist/es5/i3s-attributes-worker.js.map +1 -1
- package/dist/es5/i3s-converter/helpers/batch-ids-extensions.js +4 -4
- package/dist/es5/i3s-converter/helpers/batch-ids-extensions.js.map +1 -1
- package/dist/es5/i3s-converter/helpers/coordinate-converter.js +6 -7
- package/dist/es5/i3s-converter/helpers/coordinate-converter.js.map +1 -1
- package/dist/es5/i3s-converter/helpers/geometry-converter.js +49 -30
- package/dist/es5/i3s-converter/helpers/geometry-converter.js.map +1 -1
- package/dist/es5/i3s-converter/helpers/gltf-attributes.js +46 -16
- package/dist/es5/i3s-converter/helpers/gltf-attributes.js.map +1 -1
- package/dist/es5/i3s-converter/helpers/load-3d-tiles.js +82 -0
- package/dist/es5/i3s-converter/helpers/load-3d-tiles.js.map +1 -0
- package/dist/es5/i3s-converter/helpers/node-index-document.js +74 -45
- package/dist/es5/i3s-converter/helpers/node-index-document.js.map +1 -1
- package/dist/es5/i3s-converter/helpers/preprocess-3d-tiles.js +111 -0
- package/dist/es5/i3s-converter/helpers/preprocess-3d-tiles.js.map +1 -0
- package/dist/es5/i3s-converter/helpers/tileset-traversal.js +82 -0
- package/dist/es5/i3s-converter/helpers/tileset-traversal.js.map +1 -0
- package/dist/es5/i3s-converter/i3s-converter.js +545 -523
- package/dist/es5/i3s-converter/i3s-converter.js.map +1 -1
- package/dist/es5/i3s-converter/types.js +16 -0
- package/dist/es5/i3s-converter/types.js.map +1 -1
- package/dist/es5/i3s-server/README.md +19 -0
- package/dist/es5/i3s-server/app.js +10 -1
- package/dist/es5/i3s-server/app.js.map +1 -1
- package/dist/es5/i3s-server/controllers/slpk-controller.js +84 -0
- package/dist/es5/i3s-server/controllers/slpk-controller.js.map +1 -0
- package/dist/es5/i3s-server/routes/slpk-router.js +71 -0
- package/dist/es5/i3s-server/routes/slpk-router.js.map +1 -0
- package/dist/es5/i3s-server/utils/create-scene-server.js +17 -0
- package/dist/es5/i3s-server/utils/create-scene-server.js.map +1 -0
- package/dist/es5/lib/utils/file-utils.js +1 -1
- package/dist/es5/lib/utils/file-utils.js.map +1 -1
- package/dist/es5/lib/utils/geometry-utils.js +15 -0
- package/dist/es5/lib/utils/geometry-utils.js.map +1 -0
- package/dist/es5/lib/utils/lod-conversion-utils.js.map +1 -1
- package/dist/es5/pgm-loader.js +1 -1
- package/dist/esm/3d-tiles-attributes-worker.js +1 -1
- package/dist/esm/3d-tiles-converter/3d-tiles-converter.js +0 -3
- package/dist/esm/3d-tiles-converter/3d-tiles-converter.js.map +1 -1
- package/dist/esm/3d-tiles-converter/helpers/b3dm-converter.js +2 -8
- package/dist/esm/3d-tiles-converter/helpers/b3dm-converter.js.map +1 -1
- package/dist/esm/deps-installer/deps-installer.js +5 -5
- package/dist/esm/deps-installer/deps-installer.js.map +1 -1
- package/dist/esm/i3s-attributes-worker.js +1 -1
- package/dist/esm/i3s-attributes-worker.js.map +1 -1
- package/dist/esm/i3s-converter/helpers/batch-ids-extensions.js +4 -4
- package/dist/esm/i3s-converter/helpers/batch-ids-extensions.js.map +1 -1
- package/dist/esm/i3s-converter/helpers/coordinate-converter.js +6 -7
- package/dist/esm/i3s-converter/helpers/coordinate-converter.js.map +1 -1
- package/dist/esm/i3s-converter/helpers/geometry-converter.js +37 -18
- package/dist/esm/i3s-converter/helpers/geometry-converter.js.map +1 -1
- package/dist/esm/i3s-converter/helpers/gltf-attributes.js +50 -16
- package/dist/esm/i3s-converter/helpers/gltf-attributes.js.map +1 -1
- package/dist/esm/i3s-converter/helpers/load-3d-tiles.js +35 -0
- package/dist/esm/i3s-converter/helpers/load-3d-tiles.js.map +1 -0
- package/dist/esm/i3s-converter/helpers/node-index-document.js +14 -1
- package/dist/esm/i3s-converter/helpers/node-index-document.js.map +1 -1
- package/dist/esm/i3s-converter/helpers/preprocess-3d-tiles.js +48 -0
- package/dist/esm/i3s-converter/helpers/preprocess-3d-tiles.js.map +1 -0
- package/dist/esm/i3s-converter/helpers/tileset-traversal.js +14 -0
- package/dist/esm/i3s-converter/helpers/tileset-traversal.js.map +1 -0
- package/dist/esm/i3s-converter/i3s-converter.js +134 -127
- package/dist/esm/i3s-converter/i3s-converter.js.map +1 -1
- package/dist/esm/i3s-converter/types.js +10 -1
- package/dist/esm/i3s-converter/types.js.map +1 -1
- package/dist/esm/i3s-server/README.md +19 -0
- package/dist/esm/i3s-server/app.js +11 -1
- package/dist/esm/i3s-server/app.js.map +1 -1
- package/dist/esm/i3s-server/controllers/slpk-controller.js +36 -0
- package/dist/esm/i3s-server/controllers/slpk-controller.js.map +1 -0
- package/dist/esm/i3s-server/routes/slpk-router.js +33 -0
- package/dist/esm/i3s-server/routes/slpk-router.js.map +1 -0
- package/dist/esm/i3s-server/utils/create-scene-server.js +16 -0
- package/dist/esm/i3s-server/utils/create-scene-server.js.map +1 -0
- package/dist/esm/lib/utils/file-utils.js +1 -1
- package/dist/esm/lib/utils/file-utils.js.map +1 -1
- package/dist/esm/lib/utils/geometry-utils.js +8 -0
- package/dist/esm/lib/utils/geometry-utils.js.map +1 -0
- package/dist/esm/lib/utils/lod-conversion-utils.js.map +1 -1
- package/dist/esm/pgm-loader.js +1 -1
- package/dist/i3s-attributes-worker.d.ts +10 -2
- package/dist/i3s-attributes-worker.d.ts.map +1 -1
- package/dist/i3s-attributes-worker.js +2 -2
- package/dist/i3s-attributes-worker.js.map +3 -3
- package/dist/i3s-converter/helpers/batch-ids-extensions.d.ts +4 -2
- package/dist/i3s-converter/helpers/batch-ids-extensions.d.ts.map +1 -1
- package/dist/i3s-converter/helpers/batch-ids-extensions.js +4 -7
- package/dist/i3s-converter/helpers/coordinate-converter.d.ts +3 -4
- package/dist/i3s-converter/helpers/coordinate-converter.d.ts.map +1 -1
- package/dist/i3s-converter/helpers/coordinate-converter.js +8 -9
- package/dist/i3s-converter/helpers/geometry-converter.d.ts +9 -4
- package/dist/i3s-converter/helpers/geometry-converter.d.ts.map +1 -1
- package/dist/i3s-converter/helpers/geometry-converter.js +84 -54
- package/dist/i3s-converter/helpers/gltf-attributes.d.ts +22 -3
- package/dist/i3s-converter/helpers/gltf-attributes.d.ts.map +1 -1
- package/dist/i3s-converter/helpers/gltf-attributes.js +62 -22
- package/dist/i3s-converter/helpers/load-3d-tiles.d.ts +18 -0
- package/dist/i3s-converter/helpers/load-3d-tiles.d.ts.map +1 -0
- package/dist/i3s-converter/helpers/load-3d-tiles.js +53 -0
- package/dist/i3s-converter/helpers/node-index-document.d.ts +8 -0
- package/dist/i3s-converter/helpers/node-index-document.d.ts.map +1 -1
- package/dist/i3s-converter/helpers/node-index-document.js +20 -2
- package/dist/i3s-converter/helpers/node-pages.js +1 -1
- package/dist/i3s-converter/helpers/preprocess-3d-tiles.d.ts +23 -0
- package/dist/i3s-converter/helpers/preprocess-3d-tiles.d.ts.map +1 -0
- package/dist/i3s-converter/helpers/preprocess-3d-tiles.js +76 -0
- package/dist/i3s-converter/helpers/tileset-traversal.d.ts +25 -0
- package/dist/i3s-converter/helpers/tileset-traversal.d.ts.map +1 -0
- package/dist/i3s-converter/helpers/tileset-traversal.js +29 -0
- package/dist/i3s-converter/i3s-converter.d.ts +40 -40
- package/dist/i3s-converter/i3s-converter.d.ts.map +1 -1
- package/dist/i3s-converter/i3s-converter.js +150 -125
- package/dist/i3s-converter/types.d.ts +18 -0
- package/dist/i3s-converter/types.d.ts.map +1 -1
- package/dist/i3s-converter/types.js +15 -0
- package/dist/i3s-server/app.d.ts.map +1 -1
- package/dist/i3s-server/app.js +9 -1
- package/dist/i3s-server/controllers/slpk-controller.d.ts +3 -0
- package/dist/i3s-server/controllers/slpk-controller.d.ts.map +1 -0
- package/dist/i3s-server/controllers/slpk-controller.js +32 -0
- package/dist/i3s-server/routes/slpk-router.d.ts +3 -0
- package/dist/i3s-server/routes/slpk-router.d.ts.map +1 -0
- package/dist/i3s-server/routes/slpk-router.js +33 -0
- package/dist/i3s-server/utils/create-scene-server.d.ts +11 -0
- package/dist/i3s-server/utils/create-scene-server.d.ts.map +1 -0
- package/dist/i3s-server/utils/create-scene-server.js +14 -0
- package/dist/lib/utils/file-utils.d.ts.map +1 -1
- package/dist/lib/utils/file-utils.js +2 -1
- package/dist/lib/utils/geometry-utils.d.ts +9 -0
- package/dist/lib/utils/geometry-utils.d.ts.map +1 -0
- package/dist/lib/utils/geometry-utils.js +18 -0
- package/dist/lib/utils/lod-conversion-utils.d.ts +3 -2
- package/dist/lib/utils/lod-conversion-utils.d.ts.map +1 -1
- package/dist/lib/utils/lod-conversion-utils.js +1 -1
- package/package.json +15 -16
- package/src/3d-tiles-converter/3d-tiles-converter.ts +9 -8
- package/src/3d-tiles-converter/helpers/b3dm-converter.ts +2 -16
- package/src/deps-installer/deps-installer.ts +4 -4
- package/src/i3s-attributes-worker.ts +11 -2
- package/src/i3s-converter/helpers/batch-ids-extensions.ts +15 -19
- package/src/i3s-converter/helpers/coordinate-converter.ts +11 -10
- package/src/i3s-converter/helpers/geometry-converter.ts +154 -95
- package/src/i3s-converter/helpers/gltf-attributes.ts +85 -25
- package/src/i3s-converter/helpers/load-3d-tiles.ts +68 -0
- package/src/i3s-converter/helpers/node-index-document.ts +22 -2
- package/src/i3s-converter/helpers/preprocess-3d-tiles.ts +81 -0
- package/src/i3s-converter/helpers/tileset-traversal.ts +51 -0
- package/src/i3s-converter/i3s-converter.ts +229 -178
- package/src/i3s-converter/types.ts +20 -0
- package/src/i3s-server/README.md +19 -0
- package/src/i3s-server/app.js +8 -1
- package/src/i3s-server/controllers/slpk-controller.js +38 -0
- package/src/i3s-server/routes/slpk-router.js +33 -0
- package/src/i3s-server/utils/create-scene-server.js +15 -0
- package/src/lib/utils/file-utils.ts +2 -1
- package/src/lib/utils/geometry-utils.ts +14 -0
- package/src/lib/utils/lod-conversion-utils.ts +6 -2
|
@@ -4,29 +4,20 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
4
4
|
Object.defineProperty(exports, "__esModule", {
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
|
+
exports.calculateTransformProps = calculateTransformProps;
|
|
7
8
|
exports.prepareDataForAttributesConversion = prepareDataForAttributesConversion;
|
|
8
9
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
10
|
+
var _core = require("@math.gl/core");
|
|
11
|
+
var _geospatial = require("@math.gl/geospatial");
|
|
9
12
|
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; }
|
|
10
13
|
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; }
|
|
11
|
-
function
|
|
12
|
-
var attributesWithoutBufferView = {};
|
|
13
|
-
for (var attributeName in attributes) {
|
|
14
|
-
attributesWithoutBufferView[attributeName] = {
|
|
15
|
-
value: attributes[attributeName].value
|
|
16
|
-
};
|
|
17
|
-
}
|
|
18
|
-
return attributesWithoutBufferView;
|
|
19
|
-
}
|
|
20
|
-
function prepareDataForAttributesConversion(tileContent) {
|
|
14
|
+
function prepareDataForAttributesConversion(tileContent, tileTransform, boundingVolume) {
|
|
21
15
|
var _tileContent$gltf, _tileContent$gltf$sce, _tileContent$gltf2, _tileContent$gltf2$sc, _tileContent$gltf2$sc2, _tileContent$gltf3, _tileContent$gltf4, _tileContent$gltf4$im;
|
|
22
16
|
var nodes = ((_tileContent$gltf = tileContent.gltf) === null || _tileContent$gltf === void 0 ? void 0 : (_tileContent$gltf$sce = _tileContent$gltf.scene) === null || _tileContent$gltf$sce === void 0 ? void 0 : _tileContent$gltf$sce.nodes) || ((_tileContent$gltf2 = tileContent.gltf) === null || _tileContent$gltf2 === void 0 ? void 0 : (_tileContent$gltf2$sc = _tileContent$gltf2.scenes) === null || _tileContent$gltf2$sc === void 0 ? void 0 : (_tileContent$gltf2$sc2 = _tileContent$gltf2$sc[0]) === null || _tileContent$gltf2$sc2 === void 0 ? void 0 : _tileContent$gltf2$sc2.nodes) || ((_tileContent$gltf3 = tileContent.gltf) === null || _tileContent$gltf3 === void 0 ? void 0 : _tileContent$gltf3.nodes) || [];
|
|
23
17
|
var images = ((_tileContent$gltf4 = tileContent.gltf) === null || _tileContent$gltf4 === void 0 ? void 0 : (_tileContent$gltf4$im = _tileContent$gltf4.images) === null || _tileContent$gltf4$im === void 0 ? void 0 : _tileContent$gltf4$im.map(function (imageObject) {
|
|
24
18
|
var _imageObject$image;
|
|
25
19
|
if (imageObject !== null && imageObject !== void 0 && (_imageObject$image = imageObject.image) !== null && _imageObject$image !== void 0 && _imageObject$image.compressed) {
|
|
26
|
-
return
|
|
27
|
-
data: null,
|
|
28
|
-
compressed: true
|
|
29
|
-
};
|
|
20
|
+
return null;
|
|
30
21
|
} else {
|
|
31
22
|
var _imageObject$image2;
|
|
32
23
|
var data = imageObject === null || imageObject === void 0 ? void 0 : (_imageObject$image2 = imageObject.image) === null || _imageObject$image2 === void 0 ? void 0 : _imageObject$image2.data;
|
|
@@ -43,8 +34,9 @@ function prepareDataForAttributesConversion(tileContent) {
|
|
|
43
34
|
}
|
|
44
35
|
})) || [];
|
|
45
36
|
prepareNodes(nodes);
|
|
46
|
-
var
|
|
47
|
-
|
|
37
|
+
var _calculateTransformPr = calculateTransformProps(tileContent, tileTransform, boundingVolume),
|
|
38
|
+
cartographicOrigin = _calculateTransformPr.cartographicOrigin,
|
|
39
|
+
cartesianModelMatrix = _calculateTransformPr.modelMatrix;
|
|
48
40
|
return {
|
|
49
41
|
nodes: nodes,
|
|
50
42
|
images: images,
|
|
@@ -52,6 +44,44 @@ function prepareDataForAttributesConversion(tileContent) {
|
|
|
52
44
|
cartesianModelMatrix: cartesianModelMatrix
|
|
53
45
|
};
|
|
54
46
|
}
|
|
47
|
+
function getB3DMAttributesWithoutBufferView(attributes) {
|
|
48
|
+
var attributesWithoutBufferView = {};
|
|
49
|
+
for (var attributeName in attributes) {
|
|
50
|
+
attributesWithoutBufferView[attributeName] = {
|
|
51
|
+
value: attributes[attributeName].value
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
return attributesWithoutBufferView;
|
|
55
|
+
}
|
|
56
|
+
function calculateTransformProps(tileContent, tileTransform, boundingVolume) {
|
|
57
|
+
var rtcCenter = tileContent.rtcCenter,
|
|
58
|
+
gltfUpAxis = tileContent.gltfUpAxis;
|
|
59
|
+
var center = boundingVolume.center;
|
|
60
|
+
var modelMatrix = new _core.Matrix4(tileTransform);
|
|
61
|
+
if (rtcCenter) {
|
|
62
|
+
modelMatrix.translate(rtcCenter);
|
|
63
|
+
}
|
|
64
|
+
switch (gltfUpAxis) {
|
|
65
|
+
case 'Z':
|
|
66
|
+
break;
|
|
67
|
+
case 'Y':
|
|
68
|
+
var rotationY = new _core.Matrix4().rotateX(Math.PI / 2);
|
|
69
|
+
modelMatrix = modelMatrix.multiplyRight(rotationY);
|
|
70
|
+
break;
|
|
71
|
+
case 'X':
|
|
72
|
+
var rotationX = new _core.Matrix4().rotateY(-Math.PI / 2);
|
|
73
|
+
modelMatrix = modelMatrix.multiplyRight(rotationX);
|
|
74
|
+
break;
|
|
75
|
+
default:
|
|
76
|
+
break;
|
|
77
|
+
}
|
|
78
|
+
var cartesianOrigin = new _core.Vector3(center);
|
|
79
|
+
var cartographicOrigin = _geospatial.Ellipsoid.WGS84.cartesianToCartographic(cartesianOrigin, new _core.Vector3());
|
|
80
|
+
return {
|
|
81
|
+
modelMatrix: modelMatrix,
|
|
82
|
+
cartographicOrigin: cartographicOrigin
|
|
83
|
+
};
|
|
84
|
+
}
|
|
55
85
|
function prepareNodes(nodes) {
|
|
56
86
|
for (var index = 0; index < nodes.length; index++) {
|
|
57
87
|
var node = nodes[index];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gltf-attributes.js","names":["getB3DMAttributesWithoutBufferView","attributes","attributesWithoutBufferView","attributeName","value","prepareDataForAttributesConversion","tileContent","_tileContent$gltf","_tileContent$gltf$sce","_tileContent$gltf2","_tileContent$gltf2$sc","_tileContent$gltf2$sc2","_tileContent$gltf3","_tileContent$gltf4","_tileContent$gltf4$im","nodes","gltf","scene","scenes","images","map","imageObject","_imageObject$image","image","compressed","data","_imageObject$image2","dataCopy","Uint8Array","length","set","height","width","components","mimeType","prepareNodes","cartographicOrigin","cartesianModelMatrix","index","node","mesh","_node$mesh","_objectSpread","primitives","primitive","_primitive$indices","_primitive$material","_primitive$material2","indices","material","id","uniqueId","children"],"sources":["../../../../src/i3s-converter/helpers/gltf-attributes.ts"],"sourcesContent":["import type {B3DMContent} from '@loaders.gl/3d-tiles';\nimport type {GLTFAccessorPostprocessed, GLTFNodePostprocessed} from '@loaders.gl/gltf';\nimport type {B3DMAttributesData} from '../../i3s-attributes-worker';\n\ntype AttributesObject = {\n [k: string]: GLTFAccessorPostprocessed;\n};\n\n/**\n * Keep only values for B3DM attributes to pass data to worker thread.\n * @param attributes\n */\nfunction getB3DMAttributesWithoutBufferView(attributes: AttributesObject): AttributesObject {\n const attributesWithoutBufferView = {};\n\n for (const attributeName in attributes) {\n attributesWithoutBufferView[attributeName] = {\n value: attributes[attributeName].value\n };\n }\n\n return attributesWithoutBufferView;\n}\n\n/**\n * Prepare attributes for conversion to avoid binary data breaking in worker thread.\n * @param tileContent\n * @returns\n */\nexport function prepareDataForAttributesConversion(tileContent: B3DMContent): B3DMAttributesData {\n let nodes =\n tileContent.gltf?.scene?.nodes ||\n tileContent.gltf?.scenes?.[0]?.nodes ||\n tileContent.gltf?.nodes ||\n [];\n\n const images =\n tileContent.gltf?.images?.map((imageObject) => {\n // Need data only for uncompressed images because we can't get batchIds from compressed textures.\n if (imageObject?.image?.compressed) {\n return {\n data: null,\n compressed: true\n };\n } else {\n const data = imageObject?.image?.data;\n const dataCopy = new Uint8Array(data.length);\n dataCopy.set(data);\n return {\n data: dataCopy,\n compressed: false,\n height: imageObject.image.height,\n width: imageObject.image.width,\n components: imageObject.image.components,\n mimeType: imageObject.mimeType\n };\n }\n }) || [];\n\n prepareNodes(nodes);\n\n const cartographicOrigin = tileContent.cartographicOrigin;\n const cartesianModelMatrix = tileContent.cartesianModelMatrix;\n\n return {\n nodes,\n images,\n cartographicOrigin,\n cartesianModelMatrix\n };\n}\n\n/**\n * Traverse all nodes to replace all sensible data with copy to avoid data corruption in worker.\n * @param nodes\n */\nfunction prepareNodes(nodes: GLTFNodePostprocessed[]): void {\n for (let index = 0; index < nodes.length; index++) {\n const node = nodes[index] as any;\n\n if (node.mesh) {\n nodes[index] = {\n ...node,\n mesh: {\n ...node.mesh,\n primitives: node.mesh?.primitives.map((primitive) => ({\n ...primitive,\n indices: {value: primitive?.indices?.value},\n attributes: getB3DMAttributesWithoutBufferView(primitive.attributes),\n material: {\n id: primitive?.material?.id,\n uniqueId: primitive?.material?.uniqueId\n }\n }))\n }\n };\n }\n\n if (node.children) {\n prepareNodes(node.children);\n }\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"gltf-attributes.js","names":["_core","require","_geospatial","ownKeys","object","enumerableOnly","keys","Object","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","forEach","key","_defineProperty2","default","getOwnPropertyDescriptors","defineProperties","defineProperty","prepareDataForAttributesConversion","tileContent","tileTransform","boundingVolume","_tileContent$gltf","_tileContent$gltf$sce","_tileContent$gltf2","_tileContent$gltf2$sc","_tileContent$gltf2$sc2","_tileContent$gltf3","_tileContent$gltf4","_tileContent$gltf4$im","nodes","gltf","scene","scenes","images","map","imageObject","_imageObject$image","image","compressed","_imageObject$image2","data","dataCopy","Uint8Array","set","height","width","components","mimeType","prepareNodes","_calculateTransformPr","calculateTransformProps","cartographicOrigin","cartesianModelMatrix","modelMatrix","getB3DMAttributesWithoutBufferView","attributes","attributesWithoutBufferView","attributeName","value","rtcCenter","gltfUpAxis","center","Matrix4","translate","rotationY","rotateX","Math","PI","multiplyRight","rotationX","rotateY","cartesianOrigin","Vector3","Ellipsoid","WGS84","cartesianToCartographic","index","node","mesh","_node$mesh","primitives","primitive","_primitive$indices","_primitive$material","_primitive$material2","indices","material","id","uniqueId","children"],"sources":["../../../../src/i3s-converter/helpers/gltf-attributes.ts"],"sourcesContent":["import type {Tiles3DTileContent} from '@loaders.gl/3d-tiles';\nimport type {GLTFAccessorPostprocessed, GLTFNodePostprocessed} from '@loaders.gl/gltf';\nimport type {B3DMAttributesData} from '../../i3s-attributes-worker';\nimport {Matrix4, Vector3} from '@math.gl/core';\nimport {BoundingSphere, OrientedBoundingBox} from '@math.gl/culling';\nimport {Ellipsoid} from '@math.gl/geospatial';\n\ntype AttributesObject = {\n [k: string]: GLTFAccessorPostprocessed;\n};\n\n/**\n * Prepare attributes for conversion to avoid binary data breaking in worker thread.\n * @param tileContent - 3DTiles tile content\n * @param tileTransform - transformation matrix of the tile, calculated recursively multiplying\n * transform of all parent tiles and transform of the current tile\n * @param boundingVolume - initialized bounding volume of the source tile\n * @returns\n */\nexport function prepareDataForAttributesConversion(\n tileContent: Tiles3DTileContent,\n tileTransform: Matrix4,\n boundingVolume: OrientedBoundingBox | BoundingSphere\n): B3DMAttributesData {\n let nodes =\n tileContent.gltf?.scene?.nodes ||\n tileContent.gltf?.scenes?.[0]?.nodes ||\n tileContent.gltf?.nodes ||\n [];\n\n const images =\n tileContent.gltf?.images?.map((imageObject) => {\n // Need data only for uncompressed images because we can't get batchIds from compressed textures.\n if (imageObject?.image?.compressed) {\n return null;\n } else {\n const data = imageObject?.image?.data;\n const dataCopy = new Uint8Array(data.length);\n dataCopy.set(data);\n return {\n data: dataCopy,\n compressed: false,\n height: imageObject.image.height,\n width: imageObject.image.width,\n components: imageObject.image.components,\n mimeType: imageObject.mimeType\n };\n }\n }) || [];\n\n prepareNodes(nodes);\n\n const {cartographicOrigin, modelMatrix: cartesianModelMatrix} = calculateTransformProps(\n tileContent,\n tileTransform,\n boundingVolume\n );\n\n return {\n nodes,\n images,\n cartographicOrigin,\n cartesianModelMatrix\n };\n}\n\n/**\n * Keep only values for glTF attributes to pass data to worker thread.\n * @param attributes - geometry attributes\n */\nfunction getB3DMAttributesWithoutBufferView(attributes: AttributesObject): AttributesObject {\n const attributesWithoutBufferView = {};\n\n for (const attributeName in attributes) {\n attributesWithoutBufferView[attributeName] = {\n value: attributes[attributeName].value\n };\n }\n\n return attributesWithoutBufferView;\n}\n\n/**\n * Calculate transformation properties to transform vertex attributes (POSITION, NORMAL, etc.)\n * from METER_OFFSET coorditantes to LNGLAT_OFFSET coordinates\n * @param tileContent - 3DTiles tile content\n * @param tileTransform - transformation matrix of the tile, calculated recursively multiplying\n * transform of all parent tiles and transform of the current tile\n * @param boundingVolume - initialized bounding volume of the source tile\n * @returns modelMatrix - transformation matrix to transform coordinates to cartographic coordinates\n * cartographicOrigin - tile origin coordinates to calculate offsets\n */\nexport function calculateTransformProps(\n tileContent: Tiles3DTileContent,\n tileTransform: Matrix4,\n boundingVolume: OrientedBoundingBox | BoundingSphere\n): {modelMatrix: Matrix4; cartographicOrigin: Vector3} {\n const {rtcCenter, gltfUpAxis} = tileContent;\n const {center} = boundingVolume;\n\n let modelMatrix = new Matrix4(tileTransform);\n\n // Translate if appropriate\n if (rtcCenter) {\n modelMatrix.translate(rtcCenter);\n }\n\n // glTF models need to be rotated from Y to Z up\n // https://github.com/AnalyticalGraphicsInc/3d-tiles/tree/master/specification#y-up-to-z-up\n switch (gltfUpAxis) {\n case 'Z':\n break;\n case 'Y':\n const rotationY = new Matrix4().rotateX(Math.PI / 2);\n modelMatrix = modelMatrix.multiplyRight(rotationY);\n break;\n case 'X':\n const rotationX = new Matrix4().rotateY(-Math.PI / 2);\n modelMatrix = modelMatrix.multiplyRight(rotationX);\n break;\n default:\n break;\n }\n\n const cartesianOrigin = new Vector3(center);\n const cartographicOrigin = Ellipsoid.WGS84.cartesianToCartographic(\n cartesianOrigin,\n new Vector3()\n );\n return {modelMatrix, cartographicOrigin};\n}\n\n/**\n * Traverse all nodes to replace all sensible data with copy to avoid data corruption in worker.\n * @param nodes\n */\nfunction prepareNodes(nodes: GLTFNodePostprocessed[]): void {\n for (let index = 0; index < nodes.length; index++) {\n const node = nodes[index] as any;\n\n if (node.mesh) {\n nodes[index] = {\n ...node,\n mesh: {\n ...node.mesh,\n primitives: node.mesh?.primitives.map((primitive) => ({\n ...primitive,\n indices: {value: primitive?.indices?.value},\n attributes: getB3DMAttributesWithoutBufferView(primitive.attributes),\n material: {\n id: primitive?.material?.id,\n uniqueId: primitive?.material?.uniqueId\n }\n }))\n }\n };\n }\n\n if (node.children) {\n prepareNodes(node.children);\n }\n }\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.loadTile3DContent = exports.loadNestedTileset = void 0;
|
|
8
|
+
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
9
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
10
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
11
|
+
var _core = require("@loaders.gl/core");
|
|
12
|
+
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; }
|
|
13
|
+
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; }
|
|
14
|
+
var loadNestedTileset = function () {
|
|
15
|
+
var _ref = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee(sourceTileset, sourceTile, tilesetLoadOptions) {
|
|
16
|
+
var isTileset, loadOptions, tileContent;
|
|
17
|
+
return _regenerator.default.wrap(function _callee$(_context) {
|
|
18
|
+
while (1) switch (_context.prev = _context.next) {
|
|
19
|
+
case 0:
|
|
20
|
+
isTileset = sourceTile.type === 'json';
|
|
21
|
+
if (!(!sourceTileset || !sourceTile.contentUrl || !isTileset)) {
|
|
22
|
+
_context.next = 3;
|
|
23
|
+
break;
|
|
24
|
+
}
|
|
25
|
+
return _context.abrupt("return");
|
|
26
|
+
case 3:
|
|
27
|
+
loadOptions = _objectSpread(_objectSpread({}, tilesetLoadOptions), {}, (0, _defineProperty2.default)({}, sourceTileset.loader.id, {
|
|
28
|
+
isTileset: isTileset,
|
|
29
|
+
assetGltfUpAxis: sourceTileset.asset && sourceTileset.asset.gltfUpAxis || 'Y'
|
|
30
|
+
}));
|
|
31
|
+
_context.next = 6;
|
|
32
|
+
return (0, _core.load)(sourceTile.contentUrl, sourceTileset.loader, loadOptions);
|
|
33
|
+
case 6:
|
|
34
|
+
tileContent = _context.sent;
|
|
35
|
+
if (tileContent.root) {
|
|
36
|
+
sourceTile.children = [tileContent.root];
|
|
37
|
+
}
|
|
38
|
+
case 8:
|
|
39
|
+
case "end":
|
|
40
|
+
return _context.stop();
|
|
41
|
+
}
|
|
42
|
+
}, _callee);
|
|
43
|
+
}));
|
|
44
|
+
return function loadNestedTileset(_x, _x2, _x3) {
|
|
45
|
+
return _ref.apply(this, arguments);
|
|
46
|
+
};
|
|
47
|
+
}();
|
|
48
|
+
exports.loadNestedTileset = loadNestedTileset;
|
|
49
|
+
var loadTile3DContent = function () {
|
|
50
|
+
var _ref2 = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee2(sourceTileset, sourceTile, tilesetLoadOptions) {
|
|
51
|
+
var isTileset, loadOptions, tileContent;
|
|
52
|
+
return _regenerator.default.wrap(function _callee2$(_context2) {
|
|
53
|
+
while (1) switch (_context2.prev = _context2.next) {
|
|
54
|
+
case 0:
|
|
55
|
+
isTileset = sourceTile.type === 'json';
|
|
56
|
+
if (!(!sourceTileset || !sourceTile.contentUrl || isTileset)) {
|
|
57
|
+
_context2.next = 3;
|
|
58
|
+
break;
|
|
59
|
+
}
|
|
60
|
+
return _context2.abrupt("return", null);
|
|
61
|
+
case 3:
|
|
62
|
+
loadOptions = _objectSpread(_objectSpread({}, tilesetLoadOptions), {}, (0, _defineProperty2.default)({}, sourceTileset.loader.id, _objectSpread(_objectSpread({}, tilesetLoadOptions[sourceTileset.loader.id] || {}), {}, {
|
|
63
|
+
isTileset: isTileset,
|
|
64
|
+
assetGltfUpAxis: sourceTileset.asset && sourceTileset.asset.gltfUpAxis || 'Y'
|
|
65
|
+
})));
|
|
66
|
+
_context2.next = 6;
|
|
67
|
+
return (0, _core.load)(sourceTile.contentUrl, sourceTileset.loader, loadOptions);
|
|
68
|
+
case 6:
|
|
69
|
+
tileContent = _context2.sent;
|
|
70
|
+
return _context2.abrupt("return", tileContent);
|
|
71
|
+
case 8:
|
|
72
|
+
case "end":
|
|
73
|
+
return _context2.stop();
|
|
74
|
+
}
|
|
75
|
+
}, _callee2);
|
|
76
|
+
}));
|
|
77
|
+
return function loadTile3DContent(_x4, _x5, _x6) {
|
|
78
|
+
return _ref2.apply(this, arguments);
|
|
79
|
+
};
|
|
80
|
+
}();
|
|
81
|
+
exports.loadTile3DContent = loadTile3DContent;
|
|
82
|
+
//# sourceMappingURL=load-3d-tiles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"load-3d-tiles.js","names":["_core","require","ownKeys","object","enumerableOnly","keys","Object","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","forEach","key","_defineProperty2","default","getOwnPropertyDescriptors","defineProperties","defineProperty","loadNestedTileset","_ref","_asyncToGenerator2","_regenerator","mark","_callee","sourceTileset","sourceTile","tilesetLoadOptions","isTileset","loadOptions","tileContent","wrap","_callee$","_context","prev","next","type","contentUrl","abrupt","loader","id","assetGltfUpAxis","asset","gltfUpAxis","load","sent","root","children","stop","_x","_x2","_x3","exports","loadTile3DContent","_ref2","_callee2","_callee2$","_context2","_x4","_x5","_x6"],"sources":["../../../../src/i3s-converter/helpers/load-3d-tiles.ts"],"sourcesContent":["import type {\n Tiles3DLoaderOptions,\n Tiles3DTileContent,\n Tiles3DTileJSONPostprocessed,\n Tiles3DTilesetJSONPostprocessed\n} from '@loaders.gl/3d-tiles';\nimport {load} from '@loaders.gl/core';\n\n/**\n * Load nested 3DTiles tileset. If the sourceTile is not nested tileset - do nothing\n * @param sourceTileset - source root tileset JSON\n * @param sourceTile - source tile JSON that is supposed to has link to nested tileset\n * @param tilesetLoadOptions - load options for Tiles3DLoader\n * @returns nothing\n */\nexport const loadNestedTileset = async (\n sourceTileset: Tiles3DTilesetJSONPostprocessed | null,\n sourceTile: Tiles3DTileJSONPostprocessed,\n tilesetLoadOptions: Tiles3DLoaderOptions\n): Promise<void> => {\n const isTileset = sourceTile.type === 'json';\n if (!sourceTileset || !sourceTile.contentUrl || !isTileset) {\n return;\n }\n\n const loadOptions = {\n ...tilesetLoadOptions,\n [sourceTileset.loader.id]: {\n isTileset,\n assetGltfUpAxis: (sourceTileset.asset && sourceTileset.asset.gltfUpAxis) || 'Y'\n }\n };\n const tileContent = await load(sourceTile.contentUrl, sourceTileset.loader, loadOptions);\n\n if (tileContent.root) {\n sourceTile.children = [tileContent.root];\n }\n};\n\n/**\n * Load 3DTiles tile content, that includes glTF object\n * @param sourceTileset - source root tileset JSON\n * @param sourceTile - source tile JSON that has link to content data\n * @param tilesetLoadOptions - load options for Tiles3DLoader\n * @returns - 3DTiles tile content or null\n */\nexport const loadTile3DContent = async (\n sourceTileset: Tiles3DTilesetJSONPostprocessed | null,\n sourceTile: Tiles3DTileJSONPostprocessed,\n tilesetLoadOptions: Tiles3DLoaderOptions\n): Promise<Tiles3DTileContent | null> => {\n const isTileset = sourceTile.type === 'json';\n if (!sourceTileset || !sourceTile.contentUrl || isTileset) {\n return null;\n }\n\n const loadOptions = {\n ...tilesetLoadOptions,\n [sourceTileset.loader.id]: {\n ...(tilesetLoadOptions[sourceTileset.loader.id] || {}),\n isTileset,\n assetGltfUpAxis: (sourceTileset.asset && sourceTileset.asset.gltfUpAxis) || 'Y'\n }\n };\n const tileContent = await load(sourceTile.contentUrl, sourceTileset.loader, loadOptions);\n\n return tileContent;\n};\n"],"mappings":"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"}
|
|
@@ -28,11 +28,17 @@ var NodeIndexDocument = function () {
|
|
|
28
28
|
(0, _defineProperty2.default)(this, "data", null);
|
|
29
29
|
(0, _defineProperty2.default)(this, "children", []);
|
|
30
30
|
(0, _defineProperty2.default)(this, "converter", void 0);
|
|
31
|
+
(0, _defineProperty2.default)(this, "_finalized", false);
|
|
31
32
|
this.inPageId = id;
|
|
32
33
|
this.id = id === 0 ? 'root' : id.toString();
|
|
33
34
|
this.converter = converter;
|
|
34
35
|
}
|
|
35
36
|
(0, _createClass2.default)(NodeIndexDocument, [{
|
|
37
|
+
key: "finalized",
|
|
38
|
+
get: function get() {
|
|
39
|
+
return this._finalized;
|
|
40
|
+
}
|
|
41
|
+
}, {
|
|
36
42
|
key: "addData",
|
|
37
43
|
value: function () {
|
|
38
44
|
var _addData = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee(data) {
|
|
@@ -146,95 +152,101 @@ var NodeIndexDocument = function () {
|
|
|
146
152
|
return _regenerator.default.wrap(function _callee3$(_context3) {
|
|
147
153
|
while (1) switch (_context3.prev = _context3.next) {
|
|
148
154
|
case 0:
|
|
149
|
-
|
|
150
|
-
|
|
155
|
+
if (!this.finalized) {
|
|
156
|
+
_context3.next = 2;
|
|
157
|
+
break;
|
|
158
|
+
}
|
|
159
|
+
return _context3.abrupt("return");
|
|
151
160
|
case 2:
|
|
161
|
+
_context3.next = 4;
|
|
162
|
+
return this.load();
|
|
163
|
+
case 4:
|
|
152
164
|
nodeData = _context3.sent;
|
|
153
165
|
_iterator2 = _createForOfIteratorHelper(this.children);
|
|
154
|
-
_context3.prev =
|
|
166
|
+
_context3.prev = 6;
|
|
155
167
|
_iterator2.s();
|
|
156
|
-
case
|
|
168
|
+
case 8:
|
|
157
169
|
if ((_step2 = _iterator2.n()).done) {
|
|
158
|
-
_context3.next =
|
|
170
|
+
_context3.next = 44;
|
|
159
171
|
break;
|
|
160
172
|
}
|
|
161
173
|
childNode = _step2.value;
|
|
162
|
-
_context3.next =
|
|
174
|
+
_context3.next = 12;
|
|
163
175
|
return childNode.load();
|
|
164
|
-
case
|
|
176
|
+
case 12:
|
|
165
177
|
childNodeData = _context3.sent;
|
|
166
178
|
childNodeData.neighbors = (_childNodeData$neighb = childNodeData.neighbors) !== null && _childNodeData$neighb !== void 0 ? _childNodeData$neighb : [];
|
|
167
179
|
if (!(Number(nodeData === null || nodeData === void 0 ? void 0 : (_nodeData$children = nodeData.children) === null || _nodeData$children === void 0 ? void 0 : _nodeData$children.length) < 1000)) {
|
|
168
|
-
_context3.next =
|
|
180
|
+
_context3.next = 35;
|
|
169
181
|
break;
|
|
170
182
|
}
|
|
171
183
|
_iterator3 = _createForOfIteratorHelper(nodeData.children || []);
|
|
172
|
-
_context3.prev =
|
|
184
|
+
_context3.prev = 16;
|
|
173
185
|
_iterator3.s();
|
|
174
|
-
case
|
|
186
|
+
case 18:
|
|
175
187
|
if ((_step3 = _iterator3.n()).done) {
|
|
176
|
-
_context3.next =
|
|
188
|
+
_context3.next = 25;
|
|
177
189
|
break;
|
|
178
190
|
}
|
|
179
191
|
neighbor = _step3.value;
|
|
180
192
|
if (!(childNode.id === neighbor.id)) {
|
|
181
|
-
_context3.next =
|
|
193
|
+
_context3.next = 22;
|
|
182
194
|
break;
|
|
183
195
|
}
|
|
184
|
-
return _context3.abrupt("continue",
|
|
185
|
-
case
|
|
196
|
+
return _context3.abrupt("continue", 23);
|
|
197
|
+
case 22:
|
|
186
198
|
childNodeData.neighbors.push(_objectSpread({}, neighbor));
|
|
187
|
-
case 21:
|
|
188
|
-
_context3.next = 16;
|
|
189
|
-
break;
|
|
190
199
|
case 23:
|
|
191
|
-
_context3.next =
|
|
200
|
+
_context3.next = 18;
|
|
192
201
|
break;
|
|
193
202
|
case 25:
|
|
194
|
-
_context3.
|
|
195
|
-
|
|
203
|
+
_context3.next = 30;
|
|
204
|
+
break;
|
|
205
|
+
case 27:
|
|
206
|
+
_context3.prev = 27;
|
|
207
|
+
_context3.t0 = _context3["catch"](16);
|
|
196
208
|
_iterator3.e(_context3.t0);
|
|
197
|
-
case
|
|
198
|
-
_context3.prev =
|
|
209
|
+
case 30:
|
|
210
|
+
_context3.prev = 30;
|
|
199
211
|
_iterator3.f();
|
|
200
|
-
return _context3.finish(
|
|
201
|
-
case 31:
|
|
202
|
-
_context3.next = 35;
|
|
203
|
-
break;
|
|
212
|
+
return _context3.finish(30);
|
|
204
213
|
case 33:
|
|
214
|
+
_context3.next = 37;
|
|
215
|
+
break;
|
|
216
|
+
case 35:
|
|
205
217
|
console.warn("Node ".concat(childNode.id, ": neighbors attribute is omited because of large number of neigbors"));
|
|
206
218
|
delete childNodeData.neighbors;
|
|
207
|
-
case
|
|
219
|
+
case 37:
|
|
208
220
|
if (!(this.converter.options.instantNodeWriting && childNodeData)) {
|
|
209
|
-
_context3.next =
|
|
221
|
+
_context3.next = 40;
|
|
210
222
|
break;
|
|
211
223
|
}
|
|
212
|
-
_context3.next = 38;
|
|
213
|
-
return childNode.write(childNodeData);
|
|
214
|
-
case 38:
|
|
215
224
|
_context3.next = 40;
|
|
216
|
-
return childNode.
|
|
225
|
+
return childNode.write(childNodeData);
|
|
217
226
|
case 40:
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
227
|
+
_context3.next = 42;
|
|
228
|
+
return childNode.save();
|
|
229
|
+
case 42:
|
|
230
|
+
_context3.next = 8;
|
|
221
231
|
break;
|
|
222
|
-
case
|
|
223
|
-
_context3.next =
|
|
232
|
+
case 44:
|
|
233
|
+
_context3.next = 49;
|
|
224
234
|
break;
|
|
225
|
-
case
|
|
226
|
-
_context3.prev =
|
|
227
|
-
_context3.t1 = _context3["catch"](
|
|
235
|
+
case 46:
|
|
236
|
+
_context3.prev = 46;
|
|
237
|
+
_context3.t1 = _context3["catch"](6);
|
|
228
238
|
_iterator2.e(_context3.t1);
|
|
229
|
-
case
|
|
230
|
-
_context3.prev =
|
|
239
|
+
case 49:
|
|
240
|
+
_context3.prev = 49;
|
|
231
241
|
_iterator2.f();
|
|
232
|
-
return _context3.finish(
|
|
233
|
-
case
|
|
242
|
+
return _context3.finish(49);
|
|
243
|
+
case 52:
|
|
244
|
+
this.finalize();
|
|
245
|
+
case 53:
|
|
234
246
|
case "end":
|
|
235
247
|
return _context3.stop();
|
|
236
248
|
}
|
|
237
|
-
}, _callee3, this, [[
|
|
249
|
+
}, _callee3, this, [[6, 46, 49, 52], [16, 27, 30, 33]]);
|
|
238
250
|
}));
|
|
239
251
|
function addNeighbors() {
|
|
240
252
|
return _addNeighbors.apply(this, arguments);
|
|
@@ -265,6 +277,23 @@ var NodeIndexDocument = function () {
|
|
|
265
277
|
}
|
|
266
278
|
return save;
|
|
267
279
|
}()
|
|
280
|
+
}, {
|
|
281
|
+
key: "finalize",
|
|
282
|
+
value: function finalize() {
|
|
283
|
+
this._finalized = true;
|
|
284
|
+
var _iterator4 = _createForOfIteratorHelper(this.children),
|
|
285
|
+
_step4;
|
|
286
|
+
try {
|
|
287
|
+
for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
|
|
288
|
+
var child = _step4.value;
|
|
289
|
+
child.flush();
|
|
290
|
+
}
|
|
291
|
+
} catch (err) {
|
|
292
|
+
_iterator4.e(err);
|
|
293
|
+
} finally {
|
|
294
|
+
_iterator4.f();
|
|
295
|
+
}
|
|
296
|
+
}
|
|
268
297
|
}, {
|
|
269
298
|
key: "write",
|
|
270
299
|
value: function () {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node-index-document.js","names":["_path","require","_jsonMapTransform","_interopRequireDefault","_uuid","_fileUtils","_node","ownKeys","object","enumerableOnly","keys","Object","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","forEach","key","_defineProperty2","default","getOwnPropertyDescriptors","defineProperties","defineProperty","_createForOfIteratorHelper","o","allowArrayLike","it","Symbol","iterator","Array","isArray","_unsupportedIterableToArray","F","s","n","done","value","e","_e","f","TypeError","normalCompletion","didErr","err","call","step","next","_e2","return","minLen","_arrayLikeToArray","prototype","toString","slice","constructor","name","from","test","arr","len","arr2","NodeIndexDocument","id","converter","_classCallCheck2","inPageId","_createClass2","_addData","_asyncToGenerator2","_regenerator","mark","_callee","data","wrap","_callee$","_context","prev","options","instantNodeWriting","write","abrupt","stop","addData","_x","_addChildren","_callee2","childNodes","newChildren","_iterator","_step","node","nodeData","_data$children","_callee2$","_context2","load","sent","href","concat","obb","mbs","t0","finish","children","addChildren","_x2","_addNeighbors","_callee3","_iterator2","_step2","_childNodeData$neighb","_nodeData$children","childNode","childNodeData","_iterator3","_step3","neighbor","_callee3$","_context3","neighbors","Number","console","warn","save","flush","t1","addNeighbors","_save","_callee4","_callee4$","_context4","_write","_callee5","_this","path","_callee5$","_context5","join","layers0Path","slpk","writeQueue","enqueue","archiveKey","writePromise","writeFileForSlpk","JSON","stringify","compressList","writeFile","_x3","_load","_callee6","parentNodePath","parentNodeFileName","_callee6$","_context6","openJson","_createRootNode","_callee7","boundingVolumes","rootData","rootNode","_callee7$","_context7","createRootNodeIndexDocument","createRootNode","_x4","_x5","_createNode","_callee8","parentNode","lodSelection","nodeInPage","resources","_callee8$","_context8","createNodeIndexDocument","index","createNode","_x6","_x7","_x8","_x9","_x10","_x11","root0data","version","uuidv4","toUpperCase","level","metricType","maxError","transform","nodeTemplate","_createNodeIndexDocument","_callee9","texture","attributes","nodeId","parentNodeData","_parentNode$converter","_parentNode$converter2","folderName","_callee9$","_context9","mesh","geometryData","sharedResource","textureData","layers0","attributeStorageInfo","attributeData","_x12","_x13","_x14","_x15","_x16","exports"],"sources":["../../../../src/i3s-converter/helpers/node-index-document.ts"],"sourcesContent":["import {join} from 'path';\nimport {\n BoundingVolumes,\n LodSelection,\n Node3DIndexDocument,\n NodeInPage,\n NodeReference\n} from '@loaders.gl/i3s';\nimport transform from 'json-map-transform';\nimport {v4 as uuidv4} from 'uuid';\nimport {openJson, writeFile, writeFileForSlpk} from '../../lib/utils/file-utils';\nimport I3SConverter from '../i3s-converter';\nimport {NODE as nodeTemplate} from '../json-templates/node';\nimport {I3SConvertedResources} from '../types';\n\n/**\n * Wrapper for https://github.com/Esri/i3s-spec/blob/master/docs/1.7/3DNodeIndexDocument.cmn.md data\n * The class allows working with 3DNodeIndexDocument in 2 modes:\n * in memory: the data is stored in `data` field\n * on disk: the data is written on disk in a file. The file can be rewritten when new childrend or neighbors have to be added\n */\nexport class NodeIndexDocument {\n /** Node id */\n public id: string;\n /** Id in node pages */\n public inPageId: number;\n /** 3DNodeIndexDocument data */\n public data: Node3DIndexDocument | null = null;\n /** children */\n public children: NodeIndexDocument[] = [];\n /** converter instance */\n private converter: I3SConverter;\n\n /**\n * Constructor\n * @param id - id of the node in node pages\n * @param converter - converter instance\n */\n constructor(id: number, converter: I3SConverter) {\n this.inPageId = id;\n this.id = id === 0 ? 'root' : id.toString();\n this.converter = converter;\n }\n\n /**\n * Add Node3DIndexDocument data to the node\n * @param data Node3DIndexDocument data\n * @returns this NodeIndexDocument instance (to recurring with constructor)\n */\n public async addData(data: Node3DIndexDocument): Promise<NodeIndexDocument> {\n if (this.converter.options.instantNodeWriting) {\n await this.write(data);\n } else {\n this.data = data;\n }\n return this;\n }\n\n /**\n * Add child node references\n * @param childNodes - child NodeIndexDocument instances\n */\n public async addChildren(childNodes: NodeIndexDocument[]): Promise<void> {\n const newChildren: NodeReference[] = [];\n for (const node of childNodes) {\n const nodeData = await node.load();\n newChildren.push({\n id: node.id,\n href: `../${node.id}`,\n obb: nodeData.obb,\n mbs: nodeData.mbs\n });\n }\n this.children = this.children.concat(childNodes);\n\n let data: Node3DIndexDocument | null = this.data;\n if (this.converter.options.instantNodeWriting) {\n data = (await this.load()) as Node3DIndexDocument;\n }\n if (data) {\n data.children = data.children ?? [];\n data.children = data.children.concat(newChildren);\n }\n if (this.converter.options.instantNodeWriting && data) {\n await this.write(data);\n }\n }\n\n /**\n * Add neighbors to child nodes of this node\n */\n public async addNeighbors(): Promise<void> {\n const nodeData = await this.load();\n for (const childNode of this.children) {\n const childNodeData = await childNode.load();\n childNodeData.neighbors = childNodeData.neighbors ?? [];\n\n // Don't do large amount of \"neightbors\" to avoid big memory consumption\n if (Number(nodeData?.children?.length) < 1000) {\n for (const neighbor of nodeData.children || []) {\n if (childNode.id === neighbor.id) {\n continue; // eslint-disable-line\n }\n\n childNodeData.neighbors.push({...neighbor});\n }\n } else {\n // eslint-disable-next-line no-console, no-undef\n console.warn(\n `Node ${childNode.id}: neighbors attribute is omited because of large number of neigbors`\n );\n delete childNodeData.neighbors;\n }\n\n if (this.converter.options.instantNodeWriting && childNodeData) {\n await childNode.write(childNodeData);\n }\n await childNode.save();\n // The save after adding neighbors is the last one. Flush the the node\n childNode.flush();\n }\n }\n\n /** Save 3DNodeIndexDocument in file on disk */\n public async save(): Promise<void> {\n if (this.data) {\n await this.write(this.data);\n }\n }\n\n /**\n * Write 3DNodeIndexDocument https://github.com/Esri/i3s-spec/blob/master/docs/1.7/3DNodeIndexDocument.cmn.md\n * @param node - Node3DIndexDocument object\n */\n private async write(node: Node3DIndexDocument): Promise<void> {\n const path = join(this.converter.layers0Path, 'nodes', this.id);\n if (this.converter.options.slpk) {\n await this.converter.writeQueue.enqueue(\n {\n archiveKey: `nodes/${this.id}/3dNodeIndexDocument.json.gz`,\n writePromise: () =>\n writeFileForSlpk(\n path,\n JSON.stringify(node),\n '3dNodeIndexDocument.json',\n true,\n this.converter.compressList\n )\n },\n true\n );\n } else {\n await this.converter.writeQueue.enqueue(\n {writePromise: () => writeFile(path, JSON.stringify(node))},\n true\n );\n }\n }\n\n /**\n * Load 3DNodeIndexDocument data from file on disk\n * @returns 3DNodeIndexDocument object\n */\n private async load(): Promise<Node3DIndexDocument> {\n if (this.data) {\n return this.data;\n }\n const path = this.id;\n const parentNodePath = join(this.converter.layers0Path, 'nodes', path);\n let parentNodeFileName = 'index.json';\n if (this.converter.options.slpk) {\n parentNodeFileName = '3dNodeIndexDocument.json';\n }\n return (await openJson(parentNodePath, parentNodeFileName)) as Node3DIndexDocument;\n }\n\n /**\n * Unload the Node data\n */\n private flush(): void {\n this.data = null;\n }\n\n /**\n * Create root node of the tree\n * @param boundingVolumes - MBS and OOB bounding volumes data\n * @param converter - I3SConverter instance\n * @returns instance of NodeIndexDocument\n */\n static async createRootNode(\n boundingVolumes: BoundingVolumes,\n converter: I3SConverter\n ): Promise<NodeIndexDocument> {\n const rootData = NodeIndexDocument.createRootNodeIndexDocument(boundingVolumes);\n const rootNode = await new NodeIndexDocument(0, converter).addData(rootData);\n return rootNode;\n }\n\n /**\n * Create NodeIndexDocument instance\n * @param parentNode - parent NodeIndexDocument\n * @param boundingVolumes - MBS and OOB bounding volumes data\n * @param lodSelection - LOD metrics data\n * @param nodeInPage - node data in node pages\n * @param resources - resources extracted from gltf/b3dm file\n * @param converter - I3SConverter instance\n * @returns NodeIndexDocument instance\n */\n static async createNode(\n parentNode: NodeIndexDocument,\n boundingVolumes: BoundingVolumes,\n lodSelection: LodSelection[],\n nodeInPage: NodeInPage,\n resources: I3SConvertedResources,\n converter: I3SConverter\n ): Promise<NodeIndexDocument> {\n const data = await NodeIndexDocument.createNodeIndexDocument(\n parentNode,\n boundingVolumes,\n lodSelection,\n nodeInPage,\n resources\n );\n const node = await new NodeIndexDocument(nodeInPage.index, converter).addData(data);\n return node;\n }\n\n /**\n * Form 3DNodeIndexDocument data for the root node\n * @param boundingVolumes - mbs and obb data about node's bounding volume\n * @return 3DNodeIndexDocument data https://github.com/Esri/i3s-spec/blob/master/docs/1.7/3DNodeIndexDocument.cmn.md\n */\n static createRootNodeIndexDocument(boundingVolumes: BoundingVolumes): Node3DIndexDocument {\n const root0data = {\n version: `{${uuidv4().toUpperCase()}}`,\n id: 'root',\n level: 0,\n lodSelection: [\n {\n metricType: 'maxScreenThresholdSQ',\n maxError: 0\n },\n {\n metricType: 'maxScreenThreshold',\n maxError: 0\n }\n ],\n ...boundingVolumes,\n children: []\n };\n return transform(root0data, nodeTemplate());\n }\n\n /**\n * Create a new Node3DIndexDocument\n * @param parentNode - 3DNodeIndexDocument https://github.com/Esri/i3s-spec/blob/master/docs/1.7/3DNodeIndexDocument.cmn.md object of the parent node\n * @param boundingVolumes - Bounding volumes\n * @param lodSelection - Level of Details (LOD) metrics\n * @param nodeInPage - corresponding node object in a node page\n * @param resources - the node resources data\n * @param resources.texture - texture image\n * @param resources.attributes - feature attributes\n * @return 3DNodeIndexDocument https://github.com/Esri/i3s-spec/blob/master/docs/1.7/3DNodeIndexDocument.cmn.md object\n */\n static async createNodeIndexDocument(\n parentNode: NodeIndexDocument,\n boundingVolumes: BoundingVolumes,\n lodSelection: LodSelection[],\n nodeInPage: NodeInPage,\n resources: I3SConvertedResources\n ): Promise<Node3DIndexDocument> {\n const {texture, attributes} = resources;\n const nodeId = nodeInPage.index!;\n const parentNodeData = await parentNode.load();\n const nodeData = {\n version: parentNodeData.version,\n id: nodeId.toString(),\n level: parentNodeData.level! + 1,\n ...boundingVolumes,\n lodSelection,\n parentNode: {\n id: parentNode.id,\n href: `../${parentNode.id}`,\n mbs: parentNodeData.mbs,\n obb: parentNodeData.obb\n },\n children: [],\n neighbors: []\n };\n const node = transform(nodeData, nodeTemplate());\n\n if (nodeInPage.mesh) {\n node.geometryData = [{href: './geometries/0'}];\n node.sharedResource = {href: './shared'};\n\n if (texture) {\n node.textureData = [{href: './textures/0'}, {href: './textures/1'}];\n }\n\n if (\n attributes &&\n attributes.length &&\n parentNode.converter.layers0?.attributeStorageInfo?.length\n ) {\n node.attributeData = [];\n for (let index = 0; index < attributes.length; index++) {\n const folderName = parentNode.converter.layers0.attributeStorageInfo[index].key;\n node.attributeData.push({href: `./attributes/${folderName}/0`});\n }\n }\n }\n\n return node;\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"node-index-document.js","names":["_path","require","_jsonMapTransform","_interopRequireDefault","_uuid","_fileUtils","_node","ownKeys","object","enumerableOnly","keys","Object","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","forEach","key","_defineProperty2","default","getOwnPropertyDescriptors","defineProperties","defineProperty","_createForOfIteratorHelper","o","allowArrayLike","it","Symbol","iterator","Array","isArray","_unsupportedIterableToArray","F","s","n","done","value","e","_e","f","TypeError","normalCompletion","didErr","err","call","step","next","_e2","return","minLen","_arrayLikeToArray","prototype","toString","slice","constructor","name","from","test","arr","len","arr2","NodeIndexDocument","id","converter","_classCallCheck2","inPageId","_createClass2","get","_finalized","_addData","_asyncToGenerator2","_regenerator","mark","_callee","data","wrap","_callee$","_context","prev","options","instantNodeWriting","write","abrupt","stop","addData","_x","_addChildren","_callee2","childNodes","newChildren","_iterator","_step","node","nodeData","_data$children","_callee2$","_context2","load","sent","href","concat","obb","mbs","t0","finish","children","addChildren","_x2","_addNeighbors","_callee3","_iterator2","_step2","_childNodeData$neighb","_nodeData$children","childNode","childNodeData","_iterator3","_step3","neighbor","_callee3$","_context3","finalized","neighbors","Number","console","warn","save","t1","finalize","addNeighbors","_save","_callee4","_callee4$","_context4","_iterator4","_step4","child","flush","_write","_callee5","_this","path","_callee5$","_context5","join","layers0Path","slpk","writeQueue","enqueue","archiveKey","writePromise","writeFileForSlpk","JSON","stringify","compressList","writeFile","_x3","_load","_callee6","parentNodePath","parentNodeFileName","_callee6$","_context6","openJson","_createRootNode","_callee7","boundingVolumes","rootData","rootNode","_callee7$","_context7","createRootNodeIndexDocument","createRootNode","_x4","_x5","_createNode","_callee8","parentNode","lodSelection","nodeInPage","resources","_callee8$","_context8","createNodeIndexDocument","index","createNode","_x6","_x7","_x8","_x9","_x10","_x11","root0data","version","uuidv4","toUpperCase","level","metricType","maxError","transform","nodeTemplate","_createNodeIndexDocument","_callee9","texture","attributes","nodeId","parentNodeData","_parentNode$converter","_parentNode$converter2","folderName","_callee9$","_context9","mesh","geometryData","sharedResource","textureData","layers0","attributeStorageInfo","attributeData","_x12","_x13","_x14","_x15","_x16","exports"],"sources":["../../../../src/i3s-converter/helpers/node-index-document.ts"],"sourcesContent":["import {join} from 'path';\nimport {\n BoundingVolumes,\n LodSelection,\n Node3DIndexDocument,\n NodeInPage,\n NodeReference\n} from '@loaders.gl/i3s';\nimport transform from 'json-map-transform';\nimport {v4 as uuidv4} from 'uuid';\nimport {openJson, writeFile, writeFileForSlpk} from '../../lib/utils/file-utils';\nimport I3SConverter from '../i3s-converter';\nimport {NODE as nodeTemplate} from '../json-templates/node';\nimport {I3SConvertedResources} from '../types';\n\n/**\n * Wrapper for https://github.com/Esri/i3s-spec/blob/master/docs/1.7/3DNodeIndexDocument.cmn.md data\n * The class allows working with 3DNodeIndexDocument in 2 modes:\n * in memory: the data is stored in `data` field\n * on disk: the data is written on disk in a file. The file can be rewritten when new childrend or neighbors have to be added\n */\nexport class NodeIndexDocument {\n /** Node id */\n public id: string;\n /** Id in node pages */\n public inPageId: number;\n /** 3DNodeIndexDocument data */\n public data: Node3DIndexDocument | null = null;\n /** children */\n public children: NodeIndexDocument[] = [];\n /** converter instance */\n private converter: I3SConverter;\n\n /**\n * Finalized property. It means that all child nodes are saved and their data\n * is unloaded\n */\n private _finalized: boolean = false;\n get finalized(): boolean {\n return this._finalized;\n }\n\n /**\n * Constructor\n * @param id - id of the node in node pages\n * @param converter - converter instance\n */\n constructor(id: number, converter: I3SConverter) {\n this.inPageId = id;\n this.id = id === 0 ? 'root' : id.toString();\n this.converter = converter;\n }\n\n /**\n * Add Node3DIndexDocument data to the node\n * @param data Node3DIndexDocument data\n * @returns this NodeIndexDocument instance (to recurring with constructor)\n */\n public async addData(data: Node3DIndexDocument): Promise<NodeIndexDocument> {\n if (this.converter.options.instantNodeWriting) {\n await this.write(data);\n } else {\n this.data = data;\n }\n return this;\n }\n\n /**\n * Add child node references\n * @param childNodes - child NodeIndexDocument instances\n */\n public async addChildren(childNodes: NodeIndexDocument[]): Promise<void> {\n const newChildren: NodeReference[] = [];\n for (const node of childNodes) {\n const nodeData = await node.load();\n newChildren.push({\n id: node.id,\n href: `../${node.id}`,\n obb: nodeData.obb,\n mbs: nodeData.mbs\n });\n }\n this.children = this.children.concat(childNodes);\n\n let data: Node3DIndexDocument | null = this.data;\n if (this.converter.options.instantNodeWriting) {\n data = (await this.load()) as Node3DIndexDocument;\n }\n if (data) {\n data.children = data.children ?? [];\n data.children = data.children.concat(newChildren);\n }\n if (this.converter.options.instantNodeWriting && data) {\n await this.write(data);\n }\n }\n\n /**\n * Add neighbors to child nodes of this node\n */\n public async addNeighbors(): Promise<void> {\n if (this.finalized) {\n return;\n }\n const nodeData = await this.load();\n for (const childNode of this.children) {\n const childNodeData = await childNode.load();\n childNodeData.neighbors = childNodeData.neighbors ?? [];\n\n // Don't do large amount of \"neightbors\" to avoid big memory consumption\n if (Number(nodeData?.children?.length) < 1000) {\n for (const neighbor of nodeData.children || []) {\n if (childNode.id === neighbor.id) {\n continue; // eslint-disable-line\n }\n\n childNodeData.neighbors.push({...neighbor});\n }\n } else {\n // eslint-disable-next-line no-console, no-undef\n console.warn(\n `Node ${childNode.id}: neighbors attribute is omited because of large number of neigbors`\n );\n delete childNodeData.neighbors;\n }\n\n if (this.converter.options.instantNodeWriting && childNodeData) {\n await childNode.write(childNodeData);\n }\n await childNode.save();\n }\n // The save after adding neighbors is the last one. Finalize the the node\n this.finalize();\n }\n\n /** Save 3DNodeIndexDocument in file on disk */\n public async save(): Promise<void> {\n if (this.data) {\n await this.write(this.data);\n }\n }\n\n /** Finalize the node */\n private finalize(): void {\n this._finalized = true;\n for (const child of this.children) {\n child.flush();\n }\n }\n\n /**\n * Write 3DNodeIndexDocument https://github.com/Esri/i3s-spec/blob/master/docs/1.7/3DNodeIndexDocument.cmn.md\n * @param node - Node3DIndexDocument object\n */\n private async write(node: Node3DIndexDocument): Promise<void> {\n const path = join(this.converter.layers0Path, 'nodes', this.id);\n if (this.converter.options.slpk) {\n await this.converter.writeQueue.enqueue(\n {\n archiveKey: `nodes/${this.id}/3dNodeIndexDocument.json.gz`,\n writePromise: () =>\n writeFileForSlpk(\n path,\n JSON.stringify(node),\n '3dNodeIndexDocument.json',\n true,\n this.converter.compressList\n )\n },\n true\n );\n } else {\n await this.converter.writeQueue.enqueue(\n {writePromise: () => writeFile(path, JSON.stringify(node))},\n true\n );\n }\n }\n\n /**\n * Load 3DNodeIndexDocument data from file on disk\n * @returns 3DNodeIndexDocument object\n */\n private async load(): Promise<Node3DIndexDocument> {\n if (this.data) {\n return this.data;\n }\n const path = this.id;\n const parentNodePath = join(this.converter.layers0Path, 'nodes', path);\n let parentNodeFileName = 'index.json';\n if (this.converter.options.slpk) {\n parentNodeFileName = '3dNodeIndexDocument.json';\n }\n return (await openJson(parentNodePath, parentNodeFileName)) as Node3DIndexDocument;\n }\n\n /**\n * Unload the Node data\n */\n private flush(): void {\n this.data = null;\n }\n\n /**\n * Create root node of the tree\n * @param boundingVolumes - MBS and OOB bounding volumes data\n * @param converter - I3SConverter instance\n * @returns instance of NodeIndexDocument\n */\n static async createRootNode(\n boundingVolumes: BoundingVolumes,\n converter: I3SConverter\n ): Promise<NodeIndexDocument> {\n const rootData = NodeIndexDocument.createRootNodeIndexDocument(boundingVolumes);\n const rootNode = await new NodeIndexDocument(0, converter).addData(rootData);\n return rootNode;\n }\n\n /**\n * Create NodeIndexDocument instance\n * @param parentNode - parent NodeIndexDocument\n * @param boundingVolumes - MBS and OOB bounding volumes data\n * @param lodSelection - LOD metrics data\n * @param nodeInPage - node data in node pages\n * @param resources - resources extracted from gltf/b3dm file\n * @param converter - I3SConverter instance\n * @returns NodeIndexDocument instance\n */\n static async createNode(\n parentNode: NodeIndexDocument,\n boundingVolumes: BoundingVolumes,\n lodSelection: LodSelection[],\n nodeInPage: NodeInPage,\n resources: I3SConvertedResources,\n converter: I3SConverter\n ): Promise<NodeIndexDocument> {\n const data = await NodeIndexDocument.createNodeIndexDocument(\n parentNode,\n boundingVolumes,\n lodSelection,\n nodeInPage,\n resources\n );\n const node = await new NodeIndexDocument(nodeInPage.index, converter).addData(data);\n return node;\n }\n\n /**\n * Form 3DNodeIndexDocument data for the root node\n * @param boundingVolumes - mbs and obb data about node's bounding volume\n * @return 3DNodeIndexDocument data https://github.com/Esri/i3s-spec/blob/master/docs/1.7/3DNodeIndexDocument.cmn.md\n */\n static createRootNodeIndexDocument(boundingVolumes: BoundingVolumes): Node3DIndexDocument {\n const root0data = {\n version: `{${uuidv4().toUpperCase()}}`,\n id: 'root',\n level: 0,\n lodSelection: [\n {\n metricType: 'maxScreenThresholdSQ',\n maxError: 0\n },\n {\n metricType: 'maxScreenThreshold',\n maxError: 0\n }\n ],\n ...boundingVolumes,\n children: []\n };\n return transform(root0data, nodeTemplate());\n }\n\n /**\n * Create a new Node3DIndexDocument\n * @param parentNode - 3DNodeIndexDocument https://github.com/Esri/i3s-spec/blob/master/docs/1.7/3DNodeIndexDocument.cmn.md object of the parent node\n * @param boundingVolumes - Bounding volumes\n * @param lodSelection - Level of Details (LOD) metrics\n * @param nodeInPage - corresponding node object in a node page\n * @param resources - the node resources data\n * @param resources.texture - texture image\n * @param resources.attributes - feature attributes\n * @return 3DNodeIndexDocument https://github.com/Esri/i3s-spec/blob/master/docs/1.7/3DNodeIndexDocument.cmn.md object\n */\n static async createNodeIndexDocument(\n parentNode: NodeIndexDocument,\n boundingVolumes: BoundingVolumes,\n lodSelection: LodSelection[],\n nodeInPage: NodeInPage,\n resources: I3SConvertedResources\n ): Promise<Node3DIndexDocument> {\n const {texture, attributes} = resources;\n const nodeId = nodeInPage.index!;\n const parentNodeData = await parentNode.load();\n const nodeData = {\n version: parentNodeData.version,\n id: nodeId.toString(),\n level: parentNodeData.level! + 1,\n ...boundingVolumes,\n lodSelection,\n parentNode: {\n id: parentNode.id,\n href: `../${parentNode.id}`,\n mbs: parentNodeData.mbs,\n obb: parentNodeData.obb\n },\n children: [],\n neighbors: []\n };\n const node = transform(nodeData, nodeTemplate());\n\n if (nodeInPage.mesh) {\n node.geometryData = [{href: './geometries/0'}];\n node.sharedResource = {href: './shared'};\n\n if (texture) {\n node.textureData = [{href: './textures/0'}, {href: './textures/1'}];\n }\n\n if (\n attributes &&\n attributes.length &&\n parentNode.converter.layers0?.attributeStorageInfo?.length\n ) {\n node.attributeData = [];\n for (let index = 0; index < attributes.length; index++) {\n const folderName = parentNode.converter.layers0.attributeStorageInfo[index].key;\n node.attributeData.push({href: `./attributes/${folderName}/0`});\n }\n }\n }\n\n return node;\n }\n}\n"],"mappings":"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"}
|