@loaders.gl/potree 3.1.0-alpha.4 → 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/es5/bundle.js +1 -1
- package/dist/es5/bundle.js.map +1 -1
- package/dist/es5/index.js +3 -3
- package/dist/es5/lib/octree.js +188 -208
- package/dist/es5/lib/octree.js.map +1 -1
- package/dist/es5/parsers/parse-potree-hierarchy-chunk.js +37 -59
- package/dist/es5/parsers/parse-potree-hierarchy-chunk.js.map +1 -1
- package/dist/es5/potree-bin-loader.js +4 -4
- package/dist/es5/potree-bin-loader.js.map +1 -1
- package/dist/es5/potree-hierarchy-chunk-loader.js +3 -32
- package/dist/es5/potree-hierarchy-chunk-loader.js.map +1 -1
- package/dist/es5/potree-loader.js +4 -8
- package/dist/es5/potree-loader.js.map +1 -1
- package/dist/esm/lib/octree.js +2 -2
- package/dist/esm/lib/octree.js.map +1 -1
- package/dist/esm/potree-loader.js +1 -1
- 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 +5 -4
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){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.
|
|
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/es5/bundle.js
CHANGED
package/dist/es5/bundle.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/bundle.ts"],"names":["moduleExports","require","globalThis","loaders","module","exports","Object","assign"],"mappings":";;AACA,
|
|
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"}
|
package/dist/es5/index.js
CHANGED
|
@@ -5,19 +5,19 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
Object.defineProperty(exports, "PotreeLoader", {
|
|
7
7
|
enumerable: true,
|
|
8
|
-
get: function
|
|
8
|
+
get: function () {
|
|
9
9
|
return _potreeLoader.PotreeLoader;
|
|
10
10
|
}
|
|
11
11
|
});
|
|
12
12
|
Object.defineProperty(exports, "PotreeHierarchyChunkLoader", {
|
|
13
13
|
enumerable: true,
|
|
14
|
-
get: function
|
|
14
|
+
get: function () {
|
|
15
15
|
return _potreeHierarchyChunkLoader.PotreeHierarchyChunkLoader;
|
|
16
16
|
}
|
|
17
17
|
});
|
|
18
18
|
Object.defineProperty(exports, "PotreeBinLoader", {
|
|
19
19
|
enumerable: true,
|
|
20
|
-
get: function
|
|
20
|
+
get: function () {
|
|
21
21
|
return _potreeBinLoader.PotreeBinLoader;
|
|
22
22
|
}
|
|
23
23
|
});
|
package/dist/es5/lib/octree.js
CHANGED
|
@@ -1,34 +1,29 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
3
|
Object.defineProperty(exports, "__esModule", {
|
|
6
4
|
value: true
|
|
7
5
|
});
|
|
8
6
|
exports.PointCloudOctant = exports.PointCloudOctree = void 0;
|
|
9
7
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
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
|
+
}
|
|
13
20
|
|
|
14
|
-
|
|
15
|
-
(0, _classCallCheck2.default)(this, PointCloudOctree);
|
|
16
|
-
this.url = null;
|
|
17
|
-
this.octreeDir = null;
|
|
18
|
-
this.spacing = 0;
|
|
19
|
-
this.boundingBox = null;
|
|
20
|
-
this.root = null;
|
|
21
|
-
this.nodes = null;
|
|
22
|
-
this.pointAttributes = null;
|
|
23
|
-
this.hierarchyStepSize = -1;
|
|
24
|
-
this.loader = null;
|
|
25
|
-
};
|
|
21
|
+
}
|
|
26
22
|
|
|
27
23
|
exports.PointCloudOctree = PointCloudOctree;
|
|
28
24
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
(0, _classCallCheck2.default)(this, PointCloudOctant);
|
|
25
|
+
class PointCloudOctant {
|
|
26
|
+
constructor(name, octree, boundingBox) {
|
|
32
27
|
this.octree = this.id = PointCloudOctreeGeometryNode.IDCount++;
|
|
33
28
|
this.name = name;
|
|
34
29
|
this.index = parseInt(name.charAt(name.length - 1));
|
|
@@ -43,217 +38,202 @@ var PointCloudOctant = function () {
|
|
|
43
38
|
this.oneTimeDisposeHandlers = [];
|
|
44
39
|
}
|
|
45
40
|
|
|
46
|
-
(
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
}
|
|
88
|
-
}, {
|
|
89
|
-
key: "getHierarchyPath",
|
|
90
|
-
value: function getHierarchyPath() {
|
|
91
|
-
var path = 'r/';
|
|
92
|
-
var hierarchyStepSize = this.octree.hierarchyStepSize;
|
|
93
|
-
var indices = this.name.substr(1);
|
|
94
|
-
var numParts = Math.floor(indices.length / hierarchyStepSize);
|
|
95
|
-
|
|
96
|
-
for (var i = 0; i < numParts; i++) {
|
|
97
|
-
path += indices.substr(i * hierarchyStepSize, hierarchyStepSize) + '/';
|
|
98
|
-
}
|
|
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);
|
|
99
82
|
|
|
100
|
-
|
|
101
|
-
|
|
83
|
+
for (let i = 0; i < numParts; i++) {
|
|
84
|
+
path += indices.substr(i * hierarchyStepSize, hierarchyStepSize) + '/';
|
|
102
85
|
}
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
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;
|
|
108
99
|
}
|
|
109
|
-
}, {
|
|
110
|
-
key: "load",
|
|
111
|
-
value: function load() {
|
|
112
|
-
if (this.loading === true || this.loaded === true || Potree.numNodesLoading >= Potree.maxNodesLoading) {
|
|
113
|
-
return;
|
|
114
|
-
}
|
|
115
100
|
|
|
116
|
-
|
|
117
|
-
|
|
101
|
+
this.loading = true;
|
|
102
|
+
Potree.numNodesLoading++;
|
|
118
103
|
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
} else {
|
|
123
|
-
this.loadPoints();
|
|
124
|
-
}
|
|
104
|
+
if (this.octree.loader.version.equalOrHigher('1.5')) {
|
|
105
|
+
if (this.level % this.octree.hierarchyStepSize === 0 && this.hasChildren) {
|
|
106
|
+
this.loadHierachyThenPoints();
|
|
125
107
|
} else {
|
|
126
108
|
this.loadPoints();
|
|
127
109
|
}
|
|
110
|
+
} else {
|
|
111
|
+
this.loadPoints();
|
|
128
112
|
}
|
|
129
|
-
}
|
|
130
|
-
key: "loadPoints",
|
|
131
|
-
value: function loadPoints() {
|
|
132
|
-
this.octree.loader.load(this);
|
|
133
|
-
}
|
|
134
|
-
}, {
|
|
135
|
-
key: "loadHierachyThenPoints",
|
|
136
|
-
value: function loadHierachyThenPoints() {
|
|
137
|
-
var node = this;
|
|
138
|
-
|
|
139
|
-
var callback = function callback(node, hbuffer) {
|
|
140
|
-
var view = new DataView(hbuffer);
|
|
141
|
-
var stack = [];
|
|
142
|
-
var children = view.getUint8(0);
|
|
143
|
-
var numPoints = view.getUint32(1, true);
|
|
144
|
-
node.numPoints = numPoints;
|
|
145
|
-
stack.push({
|
|
146
|
-
children: children,
|
|
147
|
-
numPoints: numPoints,
|
|
148
|
-
name: node.name
|
|
149
|
-
});
|
|
150
|
-
var decoded = [];
|
|
151
|
-
var offset = 5;
|
|
152
|
-
|
|
153
|
-
while (stack.length > 0) {
|
|
154
|
-
var snode = stack.shift();
|
|
155
|
-
var mask = 1;
|
|
156
|
-
|
|
157
|
-
for (var i = 0; i < 8; i++) {
|
|
158
|
-
if ((snode.children & mask) !== 0) {
|
|
159
|
-
var childName = snode.name + i;
|
|
160
|
-
var childChildren = view.getUint8(offset);
|
|
161
|
-
var childNumPoints = view.getUint32(offset + 1, true);
|
|
162
|
-
stack.push({
|
|
163
|
-
children: childChildren,
|
|
164
|
-
numPoints: childNumPoints,
|
|
165
|
-
name: childName
|
|
166
|
-
});
|
|
167
|
-
decoded.push({
|
|
168
|
-
children: childChildren,
|
|
169
|
-
numPoints: childNumPoints,
|
|
170
|
-
name: childName
|
|
171
|
-
});
|
|
172
|
-
offset += 5;
|
|
173
|
-
}
|
|
174
|
-
|
|
175
|
-
mask = mask * 2;
|
|
176
|
-
}
|
|
113
|
+
}
|
|
177
114
|
|
|
178
|
-
|
|
179
|
-
|
|
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;
|
|
180
156
|
}
|
|
157
|
+
|
|
158
|
+
mask = mask * 2;
|
|
181
159
|
}
|
|
182
160
|
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
var pco = node.pcoGeometry;
|
|
186
|
-
|
|
187
|
-
for (var _i = 0; _i < decoded.length; _i++) {
|
|
188
|
-
var name = decoded[_i].name;
|
|
189
|
-
var decodedNumPoints = decoded[_i].numPoints;
|
|
190
|
-
var index = parseInt(name.charAt(name.length - 1));
|
|
191
|
-
var parentName = name.substring(0, name.length - 1);
|
|
192
|
-
var parentNode = nodes[parentName];
|
|
193
|
-
var level = name.length - 1;
|
|
194
|
-
var boundingBox = Utils.createChildAABB(parentNode.boundingBox, index);
|
|
195
|
-
var currentNode = new PointCloudOctreeGeometryNode(name, pco, boundingBox);
|
|
196
|
-
currentNode.level = level;
|
|
197
|
-
currentNode.numPoints = decodedNumPoints;
|
|
198
|
-
currentNode.hasChildren = decoded[_i].children > 0;
|
|
199
|
-
currentNode.spacing = pco.spacing / Math.pow(2, level);
|
|
200
|
-
parentNode.addChild(currentNode);
|
|
201
|
-
nodes[name] = currentNode;
|
|
161
|
+
if (offset === hbuffer.byteLength) {
|
|
162
|
+
break;
|
|
202
163
|
}
|
|
164
|
+
}
|
|
203
165
|
|
|
204
|
-
|
|
205
|
-
|
|
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
|
+
}
|
|
206
186
|
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
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--;
|
|
223
205
|
}
|
|
224
|
-
};
|
|
225
|
-
|
|
226
|
-
try {
|
|
227
|
-
xhr.send(null);
|
|
228
|
-
} catch (e) {
|
|
229
|
-
console.log('fehler beim laden der punktwolke: ' + e);
|
|
230
206
|
}
|
|
207
|
+
};
|
|
208
|
+
|
|
209
|
+
try {
|
|
210
|
+
xhr.send(null);
|
|
211
|
+
} catch (e) {
|
|
212
|
+
console.log('fehler beim laden der punktwolke: ' + e);
|
|
231
213
|
}
|
|
232
214
|
}
|
|
233
|
-
}
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
this.loaded = false;
|
|
245
|
-
|
|
246
|
-
for (var i = 0; i < this.oneTimeDisposeHandlers.length; i++) {
|
|
247
|
-
var handler = this.oneTimeDisposeHandlers[i];
|
|
248
|
-
handler();
|
|
249
|
-
}
|
|
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;
|
|
250
226
|
|
|
251
|
-
|
|
227
|
+
for (let i = 0; i < this.oneTimeDisposeHandlers.length; i++) {
|
|
228
|
+
let handler = this.oneTimeDisposeHandlers[i];
|
|
229
|
+
handler();
|
|
252
230
|
}
|
|
231
|
+
|
|
232
|
+
this.oneTimeDisposeHandlers = [];
|
|
253
233
|
}
|
|
254
|
-
}
|
|
255
|
-
|
|
256
|
-
}
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
}
|
|
257
237
|
|
|
258
238
|
exports.PointCloudOctant = PointCloudOctant;
|
|
259
239
|
PointCloudOctreeGeometryNode.IDCount = 0;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/lib/octree.js"],"names":["PointCloudOctree","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","filter","Boolean","version","hierarchyPath","getHierarchyPath","path","indices","substr","numParts","Math","floor","i","slice","child","parent","loading","Potree","numNodesLoading","maxNodesLoading","equalOrHigher","hasChildren","loadHierachyThenPoints","loadPoints","load","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","addChild","hurl","xhr","XHRFactory","createXMLHttpRequest","open","responseType","overrideMimeType","onreadystatechange","readyState","status","response","console","log","send","e","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
|
+
{"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,45 +1,30 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
3
|
Object.defineProperty(exports, "__esModule", {
|
|
6
4
|
value: true
|
|
7
5
|
});
|
|
8
6
|
exports.default = parsePotreeHierarchyChunk;
|
|
9
7
|
|
|
10
|
-
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
11
|
-
|
|
12
|
-
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
|
|
13
|
-
|
|
14
|
-
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
15
|
-
|
|
16
|
-
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
|
17
|
-
|
|
18
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
|
|
19
|
-
|
|
20
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
21
|
-
|
|
22
8
|
function parsePotreeHierarchyChunk(arrayBuffer) {
|
|
23
|
-
|
|
9
|
+
const tileHeaders = parseBinaryChunk(arrayBuffer);
|
|
24
10
|
return buildHierarchy(tileHeaders);
|
|
25
11
|
}
|
|
26
12
|
|
|
27
|
-
function parseBinaryChunk(arrayBuffer) {
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
var topTileHeader = {};
|
|
13
|
+
function parseBinaryChunk(arrayBuffer, byteOffset = 0) {
|
|
14
|
+
const dataView = new DataView(arrayBuffer);
|
|
15
|
+
const stack = [];
|
|
16
|
+
const topTileHeader = {};
|
|
32
17
|
byteOffset = decodeRow(dataView, byteOffset, topTileHeader);
|
|
33
18
|
stack.push(topTileHeader);
|
|
34
|
-
|
|
19
|
+
const tileHeaders = [];
|
|
35
20
|
|
|
36
21
|
while (stack.length > 0) {
|
|
37
|
-
|
|
38
|
-
|
|
22
|
+
const snode = stack.shift();
|
|
23
|
+
let mask = 1;
|
|
39
24
|
|
|
40
|
-
for (
|
|
25
|
+
for (let i = 0; i < 8; i++) {
|
|
41
26
|
if (snode && (snode.header.childMask & mask) !== 0) {
|
|
42
|
-
|
|
27
|
+
const tileHeader = {};
|
|
43
28
|
byteOffset = decodeRow(dataView, byteOffset, tileHeader);
|
|
44
29
|
tileHeader.name = snode.name + i;
|
|
45
30
|
stack.push(tileHeader);
|
|
@@ -68,43 +53,36 @@ function decodeRow(dataView, byteOffset, tileHeader) {
|
|
|
68
53
|
return byteOffset;
|
|
69
54
|
}
|
|
70
55
|
|
|
71
|
-
function buildHierarchy(tileHeaders) {
|
|
72
|
-
|
|
73
|
-
var DEFAULT_OPTIONS = {
|
|
56
|
+
function buildHierarchy(tileHeaders, options = {}) {
|
|
57
|
+
const DEFAULT_OPTIONS = {
|
|
74
58
|
spacing: 100
|
|
75
59
|
};
|
|
76
|
-
options =
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
parentNode.childrenByIndex[index] = tileHeader;
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
nodes[name] = tileHeader;
|
|
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;
|
|
103
83
|
}
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
} finally {
|
|
107
|
-
_iterator.f();
|
|
84
|
+
|
|
85
|
+
nodes[name] = tileHeader;
|
|
108
86
|
}
|
|
109
87
|
|
|
110
88
|
return topNode;
|
|
@@ -1 +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":"
|
|
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"}
|
|
@@ -9,19 +9,19 @@ exports.PotreeBinLoader = void 0;
|
|
|
9
9
|
|
|
10
10
|
var _parsePotreeBin = _interopRequireDefault(require("./parsers/parse-potree-bin"));
|
|
11
11
|
|
|
12
|
-
|
|
12
|
+
const PotreeBinLoader = {
|
|
13
13
|
name: 'potree Binary Point Attributes',
|
|
14
14
|
id: 'potree',
|
|
15
15
|
extensions: ['bin'],
|
|
16
16
|
mimeTypes: ['application/octet-stream'],
|
|
17
|
-
parseSync
|
|
17
|
+
parseSync,
|
|
18
18
|
binary: true
|
|
19
19
|
};
|
|
20
20
|
exports.PotreeBinLoader = PotreeBinLoader;
|
|
21
21
|
|
|
22
22
|
function parseSync(arrayBuffer, options) {
|
|
23
|
-
|
|
24
|
-
|
|
23
|
+
const index = {};
|
|
24
|
+
const byteOffset = 0;
|
|
25
25
|
(0, _parsePotreeBin.default)(arrayBuffer, byteOffset, options, index);
|
|
26
26
|
return index;
|
|
27
27
|
}
|
|
@@ -1 +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,
|
|
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"}
|
|
@@ -7,44 +7,15 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
});
|
|
8
8
|
exports.PotreeHierarchyChunkLoader = void 0;
|
|
9
9
|
|
|
10
|
-
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
11
|
-
|
|
12
|
-
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
13
|
-
|
|
14
10
|
var _parsePotreeHierarchyChunk = _interopRequireDefault(require("./parsers/parse-potree-hierarchy-chunk"));
|
|
15
11
|
|
|
16
|
-
|
|
12
|
+
const PotreeHierarchyChunkLoader = {
|
|
17
13
|
id: 'potree',
|
|
18
14
|
name: 'potree Hierarchy Chunk',
|
|
19
15
|
extensions: ['hrc'],
|
|
20
16
|
mimeTypes: ['application/octet-stream'],
|
|
21
|
-
parse:
|
|
22
|
-
|
|
23
|
-
return _regenerator.default.wrap(function _callee$(_context) {
|
|
24
|
-
while (1) {
|
|
25
|
-
switch (_context.prev = _context.next) {
|
|
26
|
-
case 0:
|
|
27
|
-
_context.next = 2;
|
|
28
|
-
return parseSync(arrayBuffer);
|
|
29
|
-
|
|
30
|
-
case 2:
|
|
31
|
-
return _context.abrupt("return", _context.sent);
|
|
32
|
-
|
|
33
|
-
case 3:
|
|
34
|
-
case "end":
|
|
35
|
-
return _context.stop();
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
}, _callee);
|
|
39
|
-
}));
|
|
40
|
-
|
|
41
|
-
function parse(_x, _x2) {
|
|
42
|
-
return _parse.apply(this, arguments);
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
return parse;
|
|
46
|
-
}(),
|
|
47
|
-
parseSync: parseSync,
|
|
17
|
+
parse: async (arrayBuffer, options) => await parseSync(arrayBuffer),
|
|
18
|
+
parseSync,
|
|
48
19
|
binary: true
|
|
49
20
|
};
|
|
50
21
|
exports.PotreeHierarchyChunkLoader = PotreeHierarchyChunkLoader;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/potree-hierarchy-chunk-loader.ts"],"names":["PotreeHierarchyChunkLoader","id","name","extensions","mimeTypes","parse","arrayBuffer","options","parseSync","binary"],"mappings":"
|
|
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"}
|
|
@@ -4,20 +4,16 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.PotreeLoader = void 0;
|
|
7
|
-
|
|
8
|
-
|
|
7
|
+
const VERSION = typeof "3.1.0-alpha.5" !== 'undefined' ? "3.1.0-alpha.5" : 'latest';
|
|
8
|
+
const PotreeLoader = {
|
|
9
9
|
name: 'potree',
|
|
10
10
|
id: 'potree',
|
|
11
11
|
module: 'potree',
|
|
12
12
|
version: VERSION,
|
|
13
13
|
extensions: ['json'],
|
|
14
14
|
mimeTypes: ['application/json'],
|
|
15
|
-
testText:
|
|
16
|
-
|
|
17
|
-
},
|
|
18
|
-
parseTextSync: function parseTextSync(text) {
|
|
19
|
-
return JSON.parse(text);
|
|
20
|
-
},
|
|
15
|
+
testText: text => text.indexOf('octreeDir') >= 0,
|
|
16
|
+
parseTextSync: text => JSON.parse(text),
|
|
21
17
|
options: {
|
|
22
18
|
potree: {}
|
|
23
19
|
}
|
|
@@ -1 +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,
|
|
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"}
|
package/dist/esm/lib/octree.js
CHANGED
|
@@ -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() {
|
|
@@ -1 +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"}
|
|
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"}
|
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,7 +21,7 @@
|
|
|
21
21
|
"point cloud",
|
|
22
22
|
"pointcloud"
|
|
23
23
|
],
|
|
24
|
-
"types": "
|
|
24
|
+
"types": "dist/index.d.ts",
|
|
25
25
|
"main": "dist/es5/index.js",
|
|
26
26
|
"module": "dist/esm/index.js",
|
|
27
27
|
"sideEffects": false,
|
|
@@ -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
|
}
|