@loaders.gl/3d-tiles 3.1.0-alpha.1 → 3.1.0-alpha.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bundle.d.ts +1 -0
- package/dist/cesium-ion-loader.d.ts +5 -0
- package/dist/dist.min.js +1 -1
- package/dist/dist.min.js.map +1 -1
- package/dist/es5/bundle.js +7 -0
- package/dist/es5/bundle.js.map +1 -0
- package/dist/es5/cesium-ion-loader.js +45 -0
- package/dist/es5/cesium-ion-loader.js.map +1 -0
- package/dist/es5/index.js +64 -0
- package/dist/es5/index.js.map +1 -0
- package/dist/es5/lib/classes/helpers/tile-3d-accessor-utils.js +108 -0
- package/dist/es5/lib/classes/helpers/tile-3d-accessor-utils.js.map +1 -0
- package/dist/es5/lib/classes/tile-3d-batch-table-hierarchy.js +223 -0
- package/dist/es5/lib/classes/tile-3d-batch-table-hierarchy.js.map +1 -0
- package/dist/es5/lib/classes/tile-3d-batch-table.js +301 -0
- package/dist/es5/lib/classes/tile-3d-batch-table.js.map +1 -0
- package/dist/es5/lib/classes/tile-3d-feature-table.js +97 -0
- package/dist/es5/lib/classes/tile-3d-feature-table.js.map +1 -0
- package/dist/es5/lib/constants.js +31 -0
- package/dist/es5/lib/constants.js.map +1 -0
- package/dist/es5/lib/encoders/encode-3d-tile-batched-model.js +56 -0
- package/dist/es5/lib/encoders/encode-3d-tile-batched-model.js.map +1 -0
- package/dist/es5/lib/encoders/encode-3d-tile-composite.js +34 -0
- package/dist/es5/lib/encoders/encode-3d-tile-composite.js.map +1 -0
- package/dist/es5/lib/encoders/encode-3d-tile-instanced-model.js +48 -0
- package/dist/es5/lib/encoders/encode-3d-tile-instanced-model.js.map +1 -0
- package/dist/es5/lib/encoders/encode-3d-tile-point-cloud.js +52 -0
- package/dist/es5/lib/encoders/encode-3d-tile-point-cloud.js.map +1 -0
- package/dist/es5/lib/encoders/encode-3d-tile.js +48 -0
- package/dist/es5/lib/encoders/encode-3d-tile.js.map +1 -0
- package/dist/es5/lib/encoders/helpers/encode-3d-tile-header.js +41 -0
- package/dist/es5/lib/encoders/helpers/encode-3d-tile-header.js.map +1 -0
- package/dist/es5/lib/ion/ion.js +91 -0
- package/dist/es5/lib/ion/ion.js.map +1 -0
- package/dist/es5/lib/parsers/helpers/normalize-3d-tile-colors.js +75 -0
- package/dist/es5/lib/parsers/helpers/normalize-3d-tile-colors.js.map +1 -0
- package/dist/es5/lib/parsers/helpers/normalize-3d-tile-normals.js +40 -0
- package/dist/es5/lib/parsers/helpers/normalize-3d-tile-normals.js.map +1 -0
- package/dist/es5/lib/parsers/helpers/normalize-3d-tile-positions.js +40 -0
- package/dist/es5/lib/parsers/helpers/normalize-3d-tile-positions.js.map +1 -0
- package/dist/es5/lib/parsers/helpers/parse-3d-tile-gltf-view.js +83 -0
- package/dist/es5/lib/parsers/helpers/parse-3d-tile-gltf-view.js.map +1 -0
- package/dist/es5/lib/parsers/helpers/parse-3d-tile-header.js +24 -0
- package/dist/es5/lib/parsers/helpers/parse-3d-tile-header.js.map +1 -0
- package/dist/es5/lib/parsers/helpers/parse-3d-tile-tables.js +100 -0
- package/dist/es5/lib/parsers/helpers/parse-3d-tile-tables.js.map +1 -0
- package/dist/es5/lib/parsers/helpers/parse-utils.js +31 -0
- package/dist/es5/lib/parsers/helpers/parse-utils.js.map +1 -0
- package/dist/es5/lib/parsers/parse-3d-tile-batched-model.js +43 -0
- package/dist/es5/lib/parsers/parse-3d-tile-batched-model.js.map +1 -0
- package/dist/es5/lib/parsers/parse-3d-tile-composite.js +25 -0
- package/dist/es5/lib/parsers/parse-3d-tile-composite.js.map +1 -0
- package/dist/es5/lib/parsers/parse-3d-tile-header.js +86 -0
- package/dist/es5/lib/parsers/parse-3d-tile-header.js.map +1 -0
- package/dist/es5/lib/parsers/parse-3d-tile-instanced-model.js +195 -0
- package/dist/es5/lib/parsers/parse-3d-tile-instanced-model.js.map +1 -0
- package/dist/es5/lib/parsers/parse-3d-tile-point-cloud.js +265 -0
- package/dist/es5/lib/parsers/parse-3d-tile-point-cloud.js.map +1 -0
- package/dist/es5/lib/parsers/parse-3d-tile.js +41 -0
- package/dist/es5/lib/parsers/parse-3d-tile.js.map +1 -0
- package/dist/es5/lib/utils/version.js +9 -0
- package/dist/es5/lib/utils/version.js.map +1 -0
- package/dist/es5/tile-3d-writer.js +32 -0
- package/dist/es5/tile-3d-writer.js.map +1 -0
- package/dist/es5/tiles-3d-loader.js +85 -0
- package/dist/es5/tiles-3d-loader.js.map +1 -0
- package/dist/es5/types.js +2 -0
- package/dist/{types.js.map → es5/types.js.map} +0 -0
- package/dist/esm/bundle.js +5 -0
- package/dist/esm/bundle.js.map +1 -0
- package/dist/{cesium-ion-loader.js → esm/cesium-ion-loader.js} +0 -0
- package/dist/esm/cesium-ion-loader.js.map +1 -0
- package/dist/{index.js → esm/index.js} +0 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/{lib → esm/lib}/classes/helpers/tile-3d-accessor-utils.js +0 -0
- package/dist/esm/lib/classes/helpers/tile-3d-accessor-utils.js.map +1 -0
- package/dist/{lib → esm/lib}/classes/tile-3d-batch-table-hierarchy.js +1 -1
- package/dist/esm/lib/classes/tile-3d-batch-table-hierarchy.js.map +1 -0
- package/dist/{lib → esm/lib}/classes/tile-3d-batch-table.js +4 -4
- package/dist/esm/lib/classes/tile-3d-batch-table.js.map +1 -0
- package/dist/{lib → esm/lib}/classes/tile-3d-feature-table.js +0 -0
- package/dist/esm/lib/classes/tile-3d-feature-table.js.map +1 -0
- package/dist/{lib → esm/lib}/constants.js +0 -0
- package/dist/esm/lib/constants.js.map +1 -0
- package/dist/{lib → esm/lib}/encoders/encode-3d-tile-batched-model.js +0 -0
- package/dist/esm/lib/encoders/encode-3d-tile-batched-model.js.map +1 -0
- package/dist/{lib → esm/lib}/encoders/encode-3d-tile-composite.js +0 -0
- package/dist/esm/lib/encoders/encode-3d-tile-composite.js.map +1 -0
- package/dist/{lib → esm/lib}/encoders/encode-3d-tile-instanced-model.js +0 -0
- package/dist/esm/lib/encoders/encode-3d-tile-instanced-model.js.map +1 -0
- package/dist/{lib → esm/lib}/encoders/encode-3d-tile-point-cloud.js +0 -0
- package/dist/esm/lib/encoders/encode-3d-tile-point-cloud.js.map +1 -0
- package/dist/{lib → esm/lib}/encoders/encode-3d-tile.js +0 -0
- package/dist/esm/lib/encoders/encode-3d-tile.js.map +1 -0
- package/dist/{lib → esm/lib}/encoders/helpers/encode-3d-tile-header.js +0 -0
- package/dist/esm/lib/encoders/helpers/encode-3d-tile-header.js.map +1 -0
- package/dist/{lib → esm/lib}/ion/ion.js +6 -6
- package/dist/esm/lib/ion/ion.js.map +1 -0
- package/dist/{lib → esm/lib}/parsers/helpers/normalize-3d-tile-colors.js +0 -0
- package/dist/esm/lib/parsers/helpers/normalize-3d-tile-colors.js.map +1 -0
- package/dist/{lib → esm/lib}/parsers/helpers/normalize-3d-tile-normals.js +0 -0
- package/dist/esm/lib/parsers/helpers/normalize-3d-tile-normals.js.map +1 -0
- package/dist/{lib → esm/lib}/parsers/helpers/normalize-3d-tile-positions.js +0 -0
- package/dist/esm/lib/parsers/helpers/normalize-3d-tile-positions.js.map +1 -0
- package/dist/{lib → esm/lib}/parsers/helpers/parse-3d-tile-gltf-view.js +2 -2
- package/dist/esm/lib/parsers/helpers/parse-3d-tile-gltf-view.js.map +1 -0
- package/dist/{lib → esm/lib}/parsers/helpers/parse-3d-tile-header.js +1 -1
- package/dist/esm/lib/parsers/helpers/parse-3d-tile-header.js.map +1 -0
- package/dist/{lib → esm/lib}/parsers/helpers/parse-3d-tile-tables.js +1 -1
- package/dist/esm/lib/parsers/helpers/parse-3d-tile-tables.js.map +1 -0
- package/dist/{lib → esm/lib}/parsers/helpers/parse-utils.js +1 -5
- package/dist/esm/lib/parsers/helpers/parse-utils.js.map +1 -0
- package/dist/{lib → esm/lib}/parsers/parse-3d-tile-batched-model.js +0 -0
- package/dist/esm/lib/parsers/parse-3d-tile-batched-model.js.map +1 -0
- package/dist/{lib → esm/lib}/parsers/parse-3d-tile-composite.js +0 -0
- package/dist/esm/lib/parsers/parse-3d-tile-composite.js.map +1 -0
- package/dist/{lib → esm/lib}/parsers/parse-3d-tile-header.js +1 -1
- package/dist/esm/lib/parsers/parse-3d-tile-header.js.map +1 -0
- package/dist/{lib → esm/lib}/parsers/parse-3d-tile-instanced-model.js +1 -1
- package/dist/esm/lib/parsers/parse-3d-tile-instanced-model.js.map +1 -0
- package/dist/{lib → esm/lib}/parsers/parse-3d-tile-point-cloud.js +0 -0
- package/dist/esm/lib/parsers/parse-3d-tile-point-cloud.js.map +1 -0
- package/dist/{lib → esm/lib}/parsers/parse-3d-tile.js +1 -1
- package/dist/esm/lib/parsers/parse-3d-tile.js.map +1 -0
- package/dist/esm/lib/utils/version.js +2 -0
- package/dist/esm/lib/utils/version.js.map +1 -0
- package/dist/{tile-3d-writer.js → esm/tile-3d-writer.js} +0 -0
- package/dist/esm/tile-3d-writer.js.map +1 -0
- package/dist/{tiles-3d-loader.js → esm/tiles-3d-loader.js} +0 -0
- package/dist/esm/tiles-3d-loader.js.map +1 -0
- package/dist/{types.js → esm/types.js} +0 -0
- package/dist/esm/types.js.map +1 -0
- package/dist/index.d.ts +8 -0
- package/dist/lib/classes/helpers/tile-3d-accessor-utils.d.ts +7 -0
- package/dist/lib/classes/tile-3d-batch-table-hierarchy.d.ts +9 -0
- package/dist/lib/classes/tile-3d-batch-table.d.ts +40 -0
- package/dist/lib/classes/tile-3d-feature-table.d.ts +14 -0
- package/dist/lib/constants.d.ts +22 -0
- package/dist/lib/encoders/encode-3d-tile-batched-model.d.ts +1 -0
- package/dist/lib/encoders/encode-3d-tile-composite.d.ts +1 -0
- package/dist/lib/encoders/encode-3d-tile-instanced-model.d.ts +1 -0
- package/dist/lib/encoders/encode-3d-tile-point-cloud.d.ts +1 -0
- package/dist/lib/encoders/encode-3d-tile.d.ts +1 -0
- package/dist/lib/encoders/helpers/encode-3d-tile-header.d.ts +2 -0
- package/dist/lib/ion/ion.d.ts +3 -0
- package/dist/lib/parsers/helpers/normalize-3d-tile-colors.d.ts +6 -0
- package/dist/lib/parsers/helpers/normalize-3d-tile-normals.d.ts +5 -0
- package/dist/lib/parsers/helpers/normalize-3d-tile-positions.d.ts +1 -0
- package/dist/lib/parsers/helpers/parse-3d-tile-gltf-view.d.ts +6 -0
- package/dist/lib/parsers/helpers/parse-3d-tile-header.d.ts +1 -0
- package/dist/lib/parsers/helpers/parse-3d-tile-tables.d.ts +2 -0
- package/dist/lib/parsers/helpers/parse-utils.d.ts +3 -0
- package/dist/lib/parsers/parse-3d-tile-batched-model.d.ts +1 -0
- package/dist/lib/parsers/parse-3d-tile-composite.d.ts +1 -0
- package/dist/lib/parsers/parse-3d-tile-header.d.ts +2 -0
- package/dist/lib/parsers/parse-3d-tile-instanced-model.d.ts +1 -0
- package/dist/lib/parsers/parse-3d-tile-point-cloud.d.ts +2 -0
- package/dist/lib/parsers/parse-3d-tile.d.ts +1 -0
- package/dist/lib/utils/version.d.ts +1 -0
- package/dist/tile-3d-writer.d.ts +5 -0
- package/dist/tiles-3d-loader.d.ts +5 -0
- package/dist/types.d.ts +47 -0
- package/package.json +14 -11
- package/src/bundle.ts +2 -3
- package/dist/bundle.js +0 -7
- package/dist/bundle.js.map +0 -1
- package/dist/cesium-ion-loader.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/lib/classes/helpers/tile-3d-accessor-utils.js.map +0 -1
- package/dist/lib/classes/tile-3d-batch-table-hierarchy.js.map +0 -1
- package/dist/lib/classes/tile-3d-batch-table.js.map +0 -1
- package/dist/lib/classes/tile-3d-feature-table.js.map +0 -1
- package/dist/lib/constants.js.map +0 -1
- package/dist/lib/encoders/encode-3d-tile-batched-model.js.map +0 -1
- package/dist/lib/encoders/encode-3d-tile-composite.js.map +0 -1
- package/dist/lib/encoders/encode-3d-tile-instanced-model.js.map +0 -1
- package/dist/lib/encoders/encode-3d-tile-point-cloud.js.map +0 -1
- package/dist/lib/encoders/encode-3d-tile.js.map +0 -1
- package/dist/lib/encoders/helpers/encode-3d-tile-header.js.map +0 -1
- package/dist/lib/ion/ion.js.map +0 -1
- package/dist/lib/parsers/helpers/normalize-3d-tile-colors.js.map +0 -1
- package/dist/lib/parsers/helpers/normalize-3d-tile-normals.js.map +0 -1
- package/dist/lib/parsers/helpers/normalize-3d-tile-positions.js.map +0 -1
- package/dist/lib/parsers/helpers/parse-3d-tile-gltf-view.js.map +0 -1
- package/dist/lib/parsers/helpers/parse-3d-tile-header.js.map +0 -1
- package/dist/lib/parsers/helpers/parse-3d-tile-tables.js.map +0 -1
- package/dist/lib/parsers/helpers/parse-utils.js.map +0 -1
- package/dist/lib/parsers/parse-3d-tile-batched-model.js.map +0 -1
- package/dist/lib/parsers/parse-3d-tile-composite.js.map +0 -1
- package/dist/lib/parsers/parse-3d-tile-header.js.map +0 -1
- package/dist/lib/parsers/parse-3d-tile-instanced-model.js.map +0 -1
- package/dist/lib/parsers/parse-3d-tile-point-cloud.js.map +0 -1
- package/dist/lib/parsers/parse-3d-tile.js.map +0 -1
- package/dist/lib/utils/version.js +0 -2
- package/dist/lib/utils/version.js.map +0 -1
- package/dist/tile-3d-writer.js.map +0 -1
- package/dist/tiles-3d-loader.js.map +0 -1
|
@@ -0,0 +1,265 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.parsePointCloud3DTile = parsePointCloud3DTile;
|
|
9
|
+
exports.loadDraco = loadDraco;
|
|
10
|
+
|
|
11
|
+
var _draco = require("@loaders.gl/draco");
|
|
12
|
+
|
|
13
|
+
var _math = require("@loaders.gl/math");
|
|
14
|
+
|
|
15
|
+
var _core = require("@math.gl/core");
|
|
16
|
+
|
|
17
|
+
var _tile3dFeatureTable = _interopRequireDefault(require("../classes/tile-3d-feature-table"));
|
|
18
|
+
|
|
19
|
+
var _tile3dBatchTable = _interopRequireDefault(require("../classes/tile-3d-batch-table"));
|
|
20
|
+
|
|
21
|
+
var _parse3dTileHeader = require("./helpers/parse-3d-tile-header");
|
|
22
|
+
|
|
23
|
+
var _parse3dTileTables = require("./helpers/parse-3d-tile-tables");
|
|
24
|
+
|
|
25
|
+
var _normalize3dTileColors = require("./helpers/normalize-3d-tile-colors");
|
|
26
|
+
|
|
27
|
+
var _normalize3dTileNormals = require("./helpers/normalize-3d-tile-normals");
|
|
28
|
+
|
|
29
|
+
var _normalize3dTilePositions = require("./helpers/normalize-3d-tile-positions");
|
|
30
|
+
|
|
31
|
+
async function parsePointCloud3DTile(tile, arrayBuffer, byteOffset, options, context) {
|
|
32
|
+
byteOffset = (0, _parse3dTileHeader.parse3DTileHeaderSync)(tile, arrayBuffer, byteOffset);
|
|
33
|
+
byteOffset = (0, _parse3dTileTables.parse3DTileTablesHeaderSync)(tile, arrayBuffer, byteOffset);
|
|
34
|
+
byteOffset = (0, _parse3dTileTables.parse3DTileTablesSync)(tile, arrayBuffer, byteOffset, options);
|
|
35
|
+
initializeTile(tile);
|
|
36
|
+
const {
|
|
37
|
+
featureTable,
|
|
38
|
+
batchTable
|
|
39
|
+
} = parsePointCloudTables(tile);
|
|
40
|
+
await parseDraco(tile, featureTable, batchTable, options, context);
|
|
41
|
+
parsePositions(tile, featureTable, options);
|
|
42
|
+
parseColors(tile, featureTable, batchTable);
|
|
43
|
+
parseNormals(tile, featureTable);
|
|
44
|
+
return byteOffset;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
function initializeTile(tile) {
|
|
48
|
+
tile.attributes = {
|
|
49
|
+
positions: null,
|
|
50
|
+
colors: null,
|
|
51
|
+
normals: null,
|
|
52
|
+
batchIds: null
|
|
53
|
+
};
|
|
54
|
+
tile.isQuantized = false;
|
|
55
|
+
tile.isTranslucent = false;
|
|
56
|
+
tile.isRGB565 = false;
|
|
57
|
+
tile.isOctEncoded16P = false;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
function parsePointCloudTables(tile) {
|
|
61
|
+
const featureTable = new _tile3dFeatureTable.default(tile.featureTableJson, tile.featureTableBinary);
|
|
62
|
+
const pointsLength = featureTable.getGlobalProperty('POINTS_LENGTH');
|
|
63
|
+
|
|
64
|
+
if (!Number.isFinite(pointsLength)) {
|
|
65
|
+
throw new Error('POINTS_LENGTH must be defined');
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
featureTable.featuresLength = pointsLength;
|
|
69
|
+
tile.featuresLength = pointsLength;
|
|
70
|
+
tile.pointsLength = pointsLength;
|
|
71
|
+
tile.pointCount = pointsLength;
|
|
72
|
+
tile.rtcCenter = featureTable.getGlobalProperty('RTC_CENTER', _math.GL.FLOAT, 3);
|
|
73
|
+
const batchTable = parseBatchIds(tile, featureTable);
|
|
74
|
+
return {
|
|
75
|
+
featureTable,
|
|
76
|
+
batchTable
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
function parsePositions(tile, featureTable, options) {
|
|
81
|
+
if (!tile.attributes.positions) {
|
|
82
|
+
if (featureTable.hasProperty('POSITION')) {
|
|
83
|
+
tile.attributes.positions = featureTable.getPropertyArray('POSITION', _math.GL.FLOAT, 3);
|
|
84
|
+
} else if (featureTable.hasProperty('POSITION_QUANTIZED')) {
|
|
85
|
+
const positions = featureTable.getPropertyArray('POSITION_QUANTIZED', _math.GL.UNSIGNED_SHORT, 3);
|
|
86
|
+
tile.isQuantized = true;
|
|
87
|
+
tile.quantizedRange = (1 << 16) - 1;
|
|
88
|
+
tile.quantizedVolumeScale = featureTable.getGlobalProperty('QUANTIZED_VOLUME_SCALE', _math.GL.FLOAT, 3);
|
|
89
|
+
|
|
90
|
+
if (!tile.quantizedVolumeScale) {
|
|
91
|
+
throw new Error('QUANTIZED_VOLUME_SCALE must be defined for quantized positions.');
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
tile.quantizedVolumeOffset = featureTable.getGlobalProperty('QUANTIZED_VOLUME_OFFSET', _math.GL.FLOAT, 3);
|
|
95
|
+
|
|
96
|
+
if (!tile.quantizedVolumeOffset) {
|
|
97
|
+
throw new Error('QUANTIZED_VOLUME_OFFSET must be defined for quantized positions.');
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
tile.attributes.positions = (0, _normalize3dTilePositions.normalize3DTilePositionAttribute)(tile, positions, options);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
if (!tile.attributes.positions) {
|
|
105
|
+
throw new Error('Either POSITION or POSITION_QUANTIZED must be defined.');
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
function parseColors(tile, featureTable, batchTable) {
|
|
110
|
+
if (!tile.attributes.colors) {
|
|
111
|
+
let colors = null;
|
|
112
|
+
|
|
113
|
+
if (featureTable.hasProperty('RGBA')) {
|
|
114
|
+
colors = featureTable.getPropertyArray('RGBA', _math.GL.UNSIGNED_BYTE, 4);
|
|
115
|
+
tile.isTranslucent = true;
|
|
116
|
+
} else if (featureTable.hasProperty('RGB')) {
|
|
117
|
+
colors = featureTable.getPropertyArray('RGB', _math.GL.UNSIGNED_BYTE, 3);
|
|
118
|
+
} else if (featureTable.hasProperty('RGB565')) {
|
|
119
|
+
colors = featureTable.getPropertyArray('RGB565', _math.GL.UNSIGNED_SHORT, 1);
|
|
120
|
+
tile.isRGB565 = true;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
tile.attributes.colors = (0, _normalize3dTileColors.normalize3DTileColorAttribute)(tile, colors, batchTable);
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
if (featureTable.hasProperty('CONSTANT_RGBA')) {
|
|
127
|
+
tile.constantRGBA = featureTable.getGlobalProperty('CONSTANT_RGBA', _math.GL.UNSIGNED_BYTE, 4);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
function parseNormals(tile, featureTable) {
|
|
132
|
+
if (!tile.attributes.normals) {
|
|
133
|
+
let normals = null;
|
|
134
|
+
|
|
135
|
+
if (featureTable.hasProperty('NORMAL')) {
|
|
136
|
+
normals = featureTable.getPropertyArray('NORMAL', _math.GL.FLOAT, 3);
|
|
137
|
+
} else if (featureTable.hasProperty('NORMAL_OCT16P')) {
|
|
138
|
+
normals = featureTable.getPropertyArray('NORMAL_OCT16P', _math.GL.UNSIGNED_BYTE, 2);
|
|
139
|
+
tile.isOctEncoded16P = true;
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
tile.attributes.normals = (0, _normalize3dTileNormals.normalize3DTileNormalAttribute)(tile, normals);
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
function parseBatchIds(tile, featureTable) {
|
|
147
|
+
let batchTable = null;
|
|
148
|
+
|
|
149
|
+
if (!tile.batchIds && featureTable.hasProperty('BATCH_ID')) {
|
|
150
|
+
tile.batchIds = featureTable.getPropertyArray('BATCH_ID', _math.GL.UNSIGNED_SHORT, 1);
|
|
151
|
+
|
|
152
|
+
if (tile.batchIds) {
|
|
153
|
+
const batchFeatureLength = featureTable.getGlobalProperty('BATCH_LENGTH');
|
|
154
|
+
|
|
155
|
+
if (!batchFeatureLength) {
|
|
156
|
+
throw new Error('Global property: BATCH_LENGTH must be defined when BATCH_ID is defined.');
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
const {
|
|
160
|
+
batchTableJson,
|
|
161
|
+
batchTableBinary
|
|
162
|
+
} = tile;
|
|
163
|
+
batchTable = new _tile3dBatchTable.default(batchTableJson, batchTableBinary, batchFeatureLength);
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
return batchTable;
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
async function parseDraco(tile, featureTable, batchTable, options, context) {
|
|
171
|
+
let dracoBuffer;
|
|
172
|
+
let dracoFeatureTableProperties;
|
|
173
|
+
let dracoBatchTableProperties;
|
|
174
|
+
const batchTableDraco = tile.batchTableJson && tile.batchTableJson.extensions && tile.batchTableJson.extensions['3DTILES_draco_point_compression'];
|
|
175
|
+
|
|
176
|
+
if (batchTableDraco) {
|
|
177
|
+
dracoBatchTableProperties = batchTableDraco.properties;
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
const featureTableDraco = featureTable.getExtension('3DTILES_draco_point_compression');
|
|
181
|
+
|
|
182
|
+
if (featureTableDraco) {
|
|
183
|
+
dracoFeatureTableProperties = featureTableDraco.properties;
|
|
184
|
+
const dracoByteOffset = featureTableDraco.byteOffset;
|
|
185
|
+
const dracoByteLength = featureTableDraco.byteLength;
|
|
186
|
+
|
|
187
|
+
if (!dracoFeatureTableProperties || !Number.isFinite(dracoByteOffset) || !dracoByteLength) {
|
|
188
|
+
throw new Error('Draco properties, byteOffset, and byteLength must be defined');
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
dracoBuffer = tile.featureTableBinary.slice(dracoByteOffset, dracoByteOffset + dracoByteLength);
|
|
192
|
+
tile.hasPositions = Number.isFinite(dracoFeatureTableProperties.POSITION);
|
|
193
|
+
tile.hasColors = Number.isFinite(dracoFeatureTableProperties.RGB) || Number.isFinite(dracoFeatureTableProperties.RGBA);
|
|
194
|
+
tile.hasNormals = Number.isFinite(dracoFeatureTableProperties.NORMAL);
|
|
195
|
+
tile.hasBatchIds = Number.isFinite(dracoFeatureTableProperties.BATCH_ID);
|
|
196
|
+
tile.isTranslucent = Number.isFinite(dracoFeatureTableProperties.RGBA);
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
if (!dracoBuffer) {
|
|
200
|
+
return true;
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
const dracoData = {
|
|
204
|
+
buffer: dracoBuffer,
|
|
205
|
+
properties: { ...dracoFeatureTableProperties,
|
|
206
|
+
...dracoBatchTableProperties
|
|
207
|
+
},
|
|
208
|
+
featureTableProperties: dracoFeatureTableProperties,
|
|
209
|
+
batchTableProperties: dracoBatchTableProperties,
|
|
210
|
+
dequantizeInShader: false
|
|
211
|
+
};
|
|
212
|
+
return await loadDraco(tile, dracoData, options, context);
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
async function loadDraco(tile, dracoData, options, context) {
|
|
216
|
+
const {
|
|
217
|
+
parse
|
|
218
|
+
} = context;
|
|
219
|
+
const dracoOptions = { ...options,
|
|
220
|
+
draco: { ...options.draco,
|
|
221
|
+
extraAttributes: dracoData.batchTableProperties || {}
|
|
222
|
+
}
|
|
223
|
+
};
|
|
224
|
+
delete dracoOptions['3d-tiles'];
|
|
225
|
+
const data = await parse(dracoData.buffer, _draco.DracoLoader, dracoOptions);
|
|
226
|
+
const decodedPositions = data.attributes.POSITION && data.attributes.POSITION.value;
|
|
227
|
+
const decodedColors = data.attributes.COLOR_0 && data.attributes.COLOR_0.value;
|
|
228
|
+
const decodedNormals = data.attributes.NORMAL && data.attributes.NORMAL.value;
|
|
229
|
+
const decodedBatchIds = data.attributes.BATCH_ID && data.attributes.BATCH_ID.value;
|
|
230
|
+
const isQuantizedDraco = decodedPositions && data.attributes.POSITION.value.quantization;
|
|
231
|
+
const isOctEncodedDraco = decodedNormals && data.attributes.NORMAL.value.quantization;
|
|
232
|
+
|
|
233
|
+
if (isQuantizedDraco) {
|
|
234
|
+
const quantization = data.POSITION.data.quantization;
|
|
235
|
+
const range = quantization.range;
|
|
236
|
+
tile.quantizedVolumeScale = new _core.Vector3(range, range, range);
|
|
237
|
+
tile.quantizedVolumeOffset = new _core.Vector3(quantization.minValues);
|
|
238
|
+
tile.quantizedRange = (1 << quantization.quantizationBits) - 1.0;
|
|
239
|
+
tile.isQuantizedDraco = true;
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
if (isOctEncodedDraco) {
|
|
243
|
+
tile.octEncodedRange = (1 << data.NORMAL.data.quantization.quantizationBits) - 1.0;
|
|
244
|
+
tile.isOctEncodedDraco = true;
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
const batchTableAttributes = {};
|
|
248
|
+
|
|
249
|
+
if (dracoData.batchTableProperties) {
|
|
250
|
+
for (const attributeName of Object.keys(dracoData.batchTableProperties)) {
|
|
251
|
+
if (data.attributes[attributeName] && data.attributes[attributeName].value) {
|
|
252
|
+
batchTableAttributes[attributeName.toLowerCase()] = data.attributes[attributeName].value;
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
tile.attributes = {
|
|
258
|
+
positions: decodedPositions,
|
|
259
|
+
colors: (0, _normalize3dTileColors.normalize3DTileColorAttribute)(tile, decodedColors),
|
|
260
|
+
normals: decodedNormals,
|
|
261
|
+
batchIds: decodedBatchIds,
|
|
262
|
+
...batchTableAttributes
|
|
263
|
+
};
|
|
264
|
+
}
|
|
265
|
+
//# sourceMappingURL=parse-3d-tile-point-cloud.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/lib/parsers/parse-3d-tile-point-cloud.js"],"names":["parsePointCloud3DTile","tile","arrayBuffer","byteOffset","options","context","initializeTile","featureTable","batchTable","parsePointCloudTables","parseDraco","parsePositions","parseColors","parseNormals","attributes","positions","colors","normals","batchIds","isQuantized","isTranslucent","isRGB565","isOctEncoded16P","Tile3DFeatureTable","featureTableJson","featureTableBinary","pointsLength","getGlobalProperty","Number","isFinite","Error","featuresLength","pointCount","rtcCenter","GL","FLOAT","parseBatchIds","hasProperty","getPropertyArray","UNSIGNED_SHORT","quantizedRange","quantizedVolumeScale","quantizedVolumeOffset","UNSIGNED_BYTE","constantRGBA","batchFeatureLength","batchTableJson","batchTableBinary","Tile3DBatchTable","dracoBuffer","dracoFeatureTableProperties","dracoBatchTableProperties","batchTableDraco","extensions","properties","featureTableDraco","getExtension","dracoByteOffset","dracoByteLength","byteLength","slice","hasPositions","POSITION","hasColors","RGB","RGBA","hasNormals","NORMAL","hasBatchIds","BATCH_ID","dracoData","buffer","featureTableProperties","batchTableProperties","dequantizeInShader","loadDraco","parse","dracoOptions","draco","extraAttributes","data","DracoLoader","decodedPositions","value","decodedColors","COLOR_0","decodedNormals","decodedBatchIds","isQuantizedDraco","quantization","isOctEncodedDraco","range","Vector3","minValues","quantizationBits","octEncodedRange","batchTableAttributes","attributeName","Object","keys","toLowerCase"],"mappings":"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","sourcesContent":["// This file is derived from the Cesium code base under Apache 2 license\n// See LICENSE.md and https://github.com/AnalyticalGraphicsInc/cesium/blob/master/LICENSE.md\n\nimport {DracoLoader} from '@loaders.gl/draco';\nimport {GL} from '@loaders.gl/math';\nimport {Vector3} from '@math.gl/core';\n\nimport Tile3DFeatureTable from '../classes/tile-3d-feature-table';\nimport Tile3DBatchTable from '../classes/tile-3d-batch-table';\nimport {parse3DTileHeaderSync} from './helpers/parse-3d-tile-header';\nimport {parse3DTileTablesHeaderSync, parse3DTileTablesSync} from './helpers/parse-3d-tile-tables';\nimport {normalize3DTileColorAttribute} from './helpers/normalize-3d-tile-colors';\nimport {normalize3DTileNormalAttribute} from './helpers/normalize-3d-tile-normals';\nimport {normalize3DTilePositionAttribute} from './helpers/normalize-3d-tile-positions';\n\nexport async function parsePointCloud3DTile(tile, arrayBuffer, byteOffset, options, context) {\n byteOffset = parse3DTileHeaderSync(tile, arrayBuffer, byteOffset);\n byteOffset = parse3DTileTablesHeaderSync(tile, arrayBuffer, byteOffset);\n byteOffset = parse3DTileTablesSync(tile, arrayBuffer, byteOffset, options);\n initializeTile(tile);\n\n const {featureTable, batchTable} = parsePointCloudTables(tile);\n\n await parseDraco(tile, featureTable, batchTable, options, context);\n\n parsePositions(tile, featureTable, options);\n parseColors(tile, featureTable, batchTable);\n parseNormals(tile, featureTable);\n\n return byteOffset;\n}\n\nfunction initializeTile(tile) {\n // Initialize point cloud tile defaults\n tile.attributes = {\n positions: null,\n colors: null,\n normals: null,\n batchIds: null\n };\n tile.isQuantized = false;\n tile.isTranslucent = false;\n tile.isRGB565 = false;\n tile.isOctEncoded16P = false;\n}\n\nfunction parsePointCloudTables(tile) {\n const featureTable = new Tile3DFeatureTable(tile.featureTableJson, tile.featureTableBinary);\n\n const pointsLength = featureTable.getGlobalProperty('POINTS_LENGTH');\n if (!Number.isFinite(pointsLength)) {\n throw new Error('POINTS_LENGTH must be defined');\n }\n featureTable.featuresLength = pointsLength;\n\n tile.featuresLength = pointsLength;\n tile.pointsLength = pointsLength;\n tile.pointCount = pointsLength;\n\n tile.rtcCenter = featureTable.getGlobalProperty('RTC_CENTER', GL.FLOAT, 3);\n\n const batchTable = parseBatchIds(tile, featureTable);\n\n return {featureTable, batchTable};\n}\n\nfunction parsePositions(tile, featureTable, options) {\n if (!tile.attributes.positions) {\n if (featureTable.hasProperty('POSITION')) {\n tile.attributes.positions = featureTable.getPropertyArray('POSITION', GL.FLOAT, 3);\n } else if (featureTable.hasProperty('POSITION_QUANTIZED')) {\n const positions = featureTable.getPropertyArray('POSITION_QUANTIZED', GL.UNSIGNED_SHORT, 3);\n\n tile.isQuantized = true;\n tile.quantizedRange = (1 << 16) - 1;\n\n tile.quantizedVolumeScale = featureTable.getGlobalProperty(\n 'QUANTIZED_VOLUME_SCALE',\n GL.FLOAT,\n 3\n );\n if (!tile.quantizedVolumeScale) {\n throw new Error('QUANTIZED_VOLUME_SCALE must be defined for quantized positions.');\n }\n\n tile.quantizedVolumeOffset = featureTable.getGlobalProperty(\n 'QUANTIZED_VOLUME_OFFSET',\n GL.FLOAT,\n 3\n );\n if (!tile.quantizedVolumeOffset) {\n throw new Error('QUANTIZED_VOLUME_OFFSET must be defined for quantized positions.');\n }\n\n tile.attributes.positions = normalize3DTilePositionAttribute(tile, positions, options);\n }\n }\n\n if (!tile.attributes.positions) {\n throw new Error('Either POSITION or POSITION_QUANTIZED must be defined.');\n }\n}\n\nfunction parseColors(tile, featureTable, batchTable) {\n if (!tile.attributes.colors) {\n let colors = null;\n if (featureTable.hasProperty('RGBA')) {\n colors = featureTable.getPropertyArray('RGBA', GL.UNSIGNED_BYTE, 4);\n tile.isTranslucent = true;\n } else if (featureTable.hasProperty('RGB')) {\n colors = featureTable.getPropertyArray('RGB', GL.UNSIGNED_BYTE, 3);\n } else if (featureTable.hasProperty('RGB565')) {\n colors = featureTable.getPropertyArray('RGB565', GL.UNSIGNED_SHORT, 1);\n tile.isRGB565 = true;\n }\n\n tile.attributes.colors = normalize3DTileColorAttribute(tile, colors, batchTable);\n }\n\n if (featureTable.hasProperty('CONSTANT_RGBA')) {\n tile.constantRGBA = featureTable.getGlobalProperty('CONSTANT_RGBA', GL.UNSIGNED_BYTE, 4);\n }\n}\n\nfunction parseNormals(tile, featureTable) {\n if (!tile.attributes.normals) {\n let normals = null;\n if (featureTable.hasProperty('NORMAL')) {\n normals = featureTable.getPropertyArray('NORMAL', GL.FLOAT, 3);\n } else if (featureTable.hasProperty('NORMAL_OCT16P')) {\n normals = featureTable.getPropertyArray('NORMAL_OCT16P', GL.UNSIGNED_BYTE, 2);\n tile.isOctEncoded16P = true;\n }\n\n tile.attributes.normals = normalize3DTileNormalAttribute(tile, normals);\n }\n}\n\nfunction parseBatchIds(tile, featureTable) {\n let batchTable = null;\n if (!tile.batchIds && featureTable.hasProperty('BATCH_ID')) {\n tile.batchIds = featureTable.getPropertyArray('BATCH_ID', GL.UNSIGNED_SHORT, 1);\n\n if (tile.batchIds) {\n const batchFeatureLength = featureTable.getGlobalProperty('BATCH_LENGTH');\n if (!batchFeatureLength) {\n throw new Error('Global property: BATCH_LENGTH must be defined when BATCH_ID is defined.');\n }\n const {batchTableJson, batchTableBinary} = tile;\n batchTable = new Tile3DBatchTable(batchTableJson, batchTableBinary, batchFeatureLength);\n }\n }\n return batchTable;\n}\n\n// eslint-disable-next-line complexity\nasync function parseDraco(tile, featureTable, batchTable, options, context) {\n let dracoBuffer;\n let dracoFeatureTableProperties;\n let dracoBatchTableProperties;\n const batchTableDraco =\n tile.batchTableJson &&\n tile.batchTableJson.extensions &&\n tile.batchTableJson.extensions['3DTILES_draco_point_compression'];\n if (batchTableDraco) {\n dracoBatchTableProperties = batchTableDraco.properties;\n }\n\n const featureTableDraco = featureTable.getExtension('3DTILES_draco_point_compression');\n if (featureTableDraco) {\n dracoFeatureTableProperties = featureTableDraco.properties;\n const dracoByteOffset = featureTableDraco.byteOffset;\n const dracoByteLength = featureTableDraco.byteLength;\n if (!dracoFeatureTableProperties || !Number.isFinite(dracoByteOffset) || !dracoByteLength) {\n throw new Error('Draco properties, byteOffset, and byteLength must be defined');\n }\n\n dracoBuffer = tile.featureTableBinary.slice(dracoByteOffset, dracoByteOffset + dracoByteLength);\n\n tile.hasPositions = Number.isFinite(dracoFeatureTableProperties.POSITION);\n tile.hasColors =\n Number.isFinite(dracoFeatureTableProperties.RGB) ||\n Number.isFinite(dracoFeatureTableProperties.RGBA);\n tile.hasNormals = Number.isFinite(dracoFeatureTableProperties.NORMAL);\n tile.hasBatchIds = Number.isFinite(dracoFeatureTableProperties.BATCH_ID);\n tile.isTranslucent = Number.isFinite(dracoFeatureTableProperties.RGBA);\n }\n\n if (!dracoBuffer) {\n return true;\n }\n\n const dracoData = {\n buffer: dracoBuffer,\n properties: {...dracoFeatureTableProperties, ...dracoBatchTableProperties},\n featureTableProperties: dracoFeatureTableProperties,\n batchTableProperties: dracoBatchTableProperties,\n dequantizeInShader: false\n };\n\n return await loadDraco(tile, dracoData, options, context);\n}\n\n// eslint-disable-next-line complexity, max-statements\nexport async function loadDraco(tile, dracoData, options, context) {\n const {parse} = context;\n const dracoOptions = {\n ...options,\n draco: {\n ...options.draco,\n extraAttributes: dracoData.batchTableProperties || {}\n }\n };\n\n // The entire tileset might be included, too expensive to serialize\n delete dracoOptions['3d-tiles'];\n\n const data = await parse(dracoData.buffer, DracoLoader, dracoOptions);\n\n const decodedPositions = data.attributes.POSITION && data.attributes.POSITION.value;\n const decodedColors = data.attributes.COLOR_0 && data.attributes.COLOR_0.value;\n const decodedNormals = data.attributes.NORMAL && data.attributes.NORMAL.value;\n const decodedBatchIds = data.attributes.BATCH_ID && data.attributes.BATCH_ID.value;\n const isQuantizedDraco = decodedPositions && data.attributes.POSITION.value.quantization;\n const isOctEncodedDraco = decodedNormals && data.attributes.NORMAL.value.quantization;\n if (isQuantizedDraco) {\n // Draco quantization range == quantized volume scale - size in meters of the quantized volume\n // Internal quantized range is the range of values of the quantized data, e.g. 255 for 8-bit, 1023 for 10-bit, etc\n const quantization = data.POSITION.data.quantization;\n const range = quantization.range;\n tile.quantizedVolumeScale = new Vector3(range, range, range);\n tile.quantizedVolumeOffset = new Vector3(quantization.minValues);\n tile.quantizedRange = (1 << quantization.quantizationBits) - 1.0;\n tile.isQuantizedDraco = true;\n }\n if (isOctEncodedDraco) {\n tile.octEncodedRange = (1 << data.NORMAL.data.quantization.quantizationBits) - 1.0;\n tile.isOctEncodedDraco = true;\n }\n\n // Extra batch table attributes\n const batchTableAttributes = {};\n if (dracoData.batchTableProperties) {\n for (const attributeName of Object.keys(dracoData.batchTableProperties)) {\n if (data.attributes[attributeName] && data.attributes[attributeName].value) {\n batchTableAttributes[attributeName.toLowerCase()] = data.attributes[attributeName].value;\n }\n }\n }\n\n tile.attributes = {\n positions: decodedPositions,\n colors: normalize3DTileColorAttribute(tile, decodedColors),\n normals: decodedNormals,\n batchIds: decodedBatchIds,\n ...batchTableAttributes\n };\n}\n\n// TODO - this is the remaining code from Cesium's parser\n/*\n const batchTable = new Tile3DBatchTable(tile);\n\n // parseDracoBuffer(tile, featureTable, batchTable);\n\n if (!tile.attributes.positions) {\n throw new Error('Either POSITION or POSITION_QUANTIZED must be defined.');\n }\n}\n/*\n\n if (!tile.attributes.positions) {\n if (featureTable.hasProperty('POSITION')) {\n tile.attributes.positions = featureTable.getPropertyArray('POSITION', GL.FLOAT, 3);\n } else if (featureTable.hasProperty('POSITION_QUANTIZED')) {\n tile.attributes.positions = featureTable.getPropertyArray('POSITION_QUANTIZED', GL.UNSIGNED_SHORT, 3);\n\n\n if (!tile.colors) {\n if (featureTable.hasProperty('RGBA')) {\n tile.colors = featureTable.getPropertyArray('RGBA', GL.UNSIGNED_BYTE, 4);\n tile.isTranslucent = true;\n } else if (featureTable.hasProperty('RGB')) {\n tile.colors = featureTable.getPropertyArray('RGB', GL.UNSIGNED_BYTE, 3);\n } else if (featureTable.hasPropertry('RGB565')) {\n tile.colors = featureTable.getPropertyArray('RGB565', GL.UNSIGNED_SHORT, 1);\n tile.isRGB565 = true;\n }\n }\n\n if (!tile.attributes.normals) {\n if (featureTable.getPropertry('NORMAL')) {\n tile.attributes.normals = featureTable.getPropertyArray('NORMAL', GL.FLOAT, 3);\n } else if (featureTable.getProperty('NORMAL_OCT16P')) {\n tile.attributes.normals = featureTable.getPropertyArray('NORMAL_OCT16P', GL.UNSIGNED_BYTE, 2);\n tile.isOctEncoded16P = true;\n }\n }\n\n if (!tile.batchIds) {\n if (featureTable.hasProperty('BATCH_ID')) {\n tile.batchIds = featureTable.getPropertyArray('BATCH_ID', GL.UNSIGNED_SHORT, 1);\n }\n }\n\n if (!tile.attributes.positions) {\n throw new Error('Either POSITION or POSITION_QUANTIZED must be defined.');\n }\n\n if (featureTable.getPropertry('CONSTANT_RGBA')) {\n tile.constantRGBA = featureTable.getGlobalProperty('CONSTANT_RGBA', GL.UNSIGNED_BYTE, 4);\n }\n\n if (tile.batchIds) {\n const batchLength = featureTable.getGlobalProperty('BATCH_LENGTH');\n if (!defined(batchLength)) {\n throw new Error('Global property: BATCH_LENGTH must be defined when BATCH_ID is defined.');\n }\n\n if (defined(batchTableBinary)) {\n // Copy the batchTableBinary section and let the underlying ArrayBuffer be freed\n batchTableBinary = new Uint8Array(batchTableBinary);\n }\n\n if (defined(pointCloud._batchTableLoaded)) {\n pointCloud._batchTableLoaded(batchLength, batchTableJson, batchTableBinary);\n }\n }\n\n // If points are not batched and there are per-point properties, use these properties for styling purposes\n var styleableProperties;\n if (!hasBatchIds && defined(batchTableBinary)) {\n tile.styleableProperties = Cesium3DTileBatchTable.getBinaryProperties(\n pointsLength,\n batchTableJson,\n batchTableBinary\n );\n }\n\n tile.draco = draco;\n}\n\n// Separate parsing and decoding of Draco\nexport function parseDracoBuffer(tile, featureTable, batchTable) {\n let dracoBuffer;\n let dracoFeatureTableProperties;\n let dracoBatchTableProperties;\n\n const batchTableDraco = batchTable.getExtension('3DTILES_draco_point_compression');\n if (batchTableDraco) {\n dracoBatchTableProperties = batchTableDraco.properties;\n }\n\n const featureTableDraco = featureTable.getExtension('3DTILES_draco_point_compression');\n if (featureTableDraco) {\n dracoFeatureTableProperties = featureTableDraco.properties;\n const dracoByteOffset = featureTableDraco.byteOffset;\n const dracoByteLength = featureTableDraco.byteLength;\n if (!dracoFeatureTableProperties || !dracoByteOffset || !dracoByteLength) {\n throw new Error('Draco properties, byteOffset, and byteLength must be defined');\n }\n\n dracoBuffer = arraySlice(\n featureTableBinary,\n dracoByteOffset,\n dracoByteOffset + dracoByteLength\n );\n tile.hasPositions = dracoFeatureTableProperties.POSITION;\n tile.hasColors = dracoFeatureTableProperties.RGB || dracoFeatureTableProperties.RGBA;\n tile.hasNormals = dracoFeatureTableProperties.NORMAL;\n tile.hasBatchIds = dracoFeatureTableProperties.BATCH_ID;\n tile.isTranslucent = dracoFeatureTableProperties.RGBA;\n }\n\n if (dracoBuffer) {\n tile.draco = {\n buffer: dracoBuffer,\n properties: {...dracoFeatureTableProperties, ...dracoBatchTableProperties},\n featureTableProperties: dracoFeatureTableProperties,\n batchTableProperties: dracoBatchTableProperties,\n dequantizeInShader: false\n };\n\n tile.decodingState = DECODING_STATE.NEEDS_DECODE;\n }\n}\n\n/*\nfunction decodeDraco(tile, context) {\n if (tile.decodingState === DECODING_STATE.READY) {\n return false;\n }\n if (tile.decodingState === DECODING_STATE.NEEDS_DECODE) {\n var parsedContent = tile._parsedContent;\n var draco = parsedContent.draco;\n var decodePromise = DracoLoader.decodePointCloud(draco, context);\n if (defined(decodePromise)) {\n tile.decodingState = DECODING_STATE.DECODING;\n decodePromise.then(function(result) {\n tile.decodingState = DECODING_STATE.READY;\n var decodedPositions = defined(result.POSITION) ? result.POSITION.array : undefined;\n var decodedRgb = defined(result.RGB) ? result.RGB.array : undefined;\n var decodedRgba = defined(result.RGBA) ? result.RGBA.array : undefined;\n var decodedNormals = defined(result.NORMAL) ? result.NORMAL.array : undefined;\n var decodedBatchIds = defined(result.BATCH_ID) ? result.BATCH_ID.array : undefined;\n var isQuantizedDraco = defined(decodedPositions) && defined(result.POSITION.data.quantization);\n var isOctEncodedDraco = defined(decodedNormals) && defined(result.NORMAL.data.quantization);\n if (isQuantizedDraco) {\n // Draco quantization range == quantized volume scale - size in meters of the quantized volume\n // Internal quantized range is the range of values of the quantized data, e.g. 255 for 8-bit, 1023 for 10-bit, etc\n var quantization = result.POSITION.data.quantization;\n var range = quantization.range;\n tile._quantizedVolumeScale = Cartesian3.fromElements(range, range, range);\n tile._quantizedVolumeOffset = Cartesian3.unpack(quantization.minValues);\n tile._quantizedRange = (1 << quantization.quantizationBits) - 1.0;\n tile._isQuantizedDraco = true;\n }\n if (isOctEncodedDraco) {\n tile._octEncodedRange = (1 << result.NORMAL.data.quantization.quantizationBits) - 1.0;\n tile._isOctEncodedDraco = true;\n }\n var styleableProperties = parsedContent.styleableProperties;\n var batchTableProperties = draco.batchTableProperties;\n for (var name in batchTableProperties) {\n if (batchTableProperties.hasOwnProperty(name)) {\n var property = result[name];\n if (!defined(styleableProperties)) {\n styleableProperties = {};\n }\n styleableProperties[name] = {\n typedArray : property.array,\n componentCount : property.data.componentsPerAttribute\n };\n }\n }\n parsedContent.positions = defaultValue(decodedPositions, parsedContent.positions);\n parsedContent.colors = defaultValue(defaultValue(decodedRgba, decodedRgb), parsedContent.colors);\n parsedContent.normals = defaultValue(decodedNormals, parsedContent.normals);\n parsedContent.batchIds = defaultValue(decodedBatchIds, parsedContent.batchIds);\n parsedContent.styleableProperties = styleableProperties;\n }).otherwise(function(error) {\n tile.decodingState = DECODING_STATE.FAILED;\n tile._readyPromise.reject(error);\n });\n }\n }\n return true;\n}\n*/\n"],"file":"parse-3d-tile-point-cloud.js"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.parse3DTile = parse3DTile;
|
|
7
|
+
|
|
8
|
+
var _constants = require("../constants");
|
|
9
|
+
|
|
10
|
+
var _parseUtils = require("./helpers/parse-utils");
|
|
11
|
+
|
|
12
|
+
var _parse3dTilePointCloud = require("./parse-3d-tile-point-cloud");
|
|
13
|
+
|
|
14
|
+
var _parse3dTileBatchedModel = require("./parse-3d-tile-batched-model");
|
|
15
|
+
|
|
16
|
+
var _parse3dTileInstancedModel = require("./parse-3d-tile-instanced-model");
|
|
17
|
+
|
|
18
|
+
var _parse3dTileComposite = require("./parse-3d-tile-composite");
|
|
19
|
+
|
|
20
|
+
async function parse3DTile(arrayBuffer, byteOffset = 0, options, context, tile = {}) {
|
|
21
|
+
tile.byteOffset = byteOffset;
|
|
22
|
+
tile.type = (0, _parseUtils.getMagicString)(arrayBuffer, byteOffset);
|
|
23
|
+
|
|
24
|
+
switch (tile.type) {
|
|
25
|
+
case _constants.TILE3D_TYPE.COMPOSITE:
|
|
26
|
+
return await (0, _parse3dTileComposite.parseComposite3DTile)(tile, arrayBuffer, byteOffset, options, context, parse3DTile);
|
|
27
|
+
|
|
28
|
+
case _constants.TILE3D_TYPE.BATCHED_3D_MODEL:
|
|
29
|
+
return await (0, _parse3dTileBatchedModel.parseBatchedModel3DTile)(tile, arrayBuffer, byteOffset, options, context);
|
|
30
|
+
|
|
31
|
+
case _constants.TILE3D_TYPE.INSTANCED_3D_MODEL:
|
|
32
|
+
return await (0, _parse3dTileInstancedModel.parseInstancedModel3DTile)(tile, arrayBuffer, byteOffset, options, context);
|
|
33
|
+
|
|
34
|
+
case _constants.TILE3D_TYPE.POINT_CLOUD:
|
|
35
|
+
return await (0, _parse3dTilePointCloud.parsePointCloud3DTile)(tile, arrayBuffer, byteOffset, options, context);
|
|
36
|
+
|
|
37
|
+
default:
|
|
38
|
+
throw new Error("3DTileLoader: unknown type ".concat(tile.type));
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=parse-3d-tile.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/lib/parsers/parse-3d-tile.js"],"names":["parse3DTile","arrayBuffer","byteOffset","options","context","tile","type","TILE3D_TYPE","COMPOSITE","BATCHED_3D_MODEL","INSTANCED_3D_MODEL","POINT_CLOUD","Error"],"mappings":";;;;;;;AAGA;;AACA;;AAEA;;AACA;;AACA;;AACA;;AAGO,eAAeA,WAAf,CAA2BC,WAA3B,EAAwCC,UAAU,GAAG,CAArD,EAAwDC,OAAxD,EAAiEC,OAAjE,EAA0EC,IAAI,GAAG,EAAjF,EAAqF;AAC1FA,EAAAA,IAAI,CAACH,UAAL,GAAkBA,UAAlB;AACAG,EAAAA,IAAI,CAACC,IAAL,GAAY,gCAAeL,WAAf,EAA4BC,UAA5B,CAAZ;;AAEA,UAAQG,IAAI,CAACC,IAAb;AACE,SAAKC,uBAAYC,SAAjB;AAEE,aAAO,MAAM,gDACXH,IADW,EAEXJ,WAFW,EAGXC,UAHW,EAIXC,OAJW,EAKXC,OALW,EAMXJ,WANW,CAAb;;AASF,SAAKO,uBAAYE,gBAAjB;AACE,aAAO,MAAM,sDAAwBJ,IAAxB,EAA8BJ,WAA9B,EAA2CC,UAA3C,EAAuDC,OAAvD,EAAgEC,OAAhE,CAAb;;AAEF,SAAKG,uBAAYG,kBAAjB;AACE,aAAO,MAAM,0DAA0BL,IAA1B,EAAgCJ,WAAhC,EAA6CC,UAA7C,EAAyDC,OAAzD,EAAkEC,OAAlE,CAAb;;AAEF,SAAKG,uBAAYI,WAAjB;AACE,aAAO,MAAM,kDAAsBN,IAAtB,EAA4BJ,WAA5B,EAAyCC,UAAzC,EAAqDC,OAArD,EAA8DC,OAA9D,CAAb;;AAEF;AACE,YAAM,IAAIQ,KAAJ,sCAAwCP,IAAI,CAACC,IAA7C,EAAN;AAtBJ;AAwBD","sourcesContent":["// This file is derived from the Cesium code base under Apache 2 license\n// See LICENSE.md and https://github.com/AnalyticalGraphicsInc/cesium/blob/master/LICENSE.md\n\nimport {TILE3D_TYPE} from '../constants';\nimport {getMagicString} from './helpers/parse-utils';\n\nimport {parsePointCloud3DTile} from './parse-3d-tile-point-cloud';\nimport {parseBatchedModel3DTile} from './parse-3d-tile-batched-model';\nimport {parseInstancedModel3DTile} from './parse-3d-tile-instanced-model';\nimport {parseComposite3DTile} from './parse-3d-tile-composite';\n\n// Extracts\nexport async function parse3DTile(arrayBuffer, byteOffset = 0, options, context, tile = {}) {\n tile.byteOffset = byteOffset;\n tile.type = getMagicString(arrayBuffer, byteOffset);\n\n switch (tile.type) {\n case TILE3D_TYPE.COMPOSITE:\n // Note: We pass this function as argument so that embedded tiles can be parsed recursively\n return await parseComposite3DTile(\n tile,\n arrayBuffer,\n byteOffset,\n options,\n context,\n parse3DTile\n );\n\n case TILE3D_TYPE.BATCHED_3D_MODEL:\n return await parseBatchedModel3DTile(tile, arrayBuffer, byteOffset, options, context);\n\n case TILE3D_TYPE.INSTANCED_3D_MODEL:\n return await parseInstancedModel3DTile(tile, arrayBuffer, byteOffset, options, context);\n\n case TILE3D_TYPE.POINT_CLOUD:\n return await parsePointCloud3DTile(tile, arrayBuffer, byteOffset, options, context);\n\n default:\n throw new Error(`3DTileLoader: unknown type ${tile.type}`); // eslint-disable-line\n }\n}\n"],"file":"parse-3d-tile.js"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.VERSION = void 0;
|
|
7
|
+
const VERSION = typeof "3.1.0-alpha.5" !== 'undefined' ? "3.1.0-alpha.5" : 'latest';
|
|
8
|
+
exports.VERSION = VERSION;
|
|
9
|
+
//# sourceMappingURL=version.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/lib/utils/version.js"],"names":["VERSION"],"mappings":";;;;;;AAGO,MAAMA,OAAO,GAAG,2BAAuB,WAAvB,qBAAmD,QAAnE","sourcesContent":["// Version constant cannot be imported, it needs to correspond to the build version of **this** module.\n// __VERSION__ is injected by babel-plugin-version-inline\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\nexport const VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';\n"],"file":"version.js"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.Tile3DWriter = void 0;
|
|
9
|
+
|
|
10
|
+
var _version = require("./lib/utils/version");
|
|
11
|
+
|
|
12
|
+
var _encode3dTile = _interopRequireDefault(require("./lib/encoders/encode-3d-tile"));
|
|
13
|
+
|
|
14
|
+
const Tile3DWriter = {
|
|
15
|
+
name: '3D Tile',
|
|
16
|
+
id: '3d-tiles',
|
|
17
|
+
module: '3d-tiles',
|
|
18
|
+
version: _version.VERSION,
|
|
19
|
+
extensions: ['cmpt', 'pnts', 'b3dm', 'i3dm'],
|
|
20
|
+
mimeTypes: ['application/octet-stream'],
|
|
21
|
+
encodeSync,
|
|
22
|
+
binary: true,
|
|
23
|
+
options: {
|
|
24
|
+
['3d-tiles']: {}
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
exports.Tile3DWriter = Tile3DWriter;
|
|
28
|
+
|
|
29
|
+
function encodeSync(tile, options) {
|
|
30
|
+
return (0, _encode3dTile.default)(tile, options);
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=tile-3d-writer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/tile-3d-writer.ts"],"names":["Tile3DWriter","name","id","module","version","VERSION","extensions","mimeTypes","encodeSync","binary","options","tile"],"mappings":";;;;;;;;;AACA;;AACA;;AAKO,MAAMA,YAAoB,GAAG;AAClCC,EAAAA,IAAI,EAAE,SAD4B;AAElCC,EAAAA,EAAE,EAAE,UAF8B;AAGlCC,EAAAA,MAAM,EAAE,UAH0B;AAIlCC,EAAAA,OAAO,EAAEC,gBAJyB;AAKlCC,EAAAA,UAAU,EAAE,CAAC,MAAD,EAAS,MAAT,EAAiB,MAAjB,EAAyB,MAAzB,CALsB;AAMlCC,EAAAA,SAAS,EAAE,CAAC,0BAAD,CANuB;AAOlCC,EAAAA,UAPkC;AAQlCC,EAAAA,MAAM,EAAE,IAR0B;AASlCC,EAAAA,OAAO,EAAE;AACP,KAAC,UAAD,GAAc;AADP;AATyB,CAA7B;;;AAcP,SAASF,UAAT,CAAoBG,IAApB,EAA0BD,OAA1B,EAAmC;AACjC,SAAO,2BAAaC,IAAb,EAAmBD,OAAnB,CAAP;AACD","sourcesContent":["import type {Writer} from '@loaders.gl/loader-utils';\nimport {VERSION} from './lib/utils/version';\nimport encode3DTile from './lib/encoders/encode-3d-tile';\n\n/**\n * Exporter for 3D Tiles\n */\nexport const Tile3DWriter: Writer = {\n name: '3D Tile',\n id: '3d-tiles',\n module: '3d-tiles',\n version: VERSION,\n extensions: ['cmpt', 'pnts', 'b3dm', 'i3dm'],\n mimeTypes: ['application/octet-stream'],\n encodeSync,\n binary: true,\n options: {\n ['3d-tiles']: {}\n }\n};\n\nfunction encodeSync(tile, options) {\n return encode3DTile(tile, options);\n}\n"],"file":"tile-3d-writer.js"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.Tiles3DLoader = void 0;
|
|
7
|
+
|
|
8
|
+
var _loaderUtils = require("@loaders.gl/loader-utils");
|
|
9
|
+
|
|
10
|
+
var _tiles = require("@loaders.gl/tiles");
|
|
11
|
+
|
|
12
|
+
var _version = require("./lib/utils/version");
|
|
13
|
+
|
|
14
|
+
var _parse3dTile = require("./lib/parsers/parse-3d-tile");
|
|
15
|
+
|
|
16
|
+
var _parse3dTileHeader = require("./lib/parsers/parse-3d-tile-header");
|
|
17
|
+
|
|
18
|
+
const Tiles3DLoader = {
|
|
19
|
+
id: '3d-tiles',
|
|
20
|
+
name: '3D Tiles',
|
|
21
|
+
module: '3d-tiles',
|
|
22
|
+
version: _version.VERSION,
|
|
23
|
+
extensions: ['cmpt', 'pnts', 'b3dm', 'i3dm'],
|
|
24
|
+
mimeTypes: ['application/octet-stream'],
|
|
25
|
+
tests: ['cmpt', 'pnts', 'b3dm', 'i3dm'],
|
|
26
|
+
parse,
|
|
27
|
+
options: {
|
|
28
|
+
'3d-tiles': {
|
|
29
|
+
loadGLTF: true,
|
|
30
|
+
decodeQuantizedPositions: false,
|
|
31
|
+
isTileset: 'auto',
|
|
32
|
+
assetGltfUpAxis: null
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
exports.Tiles3DLoader = Tiles3DLoader;
|
|
37
|
+
|
|
38
|
+
function getBaseUri(tileset) {
|
|
39
|
+
return _loaderUtils.path.dirname(tileset.url);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
async function parseTile(arrayBuffer, options, context) {
|
|
43
|
+
const tile = {
|
|
44
|
+
content: {
|
|
45
|
+
featureIds: null
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
const byteOffset = 0;
|
|
49
|
+
await (0, _parse3dTile.parse3DTile)(arrayBuffer, byteOffset, options, context, tile.content);
|
|
50
|
+
return tile.content;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
async function parseTileset(data, options, context) {
|
|
54
|
+
var _tilesetJson$root;
|
|
55
|
+
|
|
56
|
+
const tilesetJson = JSON.parse(new TextDecoder().decode(data));
|
|
57
|
+
tilesetJson.loader = options.loader || Tiles3DLoader;
|
|
58
|
+
tilesetJson.url = context.url;
|
|
59
|
+
tilesetJson.basePath = getBaseUri(tilesetJson);
|
|
60
|
+
tilesetJson.root = (0, _parse3dTileHeader.normalizeTileHeaders)(tilesetJson);
|
|
61
|
+
tilesetJson.type = _tiles.TILESET_TYPE.TILES3D;
|
|
62
|
+
tilesetJson.lodMetricType = _tiles.LOD_METRIC_TYPE.GEOMETRIC_ERROR;
|
|
63
|
+
tilesetJson.lodMetricValue = ((_tilesetJson$root = tilesetJson.root) === null || _tilesetJson$root === void 0 ? void 0 : _tilesetJson$root.lodMetricValue) || 0;
|
|
64
|
+
return tilesetJson;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
async function parse(data, options, context) {
|
|
68
|
+
const loaderOptions = options['3d-tiles'] || {};
|
|
69
|
+
let isTileset;
|
|
70
|
+
|
|
71
|
+
if (loaderOptions.isTileset === 'auto') {
|
|
72
|
+
isTileset = context.url && context.url.indexOf('.json') !== -1;
|
|
73
|
+
} else {
|
|
74
|
+
isTileset = loaderOptions.isTileset;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
if (isTileset) {
|
|
78
|
+
data = await parseTileset(data, options, context);
|
|
79
|
+
} else {
|
|
80
|
+
data = await parseTile(data, options, context);
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
return data;
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=tiles-3d-loader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/tiles-3d-loader.ts"],"names":["Tiles3DLoader","id","name","module","version","VERSION","extensions","mimeTypes","tests","parse","options","loadGLTF","decodeQuantizedPositions","isTileset","assetGltfUpAxis","getBaseUri","tileset","path","dirname","url","parseTile","arrayBuffer","context","tile","content","featureIds","byteOffset","parseTileset","data","tilesetJson","JSON","TextDecoder","decode","loader","basePath","root","type","TILESET_TYPE","TILES3D","lodMetricType","LOD_METRIC_TYPE","GEOMETRIC_ERROR","lodMetricValue","loaderOptions","indexOf"],"mappings":"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","sourcesContent":["import type {LoaderWithParser} from '@loaders.gl/loader-utils';\nimport {path} from '@loaders.gl/loader-utils';\nimport {TILESET_TYPE, LOD_METRIC_TYPE} from '@loaders.gl/tiles';\nimport {VERSION} from './lib/utils/version';\nimport {parse3DTile} from './lib/parsers/parse-3d-tile';\nimport {normalizeTileHeaders} from './lib/parsers/parse-3d-tile-header';\n\n/**\n * Loader for 3D Tiles\n */\nexport const Tiles3DLoader: LoaderWithParser = {\n id: '3d-tiles',\n name: '3D Tiles',\n module: '3d-tiles',\n version: VERSION,\n extensions: ['cmpt', 'pnts', 'b3dm', 'i3dm'],\n mimeTypes: ['application/octet-stream'],\n tests: ['cmpt', 'pnts', 'b3dm', 'i3dm'],\n parse,\n options: {\n '3d-tiles': {\n loadGLTF: true,\n decodeQuantizedPositions: false,\n isTileset: 'auto',\n assetGltfUpAxis: null\n }\n }\n};\n\nfunction getBaseUri(tileset) {\n return path.dirname(tileset.url);\n}\n\nasync function parseTile(arrayBuffer, options, context) {\n const tile = {\n content: {\n featureIds: null\n }\n };\n const byteOffset = 0;\n await parse3DTile(arrayBuffer, byteOffset, options, context, tile.content);\n return tile.content;\n}\n\nasync function parseTileset(data, options, context) {\n const tilesetJson = JSON.parse(new TextDecoder().decode(data));\n // eslint-disable-next-line no-use-before-define\n tilesetJson.loader = options.loader || Tiles3DLoader;\n tilesetJson.url = context.url;\n // base path that non-absolute paths in tileset are relative to.\n tilesetJson.basePath = getBaseUri(tilesetJson);\n tilesetJson.root = normalizeTileHeaders(tilesetJson);\n tilesetJson.type = TILESET_TYPE.TILES3D;\n\n tilesetJson.lodMetricType = LOD_METRIC_TYPE.GEOMETRIC_ERROR;\n tilesetJson.lodMetricValue = tilesetJson.root?.lodMetricValue || 0;\n\n return tilesetJson;\n}\n\nasync function parse(data, options, context) {\n // auto detect file type\n const loaderOptions = options['3d-tiles'] || {};\n let isTileset;\n if (loaderOptions.isTileset === 'auto') {\n isTileset = context.url && context.url.indexOf('.json') !== -1;\n } else {\n isTileset = loaderOptions.isTileset;\n }\n\n if (isTileset) {\n data = await parseTileset(data, options, context);\n } else {\n data = await parseTile(data, options, context);\n }\n\n return data;\n}\n"],"file":"tiles-3d-loader.js"}
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/bundle.ts"],"names":["moduleExports","require","globalThis","loaders","module","exports","Object","assign"],"mappings":"AACA,MAAMA,aAAa,GAAGC,OAAO,CAAC,SAAD,CAA7B;;AACAC,UAAU,CAACC,OAAX,GAAqBD,UAAU,CAACC,OAAX,IAAsB,EAA3C;AACAC,MAAM,CAACC,OAAP,GAAiBC,MAAM,CAACC,MAAP,CAAcL,UAAU,CAACC,OAAzB,EAAkCH,aAAlC,CAAjB","sourcesContent":["// @ts-nocheck\nconst moduleExports = require('./index');\nglobalThis.loaders = globalThis.loaders || {};\nmodule.exports = Object.assign(globalThis.loaders, moduleExports);\n"],"file":"bundle.js"}
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/cesium-ion-loader.ts"],"names":["Tiles3DLoader","getIonTilesetMetadata","preload","url","options","accessToken","assetId","Number","isFinite","matched","match","CesiumIonLoader","id","name","parse","data","context","loader"],"mappings":"AACA,SAAQA,aAAR,QAA4B,mBAA5B;AACA,SAAQC,qBAAR,QAAoC,eAApC;;AAEA,eAAeC,OAAf,CAAuBC,GAAvB,EAA4BC,OAAO,GAAG,EAAtC,EAA0C;AACxCA,EAAAA,OAAO,GAAGA,OAAO,CAAC,YAAD,CAAP,IAAyB,EAAnC;AAEA,QAAM;AAACC,IAAAA;AAAD,MAAgBD,OAAtB;AAEA,MAAIE,OAAO,GAAGF,OAAO,CAACE,OAAtB;;AACA,MAAI,CAACC,MAAM,CAACC,QAAP,CAAgBF,OAAhB,CAAL,EAA+B;AAC7B,UAAMG,OAAO,GAAGN,GAAG,CAACO,KAAJ,CAAU,0BAAV,CAAhB;AACAJ,IAAAA,OAAO,GAAGG,OAAO,IAAIA,OAAO,CAAC,CAAD,CAA5B;AACD;;AACD,SAAOR,qBAAqB,CAACI,WAAD,EAAcC,OAAd,CAA5B;AACD;;AAKD,OAAO,MAAMK,eAAiC,GAAG,EAC/C,GAAGX,aAD4C;AAE/CY,EAAAA,EAAE,EAAE,YAF2C;AAG/CC,EAAAA,IAAI,EAAE,YAHyC;AAK/CX,EAAAA,OAL+C;AAM/CY,EAAAA,KAAK,EAAE,OAAOC,IAAP,EAAaX,OAAb,EAAuBY,OAAvB,KAAoC;AACzCZ,IAAAA,OAAO,GAAG,EAAC,GAAGA;AAAJ,KAAV;AACAA,IAAAA,OAAO,CAAC,UAAD,CAAP,GAAsBA,OAAO,CAAC,YAAD,CAA7B;AAEAA,IAAAA,OAAO,CAACa,MAAR,GAAiBN,eAAjB;AACA,WAAOX,aAAa,CAACc,KAAd,CAAoBC,IAApB,EAA0BX,OAA1B,EAAmCY,OAAnC,CAAP;AACD,GAZ8C;AAa/CZ,EAAAA,OAAO,EAAE;AACP,kBAAc,EACZ,GAAGJ,aAAa,CAACI,OAAd,CAAsB,UAAtB,CADS;AAEZC,MAAAA,WAAW,EAAE;AAFD;AADP;AAbsC,CAA1C","sourcesContent":["import type {LoaderWithParser} from '@loaders.gl/loader-utils';\nimport {Tiles3DLoader} from './tiles-3d-loader';\nimport {getIonTilesetMetadata} from './lib/ion/ion';\n\nasync function preload(url, options = {}) {\n options = options['cesium-ion'] || {};\n // @ts-ignore\n const {accessToken} = options;\n // @ts-ignore\n let assetId = options.assetId;\n if (!Number.isFinite(assetId)) {\n const matched = url.match(/\\/([0-9]+)\\/tileset.json/);\n assetId = matched && matched[1];\n }\n return getIonTilesetMetadata(accessToken, assetId);\n}\n\n/**\n * Loader for 3D tiles from Cesium ION\n */\nexport const CesiumIonLoader: LoaderWithParser = {\n ...Tiles3DLoader,\n id: 'cesium-ion',\n name: 'Cesium Ion',\n // @ts-ignore\n preload,\n parse: async (data, options?, context?) => {\n options = {...options};\n options['3d-tiles'] = options['cesium-ion'];\n // @ts-ignore\n options.loader = CesiumIonLoader;\n return Tiles3DLoader.parse(data, options, context); // , loader);\n },\n options: {\n 'cesium-ion': {\n ...Tiles3DLoader.options['3d-tiles'],\n accessToken: null\n }\n }\n};\n"],"file":"cesium-ion-loader.js"}
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/index.ts"],"names":["Tiles3DLoader","CesiumIonLoader","Tile3DWriter","default","Tile3DFeatureTable","Tile3DBatchTable","TILE3D_TYPE","getIonTilesetMetadata","_getIonTilesetMetadata"],"mappings":"AACA,SAAQA,aAAR,QAA4B,mBAA5B;AACA,SAAQC,eAAR,QAA8B,qBAA9B;AAGA,SAAQC,YAAR,QAA2B,kBAA3B;AAGA,SAAQC,OAAO,IAAIC,kBAAnB,QAA4C,qCAA5C;AACA,SAAQD,OAAO,IAAIE,gBAAnB,QAA0C,mCAA1C;AAGA,SAAQC,WAAR,QAA0B,iBAA1B;AACA,SAAQC,qBAAqB,IAAIC,sBAAjC,QAA8D,eAA9D","sourcesContent":["// LOADERS\nexport {Tiles3DLoader} from './tiles-3d-loader';\nexport {CesiumIonLoader} from './cesium-ion-loader';\n\n// WRITERS\nexport {Tile3DWriter} from './tile-3d-writer';\n\n// CLASSES\nexport {default as Tile3DFeatureTable} from './lib/classes/tile-3d-feature-table';\nexport {default as Tile3DBatchTable} from './lib/classes/tile-3d-batch-table';\n\n// EXPERIMENTAL\nexport {TILE3D_TYPE} from './lib/constants';\nexport {getIonTilesetMetadata as _getIonTilesetMetadata} from './lib/ion/ion';\nexport type {BatchTableJson, B3DMContent, Node3D} from './types';\n"],"file":"index.js"}
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../src/lib/classes/helpers/tile-3d-accessor-utils.js"],"names":["GLType","assert","COMPONENTS_PER_ATTRIBUTE","SCALAR","VEC2","VEC3","VEC4","MAT2","MAT3","MAT4","UNPACKER","values","i","PACKER","x","createTypedArrayFromAccessor","tile3DAccessor","buffer","byteOffset","length","componentType","type","fromName","size","unpacker","packer","createTypedArray"],"mappings":"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","sourcesContent":["import {GLType} from '@loaders.gl/math'; // '@math.gl/geometry';\nimport {assert} from '@loaders.gl/loader-utils';\n\nconst COMPONENTS_PER_ATTRIBUTE = {\n SCALAR: 1,\n VEC2: 2,\n VEC3: 3,\n VEC4: 4,\n MAT2: 4,\n MAT3: 9,\n MAT4: 16\n};\n\n// TODO - could just return typed array views...\n// prettier-ignore\nconst UNPACKER = {\n SCALAR: (values, i) => values[i],\n VEC2: (values, i) => [values[2 * i + 0], values[2 * i + 1]],\n VEC3: (values, i) => [values[3 * i + 0], values[3 * i + 1], values[3 * i + 2]],\n VEC4: (values, i) => [values[4 * i + 0], values[4 * i + 1], values[4 * i + 2], values[4 * i + 3]],\n // TODO: check column major\n MAT2: (values, i) => [\n values[4 * i + 0], values[4 * i + 1],\n values[4 * i + 2], values[4 * i + 3]\n ],\n MAT3: (values, i) => [\n values[9 * i + 0], values[9 * i + 1], values[9 * i + 2],\n values[9 * i + 3], values[9 * i + 4], values[9 * i + 5],\n values[9 * i + 6], values[9 * i + 7], values[9 * i + 8]\n ],\n MAT4: (values, i) => [\n values[16 * i + 0], values[16 * i + 1], values[16 * i + 2], values[16 * i + 3],\n values[16 * i + 4], values[16 * i + 5], values[16 * i + 6], values[16 * i + 7],\n values[16 * i + 8], values[16 * i + 9], values[16 * i + 10], values[16 * i + 11],\n values[16 * i + 12], values[16 * i + 13], values[16 * i + 14], values[16 * i + 15]\n ]\n};\n\nconst PACKER = {\n SCALAR: (x, values, i) => {\n values[i] = x;\n },\n VEC2: (x, values, i) => {\n values[2 * i + 0] = x[0];\n values[2 * i + 1] = x[1];\n },\n VEC3: (x, values, i) => {\n values[3 * i + 0] = x[0];\n values[3 * i + 1] = x[1];\n values[3 * i + 2] = x[2];\n },\n VEC4: (x, values, i) => {\n values[4 * i + 0] = x[0];\n values[4 * i + 1] = x[1];\n values[4 * i + 2] = x[2];\n values[4 * i + 3] = x[3];\n },\n // TODO: check column major correctness\n MAT2: (x, values, i) => {\n values[4 * i + 0] = x[0];\n values[4 * i + 1] = x[1];\n values[4 * i + 2] = x[2];\n values[4 * i + 3] = x[3];\n },\n MAT3: (x, values, i) => {\n values[9 * i + 0] = x[0];\n values[9 * i + 1] = x[1];\n values[9 * i + 2] = x[2];\n values[9 * i + 3] = x[3];\n values[9 * i + 4] = x[4];\n values[9 * i + 5] = x[5];\n values[9 * i + 6] = x[6];\n values[9 * i + 7] = x[7];\n values[9 * i + 8] = x[8];\n values[9 * i + 9] = x[9];\n },\n MAT4: (x, values, i) => {\n values[16 * i + 0] = x[0];\n values[16 * i + 1] = x[1];\n values[16 * i + 2] = x[2];\n values[16 * i + 3] = x[3];\n values[16 * i + 4] = x[4];\n values[16 * i + 5] = x[5];\n values[16 * i + 6] = x[6];\n values[16 * i + 7] = x[7];\n values[16 * i + 8] = x[8];\n values[16 * i + 9] = x[9];\n values[16 * i + 10] = x[10];\n values[16 * i + 11] = x[11];\n values[16 * i + 12] = x[12];\n values[16 * i + 13] = x[13];\n values[16 * i + 14] = x[14];\n values[16 * i + 15] = x[15];\n }\n};\n\nexport function createTypedArrayFromAccessor(tile3DAccessor, buffer, byteOffset, length) {\n const {componentType} = tile3DAccessor;\n assert(tile3DAccessor.componentType);\n const type = typeof componentType === 'string' ? GLType.fromName(componentType) : componentType;\n const size = COMPONENTS_PER_ATTRIBUTE[tile3DAccessor.type];\n const unpacker = UNPACKER[tile3DAccessor.type];\n const packer = PACKER[tile3DAccessor.type];\n\n byteOffset += tile3DAccessor.byteOffset;\n const values = GLType.createTypedArray(type, buffer, byteOffset, size * length);\n\n return {\n values,\n type,\n size,\n unpacker,\n packer\n };\n}\n"],"file":"tile-3d-accessor-utils.js"}
|
|
@@ -196,7 +196,7 @@ function validateInstance(hierarchy, instanceIndex, stack) {
|
|
|
196
196
|
return;
|
|
197
197
|
}
|
|
198
198
|
|
|
199
|
-
assert(instanceIndex < instancesLength,
|
|
199
|
+
assert(instanceIndex < instancesLength, "Parent index ".concat(instanceIndex, " exceeds the total number of instances: ").concat(instancesLength));
|
|
200
200
|
assert(stack.indexOf(instanceIndex) === -1, 'Circular dependency detected in the batch table hierarchy.');
|
|
201
201
|
stack.push(instanceIndex);
|
|
202
202
|
const parentCount = defined(parentCounts) ? parentCounts[instanceIndex] : 1;
|