@loaders.gl/tile-converter 3.3.0-alpha.5 → 3.3.0-alpha.6
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/dist/3d-tiles-attributes-worker.js +2 -3
- package/dist/3d-tiles-attributes-worker.js.map +3 -3
- package/dist/converter.min.js +23 -20
- package/dist/dist.min.js +38221 -46898
- package/dist/es5/3d-tiles-attributes-worker.js +3 -6
- package/dist/es5/3d-tiles-attributes-worker.js.map +1 -1
- package/dist/es5/3d-tiles-converter/3d-tiles-converter.js +12 -111
- package/dist/es5/3d-tiles-converter/3d-tiles-converter.js.map +1 -1
- package/dist/es5/3d-tiles-converter/helpers/b3dm-converter.js +32 -72
- package/dist/es5/3d-tiles-converter/helpers/b3dm-converter.js.map +1 -1
- package/dist/es5/3d-tiles-converter/helpers/i3s-obb-to-3d-tiles-obb.js +0 -8
- package/dist/es5/3d-tiles-converter/helpers/i3s-obb-to-3d-tiles-obb.js.map +1 -1
- package/dist/es5/3d-tiles-converter/helpers/texture-atlas.js +0 -5
- package/dist/es5/3d-tiles-converter/helpers/texture-atlas.js.map +1 -1
- package/dist/es5/3d-tiles-converter/json-templates/tileset.js +0 -6
- package/dist/es5/3d-tiles-converter/json-templates/tileset.js.map +1 -1
- package/dist/es5/bundle.js +0 -1
- package/dist/es5/bundle.js.map +1 -1
- package/dist/es5/constants.js.map +1 -1
- package/dist/es5/converter-cli.js +2 -53
- package/dist/es5/converter-cli.js.map +1 -1
- package/dist/es5/deps-installer/deps-installer.js +5 -35
- package/dist/es5/deps-installer/deps-installer.js.map +1 -1
- package/dist/es5/i3s-attributes-worker.js +3 -6
- package/dist/es5/i3s-attributes-worker.js.map +1 -1
- package/dist/es5/i3s-converter/helpers/batch-ids-extensions.js +2 -28
- package/dist/es5/i3s-converter/helpers/batch-ids-extensions.js.map +1 -1
- package/dist/es5/i3s-converter/helpers/coordinate-converter.js +2 -20
- package/dist/es5/i3s-converter/helpers/coordinate-converter.js.map +1 -1
- package/dist/es5/i3s-converter/helpers/create-scene-server-path.js +0 -11
- package/dist/es5/i3s-converter/helpers/create-scene-server-path.js.map +1 -1
- package/dist/es5/i3s-converter/helpers/feature-attributes.js +5 -34
- package/dist/es5/i3s-converter/helpers/feature-attributes.js.map +1 -1
- package/dist/es5/i3s-converter/helpers/geometry-attributes.js +13 -45
- package/dist/es5/i3s-converter/helpers/geometry-attributes.js.map +1 -1
- package/dist/es5/i3s-converter/helpers/geometry-converter.js +26 -221
- package/dist/es5/i3s-converter/helpers/geometry-converter.js.map +1 -1
- package/dist/es5/i3s-converter/helpers/gltf-attributes.js +2 -16
- package/dist/es5/i3s-converter/helpers/gltf-attributes.js.map +1 -1
- package/dist/es5/i3s-converter/helpers/node-debug.js +4 -23
- package/dist/es5/i3s-converter/helpers/node-debug.js.map +1 -1
- package/dist/es5/i3s-converter/helpers/node-pages.js +50 -86
- package/dist/es5/i3s-converter/helpers/node-pages.js.map +1 -1
- package/dist/es5/i3s-converter/i3s-converter.js +43 -360
- package/dist/es5/i3s-converter/i3s-converter.js.map +1 -1
- package/dist/es5/i3s-converter/json-templates/layers.js +1 -15
- package/dist/es5/i3s-converter/json-templates/layers.js.map +1 -1
- package/dist/es5/i3s-converter/json-templates/metadata.js +0 -2
- package/dist/es5/i3s-converter/json-templates/metadata.js.map +1 -1
- package/dist/es5/i3s-converter/json-templates/node.js +2 -12
- package/dist/es5/i3s-converter/json-templates/node.js.map +1 -1
- package/dist/es5/i3s-converter/json-templates/scene-server.js +0 -2
- package/dist/es5/i3s-converter/json-templates/scene-server.js.map +1 -1
- package/dist/es5/i3s-converter/json-templates/shared-resources.js +6 -29
- package/dist/es5/i3s-converter/json-templates/shared-resources.js.map +1 -1
- package/dist/es5/i3s-converter/json-templates/store.js.map +1 -1
- package/dist/es5/i3s-converter/types.js.map +1 -1
- package/dist/es5/i3s-server/app.js +0 -5
- package/dist/es5/i3s-server/app.js.map +1 -1
- package/dist/es5/i3s-server/controllers/index-controller.js +0 -16
- package/dist/es5/i3s-server/controllers/index-controller.js.map +1 -1
- package/dist/es5/i3s-server/routes/index.js +1 -10
- package/dist/es5/i3s-server/routes/index.js.map +1 -1
- package/dist/es5/index.js +0 -3
- package/dist/es5/index.js.map +1 -1
- package/dist/es5/lib/utils/compress-util.js +19 -74
- package/dist/es5/lib/utils/compress-util.js.map +1 -1
- package/dist/es5/lib/utils/file-utils.js +10 -38
- package/dist/es5/lib/utils/file-utils.js.map +1 -1
- package/dist/es5/lib/utils/lod-conversion-utils.js +0 -7
- package/dist/es5/lib/utils/lod-conversion-utils.js.map +1 -1
- package/dist/es5/lib/utils/queue.js +0 -14
- package/dist/es5/lib/utils/queue.js.map +1 -1
- package/dist/es5/lib/utils/statistic-utills.js +1 -46
- package/dist/es5/lib/utils/statistic-utills.js.map +1 -1
- package/dist/es5/lib/utils/write-queue.js +0 -52
- package/dist/es5/lib/utils/write-queue.js.map +1 -1
- package/dist/es5/pgm-loader.js +1 -8
- package/dist/es5/pgm-loader.js.map +1 -1
- package/dist/es5/workers/3d-tiles-attributes-worker.js +1 -8
- package/dist/es5/workers/3d-tiles-attributes-worker.js.map +1 -1
- package/dist/es5/workers/i3s-attributes-worker.js +1 -9
- package/dist/es5/workers/i3s-attributes-worker.js.map +1 -1
- package/dist/esm/3d-tiles-attributes-worker.js +3 -1
- package/dist/esm/3d-tiles-attributes-worker.js.map +1 -1
- package/dist/esm/3d-tiles-converter/3d-tiles-converter.js +8 -40
- package/dist/esm/3d-tiles-converter/3d-tiles-converter.js.map +1 -1
- package/dist/esm/3d-tiles-converter/helpers/b3dm-converter.js +7 -38
- package/dist/esm/3d-tiles-converter/helpers/b3dm-converter.js.map +1 -1
- package/dist/esm/3d-tiles-converter/helpers/i3s-obb-to-3d-tiles-obb.js +1 -0
- package/dist/esm/3d-tiles-converter/helpers/i3s-obb-to-3d-tiles-obb.js.map +1 -1
- package/dist/esm/3d-tiles-converter/helpers/texture-atlas.js +1 -4
- package/dist/esm/3d-tiles-converter/helpers/texture-atlas.js.map +1 -1
- package/dist/esm/3d-tiles-converter/json-templates/tileset.js +0 -3
- package/dist/esm/3d-tiles-converter/json-templates/tileset.js.map +1 -1
- package/dist/esm/bundle.js +1 -1
- package/dist/esm/bundle.js.map +1 -1
- package/dist/esm/constants.js.map +1 -1
- package/dist/esm/converter-cli.js +3 -38
- package/dist/esm/converter-cli.js.map +1 -1
- package/dist/esm/deps-installer/deps-installer.js +6 -7
- package/dist/esm/deps-installer/deps-installer.js.map +1 -1
- package/dist/esm/i3s-attributes-worker.js +3 -1
- package/dist/esm/i3s-attributes-worker.js.map +1 -1
- package/dist/esm/i3s-converter/helpers/batch-ids-extensions.js +4 -23
- package/dist/esm/i3s-converter/helpers/batch-ids-extensions.js.map +1 -1
- package/dist/esm/i3s-converter/helpers/coordinate-converter.js +4 -6
- package/dist/esm/i3s-converter/helpers/coordinate-converter.js.map +1 -1
- package/dist/esm/i3s-converter/helpers/create-scene-server-path.js +1 -0
- package/dist/esm/i3s-converter/helpers/create-scene-server-path.js.map +1 -1
- package/dist/esm/i3s-converter/helpers/feature-attributes.js +6 -20
- package/dist/esm/i3s-converter/helpers/feature-attributes.js.map +1 -1
- package/dist/esm/i3s-converter/helpers/geometry-attributes.js +3 -22
- package/dist/esm/i3s-converter/helpers/geometry-attributes.js.map +1 -1
- package/dist/esm/i3s-converter/helpers/geometry-converter.js +28 -139
- package/dist/esm/i3s-converter/helpers/geometry-converter.js.map +1 -1
- package/dist/esm/i3s-converter/helpers/gltf-attributes.js +7 -12
- package/dist/esm/i3s-converter/helpers/gltf-attributes.js.map +1 -1
- package/dist/esm/i3s-converter/helpers/node-debug.js +3 -13
- package/dist/esm/i3s-converter/helpers/node-debug.js.map +1 -1
- package/dist/esm/i3s-converter/helpers/node-pages.js +2 -21
- package/dist/esm/i3s-converter/helpers/node-pages.js.map +1 -1
- package/dist/esm/i3s-converter/i3s-converter.js +49 -137
- package/dist/esm/i3s-converter/i3s-converter.js.map +1 -1
- package/dist/esm/i3s-converter/json-templates/layers.js +1 -11
- package/dist/esm/i3s-converter/json-templates/layers.js.map +1 -1
- package/dist/esm/i3s-converter/json-templates/metadata.js.map +1 -1
- package/dist/esm/i3s-converter/json-templates/node.js +0 -4
- package/dist/esm/i3s-converter/json-templates/node.js.map +1 -1
- package/dist/esm/i3s-converter/json-templates/scene-server.js.map +1 -1
- package/dist/esm/i3s-converter/json-templates/shared-resources.js +0 -12
- package/dist/esm/i3s-converter/json-templates/shared-resources.js.map +1 -1
- package/dist/esm/i3s-converter/json-templates/store.js.map +1 -1
- package/dist/esm/i3s-converter/types.js.map +1 -1
- package/dist/esm/i3s-server/app.js +0 -5
- package/dist/esm/i3s-server/app.js.map +1 -1
- package/dist/esm/i3s-server/controllers/index-controller.js +0 -5
- package/dist/esm/i3s-server/controllers/index-controller.js.map +1 -1
- package/dist/esm/i3s-server/routes/index.js +0 -3
- package/dist/esm/i3s-server/routes/index.js.map +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/lib/utils/compress-util.js +19 -12
- package/dist/esm/lib/utils/compress-util.js.map +1 -1
- package/dist/esm/lib/utils/file-utils.js +10 -8
- package/dist/esm/lib/utils/file-utils.js.map +1 -1
- package/dist/esm/lib/utils/lod-conversion-utils.js +2 -6
- package/dist/esm/lib/utils/lod-conversion-utils.js.map +1 -1
- package/dist/esm/lib/utils/queue.js +0 -4
- package/dist/esm/lib/utils/queue.js.map +1 -1
- package/dist/esm/lib/utils/statistic-utills.js +0 -11
- package/dist/esm/lib/utils/statistic-utills.js.map +1 -1
- package/dist/esm/lib/utils/write-queue.js +5 -23
- package/dist/esm/lib/utils/write-queue.js.map +1 -1
- package/dist/esm/pgm-loader.js +3 -1
- package/dist/esm/pgm-loader.js.map +1 -1
- package/dist/esm/workers/3d-tiles-attributes-worker.js +4 -1
- package/dist/esm/workers/3d-tiles-attributes-worker.js.map +1 -1
- package/dist/esm/workers/i3s-attributes-worker.js +4 -1
- package/dist/esm/workers/i3s-attributes-worker.js.map +1 -1
- package/dist/i3s-attributes-worker.js +2 -3
- package/dist/i3s-attributes-worker.js.map +3 -3
- package/dist/i3s-converter/helpers/geometry-converter.d.ts.map +1 -1
- package/dist/i3s-converter/helpers/geometry-converter.js +2 -0
- package/dist/i3s-converter/i3s-converter.js +5 -1
- package/dist/pgm-loader.d.ts.map +1 -1
- package/dist/pgm-loader.js +2 -1
- package/package.json +15 -15
- package/src/i3s-converter/helpers/geometry-converter.ts +2 -0
- package/src/pgm-loader.ts +2 -2
|
@@ -4,22 +4,16 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.validateNodeBoundingVolumes = validateNodeBoundingVolumes;
|
|
7
|
-
|
|
8
7
|
var _culling = require("@math.gl/culling");
|
|
9
|
-
|
|
10
8
|
var _engine = require("@luma.gl/engine");
|
|
11
|
-
|
|
12
9
|
var _core = require("@math.gl/core");
|
|
13
|
-
|
|
14
10
|
var _geospatial = require("@math.gl/geospatial");
|
|
15
11
|
|
|
16
12
|
function validateNodeBoundingVolumes(node) {
|
|
17
13
|
var _node$parentNode, _node$parentNode2;
|
|
18
|
-
|
|
19
14
|
if (!(node !== null && node !== void 0 && (_node$parentNode = node.parentNode) !== null && _node$parentNode !== void 0 && _node$parentNode.obb) || !(node !== null && node !== void 0 && (_node$parentNode2 = node.parentNode) !== null && _node$parentNode2 !== void 0 && _node$parentNode2.mbs)) {
|
|
20
15
|
return [];
|
|
21
16
|
}
|
|
22
|
-
|
|
23
17
|
var tileWarnings = [];
|
|
24
18
|
validateObb(tileWarnings, node);
|
|
25
19
|
validateMbs(tileWarnings, node);
|
|
@@ -28,15 +22,12 @@ function validateNodeBoundingVolumes(node) {
|
|
|
28
22
|
|
|
29
23
|
function validateObb(tileWarnings, node) {
|
|
30
24
|
var _node$parentNode3;
|
|
31
|
-
|
|
32
25
|
var parentObb = createBoundingBoxFromTileObb(node.parentNode.obb);
|
|
33
26
|
var tileVertices = getTileObbVertices(node);
|
|
34
27
|
var isTileObbInsideParentObb = isAllVerticesInsideBoundingVolume(parentObb, tileVertices);
|
|
35
|
-
|
|
36
28
|
if (isTileObbInsideParentObb) {
|
|
37
29
|
return;
|
|
38
30
|
}
|
|
39
|
-
|
|
40
31
|
var title = "OBB of Tile (".concat(node.id, ") doesn't fit into Parent (").concat((_node$parentNode3 = node.parentNode) === null || _node$parentNode3 === void 0 ? void 0 : _node$parentNode3.id, ") tile OBB");
|
|
41
32
|
tileWarnings.push(title);
|
|
42
33
|
}
|
|
@@ -45,10 +36,8 @@ function validateMbs(tileWarnings, node) {
|
|
|
45
36
|
var tileMbs = createBoundingSphereFromTileMbs(node.mbs);
|
|
46
37
|
var parentMbs = createBoundingSphereFromTileMbs(node.parentNode.mbs);
|
|
47
38
|
var distanceBetweenCenters = tileMbs.center.distanceTo(parentMbs.center);
|
|
48
|
-
|
|
49
39
|
if (distanceBetweenCenters + tileMbs.radius > parentMbs.radius) {
|
|
50
40
|
var _node$parentNode4;
|
|
51
|
-
|
|
52
41
|
var title = "MBS of Tile (".concat(node.id, ") doesn't fit into Parent (").concat((_node$parentNode4 = node.parentNode) === null || _node$parentNode4 === void 0 ? void 0 : _node$parentNode4.id, ") tile MBS");
|
|
53
42
|
tileWarnings.push(title);
|
|
54
43
|
}
|
|
@@ -60,8 +49,8 @@ function createBoundingSphereFromTileMbs(mbs) {
|
|
|
60
49
|
|
|
61
50
|
function createBoundingBoxFromTileObb(obb) {
|
|
62
51
|
var center = obb.center,
|
|
63
|
-
|
|
64
|
-
|
|
52
|
+
halfSize = obb.halfSize,
|
|
53
|
+
quaternion = obb.quaternion;
|
|
65
54
|
return new _culling.OrientedBoundingBox().fromCenterHalfSizeQuaternion(center, halfSize, quaternion);
|
|
66
55
|
}
|
|
67
56
|
|
|
@@ -70,36 +59,28 @@ function getTileObbVertices(node) {
|
|
|
70
59
|
var halfSize = node.obb.halfSize;
|
|
71
60
|
var attributes = geometry.getAttributes();
|
|
72
61
|
var positions = new Float32Array(attributes.POSITION.value);
|
|
73
|
-
|
|
74
62
|
var obbCenterCartesian = _geospatial.Ellipsoid.WGS84.cartographicToCartesian(node.obb.center);
|
|
75
|
-
|
|
76
63
|
var vertices = [];
|
|
77
|
-
|
|
78
64
|
for (var i = 0; i < positions.length; i += 3) {
|
|
79
65
|
var positionsVector = new _core.Vector3(positions[i] *= halfSize[0], positions[i + 1] *= halfSize[1], positions[i + 2] *= halfSize[2]);
|
|
80
|
-
var rotatedPositions = positionsVector
|
|
66
|
+
var rotatedPositions = positionsVector
|
|
67
|
+
.transformByQuaternion(node.obb.quaternion).add(obbCenterCartesian);
|
|
81
68
|
vertices = vertices.concat(rotatedPositions);
|
|
82
69
|
}
|
|
83
|
-
|
|
84
70
|
return vertices;
|
|
85
71
|
}
|
|
86
72
|
|
|
87
73
|
function isAllVerticesInsideBoundingVolume(boundingVolume, positions) {
|
|
88
74
|
var isVerticesInsideObb = true;
|
|
89
|
-
|
|
90
75
|
for (var index = 0; index < positions.length / 3; index += 3) {
|
|
91
76
|
var point = [positions[index], positions[index + 1], positions[index + 2]];
|
|
92
|
-
|
|
93
77
|
var cartographicPoint = _geospatial.Ellipsoid.WGS84.cartesianToCartographic(point);
|
|
94
|
-
|
|
95
78
|
var distance = boundingVolume.distanceTo(cartographicPoint);
|
|
96
|
-
|
|
97
79
|
if (distance > 0) {
|
|
98
80
|
isVerticesInsideObb = false;
|
|
99
81
|
break;
|
|
100
82
|
}
|
|
101
83
|
}
|
|
102
|
-
|
|
103
84
|
return isVerticesInsideObb;
|
|
104
85
|
}
|
|
105
86
|
//# sourceMappingURL=node-debug.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"node-debug.js","names":["validateNodeBoundingVolumes","node","parentNode","obb","mbs","tileWarnings","validateObb","validateMbs","parentObb","createBoundingBoxFromTileObb","tileVertices","getTileObbVertices","isTileObbInsideParentObb","isAllVerticesInsideBoundingVolume","title","id","push","tileMbs","createBoundingSphereFromTileMbs","parentMbs","distanceBetweenCenters","center","distanceTo","radius","BoundingSphere","halfSize","quaternion","OrientedBoundingBox","fromCenterHalfSizeQuaternion","geometry","CubeGeometry","attributes","getAttributes","positions","Float32Array","POSITION","value","obbCenterCartesian","Ellipsoid","WGS84","cartographicToCartesian","vertices","i","length","positionsVector","Vector3","rotatedPositions","transformByQuaternion","add","concat","boundingVolume","isVerticesInsideObb","index","point","cartographicPoint","cartesianToCartographic","distance"],"sources":["../../../../src/i3s-converter/helpers/node-debug.ts"],"sourcesContent":["import type {Mbs, Node3DIndexDocument, Obb} from '@loaders.gl/i3s';\n\nimport {OrientedBoundingBox, BoundingSphere} from '@math.gl/culling';\nimport {CubeGeometry} from '@luma.gl/engine';\nimport {Vector3} from '@math.gl/core';\nimport {Ellipsoid} from '@math.gl/geospatial';\n\n// TODO Unite Tile validation logic in i3s-17-and-debug with this code.\n\n/**\n * Do validation of bounding volumes for particular node.\n * Generates special warnings if there are some issues.\n * @param node\n */\nexport function validateNodeBoundingVolumes(node: Node3DIndexDocument): string[] {\n if (!node?.parentNode?.obb || !node?.parentNode?.mbs) {\n return [];\n }\n\n const tileWarnings: string[] = [];\n\n validateObb(tileWarnings, node);\n validateMbs(tileWarnings, node);\n\n return tileWarnings;\n}\n\n/**\n * Check if child Obb fit into parent Obb.\n * @param tileWarnings\n * @param node\n */\nfunction validateObb(tileWarnings: string[], node: Node3DIndexDocument): void {\n // @ts-expect-error\n const parentObb = createBoundingBoxFromTileObb(node.parentNode.obb);\n const tileVertices = getTileObbVertices(node);\n const isTileObbInsideParentObb = isAllVerticesInsideBoundingVolume(parentObb, tileVertices);\n\n if (isTileObbInsideParentObb) {\n return;\n }\n\n const title = `OBB of Tile (${node.id}) doesn't fit into Parent (${node.parentNode?.id}) tile OBB`;\n tileWarnings.push(title);\n}\n\n/**\n * Check if child Mbs fit into parent Mbs.\n * @param tileWarnings\n * @param node\n */\nfunction validateMbs(tileWarnings: string[], node: Node3DIndexDocument): void {\n // @ts-expect-error\n const tileMbs = createBoundingSphereFromTileMbs(node.mbs);\n // @ts-expect-error\n const parentMbs = createBoundingSphereFromTileMbs(node.parentNode.mbs);\n const distanceBetweenCenters = tileMbs.center.distanceTo(parentMbs.center);\n\n if (distanceBetweenCenters + tileMbs.radius > parentMbs.radius) {\n const title = `MBS of Tile (${node.id}) doesn't fit into Parent (${node.parentNode?.id}) tile MBS`;\n tileWarnings.push(title);\n }\n}\n\n/**\n * Generates bounding sphere from mbs\n * @param mbs\n */\nfunction createBoundingSphereFromTileMbs(mbs: Mbs): BoundingSphere {\n return new BoundingSphere([mbs[0], mbs[1], mbs[2]], mbs[3]);\n}\n\n/**\n * Generates oriented bounding box from tile obb\n * @param obb\n * @returns\n */\nfunction createBoundingBoxFromTileObb(obb: Obb): OrientedBoundingBox {\n const {center, halfSize, quaternion} = obb;\n return new OrientedBoundingBox().fromCenterHalfSizeQuaternion(center, halfSize, quaternion);\n}\n\n/**\n * Get vertices fromnode obb\n * TODO check if Obb generates properly\n * @param node\n */\nfunction getTileObbVertices(node: Node3DIndexDocument): number[] {\n const geometry = new CubeGeometry();\n // @ts-expect-error\n const halfSize = node.obb.halfSize;\n const attributes = geometry.getAttributes();\n const positions = new Float32Array(attributes.POSITION.value);\n // @ts-expect-error\n const obbCenterCartesian = Ellipsoid.WGS84.cartographicToCartesian(node.obb.center);\n\n let vertices = [];\n\n for (let i = 0; i < positions.length; i += 3) {\n const positionsVector = new Vector3(\n (positions[i] *= halfSize[0]),\n (positions[i + 1] *= halfSize[1]),\n (positions[i + 2] *= halfSize[2])\n );\n const rotatedPositions = positionsVector\n // @ts-expect-error\n .transformByQuaternion(node.obb.quaternion)\n .add(obbCenterCartesian);\n // @ts-expect-error\n vertices = vertices.concat(rotatedPositions);\n }\n\n return vertices;\n}\n\n/**\n * Check if all vertices inside bounding volume\n * @param boundingVolume\n * @param positions\n */\nfunction isAllVerticesInsideBoundingVolume(\n boundingVolume: OrientedBoundingBox,\n positions: number[]\n): boolean {\n let isVerticesInsideObb = true;\n\n for (let index = 0; index < positions.length / 3; index += 3) {\n const point = [positions[index], positions[index + 1], positions[index + 2]];\n const cartographicPoint = Ellipsoid.WGS84.cartesianToCartographic(point);\n\n const distance = boundingVolume.distanceTo(cartographicPoint);\n\n if (distance > 0) {\n isVerticesInsideObb = false;\n break;\n }\n }\n\n return isVerticesInsideObb;\n}\n"],"mappings":"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"}
|
|
@@ -1,36 +1,22 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
4
|
Object.defineProperty(exports, "__esModule", {
|
|
6
5
|
value: true
|
|
7
6
|
});
|
|
8
7
|
exports.default = void 0;
|
|
9
|
-
|
|
10
8
|
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
11
|
-
|
|
12
9
|
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
13
|
-
|
|
14
10
|
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
15
|
-
|
|
16
11
|
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
17
|
-
|
|
18
12
|
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
19
|
-
|
|
20
13
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
21
|
-
|
|
22
14
|
var _path = require("path");
|
|
23
|
-
|
|
24
15
|
var _jsonMapTransform = _interopRequireDefault(require("json-map-transform"));
|
|
25
|
-
|
|
26
16
|
var _metadata = require("../json-templates/metadata");
|
|
27
|
-
|
|
28
17
|
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; } } }; }
|
|
29
|
-
|
|
30
18
|
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); }
|
|
31
|
-
|
|
32
19
|
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; }
|
|
33
|
-
|
|
34
20
|
var NodePages = function () {
|
|
35
21
|
function NodePages(writeFileFunc, nodesPerPage) {
|
|
36
22
|
(0, _classCallCheck2.default)(this, NodePages);
|
|
@@ -47,164 +33,166 @@ var NodePages = function () {
|
|
|
47
33
|
|
|
48
34
|
(0, _createClass2.default)(NodePages, [{
|
|
49
35
|
key: "useWriteFunction",
|
|
50
|
-
value:
|
|
36
|
+
value:
|
|
37
|
+
function useWriteFunction(func) {
|
|
51
38
|
this.writeFile = func;
|
|
52
39
|
}
|
|
40
|
+
|
|
53
41
|
}, {
|
|
54
42
|
key: "getNodeById",
|
|
55
|
-
value:
|
|
43
|
+
value:
|
|
44
|
+
function getNodeById(id) {
|
|
56
45
|
var pageIndex = Math.floor(id / this.nodesPerPage);
|
|
57
46
|
var nodeIndex = id % this.nodesPerPage;
|
|
58
47
|
return this.nodePages[pageIndex].nodes[nodeIndex];
|
|
59
48
|
}
|
|
49
|
+
|
|
60
50
|
}, {
|
|
61
51
|
key: "updateAll",
|
|
62
|
-
value:
|
|
52
|
+
value:
|
|
53
|
+
function updateAll(id, data) {
|
|
63
54
|
var node = this.getNodeById(id);
|
|
64
55
|
Object.assign(node, data, {
|
|
65
56
|
index: node.index
|
|
66
57
|
});
|
|
67
58
|
}
|
|
59
|
+
|
|
68
60
|
}, {
|
|
69
61
|
key: "updateMaterialByNodeId",
|
|
70
|
-
value:
|
|
62
|
+
value:
|
|
63
|
+
function updateMaterialByNodeId(id, materialId) {
|
|
71
64
|
var node = this.getNodeById(id);
|
|
72
|
-
|
|
73
65
|
if (!node.mesh) {
|
|
74
66
|
return;
|
|
75
67
|
}
|
|
76
|
-
|
|
77
68
|
node.mesh.material = {
|
|
78
69
|
definition: materialId,
|
|
79
70
|
resource: node.index
|
|
80
71
|
};
|
|
81
72
|
}
|
|
73
|
+
|
|
82
74
|
}, {
|
|
83
75
|
key: "updateVertexCountByNodeId",
|
|
84
|
-
value:
|
|
76
|
+
value:
|
|
77
|
+
function updateVertexCountByNodeId(id, vertexCount) {
|
|
85
78
|
var node = this.getNodeById(id);
|
|
86
|
-
|
|
87
79
|
if (!node.mesh) {
|
|
88
80
|
return;
|
|
89
81
|
}
|
|
90
|
-
|
|
91
82
|
node.mesh.geometry.vertexCount = vertexCount;
|
|
92
83
|
}
|
|
84
|
+
|
|
93
85
|
}, {
|
|
94
86
|
key: "updateNodeAttributeByNodeId",
|
|
95
|
-
value:
|
|
87
|
+
value:
|
|
88
|
+
function updateNodeAttributeByNodeId(id) {
|
|
96
89
|
var node = this.getNodeById(id);
|
|
97
|
-
|
|
98
90
|
if (!node.mesh || !node.index) {
|
|
99
91
|
return;
|
|
100
92
|
}
|
|
101
|
-
|
|
102
93
|
node.mesh.attribute.resource = node.index;
|
|
103
94
|
}
|
|
95
|
+
|
|
104
96
|
}, {
|
|
105
97
|
key: "updateFeatureCountByNodeId",
|
|
106
|
-
value:
|
|
98
|
+
value:
|
|
99
|
+
function updateFeatureCountByNodeId(id, featureCount) {
|
|
107
100
|
var node = this.getNodeById(id);
|
|
108
|
-
|
|
109
101
|
if (!node.mesh) {
|
|
110
102
|
return;
|
|
111
103
|
}
|
|
112
|
-
|
|
113
104
|
node.mesh.geometry.featureCount = featureCount;
|
|
114
105
|
}
|
|
106
|
+
|
|
115
107
|
}, {
|
|
116
108
|
key: "updateTexelCountHintByNodeId",
|
|
117
|
-
value:
|
|
109
|
+
value:
|
|
110
|
+
function updateTexelCountHintByNodeId(id, texelCountHint) {
|
|
118
111
|
var node = this.getNodeById(id);
|
|
119
|
-
|
|
120
112
|
if (!node.mesh || !node.mesh.material) {
|
|
121
113
|
return;
|
|
122
114
|
}
|
|
123
|
-
|
|
124
115
|
node.mesh.material.texelCountHint = texelCountHint;
|
|
125
116
|
}
|
|
117
|
+
|
|
126
118
|
}, {
|
|
127
119
|
key: "addChildRelation",
|
|
128
|
-
value:
|
|
120
|
+
value:
|
|
121
|
+
function addChildRelation(parentId, childId) {
|
|
129
122
|
var _parentNode$children;
|
|
130
|
-
|
|
131
123
|
if (parentId === null || parentId === undefined) {
|
|
132
124
|
return;
|
|
133
125
|
}
|
|
134
|
-
|
|
135
126
|
var parentNode = this.getNodeById(parentId);
|
|
136
127
|
(_parentNode$children = parentNode.children) === null || _parentNode$children === void 0 ? void 0 : _parentNode$children.push(childId);
|
|
137
128
|
}
|
|
129
|
+
|
|
138
130
|
}, {
|
|
139
131
|
key: "updateResourceInMesh",
|
|
140
|
-
value:
|
|
132
|
+
value:
|
|
133
|
+
function updateResourceInMesh(node) {
|
|
141
134
|
if (node.mesh && isFinite(node.index)) {
|
|
142
135
|
node.mesh.geometry.resource = node.index;
|
|
143
136
|
}
|
|
144
137
|
}
|
|
138
|
+
|
|
145
139
|
}, {
|
|
146
140
|
key: "push",
|
|
147
|
-
value:
|
|
141
|
+
value:
|
|
142
|
+
function push(node, parentId) {
|
|
148
143
|
var currentNodePage = this.nodePages[this.nodePages.length - 1];
|
|
149
|
-
|
|
150
144
|
if (currentNodePage.nodes.length === this.nodesPerPage) {
|
|
151
145
|
currentNodePage = {
|
|
152
146
|
nodes: []
|
|
153
147
|
};
|
|
154
148
|
this.nodePages.push(currentNodePage);
|
|
155
149
|
}
|
|
156
|
-
|
|
157
150
|
node.index = this.nodesCounter++;
|
|
158
151
|
currentNodePage.nodes.push(node);
|
|
159
152
|
this.addChildRelation(parentId, node.index);
|
|
160
153
|
this.updateResourceInMesh(node);
|
|
161
154
|
return node.index;
|
|
162
155
|
}
|
|
156
|
+
|
|
163
157
|
}, {
|
|
164
158
|
key: "save",
|
|
165
159
|
value: function () {
|
|
166
160
|
var _save = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee(layers0Path, writeQueue) {
|
|
167
161
|
var slpk,
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
162
|
+
_iterator,
|
|
163
|
+
_step,
|
|
164
|
+
_step$value,
|
|
165
|
+
index,
|
|
166
|
+
nodePage,
|
|
167
|
+
nodePageStr,
|
|
168
|
+
slpkPath,
|
|
169
|
+
metadata,
|
|
170
|
+
compress,
|
|
171
|
+
_iterator2,
|
|
172
|
+
_step2,
|
|
173
|
+
_step2$value,
|
|
174
|
+
_index,
|
|
175
|
+
_nodePage,
|
|
176
|
+
_nodePageStr,
|
|
177
|
+
nodePagePath,
|
|
178
|
+
_args = arguments;
|
|
186
179
|
return _regenerator.default.wrap(function _callee$(_context) {
|
|
187
180
|
while (1) {
|
|
188
181
|
switch (_context.prev = _context.next) {
|
|
189
182
|
case 0:
|
|
190
183
|
slpk = _args.length > 2 && _args[2] !== undefined ? _args[2] : false;
|
|
191
|
-
|
|
192
184
|
if (!slpk) {
|
|
193
185
|
_context.next = 27;
|
|
194
186
|
break;
|
|
195
187
|
}
|
|
196
|
-
|
|
197
188
|
_iterator = _createForOfIteratorHelper(this.nodePages.entries());
|
|
198
189
|
_context.prev = 3;
|
|
199
|
-
|
|
200
190
|
_iterator.s();
|
|
201
|
-
|
|
202
191
|
case 5:
|
|
203
192
|
if ((_step = _iterator.n()).done) {
|
|
204
193
|
_context.next = 13;
|
|
205
194
|
break;
|
|
206
195
|
}
|
|
207
|
-
|
|
208
196
|
_step$value = (0, _slicedToArray2.default)(_step.value, 2), index = _step$value[0], nodePage = _step$value[1];
|
|
209
197
|
nodePageStr = JSON.stringify(nodePage);
|
|
210
198
|
slpkPath = (0, _path.join)(layers0Path, 'nodepages');
|
|
@@ -213,28 +201,20 @@ var NodePages = function () {
|
|
|
213
201
|
archiveKey: "nodePages/".concat(index.toString(), ".json.gz"),
|
|
214
202
|
writePromise: this.writeFile(slpkPath, nodePageStr, "".concat(index.toString(), ".json"))
|
|
215
203
|
});
|
|
216
|
-
|
|
217
204
|
case 11:
|
|
218
205
|
_context.next = 5;
|
|
219
206
|
break;
|
|
220
|
-
|
|
221
207
|
case 13:
|
|
222
208
|
_context.next = 18;
|
|
223
209
|
break;
|
|
224
|
-
|
|
225
210
|
case 15:
|
|
226
211
|
_context.prev = 15;
|
|
227
212
|
_context.t0 = _context["catch"](3);
|
|
228
|
-
|
|
229
213
|
_iterator.e(_context.t0);
|
|
230
|
-
|
|
231
214
|
case 18:
|
|
232
215
|
_context.prev = 18;
|
|
233
|
-
|
|
234
216
|
_iterator.f();
|
|
235
|
-
|
|
236
217
|
return _context.finish(18);
|
|
237
|
-
|
|
238
218
|
case 21:
|
|
239
219
|
metadata = (0, _jsonMapTransform.default)({
|
|
240
220
|
nodeCount: this.nodesCounter
|
|
@@ -245,23 +225,18 @@ var NodePages = function () {
|
|
|
245
225
|
archiveKey: 'metadata.json',
|
|
246
226
|
writePromise: this.writeFile(layers0Path, JSON.stringify(metadata), 'metadata.json', compress)
|
|
247
227
|
});
|
|
248
|
-
|
|
249
228
|
case 25:
|
|
250
229
|
_context.next = 46;
|
|
251
230
|
break;
|
|
252
|
-
|
|
253
231
|
case 27:
|
|
254
232
|
_iterator2 = _createForOfIteratorHelper(this.nodePages.entries());
|
|
255
233
|
_context.prev = 28;
|
|
256
|
-
|
|
257
234
|
_iterator2.s();
|
|
258
|
-
|
|
259
235
|
case 30:
|
|
260
236
|
if ((_step2 = _iterator2.n()).done) {
|
|
261
237
|
_context.next = 38;
|
|
262
238
|
break;
|
|
263
239
|
}
|
|
264
|
-
|
|
265
240
|
_step2$value = (0, _slicedToArray2.default)(_step2.value, 2), _index = _step2$value[0], _nodePage = _step2$value[1];
|
|
266
241
|
_nodePageStr = JSON.stringify(_nodePage);
|
|
267
242
|
nodePagePath = (0, _path.join)(layers0Path, 'nodepages', _index.toString());
|
|
@@ -269,28 +244,20 @@ var NodePages = function () {
|
|
|
269
244
|
return writeQueue.enqueue({
|
|
270
245
|
writePromise: this.writeFile(nodePagePath, _nodePageStr)
|
|
271
246
|
});
|
|
272
|
-
|
|
273
247
|
case 36:
|
|
274
248
|
_context.next = 30;
|
|
275
249
|
break;
|
|
276
|
-
|
|
277
250
|
case 38:
|
|
278
251
|
_context.next = 43;
|
|
279
252
|
break;
|
|
280
|
-
|
|
281
253
|
case 40:
|
|
282
254
|
_context.prev = 40;
|
|
283
255
|
_context.t1 = _context["catch"](28);
|
|
284
|
-
|
|
285
256
|
_iterator2.e(_context.t1);
|
|
286
|
-
|
|
287
257
|
case 43:
|
|
288
258
|
_context.prev = 43;
|
|
289
|
-
|
|
290
259
|
_iterator2.f();
|
|
291
|
-
|
|
292
260
|
return _context.finish(43);
|
|
293
|
-
|
|
294
261
|
case 46:
|
|
295
262
|
case "end":
|
|
296
263
|
return _context.stop();
|
|
@@ -298,16 +265,13 @@ var NodePages = function () {
|
|
|
298
265
|
}
|
|
299
266
|
}, _callee, this, [[3, 15, 18, 21], [28, 40, 43, 46]]);
|
|
300
267
|
}));
|
|
301
|
-
|
|
302
268
|
function save(_x, _x2) {
|
|
303
269
|
return _save.apply(this, arguments);
|
|
304
270
|
}
|
|
305
|
-
|
|
306
271
|
return save;
|
|
307
272
|
}()
|
|
308
273
|
}]);
|
|
309
274
|
return NodePages;
|
|
310
275
|
}();
|
|
311
|
-
|
|
312
276
|
exports.default = NodePages;
|
|
313
277
|
//# sourceMappingURL=node-pages.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/i3s-converter/helpers/node-pages.ts"],"names":["NodePages","writeFileFunc","nodesPerPage","nodesCounter","nodePages","nodes","writeFile","func","id","pageIndex","Math","floor","nodeIndex","data","node","getNodeById","Object","assign","index","materialId","mesh","material","definition","resource","vertexCount","geometry","attribute","featureCount","texelCountHint","parentId","childId","undefined","parentNode","children","push","isFinite","currentNodePage","length","addChildRelation","updateResourceInMesh","layers0Path","writeQueue","slpk","entries","nodePage","nodePageStr","JSON","stringify","slpkPath","enqueue","archiveKey","toString","writePromise","metadata","nodeCount","compress","nodePagePath"],"mappings":"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","sourcesContent":["import type {WriteQueueItem} from '../../lib/utils/write-queue';\n\nimport {join} from 'path';\nimport transform from 'json-map-transform';\nimport {METADATA as metadataTemplate} from '../json-templates/metadata';\nimport {NodeInPage} from '@loaders.gl/i3s';\nimport WriteQueue from '../../lib/utils/write-queue';\n\n// @ts-nocheck\n/**\n * class NodePages - wrapper of nodePages array\n *\n * @example\n * import {writeFile} from './helpers/write-file';\n *\n * // create an instance of the class\n * const nodePages = new NodePages(writeFile, HARDCODED_NODES_PER_PAGE);\n * ...\n * // push root node\n * const parentId = nodePages.push({\n lodThreshold: HARDCODED_MAX_SCREEN_THRESHOLD_SQ,\n obb: coordinates.obb,\n children: []\n });\n * ...\n * // push node with parent relation\n * const nodeInPage = {\n lodThreshold: HARDCODED_MAX_SCREEN_THRESHOLD_SQ,\n obb: coordinates.obb,\n children: [],\n mesh: {\n geometry: {\n definition: 0\n }\n }\n };\n * const nodeId = this.nodePages.push(nodeInPage, parentId);\n * ...\n * // save all the nodePages in the end of pushing all the nodes\n * await this.nodePages.save(layers0path);\n */\nexport default class NodePages {\n readonly nodesPerPage: number;\n nodesCounter: number;\n writeFile: Function;\n readonly nodePages: {nodes: NodeInPage[]}[];\n\n /**\n * @constructs\n * Create a nodePages instance.\n * @param writeFileFunc - function to save one nodePage into a file\n * @param nodesPerPage - length limit for one nodePage. An additional nodePage is created when this limit is met\n */\n constructor(writeFileFunc, nodesPerPage) {\n this.nodesPerPage = nodesPerPage;\n this.nodesCounter = 0;\n // @ts-expect-error\n this.nodePages = [{}];\n this.nodePages[0].nodes = [];\n this.writeFile = writeFileFunc;\n }\n\n /**\n * Setup function to save node pages\n * @param func - function which should be used to save node pages\n */\n useWriteFunction(func: Function): void {\n this.writeFile = func;\n }\n\n /**\n * Get the node by its end-to-end index\n * @param id - end-to-end index of the node\n * @return the node object\n */\n getNodeById(id: number): NodeInPage {\n const pageIndex = Math.floor(id / this.nodesPerPage);\n const nodeIndex = id % this.nodesPerPage;\n return this.nodePages[pageIndex].nodes[nodeIndex];\n }\n\n /**\n * Update all fields in the node excluding id\n */\n updateAll(id: number, data: NodeInPage): void {\n const node = this.getNodeById(id);\n Object.assign(node, data, {index: node.index});\n }\n\n /**\n * Update material in node.mesh object by node id\n * @param id - end-to-end index of the node\n * @param materialId - id from scene layer materialDefinitions\n */\n updateMaterialByNodeId(id: number, materialId: number): void {\n const node = this.getNodeById(id);\n if (!node.mesh) {\n return;\n }\n node.mesh.material = {\n definition: materialId,\n resource: node.index\n };\n }\n\n /**\n * Update vertexCount in node.mesh.geometry object by node id\n * @param id - end-to-end index of the node\n * @param vertexCount - vertex count for particular node\n */\n updateVertexCountByNodeId(id: number, vertexCount: number): void {\n const node = this.getNodeById(id);\n if (!node.mesh) {\n return;\n }\n node.mesh.geometry.vertexCount = vertexCount;\n }\n\n /**\n * Update resource in node.mesh.attribute object by node id\n * @param id - end-to-end index of the node\n */\n updateNodeAttributeByNodeId(id: number): void {\n const node = this.getNodeById(id);\n if (!node.mesh || !node.index) {\n return;\n }\n node.mesh.attribute.resource = node.index;\n }\n\n /**\n * Update featureCount in node.mesh.geometry object by node id\n * @param id - end-to-end index of the node\n * @param featureCount - features count of the node\n */\n updateFeatureCountByNodeId(id: number, featureCount: number): void {\n const node = this.getNodeById(id);\n if (!node.mesh) {\n return;\n }\n node.mesh.geometry.featureCount = featureCount;\n }\n\n /**\n * Update texelCountHint in node.mesh.material object by node id\n * @param id - end-to-end index of the node\n * @param texelCountHint - texelCountHint of particular node\n */\n updateTexelCountHintByNodeId(id: number, texelCountHint: number): void {\n const node = this.getNodeById(id);\n if (!node.mesh || !node.mesh.material) {\n return;\n }\n node.mesh.material.texelCountHint = texelCountHint;\n }\n\n /**\n * Add a child id into the parent node.children array\n * @param parentId - end-to-end parent node index\n * @param childId - end-to-end child node index\n */\n addChildRelation(parentId: number | undefined, childId: number): void {\n if (parentId === null || parentId === undefined) {\n return;\n }\n const parentNode = this.getNodeById(parentId);\n parentNode.children?.push(childId);\n }\n\n /**\n * Update resource index in node.mesh object\n * @param node - node object\n */\n updateResourceInMesh(node: NodeInPage): void {\n if (node.mesh && isFinite(node.index)) {\n node.mesh.geometry.resource = node.index;\n }\n }\n\n /**\n * Put new node in nodePages array\n * @param node - node object\n * @param parentId - index of parent node\n * @return\n */\n push(node: NodeInPage, parentId?: number): number {\n let currentNodePage = this.nodePages[this.nodePages.length - 1];\n if (currentNodePage.nodes.length === this.nodesPerPage) {\n currentNodePage = {nodes: []};\n this.nodePages.push(currentNodePage);\n }\n node.index = this.nodesCounter++;\n currentNodePage.nodes.push(node);\n this.addChildRelation(parentId, node.index);\n this.updateResourceInMesh(node);\n return node.index;\n }\n\n /**\n * Save all the node pages\n * Run this method when all nodes is pushed in nodePages\n * @param layers0Path - path of layer\n * @param writeQueue - write queue that controlls files write concurrency\n * @param slpk\n */\n async save(\n layers0Path: string,\n writeQueue: WriteQueue<WriteQueueItem>,\n slpk: boolean = false\n ): Promise<void> {\n if (slpk) {\n for (const [index, nodePage] of this.nodePages.entries()) {\n const nodePageStr = JSON.stringify(nodePage);\n const slpkPath = join(layers0Path, 'nodepages');\n await writeQueue.enqueue({\n archiveKey: `nodePages/${index.toString()}.json.gz`,\n writePromise: this.writeFile(slpkPath, nodePageStr, `${index.toString()}.json`)\n });\n }\n const metadata = transform({nodeCount: this.nodesCounter}, metadataTemplate());\n const compress = false;\n await writeQueue.enqueue({\n archiveKey: 'metadata.json',\n writePromise: this.writeFile(\n layers0Path,\n JSON.stringify(metadata),\n 'metadata.json',\n compress\n )\n });\n } else {\n for (const [index, nodePage] of this.nodePages.entries()) {\n const nodePageStr = JSON.stringify(nodePage);\n const nodePagePath = join(layers0Path, 'nodepages', index.toString());\n await writeQueue.enqueue({writePromise: this.writeFile(nodePagePath, nodePageStr)});\n }\n }\n }\n}\n"],"file":"node-pages.js"}
|
|
1
|
+
{"version":3,"file":"node-pages.js","names":["NodePages","writeFileFunc","nodesPerPage","nodesCounter","nodePages","nodes","writeFile","func","id","pageIndex","Math","floor","nodeIndex","data","node","getNodeById","Object","assign","index","materialId","mesh","material","definition","resource","vertexCount","geometry","attribute","featureCount","texelCountHint","parentId","childId","undefined","parentNode","children","push","isFinite","currentNodePage","length","addChildRelation","updateResourceInMesh","layers0Path","writeQueue","slpk","entries","nodePage","nodePageStr","JSON","stringify","slpkPath","join","enqueue","archiveKey","toString","writePromise","metadata","transform","nodeCount","metadataTemplate","compress","nodePagePath"],"sources":["../../../../src/i3s-converter/helpers/node-pages.ts"],"sourcesContent":["import type {WriteQueueItem} from '../../lib/utils/write-queue';\n\nimport {join} from 'path';\nimport transform from 'json-map-transform';\nimport {METADATA as metadataTemplate} from '../json-templates/metadata';\nimport {NodeInPage} from '@loaders.gl/i3s';\nimport WriteQueue from '../../lib/utils/write-queue';\n\n// @ts-nocheck\n/**\n * class NodePages - wrapper of nodePages array\n *\n * @example\n * import {writeFile} from './helpers/write-file';\n *\n * // create an instance of the class\n * const nodePages = new NodePages(writeFile, HARDCODED_NODES_PER_PAGE);\n * ...\n * // push root node\n * const parentId = nodePages.push({\n lodThreshold: HARDCODED_MAX_SCREEN_THRESHOLD_SQ,\n obb: coordinates.obb,\n children: []\n });\n * ...\n * // push node with parent relation\n * const nodeInPage = {\n lodThreshold: HARDCODED_MAX_SCREEN_THRESHOLD_SQ,\n obb: coordinates.obb,\n children: [],\n mesh: {\n geometry: {\n definition: 0\n }\n }\n };\n * const nodeId = this.nodePages.push(nodeInPage, parentId);\n * ...\n * // save all the nodePages in the end of pushing all the nodes\n * await this.nodePages.save(layers0path);\n */\nexport default class NodePages {\n readonly nodesPerPage: number;\n nodesCounter: number;\n writeFile: Function;\n readonly nodePages: {nodes: NodeInPage[]}[];\n\n /**\n * @constructs\n * Create a nodePages instance.\n * @param writeFileFunc - function to save one nodePage into a file\n * @param nodesPerPage - length limit for one nodePage. An additional nodePage is created when this limit is met\n */\n constructor(writeFileFunc, nodesPerPage) {\n this.nodesPerPage = nodesPerPage;\n this.nodesCounter = 0;\n // @ts-expect-error\n this.nodePages = [{}];\n this.nodePages[0].nodes = [];\n this.writeFile = writeFileFunc;\n }\n\n /**\n * Setup function to save node pages\n * @param func - function which should be used to save node pages\n */\n useWriteFunction(func: Function): void {\n this.writeFile = func;\n }\n\n /**\n * Get the node by its end-to-end index\n * @param id - end-to-end index of the node\n * @return the node object\n */\n getNodeById(id: number): NodeInPage {\n const pageIndex = Math.floor(id / this.nodesPerPage);\n const nodeIndex = id % this.nodesPerPage;\n return this.nodePages[pageIndex].nodes[nodeIndex];\n }\n\n /**\n * Update all fields in the node excluding id\n */\n updateAll(id: number, data: NodeInPage): void {\n const node = this.getNodeById(id);\n Object.assign(node, data, {index: node.index});\n }\n\n /**\n * Update material in node.mesh object by node id\n * @param id - end-to-end index of the node\n * @param materialId - id from scene layer materialDefinitions\n */\n updateMaterialByNodeId(id: number, materialId: number): void {\n const node = this.getNodeById(id);\n if (!node.mesh) {\n return;\n }\n node.mesh.material = {\n definition: materialId,\n resource: node.index\n };\n }\n\n /**\n * Update vertexCount in node.mesh.geometry object by node id\n * @param id - end-to-end index of the node\n * @param vertexCount - vertex count for particular node\n */\n updateVertexCountByNodeId(id: number, vertexCount: number): void {\n const node = this.getNodeById(id);\n if (!node.mesh) {\n return;\n }\n node.mesh.geometry.vertexCount = vertexCount;\n }\n\n /**\n * Update resource in node.mesh.attribute object by node id\n * @param id - end-to-end index of the node\n */\n updateNodeAttributeByNodeId(id: number): void {\n const node = this.getNodeById(id);\n if (!node.mesh || !node.index) {\n return;\n }\n node.mesh.attribute.resource = node.index;\n }\n\n /**\n * Update featureCount in node.mesh.geometry object by node id\n * @param id - end-to-end index of the node\n * @param featureCount - features count of the node\n */\n updateFeatureCountByNodeId(id: number, featureCount: number): void {\n const node = this.getNodeById(id);\n if (!node.mesh) {\n return;\n }\n node.mesh.geometry.featureCount = featureCount;\n }\n\n /**\n * Update texelCountHint in node.mesh.material object by node id\n * @param id - end-to-end index of the node\n * @param texelCountHint - texelCountHint of particular node\n */\n updateTexelCountHintByNodeId(id: number, texelCountHint: number): void {\n const node = this.getNodeById(id);\n if (!node.mesh || !node.mesh.material) {\n return;\n }\n node.mesh.material.texelCountHint = texelCountHint;\n }\n\n /**\n * Add a child id into the parent node.children array\n * @param parentId - end-to-end parent node index\n * @param childId - end-to-end child node index\n */\n addChildRelation(parentId: number | undefined, childId: number): void {\n if (parentId === null || parentId === undefined) {\n return;\n }\n const parentNode = this.getNodeById(parentId);\n parentNode.children?.push(childId);\n }\n\n /**\n * Update resource index in node.mesh object\n * @param node - node object\n */\n updateResourceInMesh(node: NodeInPage): void {\n if (node.mesh && isFinite(node.index)) {\n node.mesh.geometry.resource = node.index;\n }\n }\n\n /**\n * Put new node in nodePages array\n * @param node - node object\n * @param parentId - index of parent node\n * @return\n */\n push(node: NodeInPage, parentId?: number): number {\n let currentNodePage = this.nodePages[this.nodePages.length - 1];\n if (currentNodePage.nodes.length === this.nodesPerPage) {\n currentNodePage = {nodes: []};\n this.nodePages.push(currentNodePage);\n }\n node.index = this.nodesCounter++;\n currentNodePage.nodes.push(node);\n this.addChildRelation(parentId, node.index);\n this.updateResourceInMesh(node);\n return node.index;\n }\n\n /**\n * Save all the node pages\n * Run this method when all nodes is pushed in nodePages\n * @param layers0Path - path of layer\n * @param writeQueue - write queue that controlls files write concurrency\n * @param slpk\n */\n async save(\n layers0Path: string,\n writeQueue: WriteQueue<WriteQueueItem>,\n slpk: boolean = false\n ): Promise<void> {\n if (slpk) {\n for (const [index, nodePage] of this.nodePages.entries()) {\n const nodePageStr = JSON.stringify(nodePage);\n const slpkPath = join(layers0Path, 'nodepages');\n await writeQueue.enqueue({\n archiveKey: `nodePages/${index.toString()}.json.gz`,\n writePromise: this.writeFile(slpkPath, nodePageStr, `${index.toString()}.json`)\n });\n }\n const metadata = transform({nodeCount: this.nodesCounter}, metadataTemplate());\n const compress = false;\n await writeQueue.enqueue({\n archiveKey: 'metadata.json',\n writePromise: this.writeFile(\n layers0Path,\n JSON.stringify(metadata),\n 'metadata.json',\n compress\n )\n });\n } else {\n for (const [index, nodePage] of this.nodePages.entries()) {\n const nodePageStr = JSON.stringify(nodePage);\n const nodePagePath = join(layers0Path, 'nodepages', index.toString());\n await writeQueue.enqueue({writePromise: this.writeFile(nodePagePath, nodePageStr)});\n }\n }\n }\n}\n"],"mappings":"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"}
|