@loaders.gl/potree 4.0.0-beta.2 → 4.0.0-beta.4

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.
Files changed (46) hide show
  1. package/dist/{dist.min.js → dist.dev.js} +71 -92
  2. package/dist/index.cjs +145 -0
  3. package/dist/index.js +4 -0
  4. package/dist/index.js.map +1 -0
  5. package/dist/{esm/lib → lib}/octree.js +2 -2
  6. package/dist/lib/octree.js.map +1 -0
  7. package/dist/parsers/parse-potree-bin.js.map +1 -0
  8. package/dist/parsers/parse-potree-hierarchy-chunk.js.map +1 -0
  9. package/dist/{esm/potree-bin-loader.js → potree-bin-loader.js} +1 -1
  10. package/dist/potree-bin-loader.js.map +1 -0
  11. package/dist/{esm/potree-hierarchy-chunk-loader.js → potree-hierarchy-chunk-loader.js} +1 -1
  12. package/dist/potree-hierarchy-chunk-loader.js.map +1 -0
  13. package/dist/{esm/potree-loader.js → potree-loader.js} +1 -1
  14. package/dist/potree-loader.js.map +1 -0
  15. package/package.json +16 -8
  16. package/dist/bundle.d.ts +0 -2
  17. package/dist/bundle.d.ts.map +0 -1
  18. package/dist/es5/bundle.js +0 -6
  19. package/dist/es5/bundle.js.map +0 -1
  20. package/dist/es5/index.js +0 -27
  21. package/dist/es5/index.js.map +0 -1
  22. package/dist/es5/lib/octree.js +0 -235
  23. package/dist/es5/lib/octree.js.map +0 -1
  24. package/dist/es5/parsers/parse-potree-bin.js +0 -10
  25. package/dist/es5/parsers/parse-potree-bin.js.map +0 -1
  26. package/dist/es5/parsers/parse-potree-hierarchy-chunk.js +0 -92
  27. package/dist/es5/parsers/parse-potree-hierarchy-chunk.js.map +0 -1
  28. package/dist/es5/potree-bin-loader.js +0 -23
  29. package/dist/es5/potree-bin-loader.js.map +0 -1
  30. package/dist/es5/potree-hierarchy-chunk-loader.js +0 -39
  31. package/dist/es5/potree-hierarchy-chunk-loader.js.map +0 -1
  32. package/dist/es5/potree-loader.js +0 -26
  33. package/dist/es5/potree-loader.js.map +0 -1
  34. package/dist/esm/bundle.js +0 -4
  35. package/dist/esm/bundle.js.map +0 -1
  36. package/dist/esm/index.js +0 -4
  37. package/dist/esm/index.js.map +0 -1
  38. package/dist/esm/lib/octree.js.map +0 -1
  39. package/dist/esm/parsers/parse-potree-bin.js.map +0 -1
  40. package/dist/esm/parsers/parse-potree-hierarchy-chunk.js.map +0 -1
  41. package/dist/esm/potree-bin-loader.js.map +0 -1
  42. package/dist/esm/potree-hierarchy-chunk-loader.js.map +0 -1
  43. package/dist/esm/potree-loader.js.map +0 -1
  44. package/src/bundle.ts +0 -4
  45. /package/dist/{esm/parsers → parsers}/parse-potree-bin.js +0 -0
  46. /package/dist/{esm/parsers → parsers}/parse-potree-hierarchy-chunk.js +0 -0
@@ -1,38 +1,52 @@
1
- (() => {
1
+ (function webpackUniversalModuleDefinition(root, factory) {
2
+ if (typeof exports === 'object' && typeof module === 'object')
3
+ module.exports = factory();
4
+ else if (typeof define === 'function' && define.amd) define([], factory);
5
+ else if (typeof exports === 'object') exports['loader'] = factory();
6
+ else root['loader'] = factory();})(globalThis, function () {
7
+ "use strict";
8
+ var __exports__ = (() => {
2
9
  var __defProp = Object.defineProperty;
3
- var __markAsModule = (target) => __defProp(target, "__esModule", { value: true });
4
- var __esm = (fn, res) => function __init() {
5
- return fn && (res = (0, fn[Object.keys(fn)[0]])(fn = 0)), res;
6
- };
7
- var __commonJS = (cb, mod) => function __require() {
8
- return mod || (0, cb[Object.keys(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
9
- };
10
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
11
+ var __getOwnPropNames = Object.getOwnPropertyNames;
12
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
10
13
  var __export = (target, all) => {
11
- __markAsModule(target);
12
14
  for (var name in all)
13
15
  __defProp(target, name, { get: all[name], enumerable: true });
14
16
  };
17
+ var __copyProps = (to, from, except, desc) => {
18
+ if (from && typeof from === "object" || typeof from === "function") {
19
+ for (let key of __getOwnPropNames(from))
20
+ if (!__hasOwnProp.call(to, key) && key !== except)
21
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
22
+ }
23
+ return to;
24
+ };
25
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
26
+
27
+ // src/index.ts
28
+ var src_exports = {};
29
+ __export(src_exports, {
30
+ PotreeBinLoader: () => PotreeBinLoader,
31
+ PotreeHierarchyChunkLoader: () => PotreeHierarchyChunkLoader,
32
+ PotreeLoader: () => PotreeLoader
33
+ });
15
34
 
16
35
  // src/potree-loader.ts
17
- var VERSION, PotreeLoader;
18
- var init_potree_loader = __esm({
19
- "src/potree-loader.ts"() {
20
- VERSION = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
21
- PotreeLoader = {
22
- name: "potree",
23
- id: "potree",
24
- module: "potree",
25
- version: VERSION,
26
- extensions: ["json"],
27
- mimeTypes: ["application/json"],
28
- testText: (text) => text.indexOf("octreeDir") >= 0,
29
- parseTextSync: (text) => JSON.parse(text),
30
- options: {
31
- potree: {}
32
- }
33
- };
36
+ var VERSION = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
37
+ var PotreeLoader = {
38
+ name: "potree",
39
+ id: "potree",
40
+ module: "potree",
41
+ version: VERSION,
42
+ extensions: ["json"],
43
+ mimeTypes: ["application/json"],
44
+ testText: (text) => text.indexOf("octreeDir") >= 0,
45
+ parseTextSync: (text) => JSON.parse(text),
46
+ options: {
47
+ potree: {}
34
48
  }
35
- });
49
+ };
36
50
 
37
51
  // src/parsers/parse-potree-hierarchy-chunk.ts
38
52
  function parsePotreeHierarchyChunk(arrayBuffer) {
@@ -76,12 +90,19 @@
76
90
  return byteOffset;
77
91
  }
78
92
  function buildHierarchy(tileHeaders, options = {}) {
79
- const DEFAULT_OPTIONS = { spacing: 100 };
80
- options = { ...DEFAULT_OPTIONS, ...options };
93
+ const DEFAULT_OPTIONS = {
94
+ spacing: 100
95
+ };
96
+ options = {
97
+ ...DEFAULT_OPTIONS,
98
+ ...options
99
+ };
81
100
  const topNode = tileHeaders[0];
82
101
  const nodes = {};
83
102
  for (const tileHeader of tileHeaders) {
84
- const { name } = tileHeader;
103
+ const {
104
+ name
105
+ } = tileHeader;
85
106
  const index = parseInt(name.charAt(name.length - 1), 10);
86
107
  const parentName = name.substring(0, name.length - 1);
87
108
  const parentNode = nodes[parentName];
@@ -99,81 +120,39 @@
99
120
  }
100
121
  return topNode;
101
122
  }
102
- var init_parse_potree_hierarchy_chunk = __esm({
103
- "src/parsers/parse-potree-hierarchy-chunk.ts"() {
104
- }
105
- });
106
123
 
107
124
  // src/potree-hierarchy-chunk-loader.ts
108
- var PotreeHierarchyChunkLoader;
109
- var init_potree_hierarchy_chunk_loader = __esm({
110
- "src/potree-hierarchy-chunk-loader.ts"() {
111
- init_parse_potree_hierarchy_chunk();
112
- PotreeHierarchyChunkLoader = {
113
- id: "potree",
114
- name: "potree Hierarchy Chunk",
115
- extensions: ["hrc"],
116
- mimeTypes: ["application/octet-stream"],
117
- parse: async (arrayBuffer, options) => parsePotreeHierarchyChunk(arrayBuffer),
118
- parseSync: (arrayBuffer, options) => parsePotreeHierarchyChunk(arrayBuffer),
119
- binary: true
120
- };
121
- }
122
- });
125
+ var PotreeHierarchyChunkLoader = {
126
+ id: "potree",
127
+ name: "potree Hierarchy Chunk",
128
+ extensions: ["hrc"],
129
+ mimeTypes: ["application/octet-stream"],
130
+ parse: async (arrayBuffer, options) => parsePotreeHierarchyChunk(arrayBuffer),
131
+ parseSync: (arrayBuffer, options) => parsePotreeHierarchyChunk(arrayBuffer),
132
+ binary: true
133
+ };
123
134
 
124
135
  // src/parsers/parse-potree-bin.ts
125
136
  function parsePotreeBin(arrayBuffer, byteOffset, options, index) {
126
137
  return null;
127
138
  }
128
- var init_parse_potree_bin = __esm({
129
- "src/parsers/parse-potree-bin.ts"() {
130
- }
131
- });
132
139
 
133
140
  // src/potree-bin-loader.ts
141
+ var PotreeBinLoader = {
142
+ name: "potree Binary Point Attributes",
143
+ id: "potree",
144
+ extensions: ["bin"],
145
+ mimeTypes: ["application/octet-stream"],
146
+ parseSync,
147
+ binary: true
148
+ };
134
149
  function parseSync(arrayBuffer, options) {
135
150
  const index = {};
136
151
  const byteOffset = 0;
137
152
  parsePotreeBin(arrayBuffer, byteOffset, options, index);
138
153
  return index;
139
154
  }
140
- var PotreeBinLoader;
141
- var init_potree_bin_loader = __esm({
142
- "src/potree-bin-loader.ts"() {
143
- init_parse_potree_bin();
144
- PotreeBinLoader = {
145
- name: "potree Binary Point Attributes",
146
- id: "potree",
147
- extensions: ["bin"],
148
- mimeTypes: ["application/octet-stream"],
149
- parseSync,
150
- binary: true
151
- };
152
- }
153
- });
154
-
155
- // src/index.ts
156
- var src_exports = {};
157
- __export(src_exports, {
158
- PotreeBinLoader: () => PotreeBinLoader,
159
- PotreeHierarchyChunkLoader: () => PotreeHierarchyChunkLoader,
160
- PotreeLoader: () => PotreeLoader
161
- });
162
- var init_src = __esm({
163
- "src/index.ts"() {
164
- init_potree_loader();
165
- init_potree_hierarchy_chunk_loader();
166
- init_potree_bin_loader();
167
- }
168
- });
169
-
170
- // src/bundle.ts
171
- var require_bundle = __commonJS({
172
- "src/bundle.ts"(exports, module) {
173
- var moduleExports = (init_src(), src_exports);
174
- globalThis.loaders = globalThis.loaders || {};
175
- module.exports = Object.assign(globalThis.loaders, moduleExports);
176
- }
177
- });
178
- require_bundle();
155
+ return __toCommonJS(src_exports);
179
156
  })();
157
+ return __exports__;
158
+ });
package/dist/index.cjs ADDED
@@ -0,0 +1,145 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/index.ts
21
+ var src_exports = {};
22
+ __export(src_exports, {
23
+ PotreeBinLoader: () => PotreeBinLoader,
24
+ PotreeHierarchyChunkLoader: () => PotreeHierarchyChunkLoader,
25
+ PotreeLoader: () => PotreeLoader
26
+ });
27
+ module.exports = __toCommonJS(src_exports);
28
+
29
+ // src/potree-loader.ts
30
+ var VERSION = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
31
+ var PotreeLoader = {
32
+ name: "potree",
33
+ id: "potree",
34
+ module: "potree",
35
+ version: VERSION,
36
+ extensions: ["json"],
37
+ mimeTypes: ["application/json"],
38
+ testText: (text) => text.indexOf("octreeDir") >= 0,
39
+ parseTextSync: (text) => JSON.parse(text),
40
+ options: {
41
+ potree: {}
42
+ }
43
+ };
44
+
45
+ // src/parsers/parse-potree-hierarchy-chunk.ts
46
+ function parsePotreeHierarchyChunk(arrayBuffer) {
47
+ const tileHeaders = parseBinaryChunk(arrayBuffer);
48
+ return buildHierarchy(tileHeaders);
49
+ }
50
+ function parseBinaryChunk(arrayBuffer, byteOffset = 0) {
51
+ const dataView = new DataView(arrayBuffer);
52
+ const stack = [];
53
+ const topTileHeader = {};
54
+ byteOffset = decodeRow(dataView, byteOffset, topTileHeader);
55
+ stack.push(topTileHeader);
56
+ const tileHeaders = [];
57
+ while (stack.length > 0) {
58
+ const snode = stack.shift();
59
+ let mask = 1;
60
+ for (let i = 0; i < 8; i++) {
61
+ if (snode && (snode.header.childMask & mask) !== 0) {
62
+ const tileHeader = {};
63
+ byteOffset = decodeRow(dataView, byteOffset, tileHeader);
64
+ tileHeader.name = snode.name + i;
65
+ stack.push(tileHeader);
66
+ tileHeaders.push(tileHeader);
67
+ snode.header.childCount++;
68
+ }
69
+ mask = mask * 2;
70
+ }
71
+ if (byteOffset === dataView.byteLength) {
72
+ break;
73
+ }
74
+ }
75
+ return tileHeaders;
76
+ }
77
+ function decodeRow(dataView, byteOffset, tileHeader) {
78
+ tileHeader.header = tileHeader.header || {};
79
+ tileHeader.header.childMask = dataView.getUint8(byteOffset);
80
+ tileHeader.header.childCount = 0;
81
+ tileHeader.pointCount = dataView.getUint32(byteOffset + 1, true);
82
+ tileHeader.name = "";
83
+ byteOffset += 5;
84
+ return byteOffset;
85
+ }
86
+ function buildHierarchy(tileHeaders, options = {}) {
87
+ const DEFAULT_OPTIONS = { spacing: 100 };
88
+ options = { ...DEFAULT_OPTIONS, ...options };
89
+ const topNode = tileHeaders[0];
90
+ const nodes = {};
91
+ for (const tileHeader of tileHeaders) {
92
+ const { name } = tileHeader;
93
+ const index = parseInt(name.charAt(name.length - 1), 10);
94
+ const parentName = name.substring(0, name.length - 1);
95
+ const parentNode = nodes[parentName];
96
+ const level = name.length - 1;
97
+ tileHeader.level = level;
98
+ tileHeader.hasChildren = tileHeader.header.childCount;
99
+ tileHeader.children = [];
100
+ tileHeader.childrenByIndex = new Array(8).fill(null);
101
+ tileHeader.spacing = ((options == null ? void 0 : options.spacing) || 0) / Math.pow(2, level);
102
+ if (parentNode) {
103
+ parentNode.children.push(tileHeader);
104
+ parentNode.childrenByIndex[index] = tileHeader;
105
+ }
106
+ nodes[name] = tileHeader;
107
+ }
108
+ return topNode;
109
+ }
110
+
111
+ // src/potree-hierarchy-chunk-loader.ts
112
+ var PotreeHierarchyChunkLoader = {
113
+ id: "potree",
114
+ name: "potree Hierarchy Chunk",
115
+ extensions: ["hrc"],
116
+ mimeTypes: ["application/octet-stream"],
117
+ // binary potree files have no header bytes, no content test function possible
118
+ // test: ['...'],
119
+ parse: async (arrayBuffer, options) => parsePotreeHierarchyChunk(arrayBuffer),
120
+ parseSync: (arrayBuffer, options) => parsePotreeHierarchyChunk(arrayBuffer),
121
+ binary: true
122
+ };
123
+
124
+ // src/parsers/parse-potree-bin.ts
125
+ function parsePotreeBin(arrayBuffer, byteOffset, options, index) {
126
+ return null;
127
+ }
128
+
129
+ // src/potree-bin-loader.ts
130
+ var PotreeBinLoader = {
131
+ name: "potree Binary Point Attributes",
132
+ id: "potree",
133
+ extensions: ["bin"],
134
+ mimeTypes: ["application/octet-stream"],
135
+ // Unfortunately binary potree files have no header bytes, no test possible
136
+ // test: ['...'],
137
+ parseSync,
138
+ binary: true
139
+ };
140
+ function parseSync(arrayBuffer, options) {
141
+ const index = {};
142
+ const byteOffset = 0;
143
+ parsePotreeBin(arrayBuffer, byteOffset, options, index);
144
+ return index;
145
+ }
package/dist/index.js ADDED
@@ -0,0 +1,4 @@
1
+ export { PotreeLoader } from "./potree-loader.js";
2
+ export { PotreeHierarchyChunkLoader } from "./potree-hierarchy-chunk-loader.js";
3
+ export { PotreeBinLoader } from "./potree-bin-loader.js";
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["PotreeLoader","PotreeHierarchyChunkLoader","PotreeBinLoader"],"sources":["../src/index.ts"],"sourcesContent":["export {PotreeLoader} from './potree-loader';\nexport {PotreeHierarchyChunkLoader} from './potree-hierarchy-chunk-loader';\nexport {PotreeBinLoader} from './potree-bin-loader';\n"],"mappings":"SAAQA,YAAY;AAAA,SACZC,0BAA0B;AAAA,SAC1BC,eAAe"}
@@ -51,8 +51,8 @@ export class PointCloudOctant {
51
51
  const {
52
52
  version
53
53
  } = this.octree;
54
- const hierarchyPath = version >= 1.5 ? "".concat(this.getHierarchyPath(), "/") : '';
55
- return "".concat(this.octree.octreeDir, "/").concat(hierarchyPath).concat(this.name);
54
+ const hierarchyPath = version >= 1.5 ? `${this.getHierarchyPath()}/` : '';
55
+ return `${this.octree.octreeDir}/${hierarchyPath}${this.name}`;
56
56
  }
57
57
  getHierarchyPath() {
58
58
  let path = 'r/';
@@ -0,0 +1 @@
1
+ {"version":3,"file":"octree.js","names":["PointCloudOctree","constructor","url","octreeDir","spacing","boundingBox","root","nodes","pointAttributes","hierarchyStepSize","loader","PointCloudOctant","name","octree","id","PointCloudOctreeGeometryNode","IDCount","index","parseInt","charAt","length","geometry","boundingSphere","getBoundingSphere","THREE","Sphere","children","numPoints","level","loaded","oneTimeDisposeHandlers","isGeometryNode","getLevel","isTreeNode","isLoaded","getBoundingBox","getChildren","filter","Boolean","getURL","version","hierarchyPath","getHierarchyPath","path","indices","substr","numParts","Math","floor","i","slice","addChild","child","parent","load","loading","Potree","numNodesLoading","maxNodesLoading","equalOrHigher","hasChildren","loadHierachyThenPoints","loadPoints","node","callback","hbuffer","view","DataView","stack","getUint8","getUint32","push","decoded","offset","snode","shift","mask","childName","childChildren","childNumPoints","byteLength","pco","pcoGeometry","decodedNumPoints","parentName","substring","parentNode","Utils","createChildAABB","currentNode","pow","hurl","xhr","XHRFactory","createXMLHttpRequest","open","responseType","overrideMimeType","onreadystatechange","readyState","status","response","console","log","send","e","getNumPoints","dispose","handler"],"sources":["../../src/lib/octree.ts"],"sourcesContent":["/* eslint-disable */\n\n// @ts-nocheck\n\nexport class PointCloudOctree {\n constructor() {\n this.url = null;\n this.octreeDir = null;\n this.spacing = 0;\n this.boundingBox = null;\n this.root = null;\n this.nodes = null;\n this.pointAttributes = null;\n this.hierarchyStepSize = -1;\n this.loader = null;\n }\n}\n\nexport class PointCloudOctant {\n constructor(name, octree, boundingBox) {\n this.octree = this.id = PointCloudOctreeGeometryNode.IDCount++;\n this.name = name;\n this.index = parseInt(name.charAt(name.length - 1));\n this.octree = octree;\n this.geometry = null;\n this.boundingBox = boundingBox;\n this.boundingSphere = boundingBox.getBoundingSphere(new THREE.Sphere());\n this.children = {};\n this.numPoints = 0;\n this.level = null;\n this.loaded = false;\n this.oneTimeDisposeHandlers = [];\n }\n\n isGeometryNode() {\n return true;\n }\n\n getLevel() {\n return this.level;\n }\n\n isTreeNode() {\n return false;\n }\n\n isLoaded() {\n return this.loaded;\n }\n\n getBoundingSphere() {\n return this.boundingSphere;\n }\n\n getBoundingBox() {\n return this.boundingBox;\n }\n\n getChildren() {\n // Children is a length 8 array with nulls for \"missing\" octants\n return this.children.filter(Boolean);\n }\n\n getURL() {\n const {version} = this.octree;\n const hierarchyPath = version >= 1.5 ? `${this.getHierarchyPath()}/` : '';\n return `${this.octree.octreeDir}/${hierarchyPath}${this.name}`;\n }\n\n getHierarchyPath() {\n let path = 'r/';\n\n let hierarchyStepSize = this.octree.hierarchyStepSize;\n let indices = this.name.substr(1);\n\n let numParts = Math.floor(indices.length / hierarchyStepSize);\n for (let i = 0; i < numParts; i++) {\n path += indices.substr(i * hierarchyStepSize, hierarchyStepSize) + '/';\n }\n\n path = path.slice(0, -1);\n\n return path;\n }\n\n addChild(child) {\n this.children[child.index] = child;\n child.parent = this;\n }\n\n load() {\n if (\n this.loading === true ||\n this.loaded === true ||\n Potree.numNodesLoading >= Potree.maxNodesLoading\n ) {\n return;\n }\n\n this.loading = true;\n\n Potree.numNodesLoading++;\n\n if (this.octree.loader.version.equalOrHigher('1.5')) {\n if (this.level % this.octree.hierarchyStepSize === 0 && this.hasChildren) {\n this.loadHierachyThenPoints();\n } else {\n this.loadPoints();\n }\n } else {\n this.loadPoints();\n }\n }\n\n loadPoints() {\n this.octree.loader.load(this);\n }\n\n loadHierachyThenPoints() {\n let node = this;\n\n // load hierarchy\n let callback = function (node, hbuffer) {\n let view = new DataView(hbuffer);\n\n let stack = [];\n let children = view.getUint8(0);\n let numPoints = view.getUint32(1, true);\n node.numPoints = numPoints;\n stack.push({children: children, numPoints: numPoints, name: node.name});\n\n let decoded = [];\n\n let offset = 5;\n while (stack.length > 0) {\n let snode = stack.shift();\n let mask = 1;\n for (let i = 0; i < 8; i++) {\n if ((snode.children & mask) !== 0) {\n let childName = snode.name + i;\n\n let childChildren = view.getUint8(offset);\n let childNumPoints = view.getUint32(offset + 1, true);\n\n stack.push({children: childChildren, numPoints: childNumPoints, name: childName});\n\n decoded.push({children: childChildren, numPoints: childNumPoints, name: childName});\n\n offset += 5;\n }\n\n mask = mask * 2;\n }\n\n if (offset === hbuffer.byteLength) {\n break;\n }\n }\n\n // console.log(decoded);\n\n let nodes = {};\n nodes[node.name] = node;\n let pco = node.pcoGeometry;\n\n for (let i = 0; i < decoded.length; i++) {\n let name = decoded[i].name;\n let decodedNumPoints = decoded[i].numPoints;\n let index = parseInt(name.charAt(name.length - 1));\n let parentName = name.substring(0, name.length - 1);\n let parentNode = nodes[parentName];\n let level = name.length - 1;\n let boundingBox = Utils.createChildAABB(parentNode.boundingBox, index);\n\n let currentNode = new PointCloudOctreeGeometryNode(name, pco, boundingBox);\n currentNode.level = level;\n currentNode.numPoints = decodedNumPoints;\n currentNode.hasChildren = decoded[i].children > 0;\n currentNode.spacing = pco.spacing / Math.pow(2, level);\n parentNode.addChild(currentNode);\n nodes[name] = currentNode;\n }\n\n node.loadPoints();\n };\n if (node.level % node.pcoGeometry.hierarchyStepSize === 0) {\n // let hurl = node.pcoGeometry.octreeDir + \"/../hierarchy/\" + node.name + \".hrc\";\n let hurl =\n node.pcoGeometry.octreeDir + '/' + node.getHierarchyPath() + '/' + node.name + '.hrc';\n\n let xhr = XHRFactory.createXMLHttpRequest();\n xhr.open('GET', hurl, true);\n xhr.responseType = 'arraybuffer';\n xhr.overrideMimeType('text/plain; charset=x-user-defined');\n xhr.onreadystatechange = () => {\n if (xhr.readyState === 4) {\n if (xhr.status === 200 || xhr.status === 0) {\n let hbuffer = xhr.response;\n callback(node, hbuffer);\n } else {\n console.log('Failed to load file! HTTP status: ' + xhr.status + ', file: ' + hurl);\n Potree.numNodesLoading--;\n }\n }\n };\n try {\n xhr.send(null);\n } catch (e) {\n console.log('fehler beim laden der punktwolke: ' + e);\n }\n }\n }\n\n getNumPoints() {\n return this.numPoints;\n }\n\n dispose() {\n if (this.geometry && this.parent != null) {\n this.geometry.dispose();\n this.geometry = null;\n this.loaded = false;\n\n // this.dispatchEvent( { type: 'dispose' } );\n for (let i = 0; i < this.oneTimeDisposeHandlers.length; i++) {\n let handler = this.oneTimeDisposeHandlers[i];\n handler();\n }\n this.oneTimeDisposeHandlers = [];\n }\n }\n}\n\nPointCloudOctreeGeometryNode.IDCount = 0;\n"],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse-potree-bin.js","names":["parsePotreeBin","arrayBuffer","byteOffset","options","index"],"sources":["../../src/parsers/parse-potree-bin.ts"],"sourcesContent":["export function parsePotreeBin(\n arrayBuffer: ArrayBuffer,\n byteOffset: number,\n options: unknown,\n index: any\n) {\n return null;\n}\n"],"mappings":"AAAA,OAAO,SAASA,cAAcA,CAC5BC,WAAwB,EACxBC,UAAkB,EAClBC,OAAgB,EAChBC,KAAU,EACV;EACA,OAAO,IAAI;AACb"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse-potree-hierarchy-chunk.js","names":["parsePotreeHierarchyChunk","arrayBuffer","tileHeaders","parseBinaryChunk","buildHierarchy","byteOffset","arguments","length","undefined","dataView","DataView","stack","topTileHeader","decodeRow","push","snode","shift","mask","i","header","childMask","tileHeader","name","childCount","byteLength","getUint8","pointCount","getUint32","options","DEFAULT_OPTIONS","spacing","topNode","nodes","_options","index","parseInt","charAt","parentName","substring","parentNode","level","hasChildren","children","childrenByIndex","Array","fill","Math","pow"],"sources":["../../src/parsers/parse-potree-hierarchy-chunk.ts"],"sourcesContent":["// This file is derived from the Cesium code base under BSD 2-clause license\n// See LICENSE.md and https://github.com/potree/potree/blob/develop/LICENSE\n\n// Potree Hierarchy Chunk file format\n// https://github.com/potree/potree/blob/develop/docs/potree-file-format.md#index-files\n\n/*\n### Hierarchy Chunk Files\n\nAs mentioned in the former section, the `.hrc` files contain the index structure\nmeaning a list of all the files stored within the directory tree.\n\nAn index file contains a list of tuple values with the first being a `uint8`\n\"mask\" and the second being `uint32` \"number of points\" of a hierarchy level\nin a [breadth first level order][breadth-first].\n\nPer hierarchy level we have 8 possible nodes. To indicate whether a node exists\na simple binary mask is used:\n\n| Position | Mask | [Binary][bin] |\n|----------|------|---------------|\n| 0 | 1 | 0b00000001 |\n| 1 | 2 | 0b00000010 |\n| 2 | 4 | 0b00000100 |\n| 3 | 8 | 0b00001000 |\n| 4 | 16 | 0b00010000 |\n| 5 | 32 | 0b00100000 |\n| 6 | 64 | 0b01000000 |\n| 7 | 128 | 0b10000000 |\n\nSo if in a hierarchy the child node 3 and node 7 exist then the hierarchies\nmask has to be `0b00001000 | 0b10000000` → `0b10001000` (=136).\n\n_Example:_ A simple, non-realistic tree:\n\n```\n|- r1\n| |\n| \\- r14 (2 Points)\n|\n\\- r3\n |\n \\- r36 (1 Point)\n```\n\nWould have an index looking like this:\n\n| name | mask | points |\n|------|--------------------|--------|\n| r | `0b00001010` (=10) | `3` |\n| r1 | `0b00010000` (=16) | `2` |\n| r3 | `0b01000000` (=64) | `1` |\n| r14 | `0b00000000` (=0) | `2` |\n| r36 | `0b00000000` (=0) | `1` |\n*/\n\n/** @todo these types are an incorrect mess */\nexport type POTreeTileHeader = {\n childCount: number;\n name: string;\n childMask: number;\n};\n\n/** @todo these types are an incorrect mess */\nexport type POTreeNode = {\n header: POTreeTileHeader;\n name: string;\n pointCount: number;\n children: POTreeNode[];\n childrenByIndex: POTreeNode[];\n};\n\n// type POTreeTileNode = POTreeNode;\n\n// load hierarchy\nexport function parsePotreeHierarchyChunk(arrayBuffer: ArrayBuffer) {\n const tileHeaders = parseBinaryChunk(arrayBuffer);\n return buildHierarchy(tileHeaders);\n}\n\n// Parses the binary rows\nfunction parseBinaryChunk(arrayBuffer: ArrayBuffer, byteOffset = 0) {\n const dataView = new DataView(arrayBuffer);\n\n const stack: POTreeNode[] = [];\n\n // Get root mask\n // @ts-expect-error\n const topTileHeader: POTreeNode = {};\n byteOffset = decodeRow(dataView, byteOffset, topTileHeader);\n\n stack.push(topTileHeader);\n\n const tileHeaders: POTreeTileHeader[] = [];\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 // @ts-expect-error\n const tileHeader: POTreeTileHeader = {};\n byteOffset = decodeRow(dataView, byteOffset, tileHeader);\n tileHeader.name = snode.name + i;\n\n // @ts-expect-error\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: {spacing?: number} = {}): POTreeNode {\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 || 0) / Math.pow(2, level);\n // tileHeader.boundingVolume = Utils.createChildAABB(parentNode.boundingBox, index);\n\n if (parentNode) {\n parentNode.children.push(tileHeader);\n parentNode.childrenByIndex[index] = tileHeader;\n }\n\n // Add the node to the map\n nodes[name] = tileHeader;\n }\n\n // First node is the root\n return topNode;\n}\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { parsePotreeBin } from './parsers/parse-potree-bin';
1
+ import { parsePotreeBin } from "./parsers/parse-potree-bin.js";
2
2
  export const PotreeBinLoader = {
3
3
  name: 'potree Binary Point Attributes',
4
4
  id: 'potree',
@@ -0,0 +1 @@
1
+ {"version":3,"file":"potree-bin-loader.js","names":["parsePotreeBin","PotreeBinLoader","name","id","extensions","mimeTypes","parseSync","binary","arrayBuffer","options","index","byteOffset"],"sources":["../src/potree-bin-loader.ts"],"sourcesContent":["import type {LoaderWithParser, LoaderOptions} from '@loaders.gl/loader-utils';\nimport {parsePotreeBin} from './parsers/parse-potree-bin';\n\n/**\n * Loader for potree Binary Point Attributes\n * */\n// @ts-ignore\nexport const PotreeBinLoader: LoaderWithParser<{}, never, LoaderOptions> = {\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: ArrayBuffer, options?: LoaderOptions): {} {\n const index = {};\n const byteOffset = 0;\n parsePotreeBin(arrayBuffer, byteOffset, options, index);\n return index;\n}\n"],"mappings":"SACQA,cAAc;AAMtB,OAAO,MAAMC,eAA2D,GAAG;EACzEC,IAAI,EAAE,gCAAgC;EACtCC,EAAE,EAAE,QAAQ;EACZC,UAAU,EAAE,CAAC,KAAK,CAAC;EACnBC,SAAS,EAAE,CAAC,0BAA0B,CAAC;EAGvCC,SAAS;EACTC,MAAM,EAAE;AACV,CAAC;AAED,SAASD,SAASA,CAACE,WAAwB,EAAEC,OAAuB,EAAM;EACxE,MAAMC,KAAK,GAAG,CAAC,CAAC;EAChB,MAAMC,UAAU,GAAG,CAAC;EACpBX,cAAc,CAACQ,WAAW,EAAEG,UAAU,EAAEF,OAAO,EAAEC,KAAK,CAAC;EACvD,OAAOA,KAAK;AACd"}
@@ -1,4 +1,4 @@
1
- import { parsePotreeHierarchyChunk } from './parsers/parse-potree-hierarchy-chunk';
1
+ import { parsePotreeHierarchyChunk } from "./parsers/parse-potree-hierarchy-chunk.js";
2
2
  export const PotreeHierarchyChunkLoader = {
3
3
  id: 'potree',
4
4
  name: 'potree Hierarchy Chunk',
@@ -0,0 +1 @@
1
+ {"version":3,"file":"potree-hierarchy-chunk-loader.js","names":["parsePotreeHierarchyChunk","PotreeHierarchyChunkLoader","id","name","extensions","mimeTypes","parse","arrayBuffer","options","parseSync","binary"],"sources":["../src/potree-hierarchy-chunk-loader.ts"],"sourcesContent":["import type {LoaderWithParser} from '@loaders.gl/loader-utils';\nimport type {POTreeLoaderOptions} from './potree-loader';\nimport type {POTreeNode} from './parsers/parse-potree-hierarchy-chunk';\nimport {parsePotreeHierarchyChunk} from './parsers/parse-potree-hierarchy-chunk';\n\n/** Potree hierarchy chunk loader */\n// @ts-ignore not a valid loader\nexport const PotreeHierarchyChunkLoader: LoaderWithParser<POTreeNode, never, POTreeLoaderOptions> =\n {\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) => parsePotreeHierarchyChunk(arrayBuffer),\n parseSync: (arrayBuffer, options) => parsePotreeHierarchyChunk(arrayBuffer),\n binary: true\n };\n"],"mappings":"SAGQA,yBAAyB;AAIjC,OAAO,MAAMC,0BAAoF,GAC/F;EACEC,EAAE,EAAE,QAAQ;EACZC,IAAI,EAAE,wBAAwB;EAC9BC,UAAU,EAAE,CAAC,KAAK,CAAC;EACnBC,SAAS,EAAE,CAAC,0BAA0B,CAAC;EAGvCC,KAAK,EAAE,MAAAA,CAAOC,WAAW,EAAEC,OAAO,KAAKR,yBAAyB,CAACO,WAAW,CAAC;EAC7EE,SAAS,EAAEA,CAACF,WAAW,EAAEC,OAAO,KAAKR,yBAAyB,CAACO,WAAW,CAAC;EAC3EG,MAAM,EAAE;AACV,CAAC"}
@@ -1,4 +1,4 @@
1
- const VERSION = typeof "4.0.0-beta.2" !== 'undefined' ? "4.0.0-beta.2" : 'latest';
1
+ const VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';
2
2
  export const PotreeLoader = {
3
3
  name: 'potree',
4
4
  id: 'potree',
@@ -0,0 +1 @@
1
+ {"version":3,"file":"potree-loader.js","names":["VERSION","__VERSION__","PotreeLoader","name","id","module","version","extensions","mimeTypes","testText","text","indexOf","parseTextSync","JSON","parse","options","potree"],"sources":["../src/potree-loader.ts"],"sourcesContent":["import type {LoaderWithParser, LoaderOptions} 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\nexport type POTreeLoaderOptions = LoaderOptions & {\n potree?: {};\n};\n\n/** Potree loader */\n// @ts-ignore\nexport const PotreeLoader: LoaderWithParser<any, never, POTreeLoaderOptions> = {\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"],"mappings":"AAIA,MAAMA,OAAO,GAAG,OAAOC,WAAW,KAAK,WAAW,GAAGA,WAAW,GAAG,QAAQ;AAQ3E,OAAO,MAAMC,YAA+D,GAAG;EAC7EC,IAAI,EAAE,QAAQ;EACdC,EAAE,EAAE,QAAQ;EACZC,MAAM,EAAE,QAAQ;EAChBC,OAAO,EAAEN,OAAO;EAChBO,UAAU,EAAE,CAAC,MAAM,CAAC;EACpBC,SAAS,EAAE,CAAC,kBAAkB,CAAC;EAC/BC,QAAQ,EAAGC,IAAI,IAAKA,IAAI,CAACC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC;EAClDC,aAAa,EAAGF,IAAI,IAAKG,IAAI,CAACC,KAAK,CAACJ,IAAI,CAAC;EACzCK,OAAO,EAAE;IACPC,MAAM,EAAE,CAAC;EACX;AACF,CAAC"}
package/package.json CHANGED
@@ -1,8 +1,9 @@
1
1
  {
2
2
  "name": "@loaders.gl/potree",
3
- "version": "4.0.0-beta.2",
3
+ "version": "4.0.0-beta.4",
4
4
  "description": "potree loaders for large point clouds.",
5
5
  "license": "MIT",
6
+ "type": "module",
6
7
  "publishConfig": {
7
8
  "access": "public"
8
9
  },
@@ -22,8 +23,15 @@
22
23
  "pointcloud"
23
24
  ],
24
25
  "types": "dist/index.d.ts",
25
- "main": "dist/es5/index.js",
26
- "module": "dist/esm/index.js",
26
+ "main": "dist/index.cjs",
27
+ "module": "dist/index.js",
28
+ "exports": {
29
+ ".": {
30
+ "import": "./dist/index.js",
31
+ "require": "./dist/index.cjs",
32
+ "types": "./dist/index.d.ts"
33
+ }
34
+ },
27
35
  "sideEffects": false,
28
36
  "files": [
29
37
  "src",
@@ -31,12 +39,12 @@
31
39
  "README.md"
32
40
  ],
33
41
  "scripts": {
34
- "pre-build": "npm run build-bundle",
35
- "build-bundle": "esbuild src/bundle.ts --bundle --outfile=dist/dist.min.js"
42
+ "pre-build": "npm run build-bundle && npm run build-bundle -- --env=dev",
43
+ "build-bundle": "ocular-bundle ./src/index.ts"
36
44
  },
37
45
  "dependencies": {
38
- "@loaders.gl/math": "4.0.0-beta.2",
39
- "@math.gl/core": "^3.5.1"
46
+ "@loaders.gl/math": "4.0.0-beta.4",
47
+ "@math.gl/core": "^4.0.0"
40
48
  },
41
- "gitHead": "79c2033f755e88e11bc30a04428e3666b177b8fc"
49
+ "gitHead": "848c20b474532d301f2c3f8d4e1fb9bf262b86d4"
42
50
  }
package/dist/bundle.d.ts DELETED
@@ -1,2 +0,0 @@
1
- declare const moduleExports: any;
2
- //# sourceMappingURL=bundle.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"bundle.d.ts","sourceRoot":"","sources":["../src/bundle.ts"],"names":[],"mappings":"AACA,QAAA,MAAM,aAAa,KAAqB,CAAC"}
@@ -1,6 +0,0 @@
1
- "use strict";
2
-
3
- var moduleExports = require('./index');
4
- globalThis.loaders = globalThis.loaders || {};
5
- module.exports = Object.assign(globalThis.loaders, moduleExports);
6
- //# sourceMappingURL=bundle.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"bundle.js","names":["moduleExports","require","globalThis","loaders","module","exports","Object","assign"],"sources":["../../src/bundle.ts"],"sourcesContent":["// @ts-nocheck\nconst moduleExports = require('./index');\nglobalThis.loaders = globalThis.loaders || {};\nmodule.exports = Object.assign(globalThis.loaders, moduleExports);\n"],"mappings":";;AACA,IAAMA,aAAa,GAAGC,OAAO,CAAC,SAAS,CAAC;AACxCC,UAAU,CAACC,OAAO,GAAGD,UAAU,CAACC,OAAO,IAAI,CAAC,CAAC;AAC7CC,MAAM,CAACC,OAAO,GAAGC,MAAM,CAACC,MAAM,CAACL,UAAU,CAACC,OAAO,EAAEH,aAAa,CAAC"}
package/dist/es5/index.js DELETED
@@ -1,27 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- Object.defineProperty(exports, "PotreeBinLoader", {
7
- enumerable: true,
8
- get: function get() {
9
- return _potreeBinLoader.PotreeBinLoader;
10
- }
11
- });
12
- Object.defineProperty(exports, "PotreeHierarchyChunkLoader", {
13
- enumerable: true,
14
- get: function get() {
15
- return _potreeHierarchyChunkLoader.PotreeHierarchyChunkLoader;
16
- }
17
- });
18
- Object.defineProperty(exports, "PotreeLoader", {
19
- enumerable: true,
20
- get: function get() {
21
- return _potreeLoader.PotreeLoader;
22
- }
23
- });
24
- var _potreeLoader = require("./potree-loader");
25
- var _potreeHierarchyChunkLoader = require("./potree-hierarchy-chunk-loader");
26
- var _potreeBinLoader = require("./potree-bin-loader");
27
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","names":["_potreeLoader","require","_potreeHierarchyChunkLoader","_potreeBinLoader"],"sources":["../../src/index.ts"],"sourcesContent":["export {PotreeLoader} from './potree-loader';\nexport {PotreeHierarchyChunkLoader} from './potree-hierarchy-chunk-loader';\nexport {PotreeBinLoader} from './potree-bin-loader';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,aAAA,GAAAC,OAAA;AACA,IAAAC,2BAAA,GAAAD,OAAA;AACA,IAAAE,gBAAA,GAAAF,OAAA"}