@loaders.gl/potree 3.4.0-alpha.3 → 3.4.0-alpha.5

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.
@@ -1 +1 @@
1
- {"version":3,"file":"octree.js","names":["PointCloudOctree","_createClass2","default","_classCallCheck2","url","octreeDir","spacing","boundingBox","root","nodes","pointAttributes","hierarchyStepSize","loader","exports","PointCloudOctant","name","octree","id","PointCloudOctreeGeometryNode","IDCount","index","parseInt","charAt","length","geometry","boundingSphere","getBoundingSphere","THREE","Sphere","children","numPoints","level","loaded","oneTimeDisposeHandlers","key","value","isGeometryNode","getLevel","isTreeNode","isLoaded","getBoundingBox","getChildren","filter","Boolean","getURL","version","hierarchyPath","concat","getHierarchyPath","path","indices","substr","numParts","Math","floor","i","slice","addChild","child","parent","load","loading","Potree","numNodesLoading","maxNodesLoading","equalOrHigher","hasChildren","loadHierachyThenPoints","loadPoints","node","callback","hbuffer","view","DataView","stack","getUint8","getUint32","push","decoded","offset","snode","shift","mask","childName","childChildren","childNumPoints","byteLength","pco","pcoGeometry","decodedNumPoints","parentName","substring","parentNode","Utils","createChildAABB","currentNode","pow","hurl","xhr","XHRFactory","createXMLHttpRequest","open","responseType","overrideMimeType","onreadystatechange","readyState","status","response","console","log","send","e","getNumPoints","dispose","handler"],"sources":["../../../src/lib/octree.ts"],"sourcesContent":["/* eslint-disable */\n\n// @ts-nocheck\n\nexport class PointCloudOctree {\n constructor() {\n this.url = null;\n this.octreeDir = null;\n this.spacing = 0;\n this.boundingBox = null;\n this.root = null;\n this.nodes = null;\n this.pointAttributes = null;\n this.hierarchyStepSize = -1;\n this.loader = null;\n }\n}\n\nexport class PointCloudOctant {\n constructor(name, octree, boundingBox) {\n this.octree = this.id = PointCloudOctreeGeometryNode.IDCount++;\n this.name = name;\n this.index = parseInt(name.charAt(name.length - 1));\n this.octree = octree;\n this.geometry = null;\n this.boundingBox = boundingBox;\n this.boundingSphere = boundingBox.getBoundingSphere(new THREE.Sphere());\n this.children = {};\n this.numPoints = 0;\n this.level = null;\n this.loaded = false;\n this.oneTimeDisposeHandlers = [];\n }\n\n isGeometryNode() {\n return true;\n }\n\n getLevel() {\n return this.level;\n }\n\n isTreeNode() {\n return false;\n }\n\n isLoaded() {\n return this.loaded;\n }\n\n getBoundingSphere() {\n return this.boundingSphere;\n }\n\n getBoundingBox() {\n return this.boundingBox;\n }\n\n getChildren() {\n // Children is a length 8 array with nulls for \"missing\" octants\n return this.children.filter(Boolean);\n }\n\n getURL() {\n const {version} = this.octree;\n const hierarchyPath = version >= 1.5 ? `${this.getHierarchyPath()}/` : '';\n return `${this.octree.octreeDir}/${hierarchyPath}${this.name}`;\n }\n\n getHierarchyPath() {\n let path = 'r/';\n\n let hierarchyStepSize = this.octree.hierarchyStepSize;\n let indices = this.name.substr(1);\n\n let numParts = Math.floor(indices.length / hierarchyStepSize);\n for (let i = 0; i < numParts; i++) {\n path += indices.substr(i * hierarchyStepSize, hierarchyStepSize) + '/';\n }\n\n path = path.slice(0, -1);\n\n return path;\n }\n\n addChild(child) {\n this.children[child.index] = child;\n child.parent = this;\n }\n\n load() {\n if (\n this.loading === true ||\n this.loaded === true ||\n Potree.numNodesLoading >= Potree.maxNodesLoading\n ) {\n return;\n }\n\n this.loading = true;\n\n Potree.numNodesLoading++;\n\n if (this.octree.loader.version.equalOrHigher('1.5')) {\n if (this.level % this.octree.hierarchyStepSize === 0 && this.hasChildren) {\n this.loadHierachyThenPoints();\n } else {\n this.loadPoints();\n }\n } else {\n this.loadPoints();\n }\n }\n\n loadPoints() {\n this.octree.loader.load(this);\n }\n\n loadHierachyThenPoints() {\n let node = this;\n\n // load hierarchy\n let callback = function (node, hbuffer) {\n let view = new DataView(hbuffer);\n\n let stack = [];\n let children = view.getUint8(0);\n let numPoints = view.getUint32(1, true);\n node.numPoints = numPoints;\n stack.push({children: children, numPoints: numPoints, name: node.name});\n\n let decoded = [];\n\n let offset = 5;\n while (stack.length > 0) {\n let snode = stack.shift();\n let mask = 1;\n for (let i = 0; i < 8; i++) {\n if ((snode.children & mask) !== 0) {\n let childName = snode.name + i;\n\n let childChildren = view.getUint8(offset);\n let childNumPoints = view.getUint32(offset + 1, true);\n\n stack.push({children: childChildren, numPoints: childNumPoints, name: childName});\n\n decoded.push({children: childChildren, numPoints: childNumPoints, name: childName});\n\n offset += 5;\n }\n\n mask = mask * 2;\n }\n\n if (offset === hbuffer.byteLength) {\n break;\n }\n }\n\n // console.log(decoded);\n\n let nodes = {};\n nodes[node.name] = node;\n let pco = node.pcoGeometry;\n\n for (let i = 0; i < decoded.length; i++) {\n let name = decoded[i].name;\n let decodedNumPoints = decoded[i].numPoints;\n let index = parseInt(name.charAt(name.length - 1));\n let parentName = name.substring(0, name.length - 1);\n let parentNode = nodes[parentName];\n let level = name.length - 1;\n let boundingBox = Utils.createChildAABB(parentNode.boundingBox, index);\n\n let currentNode = new PointCloudOctreeGeometryNode(name, pco, boundingBox);\n currentNode.level = level;\n currentNode.numPoints = decodedNumPoints;\n currentNode.hasChildren = decoded[i].children > 0;\n currentNode.spacing = pco.spacing / Math.pow(2, level);\n parentNode.addChild(currentNode);\n nodes[name] = currentNode;\n }\n\n node.loadPoints();\n };\n if (node.level % node.pcoGeometry.hierarchyStepSize === 0) {\n // let hurl = node.pcoGeometry.octreeDir + \"/../hierarchy/\" + node.name + \".hrc\";\n let hurl =\n node.pcoGeometry.octreeDir + '/' + node.getHierarchyPath() + '/' + node.name + '.hrc';\n\n let xhr = XHRFactory.createXMLHttpRequest();\n xhr.open('GET', hurl, true);\n xhr.responseType = 'arraybuffer';\n xhr.overrideMimeType('text/plain; charset=x-user-defined');\n xhr.onreadystatechange = () => {\n if (xhr.readyState === 4) {\n if (xhr.status === 200 || xhr.status === 0) {\n let hbuffer = xhr.response;\n callback(node, hbuffer);\n } else {\n console.log('Failed to load file! HTTP status: ' + xhr.status + ', file: ' + hurl);\n Potree.numNodesLoading--;\n }\n }\n };\n try {\n xhr.send(null);\n } catch (e) {\n console.log('fehler beim laden der punktwolke: ' + e);\n }\n }\n }\n\n getNumPoints() {\n return this.numPoints;\n }\n\n dispose() {\n if (this.geometry && this.parent != null) {\n this.geometry.dispose();\n this.geometry = null;\n this.loaded = false;\n\n // this.dispatchEvent( { type: 'dispose' } );\n for (let i = 0; i < this.oneTimeDisposeHandlers.length; i++) {\n let handler = this.oneTimeDisposeHandlers[i];\n handler();\n }\n this.oneTimeDisposeHandlers = [];\n }\n }\n}\n\nPointCloudOctreeGeometryNode.IDCount = 0;\n"],"mappings":"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"}
1
+ {"version":3,"file":"octree.js","names":["PointCloudOctree","_createClass2","default","_classCallCheck2","url","octreeDir","spacing","boundingBox","root","nodes","pointAttributes","hierarchyStepSize","loader","exports","PointCloudOctant","name","octree","id","PointCloudOctreeGeometryNode","IDCount","index","parseInt","charAt","length","geometry","boundingSphere","getBoundingSphere","THREE","Sphere","children","numPoints","level","loaded","oneTimeDisposeHandlers","key","value","isGeometryNode","getLevel","isTreeNode","isLoaded","getBoundingBox","getChildren","filter","Boolean","getURL","version","hierarchyPath","concat","getHierarchyPath","path","indices","substr","numParts","Math","floor","i","slice","addChild","child","parent","load","loading","Potree","numNodesLoading","maxNodesLoading","equalOrHigher","hasChildren","loadHierachyThenPoints","loadPoints","node","callback","hbuffer","view","DataView","stack","getUint8","getUint32","push","decoded","offset","snode","shift","mask","childName","childChildren","childNumPoints","byteLength","pco","pcoGeometry","decodedNumPoints","parentName","substring","parentNode","Utils","createChildAABB","currentNode","pow","hurl","xhr","XHRFactory","createXMLHttpRequest","open","responseType","overrideMimeType","onreadystatechange","readyState","status","response","console","log","send","e","getNumPoints","dispose","handler"],"sources":["../../../src/lib/octree.ts"],"sourcesContent":["/* eslint-disable */\n\n// @ts-nocheck\n\nexport class PointCloudOctree {\n constructor() {\n this.url = null;\n this.octreeDir = null;\n this.spacing = 0;\n this.boundingBox = null;\n this.root = null;\n this.nodes = null;\n this.pointAttributes = null;\n this.hierarchyStepSize = -1;\n this.loader = null;\n }\n}\n\nexport class PointCloudOctant {\n constructor(name, octree, boundingBox) {\n this.octree = this.id = PointCloudOctreeGeometryNode.IDCount++;\n this.name = name;\n this.index = parseInt(name.charAt(name.length - 1));\n this.octree = octree;\n this.geometry = null;\n this.boundingBox = boundingBox;\n this.boundingSphere = boundingBox.getBoundingSphere(new THREE.Sphere());\n this.children = {};\n this.numPoints = 0;\n this.level = null;\n this.loaded = false;\n this.oneTimeDisposeHandlers = [];\n }\n\n isGeometryNode() {\n return true;\n }\n\n getLevel() {\n return this.level;\n }\n\n isTreeNode() {\n return false;\n }\n\n isLoaded() {\n return this.loaded;\n }\n\n getBoundingSphere() {\n return this.boundingSphere;\n }\n\n getBoundingBox() {\n return this.boundingBox;\n }\n\n getChildren() {\n // Children is a length 8 array with nulls for \"missing\" octants\n return this.children.filter(Boolean);\n }\n\n getURL() {\n const {version} = this.octree;\n const hierarchyPath = version >= 1.5 ? `${this.getHierarchyPath()}/` : '';\n return `${this.octree.octreeDir}/${hierarchyPath}${this.name}`;\n }\n\n getHierarchyPath() {\n let path = 'r/';\n\n let hierarchyStepSize = this.octree.hierarchyStepSize;\n let indices = this.name.substr(1);\n\n let numParts = Math.floor(indices.length / hierarchyStepSize);\n for (let i = 0; i < numParts; i++) {\n path += indices.substr(i * hierarchyStepSize, hierarchyStepSize) + '/';\n }\n\n path = path.slice(0, -1);\n\n return path;\n }\n\n addChild(child) {\n this.children[child.index] = child;\n child.parent = this;\n }\n\n load() {\n if (\n this.loading === true ||\n this.loaded === true ||\n Potree.numNodesLoading >= Potree.maxNodesLoading\n ) {\n return;\n }\n\n this.loading = true;\n\n Potree.numNodesLoading++;\n\n if (this.octree.loader.version.equalOrHigher('1.5')) {\n if (this.level % this.octree.hierarchyStepSize === 0 && this.hasChildren) {\n this.loadHierachyThenPoints();\n } else {\n this.loadPoints();\n }\n } else {\n this.loadPoints();\n }\n }\n\n loadPoints() {\n this.octree.loader.load(this);\n }\n\n loadHierachyThenPoints() {\n let node = this;\n\n // load hierarchy\n let callback = function (node, hbuffer) {\n let view = new DataView(hbuffer);\n\n let stack = [];\n let children = view.getUint8(0);\n let numPoints = view.getUint32(1, true);\n node.numPoints = numPoints;\n stack.push({children: children, numPoints: numPoints, name: node.name});\n\n let decoded = [];\n\n let offset = 5;\n while (stack.length > 0) {\n let snode = stack.shift();\n let mask = 1;\n for (let i = 0; i < 8; i++) {\n if ((snode.children & mask) !== 0) {\n let childName = snode.name + i;\n\n let childChildren = view.getUint8(offset);\n let childNumPoints = view.getUint32(offset + 1, true);\n\n stack.push({children: childChildren, numPoints: childNumPoints, name: childName});\n\n decoded.push({children: childChildren, numPoints: childNumPoints, name: childName});\n\n offset += 5;\n }\n\n mask = mask * 2;\n }\n\n if (offset === hbuffer.byteLength) {\n break;\n }\n }\n\n // console.log(decoded);\n\n let nodes = {};\n nodes[node.name] = node;\n let pco = node.pcoGeometry;\n\n for (let i = 0; i < decoded.length; i++) {\n let name = decoded[i].name;\n let decodedNumPoints = decoded[i].numPoints;\n let index = parseInt(name.charAt(name.length - 1));\n let parentName = name.substring(0, name.length - 1);\n let parentNode = nodes[parentName];\n let level = name.length - 1;\n let boundingBox = Utils.createChildAABB(parentNode.boundingBox, index);\n\n let currentNode = new PointCloudOctreeGeometryNode(name, pco, boundingBox);\n currentNode.level = level;\n currentNode.numPoints = decodedNumPoints;\n currentNode.hasChildren = decoded[i].children > 0;\n currentNode.spacing = pco.spacing / Math.pow(2, level);\n parentNode.addChild(currentNode);\n nodes[name] = currentNode;\n }\n\n node.loadPoints();\n };\n if (node.level % node.pcoGeometry.hierarchyStepSize === 0) {\n // let hurl = node.pcoGeometry.octreeDir + \"/../hierarchy/\" + node.name + \".hrc\";\n let hurl =\n node.pcoGeometry.octreeDir + '/' + node.getHierarchyPath() + '/' + node.name + '.hrc';\n\n let xhr = XHRFactory.createXMLHttpRequest();\n xhr.open('GET', hurl, true);\n xhr.responseType = 'arraybuffer';\n xhr.overrideMimeType('text/plain; charset=x-user-defined');\n xhr.onreadystatechange = () => {\n if (xhr.readyState === 4) {\n if (xhr.status === 200 || xhr.status === 0) {\n let hbuffer = xhr.response;\n callback(node, hbuffer);\n } else {\n console.log('Failed to load file! HTTP status: ' + xhr.status + ', file: ' + hurl);\n Potree.numNodesLoading--;\n }\n }\n };\n try {\n xhr.send(null);\n } catch (e) {\n console.log('fehler beim laden der punktwolke: ' + e);\n }\n }\n }\n\n getNumPoints() {\n return this.numPoints;\n }\n\n dispose() {\n if (this.geometry && this.parent != null) {\n this.geometry.dispose();\n this.geometry = null;\n this.loaded = false;\n\n // this.dispatchEvent( { type: 'dispose' } );\n for (let i = 0; i < this.oneTimeDisposeHandlers.length; i++) {\n let handler = this.oneTimeDisposeHandlers[i];\n handler();\n }\n this.oneTimeDisposeHandlers = [];\n }\n }\n}\n\nPointCloudOctreeGeometryNode.IDCount = 0;\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"parse-potree-hierarchy-chunk.js","names":["parsePotreeHierarchyChunk","arrayBuffer","tileHeaders","parseBinaryChunk","buildHierarchy","byteOffset","arguments","length","undefined","dataView","DataView","stack","topTileHeader","decodeRow","push","snode","shift","mask","i","header","childMask","tileHeader","name","childCount","byteLength","getUint8","pointCount","getUint32","options","DEFAULT_OPTIONS","spacing","_objectSpread","topNode","nodes","_iterator","_createForOfIteratorHelper","_step","s","n","done","value","index","parseInt","charAt","parentName","substring","parentNode","level","hasChildren","children","childrenByIndex","Array","fill","Math","pow","err","e","f"],"sources":["../../../src/parsers/parse-potree-hierarchy-chunk.ts"],"sourcesContent":["// This file is derived from the Cesium code base under BSD 2-clause license\n// See LICENSE.md and https://github.com/potree/potree/blob/develop/LICENSE\n\n// Potree Hierarchy Chunk file format\n// https://github.com/potree/potree/blob/develop/docs/potree-file-format.md#index-files\n\n/*\n### Hierarchy Chunk Files\n\nAs mentioned in the former section, the `.hrc` files contain the index structure\nmeaning a list of all the files stored within the directory tree.\n\nAn index file contains a list of tuple values with the first being a `uint8`\n\"mask\" and the second being `uint32` \"number of points\" of a hierarchy level\nin a [breadth first level order][breadth-first].\n\nPer hierarchy level we have 8 possible nodes. To indicate whether a node exists\na simple binary mask is used:\n\n| Position | Mask | [Binary][bin] |\n|----------|------|---------------|\n| 0 | 1 | 0b00000001 |\n| 1 | 2 | 0b00000010 |\n| 2 | 4 | 0b00000100 |\n| 3 | 8 | 0b00001000 |\n| 4 | 16 | 0b00010000 |\n| 5 | 32 | 0b00100000 |\n| 6 | 64 | 0b01000000 |\n| 7 | 128 | 0b10000000 |\n\nSo if in a hierarchy the child node 3 and node 7 exist then the hierarchies\nmask has to be `0b00001000 | 0b10000000` → `0b10001000` (=136).\n\n_Example:_ A simple, non-realistic tree:\n\n```\n|- r1\n| |\n| \\- r14 (2 Points)\n|\n\\- r3\n |\n \\- r36 (1 Point)\n```\n\nWould have an index looking like this:\n\n| name | mask | points |\n|------|--------------------|--------|\n| r | `0b00001010` (=10) | `3` |\n| r1 | `0b00010000` (=16) | `2` |\n| r3 | `0b01000000` (=64) | `1` |\n| r14 | `0b00000000` (=0) | `2` |\n| r36 | `0b00000000` (=0) | `1` |\n*/\n\n// @ts-nocheck\n\n// load hierarchy\nexport default function parsePotreeHierarchyChunk(arrayBuffer: ArrayBuffer) {\n const tileHeaders = parseBinaryChunk(arrayBuffer);\n return buildHierarchy(tileHeaders);\n}\n\n// Parses the binary rows\nfunction parseBinaryChunk(arrayBuffer: ArrayBuffer, byteOffset = 0) {\n const dataView = new DataView(arrayBuffer);\n\n const stack = [];\n\n // Get root mask\n const topTileHeader = {};\n byteOffset = decodeRow(dataView, byteOffset, topTileHeader);\n\n stack.push(topTileHeader);\n\n const tileHeaders = [];\n\n while (stack.length > 0) {\n const snode = stack.shift();\n let mask = 1;\n\n for (let i = 0; i < 8; i++) {\n if (snode && (snode.header.childMask & mask) !== 0) {\n const tileHeader = {};\n byteOffset = decodeRow(dataView, byteOffset, tileHeader);\n tileHeader.name = snode.name + i;\n\n stack.push(tileHeader);\n tileHeaders.push(tileHeader);\n snode.header.childCount++;\n }\n mask = mask * 2;\n }\n\n if (byteOffset === dataView.byteLength) {\n break;\n }\n }\n\n return tileHeaders;\n}\n\nfunction decodeRow(dataView, byteOffset, tileHeader) {\n tileHeader.header = tileHeader.header || {};\n tileHeader.header.childMask = dataView.getUint8(byteOffset);\n tileHeader.header.childCount = 0;\n tileHeader.pointCount = dataView.getUint32(byteOffset + 1, true);\n tileHeader.name = '';\n byteOffset += 5;\n return byteOffset;\n}\n\n// Resolves the binary rows into a hierarchy (tree structure)\nfunction buildHierarchy(tileHeaders, options = {}) {\n const DEFAULT_OPTIONS = {spacing: 100}; // TODO assert instead of default?\n options = {...DEFAULT_OPTIONS, ...options};\n\n const topNode = tileHeaders[0];\n const nodes = {};\n\n for (const tileHeader of tileHeaders) {\n const {name} = tileHeader;\n\n const index = parseInt(name.charAt(name.length - 1), 10);\n const parentName = name.substring(0, name.length - 1);\n const parentNode = nodes[parentName];\n const level = name.length - 1;\n // assert(parentNode && level >= 0);\n\n tileHeader.level = level;\n tileHeader.hasChildren = tileHeader.header.childCount;\n tileHeader.children = [];\n tileHeader.childrenByIndex = new Array(8).fill(null);\n tileHeader.spacing = options.spacing / Math.pow(2, level);\n // tileHeader.boundingVolume = Utils.createChildAABB(parentNode.boundingBox, index);\n\n if (parentNode) {\n parentNode.children.push(tileHeader);\n parentNode.childrenByIndex[index] = tileHeader;\n }\n\n // Add the node to the map\n nodes[name] = tileHeader;\n }\n\n // First node is the root\n return topNode;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"parse-potree-hierarchy-chunk.js","names":["parsePotreeHierarchyChunk","arrayBuffer","tileHeaders","parseBinaryChunk","buildHierarchy","byteOffset","arguments","length","undefined","dataView","DataView","stack","topTileHeader","decodeRow","push","snode","shift","mask","i","header","childMask","tileHeader","name","childCount","byteLength","getUint8","pointCount","getUint32","options","DEFAULT_OPTIONS","spacing","_objectSpread","topNode","nodes","_iterator","_createForOfIteratorHelper","_step","s","n","done","value","index","parseInt","charAt","parentName","substring","parentNode","level","hasChildren","children","childrenByIndex","Array","fill","Math","pow","err","e","f"],"sources":["../../../src/parsers/parse-potree-hierarchy-chunk.ts"],"sourcesContent":["// This file is derived from the Cesium code base under BSD 2-clause license\n// See LICENSE.md and https://github.com/potree/potree/blob/develop/LICENSE\n\n// Potree Hierarchy Chunk file format\n// https://github.com/potree/potree/blob/develop/docs/potree-file-format.md#index-files\n\n/*\n### Hierarchy Chunk Files\n\nAs mentioned in the former section, the `.hrc` files contain the index structure\nmeaning a list of all the files stored within the directory tree.\n\nAn index file contains a list of tuple values with the first being a `uint8`\n\"mask\" and the second being `uint32` \"number of points\" of a hierarchy level\nin a [breadth first level order][breadth-first].\n\nPer hierarchy level we have 8 possible nodes. To indicate whether a node exists\na simple binary mask is used:\n\n| Position | Mask | [Binary][bin] |\n|----------|------|---------------|\n| 0 | 1 | 0b00000001 |\n| 1 | 2 | 0b00000010 |\n| 2 | 4 | 0b00000100 |\n| 3 | 8 | 0b00001000 |\n| 4 | 16 | 0b00010000 |\n| 5 | 32 | 0b00100000 |\n| 6 | 64 | 0b01000000 |\n| 7 | 128 | 0b10000000 |\n\nSo if in a hierarchy the child node 3 and node 7 exist then the hierarchies\nmask has to be `0b00001000 | 0b10000000` → `0b10001000` (=136).\n\n_Example:_ A simple, non-realistic tree:\n\n```\n|- r1\n| |\n| \\- r14 (2 Points)\n|\n\\- r3\n |\n \\- r36 (1 Point)\n```\n\nWould have an index looking like this:\n\n| name | mask | points |\n|------|--------------------|--------|\n| r | `0b00001010` (=10) | `3` |\n| r1 | `0b00010000` (=16) | `2` |\n| r3 | `0b01000000` (=64) | `1` |\n| r14 | `0b00000000` (=0) | `2` |\n| r36 | `0b00000000` (=0) | `1` |\n*/\n\n// @ts-nocheck\n\n// load hierarchy\nexport default function parsePotreeHierarchyChunk(arrayBuffer: ArrayBuffer) {\n const tileHeaders = parseBinaryChunk(arrayBuffer);\n return buildHierarchy(tileHeaders);\n}\n\n// Parses the binary rows\nfunction parseBinaryChunk(arrayBuffer: ArrayBuffer, byteOffset = 0) {\n const dataView = new DataView(arrayBuffer);\n\n const stack = [];\n\n // Get root mask\n const topTileHeader = {};\n byteOffset = decodeRow(dataView, byteOffset, topTileHeader);\n\n stack.push(topTileHeader);\n\n const tileHeaders = [];\n\n while (stack.length > 0) {\n const snode = stack.shift();\n let mask = 1;\n\n for (let i = 0; i < 8; i++) {\n if (snode && (snode.header.childMask & mask) !== 0) {\n const tileHeader = {};\n byteOffset = decodeRow(dataView, byteOffset, tileHeader);\n tileHeader.name = snode.name + i;\n\n stack.push(tileHeader);\n tileHeaders.push(tileHeader);\n snode.header.childCount++;\n }\n mask = mask * 2;\n }\n\n if (byteOffset === dataView.byteLength) {\n break;\n }\n }\n\n return tileHeaders;\n}\n\nfunction decodeRow(dataView, byteOffset, tileHeader) {\n tileHeader.header = tileHeader.header || {};\n tileHeader.header.childMask = dataView.getUint8(byteOffset);\n tileHeader.header.childCount = 0;\n tileHeader.pointCount = dataView.getUint32(byteOffset + 1, true);\n tileHeader.name = '';\n byteOffset += 5;\n return byteOffset;\n}\n\n// Resolves the binary rows into a hierarchy (tree structure)\nfunction buildHierarchy(tileHeaders, options = {}) {\n const DEFAULT_OPTIONS = {spacing: 100}; // TODO assert instead of default?\n options = {...DEFAULT_OPTIONS, ...options};\n\n const topNode = tileHeaders[0];\n const nodes = {};\n\n for (const tileHeader of tileHeaders) {\n const {name} = tileHeader;\n\n const index = parseInt(name.charAt(name.length - 1), 10);\n const parentName = name.substring(0, name.length - 1);\n const parentNode = nodes[parentName];\n const level = name.length - 1;\n // assert(parentNode && level >= 0);\n\n tileHeader.level = level;\n tileHeader.hasChildren = tileHeader.header.childCount;\n tileHeader.children = [];\n tileHeader.childrenByIndex = new Array(8).fill(null);\n tileHeader.spacing = options.spacing / Math.pow(2, level);\n // tileHeader.boundingVolume = Utils.createChildAABB(parentNode.boundingBox, index);\n\n if (parentNode) {\n parentNode.children.push(tileHeader);\n parentNode.childrenByIndex[index] = tileHeader;\n }\n\n // Add the node to the map\n nodes[name] = tileHeader;\n }\n\n // First node is the root\n return topNode;\n}\n"],"mappings":"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"}
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.PotreeLoader = void 0;
7
- var VERSION = typeof "3.4.0-alpha.3" !== 'undefined' ? "3.4.0-alpha.3" : 'latest';
7
+ var VERSION = typeof "3.4.0-alpha.5" !== 'undefined' ? "3.4.0-alpha.5" : 'latest';
8
8
  var PotreeLoader = {
9
9
  name: 'potree',
10
10
  id: 'potree',
@@ -1 +1 @@
1
- {"version":3,"file":"octree.js","names":["PointCloudOctree","constructor","url","octreeDir","spacing","boundingBox","root","nodes","pointAttributes","hierarchyStepSize","loader","PointCloudOctant","name","octree","id","PointCloudOctreeGeometryNode","IDCount","index","parseInt","charAt","length","geometry","boundingSphere","getBoundingSphere","THREE","Sphere","children","numPoints","level","loaded","oneTimeDisposeHandlers","isGeometryNode","getLevel","isTreeNode","isLoaded","getBoundingBox","getChildren","filter","Boolean","getURL","version","hierarchyPath","concat","getHierarchyPath","path","indices","substr","numParts","Math","floor","i","slice","addChild","child","parent","load","loading","Potree","numNodesLoading","maxNodesLoading","equalOrHigher","hasChildren","loadHierachyThenPoints","loadPoints","node","callback","hbuffer","view","DataView","stack","getUint8","getUint32","push","decoded","offset","snode","shift","mask","childName","childChildren","childNumPoints","byteLength","pco","pcoGeometry","decodedNumPoints","parentName","substring","parentNode","Utils","createChildAABB","currentNode","pow","hurl","xhr","XHRFactory","createXMLHttpRequest","open","responseType","overrideMimeType","onreadystatechange","readyState","status","response","console","log","send","e","getNumPoints","dispose","handler"],"sources":["../../../src/lib/octree.ts"],"sourcesContent":["/* eslint-disable */\n\n// @ts-nocheck\n\nexport class PointCloudOctree {\n constructor() {\n this.url = null;\n this.octreeDir = null;\n this.spacing = 0;\n this.boundingBox = null;\n this.root = null;\n this.nodes = null;\n this.pointAttributes = null;\n this.hierarchyStepSize = -1;\n this.loader = null;\n }\n}\n\nexport class PointCloudOctant {\n constructor(name, octree, boundingBox) {\n this.octree = this.id = PointCloudOctreeGeometryNode.IDCount++;\n this.name = name;\n this.index = parseInt(name.charAt(name.length - 1));\n this.octree = octree;\n this.geometry = null;\n this.boundingBox = boundingBox;\n this.boundingSphere = boundingBox.getBoundingSphere(new THREE.Sphere());\n this.children = {};\n this.numPoints = 0;\n this.level = null;\n this.loaded = false;\n this.oneTimeDisposeHandlers = [];\n }\n\n isGeometryNode() {\n return true;\n }\n\n getLevel() {\n return this.level;\n }\n\n isTreeNode() {\n return false;\n }\n\n isLoaded() {\n return this.loaded;\n }\n\n getBoundingSphere() {\n return this.boundingSphere;\n }\n\n getBoundingBox() {\n return this.boundingBox;\n }\n\n getChildren() {\n // Children is a length 8 array with nulls for \"missing\" octants\n return this.children.filter(Boolean);\n }\n\n getURL() {\n const {version} = this.octree;\n const hierarchyPath = version >= 1.5 ? `${this.getHierarchyPath()}/` : '';\n return `${this.octree.octreeDir}/${hierarchyPath}${this.name}`;\n }\n\n getHierarchyPath() {\n let path = 'r/';\n\n let hierarchyStepSize = this.octree.hierarchyStepSize;\n let indices = this.name.substr(1);\n\n let numParts = Math.floor(indices.length / hierarchyStepSize);\n for (let i = 0; i < numParts; i++) {\n path += indices.substr(i * hierarchyStepSize, hierarchyStepSize) + '/';\n }\n\n path = path.slice(0, -1);\n\n return path;\n }\n\n addChild(child) {\n this.children[child.index] = child;\n child.parent = this;\n }\n\n load() {\n if (\n this.loading === true ||\n this.loaded === true ||\n Potree.numNodesLoading >= Potree.maxNodesLoading\n ) {\n return;\n }\n\n this.loading = true;\n\n Potree.numNodesLoading++;\n\n if (this.octree.loader.version.equalOrHigher('1.5')) {\n if (this.level % this.octree.hierarchyStepSize === 0 && this.hasChildren) {\n this.loadHierachyThenPoints();\n } else {\n this.loadPoints();\n }\n } else {\n this.loadPoints();\n }\n }\n\n loadPoints() {\n this.octree.loader.load(this);\n }\n\n loadHierachyThenPoints() {\n let node = this;\n\n // load hierarchy\n let callback = function (node, hbuffer) {\n let view = new DataView(hbuffer);\n\n let stack = [];\n let children = view.getUint8(0);\n let numPoints = view.getUint32(1, true);\n node.numPoints = numPoints;\n stack.push({children: children, numPoints: numPoints, name: node.name});\n\n let decoded = [];\n\n let offset = 5;\n while (stack.length > 0) {\n let snode = stack.shift();\n let mask = 1;\n for (let i = 0; i < 8; i++) {\n if ((snode.children & mask) !== 0) {\n let childName = snode.name + i;\n\n let childChildren = view.getUint8(offset);\n let childNumPoints = view.getUint32(offset + 1, true);\n\n stack.push({children: childChildren, numPoints: childNumPoints, name: childName});\n\n decoded.push({children: childChildren, numPoints: childNumPoints, name: childName});\n\n offset += 5;\n }\n\n mask = mask * 2;\n }\n\n if (offset === hbuffer.byteLength) {\n break;\n }\n }\n\n // console.log(decoded);\n\n let nodes = {};\n nodes[node.name] = node;\n let pco = node.pcoGeometry;\n\n for (let i = 0; i < decoded.length; i++) {\n let name = decoded[i].name;\n let decodedNumPoints = decoded[i].numPoints;\n let index = parseInt(name.charAt(name.length - 1));\n let parentName = name.substring(0, name.length - 1);\n let parentNode = nodes[parentName];\n let level = name.length - 1;\n let boundingBox = Utils.createChildAABB(parentNode.boundingBox, index);\n\n let currentNode = new PointCloudOctreeGeometryNode(name, pco, boundingBox);\n currentNode.level = level;\n currentNode.numPoints = decodedNumPoints;\n currentNode.hasChildren = decoded[i].children > 0;\n currentNode.spacing = pco.spacing / Math.pow(2, level);\n parentNode.addChild(currentNode);\n nodes[name] = currentNode;\n }\n\n node.loadPoints();\n };\n if (node.level % node.pcoGeometry.hierarchyStepSize === 0) {\n // let hurl = node.pcoGeometry.octreeDir + \"/../hierarchy/\" + node.name + \".hrc\";\n let hurl =\n node.pcoGeometry.octreeDir + '/' + node.getHierarchyPath() + '/' + node.name + '.hrc';\n\n let xhr = XHRFactory.createXMLHttpRequest();\n xhr.open('GET', hurl, true);\n xhr.responseType = 'arraybuffer';\n xhr.overrideMimeType('text/plain; charset=x-user-defined');\n xhr.onreadystatechange = () => {\n if (xhr.readyState === 4) {\n if (xhr.status === 200 || xhr.status === 0) {\n let hbuffer = xhr.response;\n callback(node, hbuffer);\n } else {\n console.log('Failed to load file! HTTP status: ' + xhr.status + ', file: ' + hurl);\n Potree.numNodesLoading--;\n }\n }\n };\n try {\n xhr.send(null);\n } catch (e) {\n console.log('fehler beim laden der punktwolke: ' + e);\n }\n }\n }\n\n getNumPoints() {\n return this.numPoints;\n }\n\n dispose() {\n if (this.geometry && this.parent != null) {\n this.geometry.dispose();\n this.geometry = null;\n this.loaded = false;\n\n // this.dispatchEvent( { type: 'dispose' } );\n for (let i = 0; i < this.oneTimeDisposeHandlers.length; i++) {\n let handler = this.oneTimeDisposeHandlers[i];\n handler();\n }\n this.oneTimeDisposeHandlers = [];\n }\n }\n}\n\nPointCloudOctreeGeometryNode.IDCount = 0;\n"],"mappings":"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"}
1
+ {"version":3,"file":"octree.js","names":["PointCloudOctree","constructor","url","octreeDir","spacing","boundingBox","root","nodes","pointAttributes","hierarchyStepSize","loader","PointCloudOctant","name","octree","id","PointCloudOctreeGeometryNode","IDCount","index","parseInt","charAt","length","geometry","boundingSphere","getBoundingSphere","THREE","Sphere","children","numPoints","level","loaded","oneTimeDisposeHandlers","isGeometryNode","getLevel","isTreeNode","isLoaded","getBoundingBox","getChildren","filter","Boolean","getURL","version","hierarchyPath","concat","getHierarchyPath","path","indices","substr","numParts","Math","floor","i","slice","addChild","child","parent","load","loading","Potree","numNodesLoading","maxNodesLoading","equalOrHigher","hasChildren","loadHierachyThenPoints","loadPoints","node","callback","hbuffer","view","DataView","stack","getUint8","getUint32","push","decoded","offset","snode","shift","mask","childName","childChildren","childNumPoints","byteLength","pco","pcoGeometry","decodedNumPoints","parentName","substring","parentNode","Utils","createChildAABB","currentNode","pow","hurl","xhr","XHRFactory","createXMLHttpRequest","open","responseType","overrideMimeType","onreadystatechange","readyState","status","response","console","log","send","e","getNumPoints","dispose","handler"],"sources":["../../../src/lib/octree.ts"],"sourcesContent":["/* eslint-disable */\n\n// @ts-nocheck\n\nexport class PointCloudOctree {\n constructor() {\n this.url = null;\n this.octreeDir = null;\n this.spacing = 0;\n this.boundingBox = null;\n this.root = null;\n this.nodes = null;\n this.pointAttributes = null;\n this.hierarchyStepSize = -1;\n this.loader = null;\n }\n}\n\nexport class PointCloudOctant {\n constructor(name, octree, boundingBox) {\n this.octree = this.id = PointCloudOctreeGeometryNode.IDCount++;\n this.name = name;\n this.index = parseInt(name.charAt(name.length - 1));\n this.octree = octree;\n this.geometry = null;\n this.boundingBox = boundingBox;\n this.boundingSphere = boundingBox.getBoundingSphere(new THREE.Sphere());\n this.children = {};\n this.numPoints = 0;\n this.level = null;\n this.loaded = false;\n this.oneTimeDisposeHandlers = [];\n }\n\n isGeometryNode() {\n return true;\n }\n\n getLevel() {\n return this.level;\n }\n\n isTreeNode() {\n return false;\n }\n\n isLoaded() {\n return this.loaded;\n }\n\n getBoundingSphere() {\n return this.boundingSphere;\n }\n\n getBoundingBox() {\n return this.boundingBox;\n }\n\n getChildren() {\n // Children is a length 8 array with nulls for \"missing\" octants\n return this.children.filter(Boolean);\n }\n\n getURL() {\n const {version} = this.octree;\n const hierarchyPath = version >= 1.5 ? `${this.getHierarchyPath()}/` : '';\n return `${this.octree.octreeDir}/${hierarchyPath}${this.name}`;\n }\n\n getHierarchyPath() {\n let path = 'r/';\n\n let hierarchyStepSize = this.octree.hierarchyStepSize;\n let indices = this.name.substr(1);\n\n let numParts = Math.floor(indices.length / hierarchyStepSize);\n for (let i = 0; i < numParts; i++) {\n path += indices.substr(i * hierarchyStepSize, hierarchyStepSize) + '/';\n }\n\n path = path.slice(0, -1);\n\n return path;\n }\n\n addChild(child) {\n this.children[child.index] = child;\n child.parent = this;\n }\n\n load() {\n if (\n this.loading === true ||\n this.loaded === true ||\n Potree.numNodesLoading >= Potree.maxNodesLoading\n ) {\n return;\n }\n\n this.loading = true;\n\n Potree.numNodesLoading++;\n\n if (this.octree.loader.version.equalOrHigher('1.5')) {\n if (this.level % this.octree.hierarchyStepSize === 0 && this.hasChildren) {\n this.loadHierachyThenPoints();\n } else {\n this.loadPoints();\n }\n } else {\n this.loadPoints();\n }\n }\n\n loadPoints() {\n this.octree.loader.load(this);\n }\n\n loadHierachyThenPoints() {\n let node = this;\n\n // load hierarchy\n let callback = function (node, hbuffer) {\n let view = new DataView(hbuffer);\n\n let stack = [];\n let children = view.getUint8(0);\n let numPoints = view.getUint32(1, true);\n node.numPoints = numPoints;\n stack.push({children: children, numPoints: numPoints, name: node.name});\n\n let decoded = [];\n\n let offset = 5;\n while (stack.length > 0) {\n let snode = stack.shift();\n let mask = 1;\n for (let i = 0; i < 8; i++) {\n if ((snode.children & mask) !== 0) {\n let childName = snode.name + i;\n\n let childChildren = view.getUint8(offset);\n let childNumPoints = view.getUint32(offset + 1, true);\n\n stack.push({children: childChildren, numPoints: childNumPoints, name: childName});\n\n decoded.push({children: childChildren, numPoints: childNumPoints, name: childName});\n\n offset += 5;\n }\n\n mask = mask * 2;\n }\n\n if (offset === hbuffer.byteLength) {\n break;\n }\n }\n\n // console.log(decoded);\n\n let nodes = {};\n nodes[node.name] = node;\n let pco = node.pcoGeometry;\n\n for (let i = 0; i < decoded.length; i++) {\n let name = decoded[i].name;\n let decodedNumPoints = decoded[i].numPoints;\n let index = parseInt(name.charAt(name.length - 1));\n let parentName = name.substring(0, name.length - 1);\n let parentNode = nodes[parentName];\n let level = name.length - 1;\n let boundingBox = Utils.createChildAABB(parentNode.boundingBox, index);\n\n let currentNode = new PointCloudOctreeGeometryNode(name, pco, boundingBox);\n currentNode.level = level;\n currentNode.numPoints = decodedNumPoints;\n currentNode.hasChildren = decoded[i].children > 0;\n currentNode.spacing = pco.spacing / Math.pow(2, level);\n parentNode.addChild(currentNode);\n nodes[name] = currentNode;\n }\n\n node.loadPoints();\n };\n if (node.level % node.pcoGeometry.hierarchyStepSize === 0) {\n // let hurl = node.pcoGeometry.octreeDir + \"/../hierarchy/\" + node.name + \".hrc\";\n let hurl =\n node.pcoGeometry.octreeDir + '/' + node.getHierarchyPath() + '/' + node.name + '.hrc';\n\n let xhr = XHRFactory.createXMLHttpRequest();\n xhr.open('GET', hurl, true);\n xhr.responseType = 'arraybuffer';\n xhr.overrideMimeType('text/plain; charset=x-user-defined');\n xhr.onreadystatechange = () => {\n if (xhr.readyState === 4) {\n if (xhr.status === 200 || xhr.status === 0) {\n let hbuffer = xhr.response;\n callback(node, hbuffer);\n } else {\n console.log('Failed to load file! HTTP status: ' + xhr.status + ', file: ' + hurl);\n Potree.numNodesLoading--;\n }\n }\n };\n try {\n xhr.send(null);\n } catch (e) {\n console.log('fehler beim laden der punktwolke: ' + e);\n }\n }\n }\n\n getNumPoints() {\n return this.numPoints;\n }\n\n dispose() {\n if (this.geometry && this.parent != null) {\n this.geometry.dispose();\n this.geometry = null;\n this.loaded = false;\n\n // this.dispatchEvent( { type: 'dispose' } );\n for (let i = 0; i < this.oneTimeDisposeHandlers.length; i++) {\n let handler = this.oneTimeDisposeHandlers[i];\n handler();\n }\n this.oneTimeDisposeHandlers = [];\n }\n }\n}\n\nPointCloudOctreeGeometryNode.IDCount = 0;\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"parse-potree-hierarchy-chunk.js","names":["parsePotreeHierarchyChunk","arrayBuffer","tileHeaders","parseBinaryChunk","buildHierarchy","byteOffset","arguments","length","undefined","dataView","DataView","stack","topTileHeader","decodeRow","push","snode","shift","mask","i","header","childMask","tileHeader","name","childCount","byteLength","getUint8","pointCount","getUint32","options","DEFAULT_OPTIONS","spacing","topNode","nodes","index","parseInt","charAt","parentName","substring","parentNode","level","hasChildren","children","childrenByIndex","Array","fill","Math","pow"],"sources":["../../../src/parsers/parse-potree-hierarchy-chunk.ts"],"sourcesContent":["// This file is derived from the Cesium code base under BSD 2-clause license\n// See LICENSE.md and https://github.com/potree/potree/blob/develop/LICENSE\n\n// Potree Hierarchy Chunk file format\n// https://github.com/potree/potree/blob/develop/docs/potree-file-format.md#index-files\n\n/*\n### Hierarchy Chunk Files\n\nAs mentioned in the former section, the `.hrc` files contain the index structure\nmeaning a list of all the files stored within the directory tree.\n\nAn index file contains a list of tuple values with the first being a `uint8`\n\"mask\" and the second being `uint32` \"number of points\" of a hierarchy level\nin a [breadth first level order][breadth-first].\n\nPer hierarchy level we have 8 possible nodes. To indicate whether a node exists\na simple binary mask is used:\n\n| Position | Mask | [Binary][bin] |\n|----------|------|---------------|\n| 0 | 1 | 0b00000001 |\n| 1 | 2 | 0b00000010 |\n| 2 | 4 | 0b00000100 |\n| 3 | 8 | 0b00001000 |\n| 4 | 16 | 0b00010000 |\n| 5 | 32 | 0b00100000 |\n| 6 | 64 | 0b01000000 |\n| 7 | 128 | 0b10000000 |\n\nSo if in a hierarchy the child node 3 and node 7 exist then the hierarchies\nmask has to be `0b00001000 | 0b10000000` → `0b10001000` (=136).\n\n_Example:_ A simple, non-realistic tree:\n\n```\n|- r1\n| |\n| \\- r14 (2 Points)\n|\n\\- r3\n |\n \\- r36 (1 Point)\n```\n\nWould have an index looking like this:\n\n| name | mask | points |\n|------|--------------------|--------|\n| r | `0b00001010` (=10) | `3` |\n| r1 | `0b00010000` (=16) | `2` |\n| r3 | `0b01000000` (=64) | `1` |\n| r14 | `0b00000000` (=0) | `2` |\n| r36 | `0b00000000` (=0) | `1` |\n*/\n\n// @ts-nocheck\n\n// load hierarchy\nexport default function parsePotreeHierarchyChunk(arrayBuffer: ArrayBuffer) {\n const tileHeaders = parseBinaryChunk(arrayBuffer);\n return buildHierarchy(tileHeaders);\n}\n\n// Parses the binary rows\nfunction parseBinaryChunk(arrayBuffer: ArrayBuffer, byteOffset = 0) {\n const dataView = new DataView(arrayBuffer);\n\n const stack = [];\n\n // Get root mask\n const topTileHeader = {};\n byteOffset = decodeRow(dataView, byteOffset, topTileHeader);\n\n stack.push(topTileHeader);\n\n const tileHeaders = [];\n\n while (stack.length > 0) {\n const snode = stack.shift();\n let mask = 1;\n\n for (let i = 0; i < 8; i++) {\n if (snode && (snode.header.childMask & mask) !== 0) {\n const tileHeader = {};\n byteOffset = decodeRow(dataView, byteOffset, tileHeader);\n tileHeader.name = snode.name + i;\n\n stack.push(tileHeader);\n tileHeaders.push(tileHeader);\n snode.header.childCount++;\n }\n mask = mask * 2;\n }\n\n if (byteOffset === dataView.byteLength) {\n break;\n }\n }\n\n return tileHeaders;\n}\n\nfunction decodeRow(dataView, byteOffset, tileHeader) {\n tileHeader.header = tileHeader.header || {};\n tileHeader.header.childMask = dataView.getUint8(byteOffset);\n tileHeader.header.childCount = 0;\n tileHeader.pointCount = dataView.getUint32(byteOffset + 1, true);\n tileHeader.name = '';\n byteOffset += 5;\n return byteOffset;\n}\n\n// Resolves the binary rows into a hierarchy (tree structure)\nfunction buildHierarchy(tileHeaders, options = {}) {\n const DEFAULT_OPTIONS = {spacing: 100}; // TODO assert instead of default?\n options = {...DEFAULT_OPTIONS, ...options};\n\n const topNode = tileHeaders[0];\n const nodes = {};\n\n for (const tileHeader of tileHeaders) {\n const {name} = tileHeader;\n\n const index = parseInt(name.charAt(name.length - 1), 10);\n const parentName = name.substring(0, name.length - 1);\n const parentNode = nodes[parentName];\n const level = name.length - 1;\n // assert(parentNode && level >= 0);\n\n tileHeader.level = level;\n tileHeader.hasChildren = tileHeader.header.childCount;\n tileHeader.children = [];\n tileHeader.childrenByIndex = new Array(8).fill(null);\n tileHeader.spacing = options.spacing / Math.pow(2, level);\n // tileHeader.boundingVolume = Utils.createChildAABB(parentNode.boundingBox, index);\n\n if (parentNode) {\n parentNode.children.push(tileHeader);\n parentNode.childrenByIndex[index] = tileHeader;\n }\n\n // Add the node to the map\n nodes[name] = tileHeader;\n }\n\n // First node is the root\n return topNode;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"parse-potree-hierarchy-chunk.js","names":["parsePotreeHierarchyChunk","arrayBuffer","tileHeaders","parseBinaryChunk","buildHierarchy","byteOffset","arguments","length","undefined","dataView","DataView","stack","topTileHeader","decodeRow","push","snode","shift","mask","i","header","childMask","tileHeader","name","childCount","byteLength","getUint8","pointCount","getUint32","options","DEFAULT_OPTIONS","spacing","topNode","nodes","index","parseInt","charAt","parentName","substring","parentNode","level","hasChildren","children","childrenByIndex","Array","fill","Math","pow"],"sources":["../../../src/parsers/parse-potree-hierarchy-chunk.ts"],"sourcesContent":["// This file is derived from the Cesium code base under BSD 2-clause license\n// See LICENSE.md and https://github.com/potree/potree/blob/develop/LICENSE\n\n// Potree Hierarchy Chunk file format\n// https://github.com/potree/potree/blob/develop/docs/potree-file-format.md#index-files\n\n/*\n### Hierarchy Chunk Files\n\nAs mentioned in the former section, the `.hrc` files contain the index structure\nmeaning a list of all the files stored within the directory tree.\n\nAn index file contains a list of tuple values with the first being a `uint8`\n\"mask\" and the second being `uint32` \"number of points\" of a hierarchy level\nin a [breadth first level order][breadth-first].\n\nPer hierarchy level we have 8 possible nodes. To indicate whether a node exists\na simple binary mask is used:\n\n| Position | Mask | [Binary][bin] |\n|----------|------|---------------|\n| 0 | 1 | 0b00000001 |\n| 1 | 2 | 0b00000010 |\n| 2 | 4 | 0b00000100 |\n| 3 | 8 | 0b00001000 |\n| 4 | 16 | 0b00010000 |\n| 5 | 32 | 0b00100000 |\n| 6 | 64 | 0b01000000 |\n| 7 | 128 | 0b10000000 |\n\nSo if in a hierarchy the child node 3 and node 7 exist then the hierarchies\nmask has to be `0b00001000 | 0b10000000` → `0b10001000` (=136).\n\n_Example:_ A simple, non-realistic tree:\n\n```\n|- r1\n| |\n| \\- r14 (2 Points)\n|\n\\- r3\n |\n \\- r36 (1 Point)\n```\n\nWould have an index looking like this:\n\n| name | mask | points |\n|------|--------------------|--------|\n| r | `0b00001010` (=10) | `3` |\n| r1 | `0b00010000` (=16) | `2` |\n| r3 | `0b01000000` (=64) | `1` |\n| r14 | `0b00000000` (=0) | `2` |\n| r36 | `0b00000000` (=0) | `1` |\n*/\n\n// @ts-nocheck\n\n// load hierarchy\nexport default function parsePotreeHierarchyChunk(arrayBuffer: ArrayBuffer) {\n const tileHeaders = parseBinaryChunk(arrayBuffer);\n return buildHierarchy(tileHeaders);\n}\n\n// Parses the binary rows\nfunction parseBinaryChunk(arrayBuffer: ArrayBuffer, byteOffset = 0) {\n const dataView = new DataView(arrayBuffer);\n\n const stack = [];\n\n // Get root mask\n const topTileHeader = {};\n byteOffset = decodeRow(dataView, byteOffset, topTileHeader);\n\n stack.push(topTileHeader);\n\n const tileHeaders = [];\n\n while (stack.length > 0) {\n const snode = stack.shift();\n let mask = 1;\n\n for (let i = 0; i < 8; i++) {\n if (snode && (snode.header.childMask & mask) !== 0) {\n const tileHeader = {};\n byteOffset = decodeRow(dataView, byteOffset, tileHeader);\n tileHeader.name = snode.name + i;\n\n stack.push(tileHeader);\n tileHeaders.push(tileHeader);\n snode.header.childCount++;\n }\n mask = mask * 2;\n }\n\n if (byteOffset === dataView.byteLength) {\n break;\n }\n }\n\n return tileHeaders;\n}\n\nfunction decodeRow(dataView, byteOffset, tileHeader) {\n tileHeader.header = tileHeader.header || {};\n tileHeader.header.childMask = dataView.getUint8(byteOffset);\n tileHeader.header.childCount = 0;\n tileHeader.pointCount = dataView.getUint32(byteOffset + 1, true);\n tileHeader.name = '';\n byteOffset += 5;\n return byteOffset;\n}\n\n// Resolves the binary rows into a hierarchy (tree structure)\nfunction buildHierarchy(tileHeaders, options = {}) {\n const DEFAULT_OPTIONS = {spacing: 100}; // TODO assert instead of default?\n options = {...DEFAULT_OPTIONS, ...options};\n\n const topNode = tileHeaders[0];\n const nodes = {};\n\n for (const tileHeader of tileHeaders) {\n const {name} = tileHeader;\n\n const index = parseInt(name.charAt(name.length - 1), 10);\n const parentName = name.substring(0, name.length - 1);\n const parentNode = nodes[parentName];\n const level = name.length - 1;\n // assert(parentNode && level >= 0);\n\n tileHeader.level = level;\n tileHeader.hasChildren = tileHeader.header.childCount;\n tileHeader.children = [];\n tileHeader.childrenByIndex = new Array(8).fill(null);\n tileHeader.spacing = options.spacing / Math.pow(2, level);\n // tileHeader.boundingVolume = Utils.createChildAABB(parentNode.boundingBox, index);\n\n if (parentNode) {\n parentNode.children.push(tileHeader);\n parentNode.childrenByIndex[index] = tileHeader;\n }\n\n // Add the node to the map\n nodes[name] = tileHeader;\n }\n\n // First node is the root\n return topNode;\n}\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- const VERSION = typeof "3.4.0-alpha.3" !== 'undefined' ? "3.4.0-alpha.3" : 'latest';
1
+ const VERSION = typeof "3.4.0-alpha.5" !== 'undefined' ? "3.4.0-alpha.5" : 'latest';
2
2
  export const PotreeLoader = {
3
3
  name: 'potree',
4
4
  id: 'potree',
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@loaders.gl/potree",
3
- "version": "3.4.0-alpha.3",
3
+ "version": "3.4.0-alpha.5",
4
4
  "description": "potree loaders for large point clouds.",
5
5
  "license": "MIT",
6
6
  "publishConfig": {
@@ -35,8 +35,8 @@
35
35
  "build-bundle": "esbuild src/bundle.ts --bundle --outfile=dist/dist.min.js"
36
36
  },
37
37
  "dependencies": {
38
- "@loaders.gl/math": "3.4.0-alpha.3",
38
+ "@loaders.gl/math": "3.4.0-alpha.5",
39
39
  "@math.gl/core": "^3.5.1"
40
40
  },
41
- "gitHead": "a954528dd1d78a1f128d8f6b07e4baeb7a296924"
41
+ "gitHead": "686929f85b3420c15df051eab769942b260dd242"
42
42
  }