@loaders.gl/tile-converter 3.3.0-alpha.10 → 3.3.0-alpha.12
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 +1 -1
- package/dist/converter.min.js +22 -22
- package/dist/dist.min.js +120 -109
- package/dist/es5/3d-tiles-attributes-worker.js +1 -1
- package/dist/es5/deps-installer/deps-installer.js +1 -1
- package/dist/es5/i3s-attributes-worker.js +1 -1
- package/dist/es5/i3s-converter/helpers/node-index-document.js +22 -12
- package/dist/es5/i3s-converter/helpers/node-index-document.js.map +1 -1
- package/dist/es5/i3s-converter/i3s-converter.js +23 -53
- package/dist/es5/i3s-converter/i3s-converter.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/deps-installer/deps-installer.js +1 -1
- package/dist/esm/i3s-attributes-worker.js +1 -1
- package/dist/esm/i3s-converter/helpers/node-index-document.js +6 -1
- package/dist/esm/i3s-converter/helpers/node-index-document.js.map +1 -1
- package/dist/esm/i3s-converter/i3s-converter.js +10 -29
- package/dist/esm/i3s-converter/i3s-converter.js.map +1 -1
- package/dist/esm/pgm-loader.js +1 -1
- package/dist/i3s-converter/helpers/node-index-document.d.ts +4 -0
- package/dist/i3s-converter/helpers/node-index-document.d.ts.map +1 -1
- package/dist/i3s-converter/helpers/node-index-document.js +9 -1
- package/dist/i3s-converter/i3s-converter.d.ts.map +1 -1
- package/dist/i3s-converter/i3s-converter.js +2 -14
- package/package.json +15 -15
- package/src/i3s-converter/helpers/node-index-document.ts +10 -1
- package/src/i3s-converter/i3s-converter.ts +2 -13
|
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports._typecheckI3SAttributesWorker = exports.I3SAttributesWorker = void 0;
|
|
7
7
|
exports.transformI3SAttributesOnWorker = transformI3SAttributesOnWorker;
|
|
8
8
|
var _workerUtils = require("@loaders.gl/worker-utils");
|
|
9
|
-
var VERSION = typeof "3.3.0-alpha.
|
|
9
|
+
var VERSION = typeof "3.3.0-alpha.12" !== 'undefined' ? "3.3.0-alpha.12" : 'latest';
|
|
10
10
|
var I3SAttributesWorker = {
|
|
11
11
|
id: 'i3s-attributes',
|
|
12
12
|
name: 'I3S Attributes Worker',
|
|
@@ -162,7 +162,7 @@ var NodeIndexDocument = function () {
|
|
|
162
162
|
_iterator2.s();
|
|
163
163
|
case 6:
|
|
164
164
|
if ((_step2 = _iterator2.n()).done) {
|
|
165
|
-
_context3.next =
|
|
165
|
+
_context3.next = 43;
|
|
166
166
|
break;
|
|
167
167
|
}
|
|
168
168
|
childNode = _step2.value;
|
|
@@ -220,27 +220,30 @@ var NodeIndexDocument = function () {
|
|
|
220
220
|
_context3.next = 38;
|
|
221
221
|
return childNode.write(childNodeData);
|
|
222
222
|
case 38:
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
223
|
+
_context3.next = 40;
|
|
224
|
+
return childNode.save();
|
|
225
|
+
case 40:
|
|
226
|
+
childNode.flush();
|
|
227
227
|
case 41:
|
|
228
|
-
_context3.next =
|
|
228
|
+
_context3.next = 6;
|
|
229
229
|
break;
|
|
230
230
|
case 43:
|
|
231
|
-
_context3.
|
|
231
|
+
_context3.next = 48;
|
|
232
|
+
break;
|
|
233
|
+
case 45:
|
|
234
|
+
_context3.prev = 45;
|
|
232
235
|
_context3.t1 = _context3["catch"](4);
|
|
233
236
|
_iterator2.e(_context3.t1);
|
|
234
|
-
case
|
|
235
|
-
_context3.prev =
|
|
237
|
+
case 48:
|
|
238
|
+
_context3.prev = 48;
|
|
236
239
|
_iterator2.f();
|
|
237
|
-
return _context3.finish(
|
|
238
|
-
case
|
|
240
|
+
return _context3.finish(48);
|
|
241
|
+
case 51:
|
|
239
242
|
case "end":
|
|
240
243
|
return _context3.stop();
|
|
241
244
|
}
|
|
242
245
|
}
|
|
243
|
-
}, _callee3, this, [[4,
|
|
246
|
+
}, _callee3, this, [[4, 45, 48, 51], [14, 25, 28, 31]]);
|
|
244
247
|
}));
|
|
245
248
|
function addNeighbors() {
|
|
246
249
|
return _addNeighbors.apply(this, arguments);
|
|
@@ -354,6 +357,13 @@ var NodeIndexDocument = function () {
|
|
|
354
357
|
}
|
|
355
358
|
return load;
|
|
356
359
|
}()
|
|
360
|
+
}, {
|
|
361
|
+
key: "flush",
|
|
362
|
+
value:
|
|
363
|
+
function flush() {
|
|
364
|
+
this.data = null;
|
|
365
|
+
}
|
|
366
|
+
|
|
357
367
|
}], [{
|
|
358
368
|
key: "createRootNode",
|
|
359
369
|
value: function () {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node-index-document.js","names":["NodeIndexDocument","id","converter","inPageId","toString","data","options","instantNodeWriting","write","childNodes","newChildren","node","load","nodeData","push","href","obb","mbs","children","concat","childNode","childNodeData","neighbors","Number","length","neighbor","console","warn","save","path","join","layers0Path","slpk","writeQueue","enqueue","archiveKey","writePromise","writeFileForSlpk","JSON","stringify","compressList","writeFile","parentNodePath","parentNodeFileName","openJson","boundingVolumes","rootData","createRootNodeIndexDocument","addData","rootNode","parentNode","lodSelection","nodeInPage","resources","createNodeIndexDocument","index","root0data","version","uuidv4","toUpperCase","level","metricType","maxError","transform","nodeTemplate","texture","attributes","nodeId","parentNodeData","mesh","geometryData","sharedResource","textureData","layers0","attributeStorageInfo","attributeData","folderName","key"],"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 childNode.save();\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 * 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":["NodeIndexDocument","id","converter","inPageId","toString","data","options","instantNodeWriting","write","childNodes","newChildren","node","load","nodeData","push","href","obb","mbs","children","concat","childNode","childNodeData","neighbors","Number","length","neighbor","console","warn","save","flush","path","join","layers0Path","slpk","writeQueue","enqueue","archiveKey","writePromise","writeFileForSlpk","JSON","stringify","compressList","writeFile","parentNodePath","parentNodeFileName","openJson","boundingVolumes","rootData","createRootNodeIndexDocument","addData","rootNode","parentNode","lodSelection","nodeInPage","resources","createNodeIndexDocument","index","root0data","version","uuidv4","toUpperCase","level","metricType","maxError","transform","nodeTemplate","texture","attributes","nodeId","parentNodeData","mesh","geometryData","sharedResource","textureData","layers0","attributeStorageInfo","attributeData","folderName","key"],"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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"}
|
|
@@ -604,7 +604,7 @@ var I3SConverter = function () {
|
|
|
604
604
|
key: "_addChildren",
|
|
605
605
|
value: function () {
|
|
606
606
|
var _addChildren2 = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee9(data) {
|
|
607
|
-
var sourceTiles, parentNode, level,
|
|
607
|
+
var sourceTiles, parentNode, level, _iterator3, _step3, sourceTile;
|
|
608
608
|
return _regenerator.default.wrap(function _callee9$(_context9) {
|
|
609
609
|
while (1) {
|
|
610
610
|
switch (_context9.prev = _context9.next) {
|
|
@@ -616,89 +616,59 @@ var I3SConverter = function () {
|
|
|
616
616
|
}
|
|
617
617
|
return _context9.abrupt("return");
|
|
618
618
|
case 3:
|
|
619
|
-
promises = [];
|
|
620
619
|
_iterator3 = _createForOfIteratorHelper(sourceTiles);
|
|
621
|
-
_context9.prev =
|
|
620
|
+
_context9.prev = 4;
|
|
622
621
|
_iterator3.s();
|
|
623
|
-
case
|
|
622
|
+
case 6:
|
|
624
623
|
if ((_step3 = _iterator3.n()).done) {
|
|
625
|
-
_context9.next =
|
|
624
|
+
_context9.next = 18;
|
|
626
625
|
break;
|
|
627
626
|
}
|
|
628
627
|
sourceTile = _step3.value;
|
|
629
628
|
if (!(sourceTile.type === 'json')) {
|
|
630
|
-
_context9.next =
|
|
631
|
-
break;
|
|
632
|
-
}
|
|
633
|
-
if (!this.options.instantNodeWriting) {
|
|
634
|
-
_context9.next = 15;
|
|
629
|
+
_context9.next = 13;
|
|
635
630
|
break;
|
|
636
631
|
}
|
|
637
|
-
_context9.next =
|
|
632
|
+
_context9.next = 11;
|
|
638
633
|
return this.convertNestedTileset({
|
|
639
634
|
parentNode: parentNode,
|
|
640
635
|
sourceTile: sourceTile,
|
|
641
636
|
level: level
|
|
642
637
|
});
|
|
643
|
-
case
|
|
644
|
-
_context9.next =
|
|
645
|
-
break;
|
|
646
|
-
case 15:
|
|
647
|
-
promises.push(this.convertNestedTileset({
|
|
648
|
-
parentNode: parentNode,
|
|
649
|
-
sourceTile: sourceTile,
|
|
650
|
-
level: level
|
|
651
|
-
}));
|
|
652
|
-
case 16:
|
|
653
|
-
_context9.next = 24;
|
|
638
|
+
case 11:
|
|
639
|
+
_context9.next = 15;
|
|
654
640
|
break;
|
|
655
|
-
case
|
|
656
|
-
|
|
657
|
-
_context9.next = 23;
|
|
658
|
-
break;
|
|
659
|
-
}
|
|
660
|
-
_context9.next = 21;
|
|
641
|
+
case 13:
|
|
642
|
+
_context9.next = 15;
|
|
661
643
|
return this.convertNode({
|
|
662
644
|
parentNode: parentNode,
|
|
663
645
|
sourceTile: sourceTile,
|
|
664
646
|
level: level
|
|
665
647
|
});
|
|
666
|
-
case
|
|
667
|
-
_context9.next = 24;
|
|
668
|
-
break;
|
|
669
|
-
case 23:
|
|
670
|
-
promises.push(this.convertNode({
|
|
671
|
-
parentNode: parentNode,
|
|
672
|
-
sourceTile: sourceTile,
|
|
673
|
-
level: level
|
|
674
|
-
}));
|
|
675
|
-
case 24:
|
|
648
|
+
case 15:
|
|
676
649
|
if (sourceTile.id) {
|
|
677
650
|
console.log(sourceTile.id);
|
|
678
651
|
}
|
|
679
|
-
case
|
|
680
|
-
_context9.next =
|
|
652
|
+
case 16:
|
|
653
|
+
_context9.next = 6;
|
|
681
654
|
break;
|
|
682
|
-
case
|
|
683
|
-
_context9.next =
|
|
655
|
+
case 18:
|
|
656
|
+
_context9.next = 23;
|
|
684
657
|
break;
|
|
685
|
-
case
|
|
686
|
-
_context9.prev =
|
|
687
|
-
_context9.t0 = _context9["catch"](
|
|
658
|
+
case 20:
|
|
659
|
+
_context9.prev = 20;
|
|
660
|
+
_context9.t0 = _context9["catch"](4);
|
|
688
661
|
_iterator3.e(_context9.t0);
|
|
689
|
-
case
|
|
690
|
-
_context9.prev =
|
|
662
|
+
case 23:
|
|
663
|
+
_context9.prev = 23;
|
|
691
664
|
_iterator3.f();
|
|
692
|
-
return _context9.finish(
|
|
693
|
-
case
|
|
694
|
-
_context9.next = 37;
|
|
695
|
-
return Promise.all(promises);
|
|
696
|
-
case 37:
|
|
665
|
+
return _context9.finish(23);
|
|
666
|
+
case 26:
|
|
697
667
|
case "end":
|
|
698
668
|
return _context9.stop();
|
|
699
669
|
}
|
|
700
670
|
}
|
|
701
|
-
}, _callee9, this, [[
|
|
671
|
+
}, _callee9, this, [[4, 20, 23, 26]]);
|
|
702
672
|
}));
|
|
703
673
|
function _addChildren(_x11) {
|
|
704
674
|
return _addChildren2.apply(this, arguments);
|