@loaders.gl/3d-tiles 3.1.0-alpha.5 → 3.1.0-beta.1
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/bundle.d.ts.map +1 -0
- package/dist/bundle.js +9973 -0
- package/dist/cesium-ion-loader.d.ts +1 -0
- package/dist/cesium-ion-loader.d.ts.map +1 -0
- package/dist/cesium-ion-loader.js +40 -0
- package/dist/es5/index.js +8 -0
- package/dist/es5/index.js.map +1 -1
- package/dist/es5/lib/classes/helpers/tile-3d-accessor-utils.js.map +1 -1
- package/dist/es5/lib/classes/tile-3d-batch-table-hierarchy.js.map +1 -1
- package/dist/es5/lib/classes/tile-3d-batch-table.js +12 -1
- package/dist/es5/lib/classes/tile-3d-batch-table.js.map +1 -1
- package/dist/es5/lib/classes/tile-3d-feature-table.js +8 -2
- package/dist/es5/lib/classes/tile-3d-feature-table.js.map +1 -1
- package/dist/es5/lib/constants.js.map +1 -1
- package/dist/es5/lib/encoders/encode-3d-tile-batched-model.js.map +1 -1
- package/dist/es5/lib/encoders/encode-3d-tile-composite.js.map +1 -1
- package/dist/es5/lib/encoders/encode-3d-tile-instanced-model.js.map +1 -1
- package/dist/es5/lib/encoders/encode-3d-tile-point-cloud.js.map +1 -1
- package/dist/es5/lib/encoders/encode-3d-tile.js.map +1 -1
- package/dist/es5/lib/encoders/helpers/encode-3d-tile-header.js.map +1 -1
- package/dist/es5/lib/parsers/helpers/normalize-3d-tile-colors.js.map +1 -1
- package/dist/es5/lib/parsers/helpers/normalize-3d-tile-normals.js.map +1 -1
- package/dist/es5/lib/parsers/helpers/normalize-3d-tile-positions.js.map +1 -1
- package/dist/es5/lib/parsers/helpers/parse-3d-tile-gltf-view.js +1 -1
- package/dist/es5/lib/parsers/helpers/parse-3d-tile-gltf-view.js.map +1 -1
- package/dist/es5/lib/parsers/helpers/parse-3d-tile-header.js.map +1 -1
- package/dist/es5/lib/parsers/helpers/parse-3d-tile-subtree.js +73 -0
- package/dist/es5/lib/parsers/helpers/parse-3d-tile-subtree.js.map +1 -0
- package/dist/es5/lib/parsers/helpers/parse-3d-tile-tables.js +1 -1
- package/dist/es5/lib/parsers/helpers/parse-3d-tile-tables.js.map +1 -1
- package/dist/es5/lib/parsers/helpers/parse-utils.js.map +1 -1
- package/dist/es5/lib/parsers/parse-3d-tile-batched-model.js.map +1 -1
- package/dist/es5/lib/parsers/parse-3d-tile-composite.js.map +1 -1
- package/dist/es5/lib/parsers/parse-3d-tile-header.js.map +1 -1
- package/dist/es5/lib/parsers/parse-3d-tile-instanced-model.js.map +1 -1
- package/dist/es5/lib/parsers/parse-3d-tile-point-cloud.js +1 -1
- package/dist/es5/lib/parsers/parse-3d-tile-point-cloud.js.map +1 -1
- package/dist/es5/lib/parsers/parse-3d-tile.js.map +1 -1
- package/dist/es5/lib/utils/version.js +1 -1
- package/dist/es5/lib/utils/version.js.map +1 -1
- package/dist/es5/tile-3d-subtree-loader.js +26 -0
- package/dist/es5/tile-3d-subtree-loader.js.map +1 -0
- package/dist/esm/index.js +1 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/lib/classes/helpers/tile-3d-accessor-utils.js.map +1 -1
- package/dist/esm/lib/classes/tile-3d-batch-table-hierarchy.js.map +1 -1
- package/dist/esm/lib/classes/tile-3d-batch-table.js +16 -1
- package/dist/esm/lib/classes/tile-3d-batch-table.js.map +1 -1
- package/dist/esm/lib/classes/tile-3d-feature-table.js +9 -2
- package/dist/esm/lib/classes/tile-3d-feature-table.js.map +1 -1
- package/dist/esm/lib/constants.js.map +1 -1
- package/dist/esm/lib/encoders/encode-3d-tile-batched-model.js.map +1 -1
- package/dist/esm/lib/encoders/encode-3d-tile-composite.js.map +1 -1
- package/dist/esm/lib/encoders/encode-3d-tile-instanced-model.js.map +1 -1
- package/dist/esm/lib/encoders/encode-3d-tile-point-cloud.js.map +1 -1
- package/dist/esm/lib/encoders/encode-3d-tile.js.map +1 -1
- package/dist/esm/lib/encoders/helpers/encode-3d-tile-header.js.map +1 -1
- package/dist/esm/lib/parsers/helpers/normalize-3d-tile-colors.js.map +1 -1
- package/dist/esm/lib/parsers/helpers/normalize-3d-tile-normals.js.map +1 -1
- package/dist/esm/lib/parsers/helpers/normalize-3d-tile-positions.js.map +1 -1
- package/dist/esm/lib/parsers/helpers/parse-3d-tile-gltf-view.js +1 -1
- package/dist/esm/lib/parsers/helpers/parse-3d-tile-gltf-view.js.map +1 -1
- package/dist/esm/lib/parsers/helpers/parse-3d-tile-header.js.map +1 -1
- package/dist/esm/lib/parsers/helpers/parse-3d-tile-subtree.js +64 -0
- package/dist/esm/lib/parsers/helpers/parse-3d-tile-subtree.js.map +1 -0
- package/dist/esm/lib/parsers/helpers/parse-3d-tile-tables.js +1 -1
- package/dist/esm/lib/parsers/helpers/parse-3d-tile-tables.js.map +1 -1
- package/dist/esm/lib/parsers/helpers/parse-utils.js.map +1 -1
- package/dist/esm/lib/parsers/parse-3d-tile-batched-model.js.map +1 -1
- package/dist/esm/lib/parsers/parse-3d-tile-composite.js.map +1 -1
- package/dist/esm/lib/parsers/parse-3d-tile-header.js.map +1 -1
- package/dist/esm/lib/parsers/parse-3d-tile-instanced-model.js.map +1 -1
- package/dist/esm/lib/parsers/parse-3d-tile-point-cloud.js +1 -1
- package/dist/esm/lib/parsers/parse-3d-tile-point-cloud.js.map +1 -1
- package/dist/esm/lib/parsers/parse-3d-tile.js.map +1 -1
- package/dist/esm/lib/utils/version.js +1 -1
- package/dist/esm/lib/utils/version.js.map +1 -1
- package/dist/esm/tile-3d-subtree-loader.js +14 -0
- package/dist/esm/tile-3d-subtree-loader.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +26 -0
- package/dist/lib/classes/helpers/tile-3d-accessor-utils.d.ts +3 -2
- package/dist/lib/classes/helpers/tile-3d-accessor-utils.d.ts.map +1 -0
- package/dist/lib/classes/helpers/tile-3d-accessor-utils.js +113 -0
- package/dist/lib/classes/tile-3d-batch-table-hierarchy.d.ts +4 -3
- package/dist/lib/classes/tile-3d-batch-table-hierarchy.d.ts.map +1 -0
- package/dist/lib/classes/tile-3d-batch-table-hierarchy.js +197 -0
- package/dist/lib/classes/tile-3d-batch-table.d.ts +8 -14
- package/dist/lib/classes/tile-3d-batch-table.d.ts.map +1 -0
- package/dist/lib/classes/tile-3d-batch-table.js +245 -0
- package/dist/lib/classes/tile-3d-feature-table.d.ts +2 -1
- package/dist/lib/classes/tile-3d-feature-table.d.ts.map +1 -0
- package/dist/lib/classes/tile-3d-feature-table.js +72 -0
- package/dist/lib/constants.d.ts +21 -22
- package/dist/lib/constants.d.ts.map +1 -0
- package/dist/lib/constants.js +25 -0
- package/dist/lib/encoders/encode-3d-tile-batched-model.d.ts +2 -1
- package/dist/lib/encoders/encode-3d-tile-batched-model.d.ts.map +1 -0
- package/dist/lib/encoders/encode-3d-tile-batched-model.js +46 -0
- package/dist/lib/encoders/encode-3d-tile-composite.d.ts +2 -1
- package/dist/lib/encoders/encode-3d-tile-composite.d.ts.map +1 -0
- package/dist/lib/encoders/encode-3d-tile-composite.js +24 -0
- package/dist/lib/encoders/encode-3d-tile-instanced-model.d.ts +2 -1
- package/dist/lib/encoders/encode-3d-tile-instanced-model.d.ts.map +1 -0
- package/dist/lib/encoders/encode-3d-tile-instanced-model.js +38 -0
- package/dist/lib/encoders/encode-3d-tile-point-cloud.d.ts +2 -1
- package/dist/lib/encoders/encode-3d-tile-point-cloud.d.ts.map +1 -0
- package/dist/lib/encoders/encode-3d-tile-point-cloud.js +39 -0
- package/dist/lib/encoders/encode-3d-tile.d.ts +1 -0
- package/dist/lib/encoders/encode-3d-tile.d.ts.map +1 -0
- package/dist/lib/encoders/encode-3d-tile.js +33 -0
- package/dist/lib/encoders/helpers/encode-3d-tile-header.d.ts +3 -2
- package/dist/lib/encoders/helpers/encode-3d-tile-header.d.ts.map +1 -0
- package/dist/lib/encoders/helpers/encode-3d-tile-header.js +30 -0
- package/dist/lib/ion/ion.d.ts +1 -0
- package/dist/lib/ion/ion.d.ts.map +1 -0
- package/dist/lib/ion/ion.js +68 -0
- package/dist/lib/parsers/helpers/normalize-3d-tile-colors.d.ts +2 -1
- package/dist/lib/parsers/helpers/normalize-3d-tile-colors.d.ts.map +1 -0
- package/dist/lib/parsers/helpers/normalize-3d-tile-colors.js +65 -0
- package/dist/lib/parsers/helpers/normalize-3d-tile-normals.d.ts +2 -1
- package/dist/lib/parsers/helpers/normalize-3d-tile-normals.d.ts.map +1 -0
- package/dist/lib/parsers/helpers/normalize-3d-tile-normals.js +30 -0
- package/dist/lib/parsers/helpers/normalize-3d-tile-positions.d.ts +2 -1
- package/dist/lib/parsers/helpers/normalize-3d-tile-positions.d.ts.map +1 -0
- package/dist/lib/parsers/helpers/normalize-3d-tile-positions.js +42 -0
- package/dist/lib/parsers/helpers/parse-3d-tile-gltf-view.d.ts +7 -6
- package/dist/lib/parsers/helpers/parse-3d-tile-gltf-view.d.ts.map +1 -0
- package/dist/lib/parsers/helpers/parse-3d-tile-gltf-view.js +88 -0
- package/dist/lib/parsers/helpers/parse-3d-tile-header.d.ts +2 -1
- package/dist/lib/parsers/helpers/parse-3d-tile-header.d.ts.map +1 -0
- package/dist/lib/parsers/helpers/parse-3d-tile-header.js +28 -0
- package/dist/lib/parsers/helpers/parse-3d-tile-subtree.d.ts +9 -0
- package/dist/lib/parsers/helpers/parse-3d-tile-subtree.d.ts.map +1 -0
- package/dist/lib/parsers/helpers/parse-3d-tile-subtree.js +74 -0
- package/dist/lib/parsers/helpers/parse-3d-tile-tables.d.ts +3 -2
- package/dist/lib/parsers/helpers/parse-3d-tile-tables.d.ts.map +1 -0
- package/dist/lib/parsers/helpers/parse-3d-tile-tables.js +93 -0
- package/dist/lib/parsers/helpers/parse-utils.d.ts +4 -3
- package/dist/lib/parsers/helpers/parse-utils.d.ts.map +1 -0
- package/dist/lib/parsers/helpers/parse-utils.js +32 -0
- package/dist/lib/parsers/parse-3d-tile-batched-model.d.ts +2 -1
- package/dist/lib/parsers/parse-3d-tile-batched-model.d.ts.map +1 -0
- package/dist/lib/parsers/parse-3d-tile-batched-model.js +33 -0
- package/dist/lib/parsers/parse-3d-tile-composite.d.ts +2 -1
- package/dist/lib/parsers/parse-3d-tile-composite.d.ts.map +1 -0
- package/dist/lib/parsers/parse-3d-tile-composite.js +26 -0
- package/dist/lib/parsers/parse-3d-tile-header.d.ts +3 -2
- package/dist/lib/parsers/parse-3d-tile-header.d.ts.map +1 -0
- package/dist/lib/parsers/parse-3d-tile-header.js +66 -0
- package/dist/lib/parsers/parse-3d-tile-instanced-model.d.ts +2 -1
- package/dist/lib/parsers/parse-3d-tile-instanced-model.d.ts.map +1 -0
- package/dist/lib/parsers/parse-3d-tile-instanced-model.js +186 -0
- package/dist/lib/parsers/parse-3d-tile-point-cloud.d.ts +3 -2
- package/dist/lib/parsers/parse-3d-tile-point-cloud.d.ts.map +1 -0
- package/dist/lib/parsers/parse-3d-tile-point-cloud.js +411 -0
- package/dist/lib/parsers/parse-3d-tile.d.ts +2 -1
- package/dist/lib/parsers/parse-3d-tile.d.ts.map +1 -0
- package/dist/lib/parsers/parse-3d-tile.js +34 -0
- package/dist/lib/utils/version.d.ts +2 -1
- package/dist/lib/utils/version.d.ts.map +1 -0
- package/dist/lib/utils/version.js +7 -0
- package/dist/tile-3d-subtree-loader.d.ts +7 -0
- package/dist/tile-3d-subtree-loader.d.ts.map +1 -0
- package/dist/tile-3d-subtree-loader.js +23 -0
- package/dist/tile-3d-writer.d.ts +1 -0
- package/dist/tile-3d-writer.d.ts.map +1 -0
- package/dist/tile-3d-writer.js +27 -0
- package/dist/tiles-3d-loader.d.ts +1 -0
- package/dist/tiles-3d-loader.d.ts.map +1 -0
- package/dist/tiles-3d-loader.js +73 -0
- package/dist/types.d.ts +28 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/package.json +9 -10
- package/src/index.ts +1 -0
- package/src/lib/classes/helpers/{tile-3d-accessor-utils.js → tile-3d-accessor-utils.ts} +0 -0
- package/src/lib/classes/{tile-3d-batch-table-hierarchy.js → tile-3d-batch-table-hierarchy.ts} +0 -0
- package/src/lib/classes/{tile-3d-batch-table.js → tile-3d-batch-table.ts} +14 -4
- package/src/lib/classes/{tile-3d-feature-table.js → tile-3d-feature-table.ts} +5 -2
- package/src/lib/{constants.js → constants.ts} +0 -0
- package/src/lib/encoders/{encode-3d-tile-batched-model.js → encode-3d-tile-batched-model.ts} +0 -0
- package/src/lib/encoders/{encode-3d-tile-composite.js → encode-3d-tile-composite.ts} +0 -0
- package/src/lib/encoders/{encode-3d-tile-instanced-model.js → encode-3d-tile-instanced-model.ts} +0 -0
- package/src/lib/encoders/{encode-3d-tile-point-cloud.js → encode-3d-tile-point-cloud.ts} +0 -0
- package/src/lib/encoders/{encode-3d-tile.js → encode-3d-tile.ts} +0 -0
- package/src/lib/encoders/helpers/{encode-3d-tile-header.js → encode-3d-tile-header.ts} +0 -0
- package/src/lib/parsers/helpers/{normalize-3d-tile-colors.js → normalize-3d-tile-colors.ts} +1 -1
- package/src/lib/parsers/helpers/{normalize-3d-tile-normals.js → normalize-3d-tile-normals.ts} +0 -0
- package/src/lib/parsers/helpers/{normalize-3d-tile-positions.js → normalize-3d-tile-positions.ts} +0 -0
- package/src/lib/parsers/helpers/{parse-3d-tile-gltf-view.js → parse-3d-tile-gltf-view.ts} +1 -1
- package/src/lib/parsers/helpers/{parse-3d-tile-header.js → parse-3d-tile-header.ts} +0 -0
- package/src/lib/parsers/helpers/parse-3d-tile-subtree.ts +104 -0
- package/src/lib/parsers/helpers/{parse-3d-tile-tables.js → parse-3d-tile-tables.ts} +1 -1
- package/src/lib/parsers/helpers/{parse-utils.js → parse-utils.ts} +0 -0
- package/src/lib/parsers/{parse-3d-tile-batched-model.js → parse-3d-tile-batched-model.ts} +0 -0
- package/src/lib/parsers/{parse-3d-tile-composite.js → parse-3d-tile-composite.ts} +0 -0
- package/src/lib/parsers/{parse-3d-tile-header.js → parse-3d-tile-header.ts} +1 -1
- package/src/lib/parsers/{parse-3d-tile-instanced-model.js → parse-3d-tile-instanced-model.ts} +6 -0
- package/src/lib/parsers/{parse-3d-tile-point-cloud.js → parse-3d-tile-point-cloud.ts} +2 -2
- package/src/lib/parsers/{parse-3d-tile.js → parse-3d-tile.ts} +4 -0
- package/src/lib/utils/{version.js → version.ts} +0 -0
- package/src/tile-3d-subtree-loader.ts +19 -0
- package/src/types.ts +33 -0
- package/dist/dist.min.js +0 -2
- package/dist/dist.min.js.map +0 -1
package/dist/types.js
ADDED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@loaders.gl/3d-tiles",
|
|
3
|
-
"version": "3.1.0-
|
|
3
|
+
"version": "3.1.0-beta.1",
|
|
4
4
|
"description": "3D Tiles, an open standard for streaming massive heterogeneous 3D geospatial datasets.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"publishConfig": {
|
|
@@ -31,20 +31,19 @@
|
|
|
31
31
|
],
|
|
32
32
|
"scripts": {
|
|
33
33
|
"pre-build": "npm run build-bundle",
|
|
34
|
-
"
|
|
35
|
-
"build-bundle": "webpack --display=minimal --config ../../scripts/webpack/bundle.js"
|
|
34
|
+
"build-bundle": "esbuild src/bundle.ts --bundle --outfile=dist/bundle.js"
|
|
36
35
|
},
|
|
37
36
|
"dependencies": {
|
|
38
|
-
"@loaders.gl/draco": "3.1.0-
|
|
39
|
-
"@loaders.gl/gltf": "3.1.0-
|
|
40
|
-
"@loaders.gl/loader-utils": "3.1.0-
|
|
41
|
-
"@loaders.gl/math": "3.1.0-
|
|
42
|
-
"@loaders.gl/tiles": "3.1.0-
|
|
37
|
+
"@loaders.gl/draco": "3.1.0-beta.1",
|
|
38
|
+
"@loaders.gl/gltf": "3.1.0-beta.1",
|
|
39
|
+
"@loaders.gl/loader-utils": "3.1.0-beta.1",
|
|
40
|
+
"@loaders.gl/math": "3.1.0-beta.1",
|
|
41
|
+
"@loaders.gl/tiles": "3.1.0-beta.1",
|
|
43
42
|
"@math.gl/core": "^3.5.1",
|
|
44
43
|
"@math.gl/geospatial": "^3.5.1"
|
|
45
44
|
},
|
|
46
45
|
"peerDependencies": {
|
|
47
|
-
"@loaders.gl/core": "
|
|
46
|
+
"@loaders.gl/core": "4.0.0-alpha.4"
|
|
48
47
|
},
|
|
49
|
-
"gitHead": "
|
|
48
|
+
"gitHead": "980cdefb4e8ec9ef9c951d20c78cf77777707f49"
|
|
50
49
|
}
|
package/src/index.ts
CHANGED
|
File without changes
|
package/src/lib/classes/{tile-3d-batch-table-hierarchy.js → tile-3d-batch-table-hierarchy.ts}
RENAMED
|
File without changes
|
|
@@ -21,6 +21,16 @@ const IGNORED_PROPERTY_FIELDS = {
|
|
|
21
21
|
|
|
22
22
|
// The size of this array equals the maximum instance count among all loaded tiles, which has the potential to be large.
|
|
23
23
|
export default class Tile3DBatchTableParser {
|
|
24
|
+
json;
|
|
25
|
+
binary;
|
|
26
|
+
featureCount;
|
|
27
|
+
_extensions;
|
|
28
|
+
// Copy all top-level property fields from the json object, ignoring special fields
|
|
29
|
+
_properties;
|
|
30
|
+
_binaryProperties;
|
|
31
|
+
// TODO: hierarchy support is only partially implemented and not tested
|
|
32
|
+
_hierarchy;
|
|
33
|
+
|
|
24
34
|
constructor(json, binary, featureCount, options = {}) {
|
|
25
35
|
assert(featureCount >= 0);
|
|
26
36
|
this.json = json || {};
|
|
@@ -49,11 +59,11 @@ export default class Tile3DBatchTableParser {
|
|
|
49
59
|
return this.json && this.json.extensions && this.json.extensions[extensionName];
|
|
50
60
|
}
|
|
51
61
|
|
|
52
|
-
memorySizeInBytes() {
|
|
62
|
+
memorySizeInBytes(): number {
|
|
53
63
|
return 0;
|
|
54
64
|
}
|
|
55
65
|
|
|
56
|
-
isClass(batchId, className) {
|
|
66
|
+
isClass(batchId, className: string): boolean {
|
|
57
67
|
this._checkBatchId(batchId);
|
|
58
68
|
assert(typeof className === 'string', className);
|
|
59
69
|
|
|
@@ -178,7 +188,7 @@ export default class Tile3DBatchTableParser {
|
|
|
178
188
|
_checkBatchId(batchId) {
|
|
179
189
|
const valid = batchId >= 0 && batchId < this.featureCount;
|
|
180
190
|
if (!valid) {
|
|
181
|
-
throw new Error(
|
|
191
|
+
throw new Error('batchId not in range [0, featureCount - 1].');
|
|
182
192
|
}
|
|
183
193
|
}
|
|
184
194
|
|
|
@@ -191,7 +201,7 @@ export default class Tile3DBatchTableParser {
|
|
|
191
201
|
}
|
|
192
202
|
|
|
193
203
|
_initializeBinaryProperties() {
|
|
194
|
-
let binaryProperties = null;
|
|
204
|
+
let binaryProperties: Record<string, any> | null = null;
|
|
195
205
|
for (const name in this._properties) {
|
|
196
206
|
const property = this._properties[name];
|
|
197
207
|
const binaryProperty = this._initializeBinaryProperty(name, property);
|
|
@@ -6,11 +6,14 @@ import {GL, GLType} from '@loaders.gl/math';
|
|
|
6
6
|
// Reference:
|
|
7
7
|
// https://github.com/AnalyticalGraphicsInc/cesium/blob/1de96d087f0b17575eb1a3f736407b348c765d59/Source/Scene/Cesium3DTileFeatureTable.js
|
|
8
8
|
export default class Tile3DFeatureTable {
|
|
9
|
+
json;
|
|
10
|
+
buffer;
|
|
11
|
+
featuresLength = 0;
|
|
12
|
+
_cachedTypedArrays = {};
|
|
13
|
+
|
|
9
14
|
constructor(featureTableJson, featureTableBinary) {
|
|
10
15
|
this.json = featureTableJson;
|
|
11
16
|
this.buffer = featureTableBinary;
|
|
12
|
-
this.featuresLength = 0;
|
|
13
|
-
this._cachedTypedArrays = {};
|
|
14
17
|
}
|
|
15
18
|
|
|
16
19
|
getExtension(extensionName) {
|
|
File without changes
|
package/src/lib/encoders/{encode-3d-tile-batched-model.js → encode-3d-tile-batched-model.ts}
RENAMED
|
File without changes
|
|
File without changes
|
package/src/lib/encoders/{encode-3d-tile-instanced-model.js → encode-3d-tile-instanced-model.ts}
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {decodeRGB565, GL} from '@loaders.gl/math';
|
|
2
2
|
|
|
3
3
|
/* eslint-disable complexity*/
|
|
4
|
-
export function normalize3DTileColorAttribute(tile, colors, batchTable) {
|
|
4
|
+
export function normalize3DTileColorAttribute(tile, colors, batchTable?) {
|
|
5
5
|
// no colors defined
|
|
6
6
|
if (!colors && (!tile || !tile.batchIds || !batchTable)) {
|
|
7
7
|
return null;
|
package/src/lib/parsers/helpers/{normalize-3d-tile-normals.js → normalize-3d-tile-normals.ts}
RENAMED
|
File without changes
|
package/src/lib/parsers/helpers/{normalize-3d-tile-positions.js → normalize-3d-tile-positions.ts}
RENAMED
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import type {SubtreeAvailability, ExplicitBitstream} from '../../../types';
|
|
2
|
+
import {fetchFile} from '@loaders.gl/core';
|
|
3
|
+
|
|
4
|
+
const SUBTREE_FILE_MAGIC = 0x74627573;
|
|
5
|
+
const SUBTREE_FILE_VERSION = 1;
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Parse subtree file
|
|
9
|
+
* Spec - https://github.com/CesiumGS/3d-tiles/tree/main/extensions/3DTILES_implicit_tiling#subtree-file-format
|
|
10
|
+
* @param data
|
|
11
|
+
* @returns
|
|
12
|
+
*/
|
|
13
|
+
export default async function parse3DTilesSubtree(data: ArrayBuffer): Promise<SubtreeAvailability> {
|
|
14
|
+
const magic = new Uint32Array(data.slice(0, 4));
|
|
15
|
+
|
|
16
|
+
if (magic[0] !== SUBTREE_FILE_MAGIC) {
|
|
17
|
+
throw new Error('Wrong subtree file magic number');
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
const version = new Uint32Array(data.slice(4, 8));
|
|
21
|
+
|
|
22
|
+
if (version[0] !== SUBTREE_FILE_VERSION) {
|
|
23
|
+
throw new Error('Wrong subtree file verson, must be 1');
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
const jsonByteLength = parseUint64Value(data.slice(8, 16));
|
|
27
|
+
const stringAttribute = new Uint8Array(data, 24, jsonByteLength);
|
|
28
|
+
|
|
29
|
+
const textDecoder = new TextDecoder('utf8');
|
|
30
|
+
const string = textDecoder.decode(stringAttribute);
|
|
31
|
+
const subtree = JSON.parse(string);
|
|
32
|
+
|
|
33
|
+
const binaryByteLength = parseUint64Value(data.slice(16, 24));
|
|
34
|
+
let internalBinaryBuffer = new ArrayBuffer(0);
|
|
35
|
+
|
|
36
|
+
if (binaryByteLength) {
|
|
37
|
+
internalBinaryBuffer = data.slice(24 + jsonByteLength);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
if ('bufferView' in subtree.tileAvailability) {
|
|
41
|
+
subtree.tileAvailability.explicitBitstream = await getExplicitBitstream(
|
|
42
|
+
subtree,
|
|
43
|
+
'tileAvailability',
|
|
44
|
+
internalBinaryBuffer
|
|
45
|
+
);
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
if ('bufferView' in subtree.contentAvailability) {
|
|
49
|
+
subtree.contentAvailability.explicitBitstream = await getExplicitBitstream(
|
|
50
|
+
subtree,
|
|
51
|
+
'contentAvailability',
|
|
52
|
+
internalBinaryBuffer
|
|
53
|
+
);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
if ('bufferView' in subtree.childSubtreeAvailability) {
|
|
57
|
+
subtree.childSubtreeAvailability.explicitBitstream = await getExplicitBitstream(
|
|
58
|
+
subtree,
|
|
59
|
+
'childSubtreeAvailability',
|
|
60
|
+
internalBinaryBuffer
|
|
61
|
+
);
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
return subtree;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* Get explicit bitstream for subtree availability data.
|
|
69
|
+
* @param subtree
|
|
70
|
+
* @param name
|
|
71
|
+
* @param internalBinaryBuffer
|
|
72
|
+
*/
|
|
73
|
+
async function getExplicitBitstream(
|
|
74
|
+
subtree: SubtreeAvailability,
|
|
75
|
+
name: string,
|
|
76
|
+
internalBinaryBuffer: ArrayBuffer
|
|
77
|
+
): Promise<ExplicitBitstream> {
|
|
78
|
+
const bufferViewIndex = subtree[name].bufferView;
|
|
79
|
+
const bufferView = subtree.bufferViews[bufferViewIndex];
|
|
80
|
+
const buffer = subtree.buffers[bufferView.buffer];
|
|
81
|
+
|
|
82
|
+
// External bitstream loading
|
|
83
|
+
if (buffer.uri) {
|
|
84
|
+
const response = await fetchFile(buffer.uri);
|
|
85
|
+
const data = await response.arrayBuffer();
|
|
86
|
+
// Return view of bitstream.
|
|
87
|
+
return new Uint8Array(data, bufferView.byteOffset, bufferView.byteLength);
|
|
88
|
+
}
|
|
89
|
+
// Return view of bitstream.
|
|
90
|
+
return new Uint8Array(internalBinaryBuffer, bufferView.byteOffset, bufferView.byteLength);
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
/**
|
|
94
|
+
* Parse buffer to return uint64 value
|
|
95
|
+
* @param buffer
|
|
96
|
+
* @returns 64-bit value until precision is lost after Number.MAX_SAFE_INTEGER
|
|
97
|
+
*/
|
|
98
|
+
function parseUint64Value(buffer: ArrayBuffer): number {
|
|
99
|
+
const dataView = new DataView(buffer);
|
|
100
|
+
const left = dataView.getUint32(0, true);
|
|
101
|
+
const right = dataView.getUint32(4, true);
|
|
102
|
+
// combine the two 32-bit values
|
|
103
|
+
return left + 2 ** 32 * right;
|
|
104
|
+
}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
import {getStringFromArrayBuffer} from './parse-utils';
|
|
5
5
|
|
|
6
6
|
const SIZEOF_UINT32 = 4;
|
|
7
|
-
const DEPRECATION_WARNING =
|
|
7
|
+
const DEPRECATION_WARNING = 'b3dm tile in legacy format.';
|
|
8
8
|
|
|
9
9
|
// eslint-disable-next-line max-statements
|
|
10
10
|
export function parse3DTileTablesHeaderSync(tile, arrayBuffer, byteOffset) {
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
package/src/lib/parsers/{parse-3d-tile-instanced-model.js → parse-3d-tile-instanced-model.ts}
RENAMED
|
@@ -146,6 +146,7 @@ function extractInstancedAttributes(tile, featureTable, batchTable, instancesLen
|
|
|
146
146
|
}
|
|
147
147
|
|
|
148
148
|
instancePosition.copy(position);
|
|
149
|
+
// @ts-expect-error
|
|
149
150
|
instanceTranslationRotationScale.translation = instancePosition;
|
|
150
151
|
|
|
151
152
|
// Get the instance rotation
|
|
@@ -203,6 +204,7 @@ function extractInstancedAttributes(tile, featureTable, batchTable, instancesLen
|
|
|
203
204
|
}
|
|
204
205
|
|
|
205
206
|
instanceQuaternion.fromMatrix3(instanceRotation);
|
|
207
|
+
// @ts-expect-error
|
|
206
208
|
instanceTranslationRotationScale.rotation = instanceQuaternion;
|
|
207
209
|
|
|
208
210
|
// Get the instance scale
|
|
@@ -216,6 +218,7 @@ function extractInstancedAttributes(tile, featureTable, batchTable, instancesLen
|
|
|
216
218
|
instanceScale.scale(nonUniformScale);
|
|
217
219
|
}
|
|
218
220
|
|
|
221
|
+
// @ts-expect-error
|
|
219
222
|
instanceTranslationRotationScale.scale = instanceScale;
|
|
220
223
|
|
|
221
224
|
// Get the batchId
|
|
@@ -225,12 +228,15 @@ function extractInstancedAttributes(tile, featureTable, batchTable, instancesLen
|
|
|
225
228
|
batchId = i;
|
|
226
229
|
}
|
|
227
230
|
|
|
231
|
+
// @ts-expect-error
|
|
228
232
|
const rotationMatrix = new Matrix4().fromQuaternion(instanceTranslationRotationScale.rotation);
|
|
229
233
|
|
|
230
234
|
// Create the model matrix and the instance
|
|
231
235
|
instanceTransform.identity();
|
|
236
|
+
// @ts-expect-error
|
|
232
237
|
instanceTransform.translate(instanceTranslationRotationScale.translation);
|
|
233
238
|
instanceTransform.multiplyRight(rotationMatrix);
|
|
239
|
+
// @ts-expect-error
|
|
234
240
|
instanceTransform.scale(instanceTranslationRotationScale.scale);
|
|
235
241
|
|
|
236
242
|
const modelMatrix = instanceTransform.clone();
|
|
@@ -137,7 +137,7 @@ function parseNormals(tile, featureTable) {
|
|
|
137
137
|
}
|
|
138
138
|
|
|
139
139
|
function parseBatchIds(tile, featureTable) {
|
|
140
|
-
let batchTable = null;
|
|
140
|
+
let batchTable: Tile3DBatchTable | null = null;
|
|
141
141
|
if (!tile.batchIds && featureTable.hasProperty('BATCH_ID')) {
|
|
142
142
|
tile.batchIds = featureTable.getPropertyArray('BATCH_ID', GL.UNSIGNED_SHORT, 1);
|
|
143
143
|
|
|
@@ -250,7 +250,7 @@ export async function loadDraco(tile, dracoData, options, context) {
|
|
|
250
250
|
|
|
251
251
|
tile.attributes = {
|
|
252
252
|
positions: decodedPositions,
|
|
253
|
-
colors: normalize3DTileColorAttribute(tile, decodedColors),
|
|
253
|
+
colors: normalize3DTileColorAttribute(tile, decodedColors, undefined),
|
|
254
254
|
normals: decodedNormals,
|
|
255
255
|
batchIds: decodedBatchIds,
|
|
256
256
|
...batchTableAttributes
|
|
@@ -11,9 +11,12 @@ import {parseComposite3DTile} from './parse-3d-tile-composite';
|
|
|
11
11
|
|
|
12
12
|
// Extracts
|
|
13
13
|
export async function parse3DTile(arrayBuffer, byteOffset = 0, options, context, tile = {}) {
|
|
14
|
+
// @ts-expect-error
|
|
14
15
|
tile.byteOffset = byteOffset;
|
|
16
|
+
// @ts-expect-error
|
|
15
17
|
tile.type = getMagicString(arrayBuffer, byteOffset);
|
|
16
18
|
|
|
19
|
+
// @ts-expect-error
|
|
17
20
|
switch (tile.type) {
|
|
18
21
|
case TILE3D_TYPE.COMPOSITE:
|
|
19
22
|
// Note: We pass this function as argument so that embedded tiles can be parsed recursively
|
|
@@ -36,6 +39,7 @@ export async function parse3DTile(arrayBuffer, byteOffset = 0, options, context,
|
|
|
36
39
|
return await parsePointCloud3DTile(tile, arrayBuffer, byteOffset, options, context);
|
|
37
40
|
|
|
38
41
|
default:
|
|
42
|
+
// @ts-expect-error
|
|
39
43
|
throw new Error(`3DTileLoader: unknown type ${tile.type}`); // eslint-disable-line
|
|
40
44
|
}
|
|
41
45
|
}
|
|
File without changes
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type {LoaderWithParser} from '@loaders.gl/loader-utils';
|
|
2
|
+
import parse3DTilesSubtree from './lib/parsers/helpers/parse-3d-tile-subtree';
|
|
3
|
+
import {VERSION} from './lib/utils/version';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Loader for 3D Tiles Subtree
|
|
7
|
+
*
|
|
8
|
+
*/
|
|
9
|
+
export const Tile3DSubtreeLoader: LoaderWithParser = {
|
|
10
|
+
id: '3d-tiles-subtree',
|
|
11
|
+
name: '3D Tiles Subtree',
|
|
12
|
+
module: '3d-tiles',
|
|
13
|
+
version: VERSION,
|
|
14
|
+
extensions: ['subtree'],
|
|
15
|
+
mimeTypes: ['application/octet-stream'],
|
|
16
|
+
tests: ['subtree'],
|
|
17
|
+
parse: parse3DTilesSubtree,
|
|
18
|
+
options: {}
|
|
19
|
+
};
|
package/src/types.ts
CHANGED
|
@@ -49,3 +49,36 @@ type BoundingVolume = {
|
|
|
49
49
|
box?: number[];
|
|
50
50
|
sphere?: number[];
|
|
51
51
|
};
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* 3DTILES_implicit_tiling types
|
|
55
|
+
* Spec - https://github.com/CesiumGS/3d-tiles/tree/main/extensions/3DTILES_implicit_tiling#subtree-file-format
|
|
56
|
+
*/
|
|
57
|
+
export type SubtreeAvailability = {
|
|
58
|
+
buffers: Buffer[];
|
|
59
|
+
bufferViews: BufferView[];
|
|
60
|
+
tileAvailability: Availability;
|
|
61
|
+
contentAvailability: Availability;
|
|
62
|
+
childSubtreeAvailability: Availability;
|
|
63
|
+
};
|
|
64
|
+
|
|
65
|
+
type Availability = {
|
|
66
|
+
constant?: 0 | 1;
|
|
67
|
+
bufferView?: number;
|
|
68
|
+
// Internal bitstream type
|
|
69
|
+
explicitBitstream?: ExplicitBitstream;
|
|
70
|
+
};
|
|
71
|
+
|
|
72
|
+
export type ExplicitBitstream = Uint8Array;
|
|
73
|
+
|
|
74
|
+
type Buffer = {
|
|
75
|
+
name: string;
|
|
76
|
+
uri?: string;
|
|
77
|
+
byteLength: number;
|
|
78
|
+
};
|
|
79
|
+
|
|
80
|
+
type BufferView = {
|
|
81
|
+
buffer: number;
|
|
82
|
+
byteOffset: number;
|
|
83
|
+
byteLength: number;
|
|
84
|
+
};
|