@loaders.gl/potree 4.4.0-alpha.2 → 4.4.0-alpha.9
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/README.md +1 -1
- package/dist/dist.dev.js +6135 -710
- package/dist/dist.min.js +20 -17
- package/dist/index.cjs +106 -12
- package/dist/index.cjs.map +4 -4
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/octree.js +1 -0
- package/dist/lib/octree.js.map +1 -0
- package/dist/lib/potree-node-source.d.ts +42 -6
- package/dist/lib/potree-node-source.d.ts.map +1 -1
- package/dist/lib/potree-node-source.js +91 -9
- package/dist/lib/potree-node-source.js.map +1 -0
- package/dist/parsers/parse-potree-bin.js +1 -0
- package/dist/parsers/parse-potree-bin.js.map +1 -0
- package/dist/parsers/parse-potree-hierarchy-chunk.d.ts +10 -0
- package/dist/parsers/parse-potree-hierarchy-chunk.d.ts.map +1 -1
- package/dist/parsers/parse-potree-hierarchy-chunk.js +3 -0
- package/dist/parsers/parse-potree-hierarchy-chunk.js.map +1 -0
- package/dist/potree-bin-loader.js +1 -0
- package/dist/potree-bin-loader.js.map +1 -0
- package/dist/potree-hierarchy-chunk-loader.js +2 -1
- package/dist/potree-hierarchy-chunk-loader.js.map +1 -0
- package/dist/potree-loader.js +2 -1
- package/dist/potree-loader.js.map +1 -0
- package/dist/potree-source.js +1 -0
- package/dist/potree-source.js.map +1 -0
- package/dist/types/potree-metadata.js +1 -0
- package/dist/types/potree-metadata.js.map +1 -0
- package/dist/utils/bounding-box-utils.d.ts +9 -0
- package/dist/utils/bounding-box-utils.d.ts.map +1 -0
- package/dist/utils/bounding-box-utils.js +23 -0
- package/dist/utils/bounding-box-utils.js.map +1 -0
- package/dist/utils/parse-version.js +1 -0
- package/dist/utils/parse-version.js.map +1 -0
- package/dist/utils/projection-utils.d.ts +8 -0
- package/dist/utils/projection-utils.d.ts.map +1 -0
- package/dist/utils/projection-utils.js +16 -0
- package/dist/utils/projection-utils.js.map +1 -0
- package/package.json +7 -6
- package/src/index.ts +2 -0
- package/src/lib/potree-node-source.ts +110 -15
- package/src/parsers/parse-potree-hierarchy-chunk.ts +12 -0
- package/src/utils/bounding-box-utils.ts +27 -0
- package/src/utils/projection-utils.ts +16 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"potree-node-source.js","sourceRoot":"","sources":["../../src/lib/potree-node-source.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parse-potree-bin.js","sourceRoot":"","sources":["../../src/parsers/parse-potree-bin.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,cAAc,CAC5B,WAAwB,EACxB,UAAkB,EAClB,OAAgB,EAChB,KAAU;IAEV,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -9,6 +9,8 @@ export type POTreeTileHeader = {
|
|
|
9
9
|
};
|
|
10
10
|
/** Hierarchical potree node structure */
|
|
11
11
|
export type POTreeNode = {
|
|
12
|
+
id: string;
|
|
13
|
+
type: 'pointcloud';
|
|
12
14
|
/** Index data */
|
|
13
15
|
header: POTreeTileHeader;
|
|
14
16
|
/** Human readable name */
|
|
@@ -25,6 +27,14 @@ export type POTreeNode = {
|
|
|
25
27
|
children: POTreeNode[];
|
|
26
28
|
/** All children including unavailable */
|
|
27
29
|
childrenByIndex: POTreeNode[];
|
|
30
|
+
/** Is tile selected for rendering */
|
|
31
|
+
selected: boolean;
|
|
32
|
+
/** Points content data */
|
|
33
|
+
content?: unknown;
|
|
34
|
+
/** Is content loading */
|
|
35
|
+
isContentLoading?: boolean;
|
|
36
|
+
/** Viewport Ids */
|
|
37
|
+
viewportIds: unknown[];
|
|
28
38
|
};
|
|
29
39
|
/**
|
|
30
40
|
* load hierarchy
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse-potree-hierarchy-chunk.d.ts","sourceRoot":"","sources":["../../src/parsers/parse-potree-hierarchy-chunk.ts"],"names":[],"mappings":"AAwDA,oCAAoC;AACpC,MAAM,MAAM,gBAAgB,GAAG;IAC7B,4BAA4B;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,0BAA0B;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,8BAA8B;IAC9B,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,yCAAyC;AACzC,MAAM,MAAM,UAAU,GAAG;IACvB,iBAAiB;IACjB,MAAM,EAAE,gBAAgB,CAAC;IACzB,0BAA0B;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,uBAAuB;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,+BAA+B;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,mBAAmB;IACnB,WAAW,EAAE,OAAO,CAAC;IACrB,2BAA2B;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,yBAAyB;IACzB,QAAQ,EAAE,UAAU,EAAE,CAAC;IACvB,yCAAyC;IACzC,eAAe,EAAE,UAAU,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"parse-potree-hierarchy-chunk.d.ts","sourceRoot":"","sources":["../../src/parsers/parse-potree-hierarchy-chunk.ts"],"names":[],"mappings":"AAwDA,oCAAoC;AACpC,MAAM,MAAM,gBAAgB,GAAG;IAC7B,4BAA4B;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,0BAA0B;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,8BAA8B;IAC9B,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,yCAAyC;AACzC,MAAM,MAAM,UAAU,GAAG;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,YAAY,CAAC;IACnB,iBAAiB;IACjB,MAAM,EAAE,gBAAgB,CAAC;IACzB,0BAA0B;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,uBAAuB;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,+BAA+B;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,mBAAmB;IACnB,WAAW,EAAE,OAAO,CAAC;IACrB,2BAA2B;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,yBAAyB;IACzB,QAAQ,EAAE,UAAU,EAAE,CAAC;IACvB,yCAAyC;IACzC,eAAe,EAAE,UAAU,EAAE,CAAC;IAC9B,qCAAqC;IACrC,QAAQ,EAAE,OAAO,CAAC;IAClB,0BAA0B;IAC1B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,yBAAyB;IACzB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,mBAAmB;IACnB,WAAW,EAAE,OAAO,EAAE,CAAC;CACxB,CAAC;AAEF;;;;IAII;AACJ,wBAAgB,yBAAyB,CAAC,WAAW,EAAE,WAAW,GAAG,UAAU,CAG9E"}
|
|
@@ -79,6 +79,8 @@ function buildHierarchy(flatNodes, options = {}) {
|
|
|
79
79
|
node.children = [];
|
|
80
80
|
node.childrenByIndex = new Array(8).fill(null);
|
|
81
81
|
node.spacing = (options?.spacing || 0) / Math.pow(2, level);
|
|
82
|
+
node.type = 'pointcloud';
|
|
83
|
+
node.id = node.name;
|
|
82
84
|
// tileHeader.boundingVolume = Utils.createChildAABB(parentNode.boundingBox, index);
|
|
83
85
|
if (parentNode) {
|
|
84
86
|
parentNode.children.push(node);
|
|
@@ -90,3 +92,4 @@ function buildHierarchy(flatNodes, options = {}) {
|
|
|
90
92
|
// First node is the root
|
|
91
93
|
return topNode;
|
|
92
94
|
}
|
|
95
|
+
//# sourceMappingURL=parse-potree-hierarchy-chunk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parse-potree-hierarchy-chunk.js","sourceRoot":"","sources":["../../src/parsers/parse-potree-hierarchy-chunk.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"potree-bin-loader.js","sourceRoot":"","sources":["../src/potree-bin-loader.ts"],"names":[],"mappings":"AAAA,aAAa;AACb,+BAA+B;AAC/B,gCAAgC;AAGhC,OAAO,EAAC,cAAc,EAAC,sCAAmC;AAE1D;;KAEK;AACL,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,QAAQ,EAAE,IAAqB;IAC/B,SAAS,EAAE,IAAa;IAExB,IAAI,EAAE,gCAAgC;IACtC,EAAE,EAAE,QAAQ;IACZ,UAAU,EAAE,CAAC,KAAK,CAAC;IACnB,SAAS,EAAE,CAAC,0BAA0B,CAAC;IACvC,2EAA2E;IAC3E,iBAAiB;IACjB,SAAS;IACT,MAAM,EAAE,IAAI;IACZ,OAAO,EAAE,EAAE;IACX,aAAa;CACgD,CAAC;AAEhE,SAAS,SAAS,CAAC,WAAwB,EAAE,OAAuB;IAClE,MAAM,KAAK,GAAG,EAAE,CAAC;IACjB,MAAM,UAAU,GAAG,CAAC,CAAC;IACrB,cAAc,CAAC,WAAW,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;IACxD,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
import { parsePotreeHierarchyChunk } from "./parsers/parse-potree-hierarchy-chunk.js";
|
|
5
5
|
// __VERSION__ is injected by babel-plugin-version-inline
|
|
6
6
|
// @ts-ignore TS2304: Cannot find name '__VERSION__'.
|
|
7
|
-
const VERSION = typeof "4.4.0-alpha.
|
|
7
|
+
const VERSION = typeof "4.4.0-alpha.9" !== 'undefined' ? "4.4.0-alpha.9" : 'latest';
|
|
8
8
|
/** Potree hierarchy chunk loader */
|
|
9
9
|
export const PotreeHierarchyChunkLoader = {
|
|
10
10
|
dataType: null,
|
|
@@ -24,3 +24,4 @@ export const PotreeHierarchyChunkLoader = {
|
|
|
24
24
|
},
|
|
25
25
|
binary: true
|
|
26
26
|
};
|
|
27
|
+
//# sourceMappingURL=potree-hierarchy-chunk-loader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"potree-hierarchy-chunk-loader.js","sourceRoot":"","sources":["../src/potree-hierarchy-chunk-loader.ts"],"names":[],"mappings":"AAAA,aAAa;AACb,+BAA+B;AAC/B,gCAAgC;AAKhC,OAAO,EAAC,yBAAyB,EAAC,kDAA+C;AAEjF,yDAAyD;AACzD,qDAAqD;AACrD,MAAM,OAAO,GAAG,sBAAkB,KAAK,WAAW,CAAC,CAAC,iBAAa,CAAC,CAAC,QAAQ,CAAC;AAE5E,oCAAoC;AACpC,MAAM,CAAC,MAAM,0BAA0B,GAAG;IACxC,QAAQ,EAAE,IAA6B;IACvC,SAAS,EAAE,IAAa;IAExB,IAAI,EAAE,wBAAwB;IAC9B,EAAE,EAAE,YAAY;IAChB,MAAM,EAAE,QAAQ;IAChB,OAAO,EAAE,OAAO;IAChB,UAAU,EAAE,CAAC,KAAK,CAAC;IACnB,SAAS,EAAE,CAAC,0BAA0B,CAAC;IACvC,8EAA8E;IAC9E,iBAAiB;IACjB,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE,CAAC,yBAAyB,CAAC,WAAW,CAAC;IAC7E,SAAS,EAAE,CAAC,WAAW,EAAE,OAAO,EAAE,EAAE,CAAC,yBAAyB,CAAC,WAAW,CAAC;IAC3E,OAAO,EAAE;QACP,MAAM,EAAE,EAAE;KACX;IACD,MAAM,EAAE,IAAI;CAC+D,CAAC"}
|
package/dist/potree-loader.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
// Copyright vis.gl contributors
|
|
4
4
|
// __VERSION__ is injected by babel-plugin-version-inline
|
|
5
5
|
// @ts-ignore TS2304: Cannot find name '__VERSION__'.
|
|
6
|
-
const VERSION = typeof "4.4.0-alpha.
|
|
6
|
+
const VERSION = typeof "4.4.0-alpha.9" !== 'undefined' ? "4.4.0-alpha.9" : 'latest';
|
|
7
7
|
/** Potree loader */
|
|
8
8
|
export const PotreeLoader = {
|
|
9
9
|
dataType: null,
|
|
@@ -21,3 +21,4 @@ export const PotreeLoader = {
|
|
|
21
21
|
potree: {}
|
|
22
22
|
}
|
|
23
23
|
};
|
|
24
|
+
//# sourceMappingURL=potree-loader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"potree-loader.js","sourceRoot":"","sources":["../src/potree-loader.ts"],"names":[],"mappings":"AAAA,aAAa;AACb,+BAA+B;AAC/B,gCAAgC;AAIhC,yDAAyD;AACzD,qDAAqD;AACrD,MAAM,OAAO,GAAG,sBAAkB,KAAK,WAAW,CAAC,CAAC,iBAAa,CAAC,CAAC,QAAQ,CAAC;AAM5E,oBAAoB;AACpB,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,QAAQ,EAAE,IAAsB;IAChC,SAAS,EAAE,IAAa;IAExB,IAAI,EAAE,iBAAiB;IACvB,EAAE,EAAE,QAAQ;IACZ,MAAM,EAAE,QAAQ;IAChB,OAAO,EAAE,OAAO;IAChB,UAAU,EAAE,CAAC,IAAI,CAAC;IAClB,SAAS,EAAE,CAAC,kBAAkB,CAAC;IAC/B,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC;IAClD,KAAK,EAAE,CAAC,IAAiB,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACxE,aAAa,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;IACzC,OAAO,EAAE;QACP,MAAM,EAAE,EAAE;KACX;CACmE,CAAC"}
|
package/dist/potree-source.js
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"potree-source.js","sourceRoot":"","sources":["../src/potree-source.ts"],"names":[],"mappings":"AAAA,aAAa;AACb,+BAA+B;AAC/B,oCAAoC;AAGpC,OAAO,EAAC,iBAAiB,EAAC,oCAAiC;AAE3D,MAAM,OAAO,GAAG,KAAK,CAAC;AAMtB;;GAEG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,IAAI,EAAE,QAAQ;IACd,EAAE,EAAE,QAAQ;IACZ,MAAM,EAAE,QAAQ;IAChB,OAAO,EAAE,OAAO;IAChB,UAAU,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC;IACjC,SAAS,EAAE,CAAC,0BAA0B,CAAC;IACvC,IAAI,EAAE,QAAQ;IACd,OAAO,EAAE,IAAI;IACb,QAAQ,EAAE,IAAI;IAEd,cAAc,EAAE;QACd,MAAM,EAAE,EAAE;KACX;IAED,OAAO,EAAE,CAAC,GAAW,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC;IAC7C,gBAAgB,EAAE,CAAC,GAAW,EAAE,OAA4B,EAAE,EAAE,CAC9D,IAAI,iBAAiB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,sCAAsC;CAChC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"potree-metadata.js","sourceRoot":"","sources":["../../src/types/potree-metadata.ts"],"names":[],"mappings":"AAAA,aAAa;AACb,+BAA+B;AAC/B,oCAAoC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { Proj4Projection } from '@math.gl/proj4';
|
|
2
|
+
/**
|
|
3
|
+
* Calculate cartographic origin from Potree bounding box
|
|
4
|
+
* @param projection - Proj4Projection instance to reproject coordinates
|
|
5
|
+
* @param boundingBox - bounding box data
|
|
6
|
+
* @returns - origin of boudngin box in [lng, lat, z] mode
|
|
7
|
+
*/
|
|
8
|
+
export declare const getCartographicOriginFromBoundingBox: (projection: Proj4Projection | null, boundingBox?: [number[], number[]]) => number[];
|
|
9
|
+
//# sourceMappingURL=bounding-box-utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bounding-box-utils.d.ts","sourceRoot":"","sources":["../../src/utils/bounding-box-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,EAAC,MAAM,gBAAgB,CAAC;AAE/C;;;;;GAKG;AACH,eAAO,MAAM,oCAAoC,eACnC,eAAe,GAAG,IAAI,gBACpB,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,KACjC,MAAM,EAeR,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Calculate cartographic origin from Potree bounding box
|
|
3
|
+
* @param projection - Proj4Projection instance to reproject coordinates
|
|
4
|
+
* @param boundingBox - bounding box data
|
|
5
|
+
* @returns - origin of boudngin box in [lng, lat, z] mode
|
|
6
|
+
*/
|
|
7
|
+
export const getCartographicOriginFromBoundingBox = (projection, boundingBox) => {
|
|
8
|
+
if (!boundingBox) {
|
|
9
|
+
return [0, 0, 0];
|
|
10
|
+
}
|
|
11
|
+
const [minXOriginal, minYOriginal, minZ] = boundingBox[0];
|
|
12
|
+
const [maxXOriginal, maxYOriginal, maxZ] = boundingBox[1];
|
|
13
|
+
let minX = minXOriginal;
|
|
14
|
+
let minY = minYOriginal;
|
|
15
|
+
let maxX = maxXOriginal;
|
|
16
|
+
let maxY = maxYOriginal;
|
|
17
|
+
if (projection) {
|
|
18
|
+
[minX, minY] = projection.project([minX, minY]);
|
|
19
|
+
[maxX, maxY] = projection.project([maxX, maxY]);
|
|
20
|
+
}
|
|
21
|
+
return [minX + (maxX - minX) / 2, minY + (maxY - minY) / 2, minZ + (maxZ - minZ) / 2];
|
|
22
|
+
};
|
|
23
|
+
//# sourceMappingURL=bounding-box-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bounding-box-utils.js","sourceRoot":"","sources":["../../src/utils/bounding-box-utils.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,MAAM,CAAC,MAAM,oCAAoC,GAAG,CAClD,UAAkC,EAClC,WAAkC,EACxB,EAAE;IACZ,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACnB,CAAC;IACD,MAAM,CAAC,YAAY,EAAE,YAAY,EAAE,IAAI,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;IAC1D,MAAM,CAAC,YAAY,EAAE,YAAY,EAAE,IAAI,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;IAC1D,IAAI,IAAI,GAAG,YAAY,CAAC;IACxB,IAAI,IAAI,GAAG,YAAY,CAAC;IACxB,IAAI,IAAI,GAAG,YAAY,CAAC;IACxB,IAAI,IAAI,GAAG,YAAY,CAAC;IACxB,IAAI,UAAU,EAAE,CAAC;QACf,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;QAChD,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;IAClD,CAAC;IACD,OAAO,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AACxF,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parse-version.js","sourceRoot":"","sources":["../../src/utils/parse-version.ts"],"names":[],"mappings":"AAAA,aAAa;AACb,+BAA+B;AAC/B,oCAAoC;AAEpC,MAAM,UAAU,YAAY,CAAC,OAAe;IAC1C,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC7C,OAAO,EAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAC,CAAC;AAC5C,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Proj4Projection } from '@math.gl/proj4';
|
|
2
|
+
/**
|
|
3
|
+
* Create projection from proj4 definition to WGS84
|
|
4
|
+
* @param projectionData - proj4 definition
|
|
5
|
+
* @returns projection instance
|
|
6
|
+
*/
|
|
7
|
+
export declare const createProjection: (projectionData?: string) => Proj4Projection | null;
|
|
8
|
+
//# sourceMappingURL=projection-utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"projection-utils.d.ts","sourceRoot":"","sources":["../../src/utils/projection-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,EAAC,MAAM,gBAAgB,CAAC;AAE/C;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,oBAAqB,MAAM,KAAG,eAAe,GAAG,IAQ5E,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { Proj4Projection } from '@math.gl/proj4';
|
|
2
|
+
/**
|
|
3
|
+
* Create projection from proj4 definition to WGS84
|
|
4
|
+
* @param projectionData - proj4 definition
|
|
5
|
+
* @returns projection instance
|
|
6
|
+
*/
|
|
7
|
+
export const createProjection = (projectionData) => {
|
|
8
|
+
if (!projectionData) {
|
|
9
|
+
return null;
|
|
10
|
+
}
|
|
11
|
+
return new Proj4Projection({
|
|
12
|
+
from: projectionData,
|
|
13
|
+
to: 'WGS84'
|
|
14
|
+
});
|
|
15
|
+
};
|
|
16
|
+
//# sourceMappingURL=projection-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"projection-utils.js","sourceRoot":"","sources":["../../src/utils/projection-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,EAAC,MAAM,gBAAgB,CAAC;AAE/C;;;;GAIG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,cAAuB,EAA0B,EAAE;IAClF,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,IAAI,eAAe,CAAC;QACzB,IAAI,EAAE,cAAc;QACpB,EAAE,EAAE,OAAO;KACZ,CAAC,CAAC;AACL,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@loaders.gl/potree",
|
|
3
|
-
"version": "4.4.0-alpha.
|
|
3
|
+
"version": "4.4.0-alpha.9",
|
|
4
4
|
"description": "potree loaders for large point clouds.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -44,13 +44,14 @@
|
|
|
44
44
|
"build-bundle-dev": "ocular-bundle ./bundle.ts --env=dev --output=dist/dist.dev.js"
|
|
45
45
|
},
|
|
46
46
|
"dependencies": {
|
|
47
|
-
"@loaders.gl/las": "4.4.0-alpha.
|
|
48
|
-
"@loaders.gl/math": "4.4.0-alpha.
|
|
49
|
-
"@loaders.gl/schema": "4.4.0-alpha.
|
|
50
|
-
"@math.gl/core": "^4.1.0"
|
|
47
|
+
"@loaders.gl/las": "4.4.0-alpha.9",
|
|
48
|
+
"@loaders.gl/math": "4.4.0-alpha.9",
|
|
49
|
+
"@loaders.gl/schema": "4.4.0-alpha.9",
|
|
50
|
+
"@math.gl/core": "^4.1.0",
|
|
51
|
+
"@math.gl/proj4": "^4.1.0"
|
|
51
52
|
},
|
|
52
53
|
"peerDependencies": {
|
|
53
54
|
"@loaders.gl/core": "4.4.0-alpha.1"
|
|
54
55
|
},
|
|
55
|
-
"gitHead": "
|
|
56
|
+
"gitHead": "e9e6710379718c7663e97eba868c76e15de4cb84"
|
|
56
57
|
}
|
package/src/index.ts
CHANGED
|
@@ -2,3 +2,5 @@ export {PotreeLoader} from './potree-loader';
|
|
|
2
2
|
export {PotreeHierarchyChunkLoader} from './potree-hierarchy-chunk-loader';
|
|
3
3
|
export {PotreeBinLoader} from './potree-bin-loader';
|
|
4
4
|
export {PotreeSource} from './potree-source';
|
|
5
|
+
|
|
6
|
+
export {type POTreeNode} from './parsers/parse-potree-hierarchy-chunk';
|
|
@@ -2,16 +2,53 @@
|
|
|
2
2
|
// SPDX-License-Identifier: MIT
|
|
3
3
|
// Copyright (c) vis.gl contributors
|
|
4
4
|
|
|
5
|
+
import type {PotreeSourceOptions} from '../potree-source';
|
|
5
6
|
import {load} from '@loaders.gl/core';
|
|
6
7
|
import {Mesh} from '@loaders.gl/schema';
|
|
7
8
|
import {DataSource, resolvePath} from '@loaders.gl/loader-utils';
|
|
8
9
|
import {LASLoader} from '@loaders.gl/las';
|
|
9
|
-
import {PotreeMetadata} from '../types/potree-metadata';
|
|
10
|
+
import {PotreeBoundingBox, PotreeMetadata} from '../types/potree-metadata';
|
|
10
11
|
import {POTreeNode} from '../parsers/parse-potree-hierarchy-chunk';
|
|
11
12
|
import {PotreeHierarchyChunkLoader} from '../potree-hierarchy-chunk-loader';
|
|
12
13
|
import {PotreeLoader} from '../potree-loader';
|
|
13
14
|
import {parseVersion} from '../utils/parse-version';
|
|
14
|
-
import
|
|
15
|
+
import {Proj4Projection} from '@math.gl/proj4';
|
|
16
|
+
import {LASMesh} from '@loaders.gl/las/src/lib/las-types';
|
|
17
|
+
import {createProjection} from '../utils/projection-utils';
|
|
18
|
+
import {getCartographicOriginFromBoundingBox} from '../utils/bounding-box-utils';
|
|
19
|
+
|
|
20
|
+
// https://github.com/visgl/deck.gl/blob/9548f43cba2234a1f4877b6b17f6c88eb35b2e08/modules/core/src/lib/constants.js#L27
|
|
21
|
+
// Describes the format of positions
|
|
22
|
+
export enum COORDINATE_SYSTEM {
|
|
23
|
+
/**
|
|
24
|
+
* `LNGLAT` if rendering into a geospatial viewport, `CARTESIAN` otherwise
|
|
25
|
+
*/
|
|
26
|
+
DEFAULT = -1,
|
|
27
|
+
/**
|
|
28
|
+
* Positions are interpreted as [lng, lat, elevation]
|
|
29
|
+
* lng lat are degrees, elevation is meters. distances as meters.
|
|
30
|
+
*/
|
|
31
|
+
LNGLAT = 1,
|
|
32
|
+
/**
|
|
33
|
+
* Positions are interpreted as meter offsets, distances as meters
|
|
34
|
+
*/
|
|
35
|
+
METER_OFFSETS = 2,
|
|
36
|
+
/**
|
|
37
|
+
* Positions are interpreted as lng lat offsets: [deltaLng, deltaLat, elevation]
|
|
38
|
+
* deltaLng, deltaLat are delta degrees, elevation is meters.
|
|
39
|
+
* distances as meters.
|
|
40
|
+
*/
|
|
41
|
+
LNGLAT_OFFSETS = 3,
|
|
42
|
+
/**
|
|
43
|
+
* Non-geospatial
|
|
44
|
+
*/
|
|
45
|
+
CARTESIAN = 0
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
export interface PotreeNodeMesh extends LASMesh {
|
|
49
|
+
cartographicOrigin: number[];
|
|
50
|
+
coordinateSystem: number;
|
|
51
|
+
}
|
|
15
52
|
|
|
16
53
|
/**
|
|
17
54
|
* A Potree data source
|
|
@@ -28,6 +65,10 @@ export class PotreeNodesSource extends DataSource<string, PotreeSourceOptions> {
|
|
|
28
65
|
root: POTreeNode | null = null;
|
|
29
66
|
/** Is data source ready to use after initial loading */
|
|
30
67
|
isReady = false;
|
|
68
|
+
/** local CRS to WGS84 projection */
|
|
69
|
+
projection: Proj4Projection | null = null;
|
|
70
|
+
/** The data set minimum bounding box */
|
|
71
|
+
boundingBox?: PotreeBoundingBox;
|
|
31
72
|
|
|
32
73
|
private initPromise: Promise<void> | null = null;
|
|
33
74
|
|
|
@@ -51,6 +92,9 @@ export class PotreeNodesSource extends DataSource<string, PotreeSourceOptions> {
|
|
|
51
92
|
return;
|
|
52
93
|
}
|
|
53
94
|
this.metadata = await load(`${this.baseUrl}/cloud.js`, PotreeLoader);
|
|
95
|
+
this.projection = createProjection(this.metadata?.projection);
|
|
96
|
+
this.parseBoundingVolume();
|
|
97
|
+
|
|
54
98
|
await this.loadHierarchy();
|
|
55
99
|
this.isReady = true;
|
|
56
100
|
}
|
|
@@ -84,36 +128,61 @@ export class PotreeNodesSource extends DataSource<string, PotreeSourceOptions> {
|
|
|
84
128
|
|
|
85
129
|
/**
|
|
86
130
|
* Load octree node content
|
|
87
|
-
* @param
|
|
131
|
+
* @param nodeName name of a node, string of numbers in range 0..7
|
|
88
132
|
* @return node content geometry or null if the node doesn't exist
|
|
89
133
|
*/
|
|
90
|
-
async loadNodeContent(
|
|
134
|
+
async loadNodeContent(nodeName: string): Promise<Mesh | null> {
|
|
91
135
|
await this.initPromise;
|
|
92
136
|
|
|
93
137
|
if (!this.isSupported()) {
|
|
94
138
|
return null;
|
|
95
139
|
}
|
|
96
140
|
|
|
97
|
-
const isAvailable = await this.isNodeAvailable(
|
|
141
|
+
const isAvailable = await this.isNodeAvailable(nodeName);
|
|
98
142
|
if (isAvailable) {
|
|
99
|
-
|
|
100
|
-
`${this.baseUrl}/${this.metadata?.octreeDir}/r/r${
|
|
101
|
-
''
|
|
102
|
-
)}.${this.getContentExtension()}`,
|
|
143
|
+
const result: PotreeNodeMesh = (await load(
|
|
144
|
+
`${this.baseUrl}/${this.metadata?.octreeDir}/r/r${nodeName}.${this.getContentExtension()}`,
|
|
103
145
|
LASLoader
|
|
104
|
-
);
|
|
146
|
+
)) as PotreeNodeMesh;
|
|
147
|
+
|
|
148
|
+
if (result) {
|
|
149
|
+
result.cartographicOrigin = getCartographicOriginFromBoundingBox(
|
|
150
|
+
this.projection,
|
|
151
|
+
result.header?.boundingBox
|
|
152
|
+
);
|
|
153
|
+
const position = result.attributes.POSITION.value as Float32Array;
|
|
154
|
+
for (let i = 0; i < (result.header?.vertexCount ?? 0); i++) {
|
|
155
|
+
let vertex: Float32Array | number[] = position.slice(i * 3, i * 3 + 2);
|
|
156
|
+
if (this.projection) {
|
|
157
|
+
vertex = this.projection.project(Array.from(vertex));
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
const offsets = [
|
|
161
|
+
vertex[0] - result.cartographicOrigin[0],
|
|
162
|
+
vertex[1] - result.cartographicOrigin[1],
|
|
163
|
+
position[i * 3 + 2] - result.cartographicOrigin[2]
|
|
164
|
+
];
|
|
165
|
+
position.set(offsets, i * 3);
|
|
166
|
+
}
|
|
167
|
+
result.attributes.positions = result.attributes.POSITION;
|
|
168
|
+
result.attributes.colors = result.attributes.COLOR_0;
|
|
169
|
+
result.attributes.normals = result.attributes.NORMAL;
|
|
170
|
+
|
|
171
|
+
result.coordinateSystem = COORDINATE_SYSTEM.LNGLAT_OFFSETS;
|
|
172
|
+
return result;
|
|
173
|
+
}
|
|
105
174
|
}
|
|
106
175
|
return null;
|
|
107
176
|
}
|
|
108
177
|
|
|
109
178
|
/**
|
|
110
179
|
* Check if a node exists in the octree
|
|
111
|
-
* @param
|
|
180
|
+
* @param nodeName name of a node, string of numbers in range 0..7
|
|
112
181
|
* @returns true - the node does exist, false - the nodes doesn't exist
|
|
113
182
|
*/
|
|
114
|
-
async isNodeAvailable(
|
|
183
|
+
async isNodeAvailable(nodeName: string): Promise<boolean> {
|
|
115
184
|
if (this.metadata?.hierarchy) {
|
|
116
|
-
return this.metadata.hierarchy.findIndex((item) => item[0] === `r${
|
|
185
|
+
return this.metadata.hierarchy.findIndex((item) => item[0] === `r${nodeName}`) !== -1;
|
|
117
186
|
}
|
|
118
187
|
|
|
119
188
|
if (!this.root) {
|
|
@@ -122,8 +191,8 @@ export class PotreeNodesSource extends DataSource<string, PotreeSourceOptions> {
|
|
|
122
191
|
let currentParent = this.root;
|
|
123
192
|
let name = '';
|
|
124
193
|
let result = true;
|
|
125
|
-
for (const
|
|
126
|
-
const newName = `${name}${
|
|
194
|
+
for (const char of nodeName) {
|
|
195
|
+
const newName = `${name}${char}`;
|
|
127
196
|
const node = currentParent.children.find((child) => child.name === newName);
|
|
128
197
|
if (node) {
|
|
129
198
|
currentParent = node;
|
|
@@ -159,4 +228,30 @@ export class PotreeNodesSource extends DataSource<string, PotreeSourceOptions> {
|
|
|
159
228
|
this.baseUrl = this.baseUrl.substring(0, -1);
|
|
160
229
|
}
|
|
161
230
|
}
|
|
231
|
+
|
|
232
|
+
private parseBoundingVolume(): void {
|
|
233
|
+
if (this.metadata?.projection && this.metadata.tightBoundingBox) {
|
|
234
|
+
const projection = new Proj4Projection({
|
|
235
|
+
from: this.metadata.projection,
|
|
236
|
+
to: 'WGS84'
|
|
237
|
+
});
|
|
238
|
+
|
|
239
|
+
const {lx, ly, ux, uy} = this.metadata.tightBoundingBox;
|
|
240
|
+
const lCoord = [lx, ly];
|
|
241
|
+
const wgs84LCood = projection.project(lCoord);
|
|
242
|
+
|
|
243
|
+
const uCoord = [ux, uy];
|
|
244
|
+
const wgs84UCood = projection.project(uCoord);
|
|
245
|
+
|
|
246
|
+
this.boundingBox = {
|
|
247
|
+
...this.metadata.tightBoundingBox,
|
|
248
|
+
lx: wgs84LCood[0],
|
|
249
|
+
ly: wgs84LCood[1],
|
|
250
|
+
ux: wgs84UCood[0],
|
|
251
|
+
uy: wgs84UCood[1]
|
|
252
|
+
};
|
|
253
|
+
} else {
|
|
254
|
+
this.boundingBox = this.metadata?.tightBoundingBox;
|
|
255
|
+
}
|
|
256
|
+
}
|
|
162
257
|
}
|
|
@@ -66,6 +66,8 @@ export type POTreeTileHeader = {
|
|
|
66
66
|
|
|
67
67
|
/** Hierarchical potree node structure */
|
|
68
68
|
export type POTreeNode = {
|
|
69
|
+
id: string;
|
|
70
|
+
type: 'pointcloud';
|
|
69
71
|
/** Index data */
|
|
70
72
|
header: POTreeTileHeader;
|
|
71
73
|
/** Human readable name */
|
|
@@ -82,6 +84,14 @@ export type POTreeNode = {
|
|
|
82
84
|
children: POTreeNode[];
|
|
83
85
|
/** All children including unavailable */
|
|
84
86
|
childrenByIndex: POTreeNode[];
|
|
87
|
+
/** Is tile selected for rendering */
|
|
88
|
+
selected: boolean;
|
|
89
|
+
/** Points content data */
|
|
90
|
+
content?: unknown;
|
|
91
|
+
/** Is content loading */
|
|
92
|
+
isContentLoading?: boolean;
|
|
93
|
+
/** Viewport Ids */
|
|
94
|
+
viewportIds: unknown[];
|
|
85
95
|
};
|
|
86
96
|
|
|
87
97
|
/**
|
|
@@ -178,6 +188,8 @@ function buildHierarchy(flatNodes: POTreeNode[], options: {spacing?: number} = {
|
|
|
178
188
|
node.children = [];
|
|
179
189
|
node.childrenByIndex = new Array(8).fill(null);
|
|
180
190
|
node.spacing = (options?.spacing || 0) / Math.pow(2, level);
|
|
191
|
+
node.type = 'pointcloud';
|
|
192
|
+
node.id = node.name;
|
|
181
193
|
// tileHeader.boundingVolume = Utils.createChildAABB(parentNode.boundingBox, index);
|
|
182
194
|
|
|
183
195
|
if (parentNode) {
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import {Proj4Projection} from '@math.gl/proj4';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Calculate cartographic origin from Potree bounding box
|
|
5
|
+
* @param projection - Proj4Projection instance to reproject coordinates
|
|
6
|
+
* @param boundingBox - bounding box data
|
|
7
|
+
* @returns - origin of boudngin box in [lng, lat, z] mode
|
|
8
|
+
*/
|
|
9
|
+
export const getCartographicOriginFromBoundingBox = (
|
|
10
|
+
projection: Proj4Projection | null,
|
|
11
|
+
boundingBox?: [number[], number[]]
|
|
12
|
+
): number[] => {
|
|
13
|
+
if (!boundingBox) {
|
|
14
|
+
return [0, 0, 0];
|
|
15
|
+
}
|
|
16
|
+
const [minXOriginal, minYOriginal, minZ] = boundingBox[0];
|
|
17
|
+
const [maxXOriginal, maxYOriginal, maxZ] = boundingBox[1];
|
|
18
|
+
let minX = minXOriginal;
|
|
19
|
+
let minY = minYOriginal;
|
|
20
|
+
let maxX = maxXOriginal;
|
|
21
|
+
let maxY = maxYOriginal;
|
|
22
|
+
if (projection) {
|
|
23
|
+
[minX, minY] = projection.project([minX, minY]);
|
|
24
|
+
[maxX, maxY] = projection.project([maxX, maxY]);
|
|
25
|
+
}
|
|
26
|
+
return [minX + (maxX - minX) / 2, minY + (maxY - minY) / 2, minZ + (maxZ - minZ) / 2];
|
|
27
|
+
};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import {Proj4Projection} from '@math.gl/proj4';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Create projection from proj4 definition to WGS84
|
|
5
|
+
* @param projectionData - proj4 definition
|
|
6
|
+
* @returns projection instance
|
|
7
|
+
*/
|
|
8
|
+
export const createProjection = (projectionData?: string): Proj4Projection | null => {
|
|
9
|
+
if (!projectionData) {
|
|
10
|
+
return null;
|
|
11
|
+
}
|
|
12
|
+
return new Proj4Projection({
|
|
13
|
+
from: projectionData,
|
|
14
|
+
to: 'WGS84'
|
|
15
|
+
});
|
|
16
|
+
};
|