@loaders.gl/potree 3.1.0-alpha.1 → 3.1.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.
- package/dist/bundle.d.ts +1 -0
- package/dist/dist.min.js +1 -1
- package/dist/dist.min.js.map +1 -1
- package/dist/es5/bundle.js +7 -0
- package/dist/es5/bundle.js.map +1 -0
- package/dist/es5/index.js +30 -0
- package/dist/es5/index.js.map +1 -0
- package/dist/es5/lib/octree.js +240 -0
- package/dist/es5/lib/octree.js.map +1 -0
- package/dist/es5/parsers/parse-potree-bin.js +11 -0
- package/dist/es5/parsers/parse-potree-bin.js.map +1 -0
- package/dist/es5/parsers/parse-potree-hierarchy-chunk.js +90 -0
- package/dist/es5/parsers/parse-potree-hierarchy-chunk.js.map +1 -0
- package/dist/es5/potree-bin-loader.js +28 -0
- package/dist/es5/potree-bin-loader.js.map +1 -0
- package/dist/es5/potree-hierarchy-chunk-loader.js +26 -0
- package/dist/es5/potree-hierarchy-chunk-loader.js.map +1 -0
- package/dist/es5/potree-loader.js +22 -0
- package/dist/es5/potree-loader.js.map +1 -0
- package/dist/esm/bundle.js +5 -0
- package/dist/esm/bundle.js.map +1 -0
- package/dist/{index.js → esm/index.js} +0 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/{lib → esm/lib}/octree.js +2 -2
- package/dist/esm/lib/octree.js.map +1 -0
- package/dist/{parsers → esm/parsers}/parse-potree-bin.js +0 -0
- package/dist/esm/parsers/parse-potree-bin.js.map +1 -0
- package/dist/{parsers → esm/parsers}/parse-potree-hierarchy-chunk.js +0 -0
- package/dist/esm/parsers/parse-potree-hierarchy-chunk.js.map +1 -0
- package/dist/{potree-bin-loader.js → esm/potree-bin-loader.js} +0 -0
- package/dist/esm/potree-bin-loader.js.map +1 -0
- package/dist/{potree-hierarchy-chunk-loader.js → esm/potree-hierarchy-chunk-loader.js} +0 -0
- package/dist/esm/potree-hierarchy-chunk-loader.js.map +1 -0
- package/dist/{potree-loader.js → esm/potree-loader.js} +1 -1
- package/dist/esm/potree-loader.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/lib/octree.d.ts +42 -0
- package/dist/parsers/parse-potree-bin.d.ts +1 -0
- package/dist/parsers/parse-potree-hierarchy-chunk.d.ts +1 -0
- package/dist/potree-bin-loader.d.ts +5 -0
- package/dist/potree-hierarchy-chunk-loader.d.ts +3 -0
- package/dist/potree-loader.d.ts +3 -0
- package/package.json +7 -6
- package/src/bundle.ts +2 -3
- package/dist/bundle.js +0 -7
- package/dist/bundle.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/lib/octree.js.map +0 -1
- package/dist/parsers/parse-potree-bin.js.map +0 -1
- package/dist/parsers/parse-potree-hierarchy-chunk.js.map +0 -1
- package/dist/potree-bin-loader.js.map +0 -1
- package/dist/potree-hierarchy-chunk-loader.js.map +0 -1
- package/dist/potree-loader.js.map +0 -1
package/dist/bundle.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
declare const moduleExports: any;
|
package/dist/dist.min.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
!function(e,n){if("object"==typeof exports&&"object"==typeof module)module.exports=n();else if("function"==typeof define&&define.amd)define([],n);else{var t=n();for(var r in t)("object"==typeof exports?exports:e)[r]=t[r]}}(window,(function(){return function(e){var n={};function t(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}return t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{enumerable:!0,get:r})},t.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},t.t=function(e,n){if(1&n&&(e=t(e)),8&n)return e;if(4&n&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(t.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&n&&"string"!=typeof e)for(var o in e)t.d(r,o,function(n){return e[n]}.bind(null,o));return r},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},t.p="",t(t.s=0)}([function(e,n,t){
|
|
1
|
+
!function(e,n){if("object"==typeof exports&&"object"==typeof module)module.exports=n();else if("function"==typeof define&&define.amd)define([],n);else{var t=n();for(var r in t)("object"==typeof exports?exports:e)[r]=t[r]}}(window,(function(){return function(e){var n={};function t(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}return t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{enumerable:!0,get:r})},t.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},t.t=function(e,n){if(1&n&&(e=t(e)),8&n)return e;if(4&n&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(t.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&n&&"string"!=typeof e)for(var o in e)t.d(r,o,function(n){return e[n]}.bind(null,o));return r},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},t.p="",t(t.s=0)}([function(e,n,t){const r=t(1);globalThis.loaders=globalThis.loaders||{},e.exports=Object.assign(globalThis.loaders,r)},function(e,n,t){"use strict";t.r(n),t.d(n,"PotreeLoader",(function(){return r})),t.d(n,"PotreeHierarchyChunkLoader",(function(){return a})),t.d(n,"PotreeBinLoader",(function(){return s}));const r={name:"potree",id:"potree",module:"potree",version:"3.1.0-alpha.5",extensions:["json"],mimeTypes:["application/json"],testText:e=>e.indexOf("octreeDir")>=0,parseTextSync:e=>JSON.parse(e),options:{potree:{}}};function o(e){return function(e,n={}){n={spacing:100,...n};const t=e[0],r={};for(const t of e){const{name:e}=t,o=parseInt(e.charAt(e.length-1),10),i=e.substring(0,e.length-1),a=r[i],c=e.length-1;t.level=c,t.hasChildren=t.header.childCount,t.children=[],t.childrenByIndex=new Array(8).fill(null),t.spacing=n.spacing/Math.pow(2,c),a&&(a.children.push(t),a.childrenByIndex[o]=t),r[e]=t}return t}(function(e,n=0){const t=new DataView(e),r=[],o={};n=i(t,n,o),r.push(o);const a=[];for(;r.length>0;){const e=r.shift();let o=1;for(let c=0;c<8;c++){if(e&&0!=(e.header.childMask&o)){const o={};n=i(t,n,o),o.name=e.name+c,r.push(o),a.push(o),e.header.childCount++}o*=2}if(n===t.byteLength)break}return a}(e))}function i(e,n,t){return t.header=t.header||{},t.header.childMask=e.getUint8(n),t.header.childCount=0,t.pointCount=e.getUint32(n+1,!0),t.name="",n+=5}const a={id:"potree",name:"potree Hierarchy Chunk",extensions:["hrc"],mimeTypes:["application/octet-stream"],parse:async(e,n)=>await c(e),parseSync:c,binary:!0};function c(e){return o(e)}const s={name:"potree Binary Point Attributes",id:"potree",extensions:["bin"],mimeTypes:["application/octet-stream"],parseSync:function(e,n){const t={};return t},binary:!0}}])}));
|
|
2
2
|
//# sourceMappingURL=dist.min.js.map
|
package/dist/dist.min.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap","webpack:///./src/bundle.ts","webpack:///(webpack)/buildin/global.js","webpack:///./src/potree-loader.ts","webpack:///./src/parsers/parse-potree-hierarchy-chunk.js","webpack:///./src/potree-hierarchy-chunk-loader.ts","webpack:///./src/potree-bin-loader.ts"],"names":["root","factory","exports","module","define","amd","a","i","window","installedModules","__webpack_require__","moduleId","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","moduleExports","require","_global","global","loaders","assign","g","this","Function","e","PotreeLoader","id","version","extensions","mimeTypes","testText","text","indexOf","parseTextSync","JSON","parse","options","potree","parsePotreeHierarchyChunk","arrayBuffer","tileHeaders","spacing","topNode","nodes","tileHeader","index","parseInt","charAt","length","parentName","substring","parentNode","level","hasChildren","header","childCount","children","childrenByIndex","Array","fill","Math","pow","push","buildHierarchy","byteOffset","dataView","DataView","stack","topTileHeader","decodeRow","snode","shift","mask","childMask","byteLength","parseBinaryChunk","getUint8","pointCount","getUint32","PotreeHierarchyChunkLoader","async","parseSync","binary","PotreeBinLoader"],"mappings":"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","file":"dist.min.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(window, function() {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 0);\n","// @ts-nocheck\nconst moduleExports = require('./index');\nconst _global = typeof window === 'undefined' ? global : window;\n_global.loaders = _global.loaders || {};\nmodule.exports = Object.assign(_global.loaders, moduleExports);\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","import type {LoaderWithParser} from '@loaders.gl/loader-utils';\n\n// __VERSION__ is injected by babel-plugin-version-inline\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\nconst VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';\n\n/** Potree loader */\n// @ts-ignore\nexport const PotreeLoader: LoaderWithParser = {\n name: 'potree',\n id: 'potree',\n module: 'potree',\n version: VERSION,\n extensions: ['json'],\n mimeTypes: ['application/json'],\n testText: (text) => text.indexOf('octreeDir') >= 0,\n parseTextSync: (text) => JSON.parse(text),\n options: {\n potree: {}\n }\n};\n","// 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// load hierarchy\nexport default function parsePotreeHierarchyChunk(arrayBuffer) {\n const tileHeaders = parseBinaryChunk(arrayBuffer);\n return buildHierarchy(tileHeaders);\n}\n\n// Parses the binary rows\nfunction parseBinaryChunk(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","import type {LoaderWithParser} from '@loaders.gl/loader-utils';\nimport {default as parsePotreeHierarchyChunk} from './parsers/parse-potree-hierarchy-chunk';\n\n/** Potree hierarchy chunk loader */\n// @ts-ignore\nexport const PotreeHierarchyChunkLoader: LoaderWithParser = {\n id: 'potree',\n name: 'potree Hierarchy Chunk',\n extensions: ['hrc'],\n mimeTypes: ['application/octet-stream'],\n // binary potree files have no header bytes, no content test function possible\n // test: ['...'],\n parse: async (arrayBuffer, options) => await parseSync(arrayBuffer),\n parseSync,\n binary: true\n};\n\nfunction parseSync(arrayBuffer) {\n return parsePotreeHierarchyChunk(arrayBuffer);\n}\n","import type {LoaderWithParser} from '@loaders.gl/loader-utils';\nimport {default as parsePotreeBin} from './parsers/parse-potree-bin';\n\n/**\n * Loader for potree Binary Point Attributes\n * */\n// @ts-ignore\nexport const PotreeBinLoader: LoaderWithParser = {\n name: 'potree Binary Point Attributes',\n id: 'potree',\n extensions: ['bin'],\n mimeTypes: ['application/octet-stream'],\n // Unfortunately binary potree files have no header bytes, no test possible\n // test: ['...'],\n parseSync,\n binary: true\n};\n\nfunction parseSync(arrayBuffer, options) {\n const index = {};\n const byteOffset = 0;\n parsePotreeBin(arrayBuffer, byteOffset, options, index);\n return index;\n}\n"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap","webpack:///./src/bundle.ts","webpack:///./src/potree-loader.ts","webpack:///./src/parsers/parse-potree-hierarchy-chunk.js","webpack:///./src/potree-hierarchy-chunk-loader.ts","webpack:///./src/potree-bin-loader.ts"],"names":["root","factory","exports","module","define","amd","a","i","window","installedModules","__webpack_require__","moduleId","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","moduleExports","require","globalThis","loaders","assign","PotreeLoader","id","version","extensions","mimeTypes","testText","text","indexOf","parseTextSync","JSON","parse","options","potree","parsePotreeHierarchyChunk","arrayBuffer","tileHeaders","spacing","topNode","nodes","tileHeader","index","parseInt","charAt","length","parentName","substring","parentNode","level","hasChildren","header","childCount","children","childrenByIndex","Array","fill","Math","pow","push","buildHierarchy","byteOffset","dataView","DataView","stack","topTileHeader","decodeRow","snode","shift","mask","childMask","byteLength","parseBinaryChunk","getUint8","pointCount","getUint32","PotreeHierarchyChunkLoader","async","parseSync","binary","PotreeBinLoader"],"mappings":"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","file":"dist.min.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(window, function() {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 0);\n","// @ts-nocheck\nconst moduleExports = require('./index');\nglobalThis.loaders = globalThis.loaders || {};\nmodule.exports = Object.assign(globalThis.loaders, moduleExports);\n","import type {LoaderWithParser} from '@loaders.gl/loader-utils';\n\n// __VERSION__ is injected by babel-plugin-version-inline\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\nconst VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';\n\n/** Potree loader */\n// @ts-ignore\nexport const PotreeLoader: LoaderWithParser = {\n name: 'potree',\n id: 'potree',\n module: 'potree',\n version: VERSION,\n extensions: ['json'],\n mimeTypes: ['application/json'],\n testText: (text) => text.indexOf('octreeDir') >= 0,\n parseTextSync: (text) => JSON.parse(text),\n options: {\n potree: {}\n }\n};\n","// 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// load hierarchy\nexport default function parsePotreeHierarchyChunk(arrayBuffer) {\n const tileHeaders = parseBinaryChunk(arrayBuffer);\n return buildHierarchy(tileHeaders);\n}\n\n// Parses the binary rows\nfunction parseBinaryChunk(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","import type {LoaderWithParser} from '@loaders.gl/loader-utils';\nimport {default as parsePotreeHierarchyChunk} from './parsers/parse-potree-hierarchy-chunk';\n\n/** Potree hierarchy chunk loader */\n// @ts-ignore\nexport const PotreeHierarchyChunkLoader: LoaderWithParser = {\n id: 'potree',\n name: 'potree Hierarchy Chunk',\n extensions: ['hrc'],\n mimeTypes: ['application/octet-stream'],\n // binary potree files have no header bytes, no content test function possible\n // test: ['...'],\n parse: async (arrayBuffer, options) => await parseSync(arrayBuffer),\n parseSync,\n binary: true\n};\n\nfunction parseSync(arrayBuffer) {\n return parsePotreeHierarchyChunk(arrayBuffer);\n}\n","import type {LoaderWithParser} from '@loaders.gl/loader-utils';\nimport {default as parsePotreeBin} from './parsers/parse-potree-bin';\n\n/**\n * Loader for potree Binary Point Attributes\n * */\n// @ts-ignore\nexport const PotreeBinLoader: LoaderWithParser = {\n name: 'potree Binary Point Attributes',\n id: 'potree',\n extensions: ['bin'],\n mimeTypes: ['application/octet-stream'],\n // Unfortunately binary potree files have no header bytes, no test possible\n // test: ['...'],\n parseSync,\n binary: true\n};\n\nfunction parseSync(arrayBuffer, options) {\n const index = {};\n const byteOffset = 0;\n parsePotreeBin(arrayBuffer, byteOffset, options, index);\n return index;\n}\n"],"sourceRoot":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/bundle.ts"],"names":["moduleExports","require","globalThis","loaders","module","exports","Object","assign"],"mappings":";;AACA,MAAMA,aAAa,GAAGC,OAAO,CAAC,SAAD,CAA7B;;AACAC,UAAU,CAACC,OAAX,GAAqBD,UAAU,CAACC,OAAX,IAAsB,EAA3C;AACAC,MAAM,CAACC,OAAP,GAAiBC,MAAM,CAACC,MAAP,CAAcL,UAAU,CAACC,OAAzB,EAAkCH,aAAlC,CAAjB","sourcesContent":["// @ts-nocheck\nconst moduleExports = require('./index');\nglobalThis.loaders = globalThis.loaders || {};\nmodule.exports = Object.assign(globalThis.loaders, moduleExports);\n"],"file":"bundle.js"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
Object.defineProperty(exports, "PotreeLoader", {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: function () {
|
|
9
|
+
return _potreeLoader.PotreeLoader;
|
|
10
|
+
}
|
|
11
|
+
});
|
|
12
|
+
Object.defineProperty(exports, "PotreeHierarchyChunkLoader", {
|
|
13
|
+
enumerable: true,
|
|
14
|
+
get: function () {
|
|
15
|
+
return _potreeHierarchyChunkLoader.PotreeHierarchyChunkLoader;
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
Object.defineProperty(exports, "PotreeBinLoader", {
|
|
19
|
+
enumerable: true,
|
|
20
|
+
get: function () {
|
|
21
|
+
return _potreeBinLoader.PotreeBinLoader;
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
var _potreeLoader = require("./potree-loader");
|
|
26
|
+
|
|
27
|
+
var _potreeHierarchyChunkLoader = require("./potree-hierarchy-chunk-loader");
|
|
28
|
+
|
|
29
|
+
var _potreeBinLoader = require("./potree-bin-loader");
|
|
30
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA","sourcesContent":["export {PotreeLoader} from './potree-loader';\nexport {PotreeHierarchyChunkLoader} from './potree-hierarchy-chunk-loader';\nexport {PotreeBinLoader} from './potree-bin-loader';\n"],"file":"index.js"}
|
|
@@ -0,0 +1,240 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.PointCloudOctant = exports.PointCloudOctree = void 0;
|
|
7
|
+
|
|
8
|
+
class PointCloudOctree {
|
|
9
|
+
constructor() {
|
|
10
|
+
this.url = null;
|
|
11
|
+
this.octreeDir = null;
|
|
12
|
+
this.spacing = 0;
|
|
13
|
+
this.boundingBox = null;
|
|
14
|
+
this.root = null;
|
|
15
|
+
this.nodes = null;
|
|
16
|
+
this.pointAttributes = null;
|
|
17
|
+
this.hierarchyStepSize = -1;
|
|
18
|
+
this.loader = null;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
exports.PointCloudOctree = PointCloudOctree;
|
|
24
|
+
|
|
25
|
+
class PointCloudOctant {
|
|
26
|
+
constructor(name, octree, boundingBox) {
|
|
27
|
+
this.octree = this.id = PointCloudOctreeGeometryNode.IDCount++;
|
|
28
|
+
this.name = name;
|
|
29
|
+
this.index = parseInt(name.charAt(name.length - 1));
|
|
30
|
+
this.octree = octree;
|
|
31
|
+
this.geometry = null;
|
|
32
|
+
this.boundingBox = boundingBox;
|
|
33
|
+
this.boundingSphere = boundingBox.getBoundingSphere(new THREE.Sphere());
|
|
34
|
+
this.children = {};
|
|
35
|
+
this.numPoints = 0;
|
|
36
|
+
this.level = null;
|
|
37
|
+
this.loaded = false;
|
|
38
|
+
this.oneTimeDisposeHandlers = [];
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
isGeometryNode() {
|
|
42
|
+
return true;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
getLevel() {
|
|
46
|
+
return this.level;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
isTreeNode() {
|
|
50
|
+
return false;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
isLoaded() {
|
|
54
|
+
return this.loaded;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
getBoundingSphere() {
|
|
58
|
+
return this.boundingSphere;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
getBoundingBox() {
|
|
62
|
+
return this.boundingBox;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
getChildren() {
|
|
66
|
+
return this.children.filter(Boolean);
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
getURL() {
|
|
70
|
+
const {
|
|
71
|
+
version
|
|
72
|
+
} = this.octree;
|
|
73
|
+
const hierarchyPath = version >= 1.5 ? "".concat(this.getHierarchyPath(), "/") : '';
|
|
74
|
+
return "".concat(this.octree.octreeDir, "/").concat(hierarchyPath).concat(this.name);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
getHierarchyPath() {
|
|
78
|
+
let path = 'r/';
|
|
79
|
+
let hierarchyStepSize = this.octree.hierarchyStepSize;
|
|
80
|
+
let indices = this.name.substr(1);
|
|
81
|
+
let numParts = Math.floor(indices.length / hierarchyStepSize);
|
|
82
|
+
|
|
83
|
+
for (let i = 0; i < numParts; i++) {
|
|
84
|
+
path += indices.substr(i * hierarchyStepSize, hierarchyStepSize) + '/';
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
path = path.slice(0, -1);
|
|
88
|
+
return path;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
addChild(child) {
|
|
92
|
+
this.children[child.index] = child;
|
|
93
|
+
child.parent = this;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
load() {
|
|
97
|
+
if (this.loading === true || this.loaded === true || Potree.numNodesLoading >= Potree.maxNodesLoading) {
|
|
98
|
+
return;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
this.loading = true;
|
|
102
|
+
Potree.numNodesLoading++;
|
|
103
|
+
|
|
104
|
+
if (this.octree.loader.version.equalOrHigher('1.5')) {
|
|
105
|
+
if (this.level % this.octree.hierarchyStepSize === 0 && this.hasChildren) {
|
|
106
|
+
this.loadHierachyThenPoints();
|
|
107
|
+
} else {
|
|
108
|
+
this.loadPoints();
|
|
109
|
+
}
|
|
110
|
+
} else {
|
|
111
|
+
this.loadPoints();
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
loadPoints() {
|
|
116
|
+
this.octree.loader.load(this);
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
loadHierachyThenPoints() {
|
|
120
|
+
let node = this;
|
|
121
|
+
|
|
122
|
+
let callback = function (node, hbuffer) {
|
|
123
|
+
let view = new DataView(hbuffer);
|
|
124
|
+
let stack = [];
|
|
125
|
+
let children = view.getUint8(0);
|
|
126
|
+
let numPoints = view.getUint32(1, true);
|
|
127
|
+
node.numPoints = numPoints;
|
|
128
|
+
stack.push({
|
|
129
|
+
children: children,
|
|
130
|
+
numPoints: numPoints,
|
|
131
|
+
name: node.name
|
|
132
|
+
});
|
|
133
|
+
let decoded = [];
|
|
134
|
+
let offset = 5;
|
|
135
|
+
|
|
136
|
+
while (stack.length > 0) {
|
|
137
|
+
let snode = stack.shift();
|
|
138
|
+
let mask = 1;
|
|
139
|
+
|
|
140
|
+
for (let i = 0; i < 8; i++) {
|
|
141
|
+
if ((snode.children & mask) !== 0) {
|
|
142
|
+
let childName = snode.name + i;
|
|
143
|
+
let childChildren = view.getUint8(offset);
|
|
144
|
+
let childNumPoints = view.getUint32(offset + 1, true);
|
|
145
|
+
stack.push({
|
|
146
|
+
children: childChildren,
|
|
147
|
+
numPoints: childNumPoints,
|
|
148
|
+
name: childName
|
|
149
|
+
});
|
|
150
|
+
decoded.push({
|
|
151
|
+
children: childChildren,
|
|
152
|
+
numPoints: childNumPoints,
|
|
153
|
+
name: childName
|
|
154
|
+
});
|
|
155
|
+
offset += 5;
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
mask = mask * 2;
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
if (offset === hbuffer.byteLength) {
|
|
162
|
+
break;
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
let nodes = {};
|
|
167
|
+
nodes[node.name] = node;
|
|
168
|
+
let pco = node.pcoGeometry;
|
|
169
|
+
|
|
170
|
+
for (let i = 0; i < decoded.length; i++) {
|
|
171
|
+
let name = decoded[i].name;
|
|
172
|
+
let decodedNumPoints = decoded[i].numPoints;
|
|
173
|
+
let index = parseInt(name.charAt(name.length - 1));
|
|
174
|
+
let parentName = name.substring(0, name.length - 1);
|
|
175
|
+
let parentNode = nodes[parentName];
|
|
176
|
+
let level = name.length - 1;
|
|
177
|
+
let boundingBox = Utils.createChildAABB(parentNode.boundingBox, index);
|
|
178
|
+
let currentNode = new PointCloudOctreeGeometryNode(name, pco, boundingBox);
|
|
179
|
+
currentNode.level = level;
|
|
180
|
+
currentNode.numPoints = decodedNumPoints;
|
|
181
|
+
currentNode.hasChildren = decoded[i].children > 0;
|
|
182
|
+
currentNode.spacing = pco.spacing / Math.pow(2, level);
|
|
183
|
+
parentNode.addChild(currentNode);
|
|
184
|
+
nodes[name] = currentNode;
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
node.loadPoints();
|
|
188
|
+
};
|
|
189
|
+
|
|
190
|
+
if (node.level % node.pcoGeometry.hierarchyStepSize === 0) {
|
|
191
|
+
let hurl = node.pcoGeometry.octreeDir + '/' + node.getHierarchyPath() + '/' + node.name + '.hrc';
|
|
192
|
+
let xhr = XHRFactory.createXMLHttpRequest();
|
|
193
|
+
xhr.open('GET', hurl, true);
|
|
194
|
+
xhr.responseType = 'arraybuffer';
|
|
195
|
+
xhr.overrideMimeType('text/plain; charset=x-user-defined');
|
|
196
|
+
|
|
197
|
+
xhr.onreadystatechange = () => {
|
|
198
|
+
if (xhr.readyState === 4) {
|
|
199
|
+
if (xhr.status === 200 || xhr.status === 0) {
|
|
200
|
+
let hbuffer = xhr.response;
|
|
201
|
+
callback(node, hbuffer);
|
|
202
|
+
} else {
|
|
203
|
+
console.log('Failed to load file! HTTP status: ' + xhr.status + ', file: ' + hurl);
|
|
204
|
+
Potree.numNodesLoading--;
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
};
|
|
208
|
+
|
|
209
|
+
try {
|
|
210
|
+
xhr.send(null);
|
|
211
|
+
} catch (e) {
|
|
212
|
+
console.log('fehler beim laden der punktwolke: ' + e);
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
getNumPoints() {
|
|
218
|
+
return this.numPoints;
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
dispose() {
|
|
222
|
+
if (this.geometry && this.parent != null) {
|
|
223
|
+
this.geometry.dispose();
|
|
224
|
+
this.geometry = null;
|
|
225
|
+
this.loaded = false;
|
|
226
|
+
|
|
227
|
+
for (let i = 0; i < this.oneTimeDisposeHandlers.length; i++) {
|
|
228
|
+
let handler = this.oneTimeDisposeHandlers[i];
|
|
229
|
+
handler();
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
this.oneTimeDisposeHandlers = [];
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
exports.PointCloudOctant = PointCloudOctant;
|
|
239
|
+
PointCloudOctreeGeometryNode.IDCount = 0;
|
|
240
|
+
//# sourceMappingURL=octree.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/lib/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","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"],"mappings":"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","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"],"file":"octree.js"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = parsePotreeBin;
|
|
7
|
+
|
|
8
|
+
function parsePotreeBin(arrayBuffer, byteOffset, options, index) {
|
|
9
|
+
return null;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=parse-potree-bin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/parsers/parse-potree-bin.js"],"names":["parsePotreeBin","arrayBuffer","byteOffset","options","index"],"mappings":";;;;;;;AAAe,SAASA,cAAT,CAAwBC,WAAxB,EAAqCC,UAArC,EAAiDC,OAAjD,EAA0DC,KAA1D,EAAiE;AAC9E,SAAO,IAAP;AACD","sourcesContent":["export default function parsePotreeBin(arrayBuffer, byteOffset, options, index) {\n return null;\n}\n"],"file":"parse-potree-bin.js"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = parsePotreeHierarchyChunk;
|
|
7
|
+
|
|
8
|
+
function parsePotreeHierarchyChunk(arrayBuffer) {
|
|
9
|
+
const tileHeaders = parseBinaryChunk(arrayBuffer);
|
|
10
|
+
return buildHierarchy(tileHeaders);
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
function parseBinaryChunk(arrayBuffer, byteOffset = 0) {
|
|
14
|
+
const dataView = new DataView(arrayBuffer);
|
|
15
|
+
const stack = [];
|
|
16
|
+
const topTileHeader = {};
|
|
17
|
+
byteOffset = decodeRow(dataView, byteOffset, topTileHeader);
|
|
18
|
+
stack.push(topTileHeader);
|
|
19
|
+
const tileHeaders = [];
|
|
20
|
+
|
|
21
|
+
while (stack.length > 0) {
|
|
22
|
+
const snode = stack.shift();
|
|
23
|
+
let mask = 1;
|
|
24
|
+
|
|
25
|
+
for (let i = 0; i < 8; i++) {
|
|
26
|
+
if (snode && (snode.header.childMask & mask) !== 0) {
|
|
27
|
+
const tileHeader = {};
|
|
28
|
+
byteOffset = decodeRow(dataView, byteOffset, tileHeader);
|
|
29
|
+
tileHeader.name = snode.name + i;
|
|
30
|
+
stack.push(tileHeader);
|
|
31
|
+
tileHeaders.push(tileHeader);
|
|
32
|
+
snode.header.childCount++;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
mask = mask * 2;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
if (byteOffset === dataView.byteLength) {
|
|
39
|
+
break;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
return tileHeaders;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
function decodeRow(dataView, byteOffset, tileHeader) {
|
|
47
|
+
tileHeader.header = tileHeader.header || {};
|
|
48
|
+
tileHeader.header.childMask = dataView.getUint8(byteOffset);
|
|
49
|
+
tileHeader.header.childCount = 0;
|
|
50
|
+
tileHeader.pointCount = dataView.getUint32(byteOffset + 1, true);
|
|
51
|
+
tileHeader.name = '';
|
|
52
|
+
byteOffset += 5;
|
|
53
|
+
return byteOffset;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
function buildHierarchy(tileHeaders, options = {}) {
|
|
57
|
+
const DEFAULT_OPTIONS = {
|
|
58
|
+
spacing: 100
|
|
59
|
+
};
|
|
60
|
+
options = { ...DEFAULT_OPTIONS,
|
|
61
|
+
...options
|
|
62
|
+
};
|
|
63
|
+
const topNode = tileHeaders[0];
|
|
64
|
+
const nodes = {};
|
|
65
|
+
|
|
66
|
+
for (const tileHeader of tileHeaders) {
|
|
67
|
+
const {
|
|
68
|
+
name
|
|
69
|
+
} = tileHeader;
|
|
70
|
+
const index = parseInt(name.charAt(name.length - 1), 10);
|
|
71
|
+
const parentName = name.substring(0, name.length - 1);
|
|
72
|
+
const parentNode = nodes[parentName];
|
|
73
|
+
const level = name.length - 1;
|
|
74
|
+
tileHeader.level = level;
|
|
75
|
+
tileHeader.hasChildren = tileHeader.header.childCount;
|
|
76
|
+
tileHeader.children = [];
|
|
77
|
+
tileHeader.childrenByIndex = new Array(8).fill(null);
|
|
78
|
+
tileHeader.spacing = options.spacing / Math.pow(2, level);
|
|
79
|
+
|
|
80
|
+
if (parentNode) {
|
|
81
|
+
parentNode.children.push(tileHeader);
|
|
82
|
+
parentNode.childrenByIndex[index] = tileHeader;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
nodes[name] = tileHeader;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
return topNode;
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=parse-potree-hierarchy-chunk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/parsers/parse-potree-hierarchy-chunk.js"],"names":["parsePotreeHierarchyChunk","arrayBuffer","tileHeaders","parseBinaryChunk","buildHierarchy","byteOffset","dataView","DataView","stack","topTileHeader","decodeRow","push","length","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"],"mappings":"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","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// load hierarchy\nexport default function parsePotreeHierarchyChunk(arrayBuffer) {\n const tileHeaders = parseBinaryChunk(arrayBuffer);\n return buildHierarchy(tileHeaders);\n}\n\n// Parses the binary rows\nfunction parseBinaryChunk(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"],"file":"parse-potree-hierarchy-chunk.js"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.PotreeBinLoader = void 0;
|
|
9
|
+
|
|
10
|
+
var _parsePotreeBin = _interopRequireDefault(require("./parsers/parse-potree-bin"));
|
|
11
|
+
|
|
12
|
+
const PotreeBinLoader = {
|
|
13
|
+
name: 'potree Binary Point Attributes',
|
|
14
|
+
id: 'potree',
|
|
15
|
+
extensions: ['bin'],
|
|
16
|
+
mimeTypes: ['application/octet-stream'],
|
|
17
|
+
parseSync,
|
|
18
|
+
binary: true
|
|
19
|
+
};
|
|
20
|
+
exports.PotreeBinLoader = PotreeBinLoader;
|
|
21
|
+
|
|
22
|
+
function parseSync(arrayBuffer, options) {
|
|
23
|
+
const index = {};
|
|
24
|
+
const byteOffset = 0;
|
|
25
|
+
(0, _parsePotreeBin.default)(arrayBuffer, byteOffset, options, index);
|
|
26
|
+
return index;
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=potree-bin-loader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/potree-bin-loader.ts"],"names":["PotreeBinLoader","name","id","extensions","mimeTypes","parseSync","binary","arrayBuffer","options","index","byteOffset"],"mappings":";;;;;;;;;AACA;;AAMO,MAAMA,eAAiC,GAAG;AAC/CC,EAAAA,IAAI,EAAE,gCADyC;AAE/CC,EAAAA,EAAE,EAAE,QAF2C;AAG/CC,EAAAA,UAAU,EAAE,CAAC,KAAD,CAHmC;AAI/CC,EAAAA,SAAS,EAAE,CAAC,0BAAD,CAJoC;AAO/CC,EAAAA,SAP+C;AAQ/CC,EAAAA,MAAM,EAAE;AARuC,CAA1C;;;AAWP,SAASD,SAAT,CAAmBE,WAAnB,EAAgCC,OAAhC,EAAyC;AACvC,QAAMC,KAAK,GAAG,EAAd;AACA,QAAMC,UAAU,GAAG,CAAnB;AACA,+BAAeH,WAAf,EAA4BG,UAA5B,EAAwCF,OAAxC,EAAiDC,KAAjD;AACA,SAAOA,KAAP;AACD","sourcesContent":["import type {LoaderWithParser} from '@loaders.gl/loader-utils';\nimport {default as parsePotreeBin} from './parsers/parse-potree-bin';\n\n/**\n * Loader for potree Binary Point Attributes\n * */\n// @ts-ignore\nexport const PotreeBinLoader: LoaderWithParser = {\n name: 'potree Binary Point Attributes',\n id: 'potree',\n extensions: ['bin'],\n mimeTypes: ['application/octet-stream'],\n // Unfortunately binary potree files have no header bytes, no test possible\n // test: ['...'],\n parseSync,\n binary: true\n};\n\nfunction parseSync(arrayBuffer, options) {\n const index = {};\n const byteOffset = 0;\n parsePotreeBin(arrayBuffer, byteOffset, options, index);\n return index;\n}\n"],"file":"potree-bin-loader.js"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.PotreeHierarchyChunkLoader = void 0;
|
|
9
|
+
|
|
10
|
+
var _parsePotreeHierarchyChunk = _interopRequireDefault(require("./parsers/parse-potree-hierarchy-chunk"));
|
|
11
|
+
|
|
12
|
+
const PotreeHierarchyChunkLoader = {
|
|
13
|
+
id: 'potree',
|
|
14
|
+
name: 'potree Hierarchy Chunk',
|
|
15
|
+
extensions: ['hrc'],
|
|
16
|
+
mimeTypes: ['application/octet-stream'],
|
|
17
|
+
parse: async (arrayBuffer, options) => await parseSync(arrayBuffer),
|
|
18
|
+
parseSync,
|
|
19
|
+
binary: true
|
|
20
|
+
};
|
|
21
|
+
exports.PotreeHierarchyChunkLoader = PotreeHierarchyChunkLoader;
|
|
22
|
+
|
|
23
|
+
function parseSync(arrayBuffer) {
|
|
24
|
+
return (0, _parsePotreeHierarchyChunk.default)(arrayBuffer);
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=potree-hierarchy-chunk-loader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/potree-hierarchy-chunk-loader.ts"],"names":["PotreeHierarchyChunkLoader","id","name","extensions","mimeTypes","parse","arrayBuffer","options","parseSync","binary"],"mappings":";;;;;;;;;AACA;;AAIO,MAAMA,0BAA4C,GAAG;AAC1DC,EAAAA,EAAE,EAAE,QADsD;AAE1DC,EAAAA,IAAI,EAAE,wBAFoD;AAG1DC,EAAAA,UAAU,EAAE,CAAC,KAAD,CAH8C;AAI1DC,EAAAA,SAAS,EAAE,CAAC,0BAAD,CAJ+C;AAO1DC,EAAAA,KAAK,EAAE,OAAOC,WAAP,EAAoBC,OAApB,KAAgC,MAAMC,SAAS,CAACF,WAAD,CAPI;AAQ1DE,EAAAA,SAR0D;AAS1DC,EAAAA,MAAM,EAAE;AATkD,CAArD;;;AAYP,SAASD,SAAT,CAAmBF,WAAnB,EAAgC;AAC9B,SAAO,wCAA0BA,WAA1B,CAAP;AACD","sourcesContent":["import type {LoaderWithParser} from '@loaders.gl/loader-utils';\nimport {default as parsePotreeHierarchyChunk} from './parsers/parse-potree-hierarchy-chunk';\n\n/** Potree hierarchy chunk loader */\n// @ts-ignore\nexport const PotreeHierarchyChunkLoader: LoaderWithParser = {\n id: 'potree',\n name: 'potree Hierarchy Chunk',\n extensions: ['hrc'],\n mimeTypes: ['application/octet-stream'],\n // binary potree files have no header bytes, no content test function possible\n // test: ['...'],\n parse: async (arrayBuffer, options) => await parseSync(arrayBuffer),\n parseSync,\n binary: true\n};\n\nfunction parseSync(arrayBuffer) {\n return parsePotreeHierarchyChunk(arrayBuffer);\n}\n"],"file":"potree-hierarchy-chunk-loader.js"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.PotreeLoader = void 0;
|
|
7
|
+
const VERSION = typeof "3.1.0-alpha.5" !== 'undefined' ? "3.1.0-alpha.5" : 'latest';
|
|
8
|
+
const PotreeLoader = {
|
|
9
|
+
name: 'potree',
|
|
10
|
+
id: 'potree',
|
|
11
|
+
module: 'potree',
|
|
12
|
+
version: VERSION,
|
|
13
|
+
extensions: ['json'],
|
|
14
|
+
mimeTypes: ['application/json'],
|
|
15
|
+
testText: text => text.indexOf('octreeDir') >= 0,
|
|
16
|
+
parseTextSync: text => JSON.parse(text),
|
|
17
|
+
options: {
|
|
18
|
+
potree: {}
|
|
19
|
+
}
|
|
20
|
+
};
|
|
21
|
+
exports.PotreeLoader = PotreeLoader;
|
|
22
|
+
//# sourceMappingURL=potree-loader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/potree-loader.ts"],"names":["VERSION","PotreeLoader","name","id","module","version","extensions","mimeTypes","testText","text","indexOf","parseTextSync","JSON","parse","options","potree"],"mappings":";;;;;;AAIA,MAAMA,OAAO,GAAG,2BAAuB,WAAvB,qBAAmD,QAAnE;AAIO,MAAMC,YAA8B,GAAG;AAC5CC,EAAAA,IAAI,EAAE,QADsC;AAE5CC,EAAAA,EAAE,EAAE,QAFwC;AAG5CC,EAAAA,MAAM,EAAE,QAHoC;AAI5CC,EAAAA,OAAO,EAAEL,OAJmC;AAK5CM,EAAAA,UAAU,EAAE,CAAC,MAAD,CALgC;AAM5CC,EAAAA,SAAS,EAAE,CAAC,kBAAD,CANiC;AAO5CC,EAAAA,QAAQ,EAAGC,IAAD,IAAUA,IAAI,CAACC,OAAL,CAAa,WAAb,KAA6B,CAPL;AAQ5CC,EAAAA,aAAa,EAAGF,IAAD,IAAUG,IAAI,CAACC,KAAL,CAAWJ,IAAX,CARmB;AAS5CK,EAAAA,OAAO,EAAE;AACPC,IAAAA,MAAM,EAAE;AADD;AATmC,CAAvC","sourcesContent":["import type {LoaderWithParser} from '@loaders.gl/loader-utils';\n\n// __VERSION__ is injected by babel-plugin-version-inline\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\nconst VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';\n\n/** Potree loader */\n// @ts-ignore\nexport const PotreeLoader: LoaderWithParser = {\n name: 'potree',\n id: 'potree',\n module: 'potree',\n version: VERSION,\n extensions: ['json'],\n mimeTypes: ['application/json'],\n testText: (text) => text.indexOf('octreeDir') >= 0,\n parseTextSync: (text) => JSON.parse(text),\n options: {\n potree: {}\n }\n};\n"],"file":"potree-loader.js"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/bundle.ts"],"names":["moduleExports","require","globalThis","loaders","module","exports","Object","assign"],"mappings":"AACA,MAAMA,aAAa,GAAGC,OAAO,CAAC,SAAD,CAA7B;;AACAC,UAAU,CAACC,OAAX,GAAqBD,UAAU,CAACC,OAAX,IAAsB,EAA3C;AACAC,MAAM,CAACC,OAAP,GAAiBC,MAAM,CAACC,MAAP,CAAcL,UAAU,CAACC,OAAzB,EAAkCH,aAAlC,CAAjB","sourcesContent":["// @ts-nocheck\nconst moduleExports = require('./index');\nglobalThis.loaders = globalThis.loaders || {};\nmodule.exports = Object.assign(globalThis.loaders, moduleExports);\n"],"file":"bundle.js"}
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/index.ts"],"names":["PotreeLoader","PotreeHierarchyChunkLoader","PotreeBinLoader"],"mappings":"AAAA,SAAQA,YAAR,QAA2B,iBAA3B;AACA,SAAQC,0BAAR,QAAyC,iCAAzC;AACA,SAAQC,eAAR,QAA8B,qBAA9B","sourcesContent":["export {PotreeLoader} from './potree-loader';\nexport {PotreeHierarchyChunkLoader} from './potree-hierarchy-chunk-loader';\nexport {PotreeBinLoader} from './potree-bin-loader';\n"],"file":"index.js"}
|
|
@@ -60,8 +60,8 @@ export class PointCloudOctant {
|
|
|
60
60
|
const {
|
|
61
61
|
version
|
|
62
62
|
} = this.octree;
|
|
63
|
-
const hierarchyPath = version >= 1.5 ?
|
|
64
|
-
return
|
|
63
|
+
const hierarchyPath = version >= 1.5 ? "".concat(this.getHierarchyPath(), "/") : '';
|
|
64
|
+
return "".concat(this.octree.octreeDir, "/").concat(hierarchyPath).concat(this.name);
|
|
65
65
|
}
|
|
66
66
|
|
|
67
67
|
getHierarchyPath() {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/lib/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","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"],"mappings":"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","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"],"file":"octree.js"}
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/parsers/parse-potree-bin.js"],"names":["parsePotreeBin","arrayBuffer","byteOffset","options","index"],"mappings":"AAAA,eAAe,SAASA,cAAT,CAAwBC,WAAxB,EAAqCC,UAArC,EAAiDC,OAAjD,EAA0DC,KAA1D,EAAiE;AAC9E,SAAO,IAAP;AACD","sourcesContent":["export default function parsePotreeBin(arrayBuffer, byteOffset, options, index) {\n return null;\n}\n"],"file":"parse-potree-bin.js"}
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/parsers/parse-potree-hierarchy-chunk.js"],"names":["parsePotreeHierarchyChunk","arrayBuffer","tileHeaders","parseBinaryChunk","buildHierarchy","byteOffset","dataView","DataView","stack","topTileHeader","decodeRow","push","length","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"],"mappings":"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","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// load hierarchy\nexport default function parsePotreeHierarchyChunk(arrayBuffer) {\n const tileHeaders = parseBinaryChunk(arrayBuffer);\n return buildHierarchy(tileHeaders);\n}\n\n// Parses the binary rows\nfunction parseBinaryChunk(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"],"file":"parse-potree-hierarchy-chunk.js"}
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/potree-bin-loader.ts"],"names":["default","parsePotreeBin","PotreeBinLoader","name","id","extensions","mimeTypes","parseSync","binary","arrayBuffer","options","index","byteOffset"],"mappings":"AACA,SAAQA,OAAO,IAAIC,cAAnB,QAAwC,4BAAxC;AAMA,OAAO,MAAMC,eAAiC,GAAG;AAC/CC,EAAAA,IAAI,EAAE,gCADyC;AAE/CC,EAAAA,EAAE,EAAE,QAF2C;AAG/CC,EAAAA,UAAU,EAAE,CAAC,KAAD,CAHmC;AAI/CC,EAAAA,SAAS,EAAE,CAAC,0BAAD,CAJoC;AAO/CC,EAAAA,SAP+C;AAQ/CC,EAAAA,MAAM,EAAE;AARuC,CAA1C;;AAWP,SAASD,SAAT,CAAmBE,WAAnB,EAAgCC,OAAhC,EAAyC;AACvC,QAAMC,KAAK,GAAG,EAAd;AACA,QAAMC,UAAU,GAAG,CAAnB;AACAX,EAAAA,cAAc,CAACQ,WAAD,EAAcG,UAAd,EAA0BF,OAA1B,EAAmCC,KAAnC,CAAd;AACA,SAAOA,KAAP;AACD","sourcesContent":["import type {LoaderWithParser} from '@loaders.gl/loader-utils';\nimport {default as parsePotreeBin} from './parsers/parse-potree-bin';\n\n/**\n * Loader for potree Binary Point Attributes\n * */\n// @ts-ignore\nexport const PotreeBinLoader: LoaderWithParser = {\n name: 'potree Binary Point Attributes',\n id: 'potree',\n extensions: ['bin'],\n mimeTypes: ['application/octet-stream'],\n // Unfortunately binary potree files have no header bytes, no test possible\n // test: ['...'],\n parseSync,\n binary: true\n};\n\nfunction parseSync(arrayBuffer, options) {\n const index = {};\n const byteOffset = 0;\n parsePotreeBin(arrayBuffer, byteOffset, options, index);\n return index;\n}\n"],"file":"potree-bin-loader.js"}
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/potree-hierarchy-chunk-loader.ts"],"names":["default","parsePotreeHierarchyChunk","PotreeHierarchyChunkLoader","id","name","extensions","mimeTypes","parse","arrayBuffer","options","parseSync","binary"],"mappings":"AACA,SAAQA,OAAO,IAAIC,yBAAnB,QAAmD,wCAAnD;AAIA,OAAO,MAAMC,0BAA4C,GAAG;AAC1DC,EAAAA,EAAE,EAAE,QADsD;AAE1DC,EAAAA,IAAI,EAAE,wBAFoD;AAG1DC,EAAAA,UAAU,EAAE,CAAC,KAAD,CAH8C;AAI1DC,EAAAA,SAAS,EAAE,CAAC,0BAAD,CAJ+C;AAO1DC,EAAAA,KAAK,EAAE,OAAOC,WAAP,EAAoBC,OAApB,KAAgC,MAAMC,SAAS,CAACF,WAAD,CAPI;AAQ1DE,EAAAA,SAR0D;AAS1DC,EAAAA,MAAM,EAAE;AATkD,CAArD;;AAYP,SAASD,SAAT,CAAmBF,WAAnB,EAAgC;AAC9B,SAAOP,yBAAyB,CAACO,WAAD,CAAhC;AACD","sourcesContent":["import type {LoaderWithParser} from '@loaders.gl/loader-utils';\nimport {default as parsePotreeHierarchyChunk} from './parsers/parse-potree-hierarchy-chunk';\n\n/** Potree hierarchy chunk loader */\n// @ts-ignore\nexport const PotreeHierarchyChunkLoader: LoaderWithParser = {\n id: 'potree',\n name: 'potree Hierarchy Chunk',\n extensions: ['hrc'],\n mimeTypes: ['application/octet-stream'],\n // binary potree files have no header bytes, no content test function possible\n // test: ['...'],\n parse: async (arrayBuffer, options) => await parseSync(arrayBuffer),\n parseSync,\n binary: true\n};\n\nfunction parseSync(arrayBuffer) {\n return parsePotreeHierarchyChunk(arrayBuffer);\n}\n"],"file":"potree-hierarchy-chunk-loader.js"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/potree-loader.ts"],"names":["VERSION","PotreeLoader","name","id","module","version","extensions","mimeTypes","testText","text","indexOf","parseTextSync","JSON","parse","options","potree"],"mappings":"AAIA,MAAMA,OAAO,GAAG,2BAAuB,WAAvB,qBAAmD,QAAnE;AAIA,OAAO,MAAMC,YAA8B,GAAG;AAC5CC,EAAAA,IAAI,EAAE,QADsC;AAE5CC,EAAAA,EAAE,EAAE,QAFwC;AAG5CC,EAAAA,MAAM,EAAE,QAHoC;AAI5CC,EAAAA,OAAO,EAAEL,OAJmC;AAK5CM,EAAAA,UAAU,EAAE,CAAC,MAAD,CALgC;AAM5CC,EAAAA,SAAS,EAAE,CAAC,kBAAD,CANiC;AAO5CC,EAAAA,QAAQ,EAAGC,IAAD,IAAUA,IAAI,CAACC,OAAL,CAAa,WAAb,KAA6B,CAPL;AAQ5CC,EAAAA,aAAa,EAAGF,IAAD,IAAUG,IAAI,CAACC,KAAL,CAAWJ,IAAX,CARmB;AAS5CK,EAAAA,OAAO,EAAE;AACPC,IAAAA,MAAM,EAAE;AADD;AATmC,CAAvC","sourcesContent":["import type {LoaderWithParser} from '@loaders.gl/loader-utils';\n\n// __VERSION__ is injected by babel-plugin-version-inline\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\nconst VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';\n\n/** Potree loader */\n// @ts-ignore\nexport const PotreeLoader: LoaderWithParser = {\n name: 'potree',\n id: 'potree',\n module: 'potree',\n version: VERSION,\n extensions: ['json'],\n mimeTypes: ['application/json'],\n testText: (text) => text.indexOf('octreeDir') >= 0,\n parseTextSync: (text) => JSON.parse(text),\n options: {\n potree: {}\n }\n};\n"],"file":"potree-loader.js"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
export class PointCloudOctree {
|
|
2
|
+
url: any;
|
|
3
|
+
octreeDir: any;
|
|
4
|
+
spacing: number;
|
|
5
|
+
boundingBox: any;
|
|
6
|
+
root: any;
|
|
7
|
+
nodes: any;
|
|
8
|
+
pointAttributes: any;
|
|
9
|
+
hierarchyStepSize: number;
|
|
10
|
+
loader: any;
|
|
11
|
+
}
|
|
12
|
+
export class PointCloudOctant {
|
|
13
|
+
constructor(name: any, octree: any, boundingBox: any);
|
|
14
|
+
octree: any;
|
|
15
|
+
id: number;
|
|
16
|
+
name: any;
|
|
17
|
+
index: number;
|
|
18
|
+
geometry: any;
|
|
19
|
+
boundingBox: any;
|
|
20
|
+
boundingSphere: any;
|
|
21
|
+
children: {};
|
|
22
|
+
numPoints: number;
|
|
23
|
+
level: any;
|
|
24
|
+
loaded: boolean;
|
|
25
|
+
oneTimeDisposeHandlers: any[];
|
|
26
|
+
isGeometryNode(): boolean;
|
|
27
|
+
getLevel(): any;
|
|
28
|
+
isTreeNode(): boolean;
|
|
29
|
+
isLoaded(): boolean;
|
|
30
|
+
getBoundingSphere(): any;
|
|
31
|
+
getBoundingBox(): any;
|
|
32
|
+
getChildren(): any;
|
|
33
|
+
getURL(): string;
|
|
34
|
+
getHierarchyPath(): string;
|
|
35
|
+
addChild(child: any): void;
|
|
36
|
+
load(): void;
|
|
37
|
+
loading: boolean | undefined;
|
|
38
|
+
loadPoints(): void;
|
|
39
|
+
loadHierachyThenPoints(): void;
|
|
40
|
+
getNumPoints(): number;
|
|
41
|
+
dispose(): void;
|
|
42
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export default function parsePotreeBin(arrayBuffer: any, byteOffset: any, options: any, index: any): null;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export default function parsePotreeHierarchyChunk(arrayBuffer: any): any;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@loaders.gl/potree",
|
|
3
|
-
"version": "3.1.0-alpha.
|
|
3
|
+
"version": "3.1.0-alpha.5",
|
|
4
4
|
"description": "potree loaders for large point clouds.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"publishConfig": {
|
|
@@ -21,9 +21,9 @@
|
|
|
21
21
|
"point cloud",
|
|
22
22
|
"pointcloud"
|
|
23
23
|
],
|
|
24
|
-
"types": "
|
|
25
|
-
"main": "dist/index.js",
|
|
26
|
-
"module": "dist/index.js",
|
|
24
|
+
"types": "dist/index.d.ts",
|
|
25
|
+
"main": "dist/es5/index.js",
|
|
26
|
+
"module": "dist/esm/index.js",
|
|
27
27
|
"sideEffects": false,
|
|
28
28
|
"files": [
|
|
29
29
|
"src",
|
|
@@ -32,11 +32,12 @@
|
|
|
32
32
|
],
|
|
33
33
|
"scripts": {
|
|
34
34
|
"pre-build": "npm run build-bundle",
|
|
35
|
+
"post-build": "tsc",
|
|
35
36
|
"build-bundle": "webpack --display=minimal --config ../../scripts/webpack/bundle.js"
|
|
36
37
|
},
|
|
37
38
|
"dependencies": {
|
|
38
|
-
"@loaders.gl/math": "3.1.0-alpha.
|
|
39
|
+
"@loaders.gl/math": "3.1.0-alpha.5",
|
|
39
40
|
"@math.gl/core": "^3.5.1"
|
|
40
41
|
},
|
|
41
|
-
"gitHead": "
|
|
42
|
+
"gitHead": "352241dd910a8c6307a235dadbe154ca915b885b"
|
|
42
43
|
}
|
package/src/bundle.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
// @ts-nocheck
|
|
2
2
|
const moduleExports = require('./index');
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
module.exports = Object.assign(_global.loaders, moduleExports);
|
|
3
|
+
globalThis.loaders = globalThis.loaders || {};
|
|
4
|
+
module.exports = Object.assign(globalThis.loaders, moduleExports);
|
package/dist/bundle.js
DELETED
package/dist/bundle.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/bundle.ts"],"names":["moduleExports","require","_global","window","global","loaders","module","exports","Object","assign"],"mappings":"AACA,MAAMA,aAAa,GAAGC,OAAO,CAAC,SAAD,CAA7B;;AACA,MAAMC,OAAO,GAAG,OAAOC,MAAP,KAAkB,WAAlB,GAAgCC,MAAhC,GAAyCD,MAAzD;;AACAD,OAAO,CAACG,OAAR,GAAkBH,OAAO,CAACG,OAAR,IAAmB,EAArC;AACAC,MAAM,CAACC,OAAP,GAAiBC,MAAM,CAACC,MAAP,CAAcP,OAAO,CAACG,OAAtB,EAA+BL,aAA/B,CAAjB","sourcesContent":["// @ts-nocheck\nconst moduleExports = require('./index');\nconst _global = typeof window === 'undefined' ? global : window;\n_global.loaders = _global.loaders || {};\nmodule.exports = Object.assign(_global.loaders, moduleExports);\n"],"file":"bundle.js"}
|
package/dist/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts"],"names":["PotreeLoader","PotreeHierarchyChunkLoader","PotreeBinLoader"],"mappings":"AAAA,SAAQA,YAAR,QAA2B,iBAA3B;AACA,SAAQC,0BAAR,QAAyC,iCAAzC;AACA,SAAQC,eAAR,QAA8B,qBAA9B","sourcesContent":["export {PotreeLoader} from './potree-loader';\nexport {PotreeHierarchyChunkLoader} from './potree-hierarchy-chunk-loader';\nexport {PotreeBinLoader} from './potree-bin-loader';\n"],"file":"index.js"}
|
package/dist/lib/octree.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/lib/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","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"],"mappings":"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","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"],"file":"octree.js"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/parsers/parse-potree-bin.js"],"names":["parsePotreeBin","arrayBuffer","byteOffset","options","index"],"mappings":"AAAA,eAAe,SAASA,cAAT,CAAwBC,WAAxB,EAAqCC,UAArC,EAAiDC,OAAjD,EAA0DC,KAA1D,EAAiE;AAC9E,SAAO,IAAP;AACD","sourcesContent":["export default function parsePotreeBin(arrayBuffer, byteOffset, options, index) {\n return null;\n}\n"],"file":"parse-potree-bin.js"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/parsers/parse-potree-hierarchy-chunk.js"],"names":["parsePotreeHierarchyChunk","arrayBuffer","tileHeaders","parseBinaryChunk","buildHierarchy","byteOffset","dataView","DataView","stack","topTileHeader","decodeRow","push","length","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"],"mappings":"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","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// load hierarchy\nexport default function parsePotreeHierarchyChunk(arrayBuffer) {\n const tileHeaders = parseBinaryChunk(arrayBuffer);\n return buildHierarchy(tileHeaders);\n}\n\n// Parses the binary rows\nfunction parseBinaryChunk(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"],"file":"parse-potree-hierarchy-chunk.js"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/potree-bin-loader.ts"],"names":["default","parsePotreeBin","PotreeBinLoader","name","id","extensions","mimeTypes","parseSync","binary","arrayBuffer","options","index","byteOffset"],"mappings":"AACA,SAAQA,OAAO,IAAIC,cAAnB,QAAwC,4BAAxC;AAMA,OAAO,MAAMC,eAAiC,GAAG;AAC/CC,EAAAA,IAAI,EAAE,gCADyC;AAE/CC,EAAAA,EAAE,EAAE,QAF2C;AAG/CC,EAAAA,UAAU,EAAE,CAAC,KAAD,CAHmC;AAI/CC,EAAAA,SAAS,EAAE,CAAC,0BAAD,CAJoC;AAO/CC,EAAAA,SAP+C;AAQ/CC,EAAAA,MAAM,EAAE;AARuC,CAA1C;;AAWP,SAASD,SAAT,CAAmBE,WAAnB,EAAgCC,OAAhC,EAAyC;AACvC,QAAMC,KAAK,GAAG,EAAd;AACA,QAAMC,UAAU,GAAG,CAAnB;AACAX,EAAAA,cAAc,CAACQ,WAAD,EAAcG,UAAd,EAA0BF,OAA1B,EAAmCC,KAAnC,CAAd;AACA,SAAOA,KAAP;AACD","sourcesContent":["import type {LoaderWithParser} from '@loaders.gl/loader-utils';\nimport {default as parsePotreeBin} from './parsers/parse-potree-bin';\n\n/**\n * Loader for potree Binary Point Attributes\n * */\n// @ts-ignore\nexport const PotreeBinLoader: LoaderWithParser = {\n name: 'potree Binary Point Attributes',\n id: 'potree',\n extensions: ['bin'],\n mimeTypes: ['application/octet-stream'],\n // Unfortunately binary potree files have no header bytes, no test possible\n // test: ['...'],\n parseSync,\n binary: true\n};\n\nfunction parseSync(arrayBuffer, options) {\n const index = {};\n const byteOffset = 0;\n parsePotreeBin(arrayBuffer, byteOffset, options, index);\n return index;\n}\n"],"file":"potree-bin-loader.js"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/potree-hierarchy-chunk-loader.ts"],"names":["default","parsePotreeHierarchyChunk","PotreeHierarchyChunkLoader","id","name","extensions","mimeTypes","parse","arrayBuffer","options","parseSync","binary"],"mappings":"AACA,SAAQA,OAAO,IAAIC,yBAAnB,QAAmD,wCAAnD;AAIA,OAAO,MAAMC,0BAA4C,GAAG;AAC1DC,EAAAA,EAAE,EAAE,QADsD;AAE1DC,EAAAA,IAAI,EAAE,wBAFoD;AAG1DC,EAAAA,UAAU,EAAE,CAAC,KAAD,CAH8C;AAI1DC,EAAAA,SAAS,EAAE,CAAC,0BAAD,CAJ+C;AAO1DC,EAAAA,KAAK,EAAE,OAAOC,WAAP,EAAoBC,OAApB,KAAgC,MAAMC,SAAS,CAACF,WAAD,CAPI;AAQ1DE,EAAAA,SAR0D;AAS1DC,EAAAA,MAAM,EAAE;AATkD,CAArD;;AAYP,SAASD,SAAT,CAAmBF,WAAnB,EAAgC;AAC9B,SAAOP,yBAAyB,CAACO,WAAD,CAAhC;AACD","sourcesContent":["import type {LoaderWithParser} from '@loaders.gl/loader-utils';\nimport {default as parsePotreeHierarchyChunk} from './parsers/parse-potree-hierarchy-chunk';\n\n/** Potree hierarchy chunk loader */\n// @ts-ignore\nexport const PotreeHierarchyChunkLoader: LoaderWithParser = {\n id: 'potree',\n name: 'potree Hierarchy Chunk',\n extensions: ['hrc'],\n mimeTypes: ['application/octet-stream'],\n // binary potree files have no header bytes, no content test function possible\n // test: ['...'],\n parse: async (arrayBuffer, options) => await parseSync(arrayBuffer),\n parseSync,\n binary: true\n};\n\nfunction parseSync(arrayBuffer) {\n return parsePotreeHierarchyChunk(arrayBuffer);\n}\n"],"file":"potree-hierarchy-chunk-loader.js"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/potree-loader.ts"],"names":["VERSION","PotreeLoader","name","id","module","version","extensions","mimeTypes","testText","text","indexOf","parseTextSync","JSON","parse","options","potree"],"mappings":"AAIA,MAAMA,OAAO,GAAG,2BAAuB,WAAvB,qBAAmD,QAAnE;AAIA,OAAO,MAAMC,YAA8B,GAAG;AAC5CC,EAAAA,IAAI,EAAE,QADsC;AAE5CC,EAAAA,EAAE,EAAE,QAFwC;AAG5CC,EAAAA,MAAM,EAAE,QAHoC;AAI5CC,EAAAA,OAAO,EAAEL,OAJmC;AAK5CM,EAAAA,UAAU,EAAE,CAAC,MAAD,CALgC;AAM5CC,EAAAA,SAAS,EAAE,CAAC,kBAAD,CANiC;AAO5CC,EAAAA,QAAQ,EAAGC,IAAD,IAAUA,IAAI,CAACC,OAAL,CAAa,WAAb,KAA6B,CAPL;AAQ5CC,EAAAA,aAAa,EAAGF,IAAD,IAAUG,IAAI,CAACC,KAAL,CAAWJ,IAAX,CARmB;AAS5CK,EAAAA,OAAO,EAAE;AACPC,IAAAA,MAAM,EAAE;AADD;AATmC,CAAvC","sourcesContent":["import type {LoaderWithParser} from '@loaders.gl/loader-utils';\n\n// __VERSION__ is injected by babel-plugin-version-inline\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\nconst VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';\n\n/** Potree loader */\n// @ts-ignore\nexport const PotreeLoader: LoaderWithParser = {\n name: 'potree',\n id: 'potree',\n module: 'potree',\n version: VERSION,\n extensions: ['json'],\n mimeTypes: ['application/json'],\n testText: (text) => text.indexOf('octreeDir') >= 0,\n parseTextSync: (text) => JSON.parse(text),\n options: {\n potree: {}\n }\n};\n"],"file":"potree-loader.js"}
|