@loaders.gl/3d-tiles 3.3.0-alpha.4 → 3.3.0-alpha.6
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/dist.min.js +924 -1372
- package/dist/es5/bundle.js +0 -1
- package/dist/es5/bundle.js.map +1 -1
- package/dist/es5/cesium-ion-loader.js +7 -26
- package/dist/es5/cesium-ion-loader.js.map +1 -1
- package/dist/es5/index.js +14 -23
- package/dist/es5/index.js.map +1 -1
- package/dist/es5/lib/classes/helpers/tile-3d-accessor-utils.js +1 -5
- 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 +1 -40
- 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 -59
- package/dist/es5/lib/classes/tile-3d-batch-table.js.map +1 -1
- package/dist/es5/lib/classes/tile-3d-feature-table.js +4 -23
- package/dist/es5/lib/classes/tile-3d-feature-table.js.map +1 -1
- package/dist/es5/lib/constants.js +3 -1
- package/dist/es5/lib/constants.js.map +1 -1
- package/dist/es5/lib/encoders/encode-3d-tile-batched-model.js +7 -16
- package/dist/es5/lib/encoders/encode-3d-tile-batched-model.js.map +1 -1
- package/dist/es5/lib/encoders/encode-3d-tile-composite.js +2 -11
- package/dist/es5/lib/encoders/encode-3d-tile-composite.js.map +1 -1
- package/dist/es5/lib/encoders/encode-3d-tile-instanced-model.js +10 -17
- 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 +8 -16
- package/dist/es5/lib/encoders/encode-3d-tile-point-cloud.js.map +1 -1
- package/dist/es5/lib/encoders/encode-3d-tile.js +0 -12
- package/dist/es5/lib/encoders/encode-3d-tile.js.map +1 -1
- package/dist/es5/lib/encoders/helpers/encode-3d-tile-header.js +6 -9
- package/dist/es5/lib/encoders/helpers/encode-3d-tile-header.js.map +1 -1
- package/dist/es5/lib/ion/ion.js +5 -46
- package/dist/es5/lib/ion/ion.js.map +1 -1
- package/dist/es5/lib/parsers/helpers/normalize-3d-tile-colors.js +2 -11
- 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 +0 -8
- 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 +0 -5
- package/dist/es5/lib/parsers/helpers/normalize-3d-tile-positions.js.map +1 -1
- package/dist/es5/lib/parsers/helpers/parse-3d-implicit-tiles.js +17 -51
- package/dist/es5/lib/parsers/helpers/parse-3d-implicit-tiles.js.map +1 -1
- package/dist/es5/lib/parsers/helpers/parse-3d-tile-gltf-view.js +6 -25
- 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 +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 +0 -38
- package/dist/es5/lib/parsers/helpers/parse-3d-tile-subtree.js.map +1 -1
- package/dist/es5/lib/parsers/helpers/parse-3d-tile-tables.js +6 -14
- package/dist/es5/lib/parsers/helpers/parse-3d-tile-tables.js.map +1 -1
- package/dist/es5/lib/parsers/helpers/parse-utils.js +1 -3
- package/dist/es5/lib/parsers/helpers/parse-utils.js.map +1 -1
- package/dist/es5/lib/parsers/parse-3d-tile-batched-model.js +0 -16
- package/dist/es5/lib/parsers/parse-3d-tile-batched-model.js.map +1 -1
- package/dist/es5/lib/parsers/parse-3d-tile-composite.js +1 -11
- package/dist/es5/lib/parsers/parse-3d-tile-composite.js.map +1 -1
- package/dist/es5/lib/parsers/parse-3d-tile-gltf.js +0 -8
- package/dist/es5/lib/parsers/parse-3d-tile-gltf.js.map +1 -1
- package/dist/es5/lib/parsers/parse-3d-tile-header.js +2 -70
- package/dist/es5/lib/parsers/parse-3d-tile-header.js.map +1 -1
- package/dist/es5/lib/parsers/parse-3d-tile-instanced-model.js +5 -41
- 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 +4 -71
- package/dist/es5/lib/parsers/parse-3d-tile-point-cloud.js.map +1 -1
- package/dist/es5/lib/parsers/parse-3d-tile.js +5 -28
- 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 +0 -4
- package/dist/es5/tile-3d-subtree-loader.js.map +1 -1
- package/dist/es5/tile-3d-writer.js +0 -6
- package/dist/es5/tile-3d-writer.js.map +1 -1
- package/dist/es5/tiles-3d-loader.js +0 -29
- package/dist/es5/tiles-3d-loader.js.map +1 -1
- package/dist/es5/types.js.map +1 -1
- package/dist/esm/bundle.js +1 -1
- package/dist/esm/bundle.js.map +1 -1
- package/dist/esm/cesium-ion-loader.js +9 -7
- package/dist/esm/cesium-ion-loader.js.map +1 -1
- package/dist/esm/index.js +4 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/lib/classes/helpers/tile-3d-accessor-utils.js +1 -0
- 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 +3 -40
- package/dist/esm/lib/classes/tile-3d-batch-table-hierarchy.js.map +1 -1
- package/dist/esm/lib/classes/tile-3d-batch-table.js +7 -67
- package/dist/esm/lib/classes/tile-3d-batch-table.js.map +1 -1
- package/dist/esm/lib/classes/tile-3d-feature-table.js +5 -26
- package/dist/esm/lib/classes/tile-3d-feature-table.js.map +1 -1
- package/dist/esm/lib/constants.js +3 -0
- package/dist/esm/lib/constants.js.map +1 -1
- package/dist/esm/lib/encoders/encode-3d-tile-batched-model.js +5 -3
- package/dist/esm/lib/encoders/encode-3d-tile-batched-model.js.map +1 -1
- package/dist/esm/lib/encoders/encode-3d-tile-composite.js +2 -2
- package/dist/esm/lib/encoders/encode-3d-tile-composite.js.map +1 -1
- package/dist/esm/lib/encoders/encode-3d-tile-instanced-model.js +5 -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 +4 -1
- package/dist/esm/lib/encoders/encode-3d-tile-point-cloud.js.map +1 -1
- package/dist/esm/lib/encoders/encode-3d-tile.js +2 -6
- package/dist/esm/lib/encoders/encode-3d-tile.js.map +1 -1
- package/dist/esm/lib/encoders/helpers/encode-3d-tile-header.js +3 -3
- package/dist/esm/lib/encoders/helpers/encode-3d-tile-header.js.map +1 -1
- package/dist/esm/lib/ion/ion.js +10 -8
- package/dist/esm/lib/ion/ion.js.map +1 -1
- package/dist/esm/lib/parsers/helpers/normalize-3d-tile-colors.js +1 -6
- 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 +0 -4
- 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 +1 -2
- package/dist/esm/lib/parsers/helpers/normalize-3d-tile-positions.js.map +1 -1
- package/dist/esm/lib/parsers/helpers/parse-3d-implicit-tiles.js +2 -16
- package/dist/esm/lib/parsers/helpers/parse-3d-implicit-tiles.js.map +1 -1
- package/dist/esm/lib/parsers/helpers/parse-3d-tile-gltf-view.js +6 -9
- 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 +5 -2
- 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 +1 -13
- package/dist/esm/lib/parsers/helpers/parse-3d-tile-subtree.js.map +1 -1
- package/dist/esm/lib/parsers/helpers/parse-3d-tile-tables.js +4 -7
- package/dist/esm/lib/parsers/helpers/parse-3d-tile-tables.js.map +1 -1
- package/dist/esm/lib/parsers/helpers/parse-utils.js +6 -1
- package/dist/esm/lib/parsers/helpers/parse-utils.js.map +1 -1
- package/dist/esm/lib/parsers/parse-3d-tile-batched-model.js +3 -4
- package/dist/esm/lib/parsers/parse-3d-tile-batched-model.js.map +1 -1
- package/dist/esm/lib/parsers/parse-3d-tile-composite.js +5 -1
- package/dist/esm/lib/parsers/parse-3d-tile-composite.js.map +1 -1
- package/dist/esm/lib/parsers/parse-3d-tile-gltf.js.map +1 -1
- package/dist/esm/lib/parsers/parse-3d-tile-header.js +3 -26
- package/dist/esm/lib/parsers/parse-3d-tile-header.js.map +1 -1
- package/dist/esm/lib/parsers/parse-3d-tile-instanced-model.js +7 -25
- 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 +9 -37
- package/dist/esm/lib/parsers/parse-3d-tile-point-cloud.js.map +1 -1
- package/dist/esm/lib/parsers/parse-3d-tile.js +8 -6
- package/dist/esm/lib/parsers/parse-3d-tile.js.map +1 -1
- package/dist/esm/lib/utils/version.js +2 -1
- package/dist/esm/lib/utils/version.js.map +1 -1
- package/dist/esm/tile-3d-subtree-loader.js +1 -0
- package/dist/esm/tile-3d-subtree-loader.js.map +1 -1
- package/dist/esm/tile-3d-writer.js +1 -1
- package/dist/esm/tile-3d-writer.js.map +1 -1
- package/dist/esm/tiles-3d-loader.js +1 -8
- package/dist/esm/tiles-3d-loader.js.map +1 -1
- package/dist/esm/types.js.map +1 -1
- package/dist/lib/classes/helpers/tile-3d-accessor-utils.d.ts +1 -1
- package/dist/lib/classes/tile-3d-batch-table.d.ts +1 -1
- package/package.json +7 -7
|
@@ -1,51 +1,32 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
4
|
Object.defineProperty(exports, "__esModule", {
|
|
6
5
|
value: true
|
|
7
6
|
});
|
|
8
|
-
exports.parsePointCloud3DTile = parsePointCloud3DTile;
|
|
9
7
|
exports.loadDraco = loadDraco;
|
|
10
|
-
|
|
8
|
+
exports.parsePointCloud3DTile = parsePointCloud3DTile;
|
|
11
9
|
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
12
|
-
|
|
13
10
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
14
|
-
|
|
15
11
|
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
16
|
-
|
|
17
12
|
var _draco = require("@loaders.gl/draco");
|
|
18
|
-
|
|
19
13
|
var _math = require("@loaders.gl/math");
|
|
20
|
-
|
|
21
14
|
var _core = require("@math.gl/core");
|
|
22
|
-
|
|
23
15
|
var _tile3dFeatureTable = _interopRequireDefault(require("../classes/tile-3d-feature-table"));
|
|
24
|
-
|
|
25
16
|
var _tile3dBatchTable = _interopRequireDefault(require("../classes/tile-3d-batch-table"));
|
|
26
|
-
|
|
27
17
|
var _parse3dTileHeader = require("./helpers/parse-3d-tile-header");
|
|
28
|
-
|
|
29
18
|
var _parse3dTileTables = require("./helpers/parse-3d-tile-tables");
|
|
30
|
-
|
|
31
19
|
var _normalize3dTileColors = require("./helpers/normalize-3d-tile-colors");
|
|
32
|
-
|
|
33
20
|
var _normalize3dTileNormals = require("./helpers/normalize-3d-tile-normals");
|
|
34
|
-
|
|
35
21
|
var _normalize3dTilePositions = require("./helpers/normalize-3d-tile-positions");
|
|
36
|
-
|
|
37
|
-
function
|
|
38
|
-
|
|
39
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
40
|
-
|
|
22
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
23
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
41
24
|
function parsePointCloud3DTile(_x, _x2, _x3, _x4, _x5) {
|
|
42
25
|
return _parsePointCloud3DTile.apply(this, arguments);
|
|
43
26
|
}
|
|
44
|
-
|
|
45
27
|
function _parsePointCloud3DTile() {
|
|
46
28
|
_parsePointCloud3DTile = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee(tile, arrayBuffer, byteOffset, options, context) {
|
|
47
29
|
var _parsePointCloudTable, featureTable, batchTable;
|
|
48
|
-
|
|
49
30
|
return _regenerator.default.wrap(function _callee$(_context) {
|
|
50
31
|
while (1) {
|
|
51
32
|
switch (_context.prev = _context.next) {
|
|
@@ -57,13 +38,11 @@ function _parsePointCloud3DTile() {
|
|
|
57
38
|
_parsePointCloudTable = parsePointCloudTables(tile), featureTable = _parsePointCloudTable.featureTable, batchTable = _parsePointCloudTable.batchTable;
|
|
58
39
|
_context.next = 7;
|
|
59
40
|
return parseDraco(tile, featureTable, batchTable, options, context);
|
|
60
|
-
|
|
61
41
|
case 7:
|
|
62
42
|
parsePositions(tile, featureTable, options);
|
|
63
43
|
parseColors(tile, featureTable, batchTable);
|
|
64
44
|
parseNormals(tile, featureTable);
|
|
65
45
|
return _context.abrupt("return", byteOffset);
|
|
66
|
-
|
|
67
46
|
case 11:
|
|
68
47
|
case "end":
|
|
69
48
|
return _context.stop();
|
|
@@ -73,7 +52,6 @@ function _parsePointCloud3DTile() {
|
|
|
73
52
|
}));
|
|
74
53
|
return _parsePointCloud3DTile.apply(this, arguments);
|
|
75
54
|
}
|
|
76
|
-
|
|
77
55
|
function initializeTile(tile) {
|
|
78
56
|
tile.attributes = {
|
|
79
57
|
positions: null,
|
|
@@ -86,15 +64,12 @@ function initializeTile(tile) {
|
|
|
86
64
|
tile.isRGB565 = false;
|
|
87
65
|
tile.isOctEncoded16P = false;
|
|
88
66
|
}
|
|
89
|
-
|
|
90
67
|
function parsePointCloudTables(tile) {
|
|
91
68
|
var featureTable = new _tile3dFeatureTable.default(tile.featureTableJson, tile.featureTableBinary);
|
|
92
69
|
var pointsLength = featureTable.getGlobalProperty('POINTS_LENGTH');
|
|
93
|
-
|
|
94
70
|
if (!Number.isFinite(pointsLength)) {
|
|
95
71
|
throw new Error('POINTS_LENGTH must be defined');
|
|
96
72
|
}
|
|
97
|
-
|
|
98
73
|
featureTable.featuresLength = pointsLength;
|
|
99
74
|
tile.featuresLength = pointsLength;
|
|
100
75
|
tile.pointsLength = pointsLength;
|
|
@@ -106,7 +81,6 @@ function parsePointCloudTables(tile) {
|
|
|
106
81
|
batchTable: batchTable
|
|
107
82
|
};
|
|
108
83
|
}
|
|
109
|
-
|
|
110
84
|
function parsePositions(tile, featureTable, options) {
|
|
111
85
|
if (!tile.attributes.positions) {
|
|
112
86
|
if (featureTable.hasProperty('POSITION')) {
|
|
@@ -116,30 +90,23 @@ function parsePositions(tile, featureTable, options) {
|
|
|
116
90
|
tile.isQuantized = true;
|
|
117
91
|
tile.quantizedRange = (1 << 16) - 1;
|
|
118
92
|
tile.quantizedVolumeScale = featureTable.getGlobalProperty('QUANTIZED_VOLUME_SCALE', _math.GL.FLOAT, 3);
|
|
119
|
-
|
|
120
93
|
if (!tile.quantizedVolumeScale) {
|
|
121
94
|
throw new Error('QUANTIZED_VOLUME_SCALE must be defined for quantized positions.');
|
|
122
95
|
}
|
|
123
|
-
|
|
124
96
|
tile.quantizedVolumeOffset = featureTable.getGlobalProperty('QUANTIZED_VOLUME_OFFSET', _math.GL.FLOAT, 3);
|
|
125
|
-
|
|
126
97
|
if (!tile.quantizedVolumeOffset) {
|
|
127
98
|
throw new Error('QUANTIZED_VOLUME_OFFSET must be defined for quantized positions.');
|
|
128
99
|
}
|
|
129
|
-
|
|
130
100
|
tile.attributes.positions = (0, _normalize3dTilePositions.normalize3DTilePositionAttribute)(tile, positions, options);
|
|
131
101
|
}
|
|
132
102
|
}
|
|
133
|
-
|
|
134
103
|
if (!tile.attributes.positions) {
|
|
135
104
|
throw new Error('Either POSITION or POSITION_QUANTIZED must be defined.');
|
|
136
105
|
}
|
|
137
106
|
}
|
|
138
|
-
|
|
139
107
|
function parseColors(tile, featureTable, batchTable) {
|
|
140
108
|
if (!tile.attributes.colors) {
|
|
141
109
|
var colors = null;
|
|
142
|
-
|
|
143
110
|
if (featureTable.hasProperty('RGBA')) {
|
|
144
111
|
colors = featureTable.getPropertyArray('RGBA', _math.GL.UNSIGNED_BYTE, 4);
|
|
145
112
|
tile.isTranslucent = true;
|
|
@@ -149,56 +116,44 @@ function parseColors(tile, featureTable, batchTable) {
|
|
|
149
116
|
colors = featureTable.getPropertyArray('RGB565', _math.GL.UNSIGNED_SHORT, 1);
|
|
150
117
|
tile.isRGB565 = true;
|
|
151
118
|
}
|
|
152
|
-
|
|
153
119
|
tile.attributes.colors = (0, _normalize3dTileColors.normalize3DTileColorAttribute)(tile, colors, batchTable);
|
|
154
120
|
}
|
|
155
|
-
|
|
156
121
|
if (featureTable.hasProperty('CONSTANT_RGBA')) {
|
|
157
122
|
tile.constantRGBA = featureTable.getGlobalProperty('CONSTANT_RGBA', _math.GL.UNSIGNED_BYTE, 4);
|
|
158
123
|
}
|
|
159
124
|
}
|
|
160
|
-
|
|
161
125
|
function parseNormals(tile, featureTable) {
|
|
162
126
|
if (!tile.attributes.normals) {
|
|
163
127
|
var normals = null;
|
|
164
|
-
|
|
165
128
|
if (featureTable.hasProperty('NORMAL')) {
|
|
166
129
|
normals = featureTable.getPropertyArray('NORMAL', _math.GL.FLOAT, 3);
|
|
167
130
|
} else if (featureTable.hasProperty('NORMAL_OCT16P')) {
|
|
168
131
|
normals = featureTable.getPropertyArray('NORMAL_OCT16P', _math.GL.UNSIGNED_BYTE, 2);
|
|
169
132
|
tile.isOctEncoded16P = true;
|
|
170
133
|
}
|
|
171
|
-
|
|
172
134
|
tile.attributes.normals = (0, _normalize3dTileNormals.normalize3DTileNormalAttribute)(tile, normals);
|
|
173
135
|
}
|
|
174
136
|
}
|
|
175
|
-
|
|
176
137
|
function parseBatchIds(tile, featureTable) {
|
|
177
138
|
var batchTable = null;
|
|
178
|
-
|
|
179
139
|
if (!tile.batchIds && featureTable.hasProperty('BATCH_ID')) {
|
|
180
140
|
tile.batchIds = featureTable.getPropertyArray('BATCH_ID', _math.GL.UNSIGNED_SHORT, 1);
|
|
181
|
-
|
|
182
141
|
if (tile.batchIds) {
|
|
183
142
|
var batchFeatureLength = featureTable.getGlobalProperty('BATCH_LENGTH');
|
|
184
|
-
|
|
185
143
|
if (!batchFeatureLength) {
|
|
186
144
|
throw new Error('Global property: BATCH_LENGTH must be defined when BATCH_ID is defined.');
|
|
187
145
|
}
|
|
188
|
-
|
|
189
146
|
var batchTableJson = tile.batchTableJson,
|
|
190
|
-
|
|
147
|
+
batchTableBinary = tile.batchTableBinary;
|
|
191
148
|
batchTable = new _tile3dBatchTable.default(batchTableJson, batchTableBinary, batchFeatureLength);
|
|
192
149
|
}
|
|
193
150
|
}
|
|
194
|
-
|
|
195
151
|
return batchTable;
|
|
196
152
|
}
|
|
197
153
|
|
|
198
154
|
function parseDraco(_x6, _x7, _x8, _x9, _x10) {
|
|
199
155
|
return _parseDraco.apply(this, arguments);
|
|
200
156
|
}
|
|
201
|
-
|
|
202
157
|
function _parseDraco() {
|
|
203
158
|
_parseDraco = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee2(tile, featureTable, batchTable, options, context) {
|
|
204
159
|
var dracoBuffer, dracoFeatureTableProperties, dracoBatchTableProperties, batchTableDraco, featureTableDraco, dracoByteOffset, dracoByteLength, dracoData;
|
|
@@ -207,29 +162,22 @@ function _parseDraco() {
|
|
|
207
162
|
switch (_context2.prev = _context2.next) {
|
|
208
163
|
case 0:
|
|
209
164
|
batchTableDraco = tile.batchTableJson && tile.batchTableJson.extensions && tile.batchTableJson.extensions['3DTILES_draco_point_compression'];
|
|
210
|
-
|
|
211
165
|
if (batchTableDraco) {
|
|
212
166
|
dracoBatchTableProperties = batchTableDraco.properties;
|
|
213
167
|
}
|
|
214
|
-
|
|
215
168
|
featureTableDraco = featureTable.getExtension('3DTILES_draco_point_compression');
|
|
216
|
-
|
|
217
169
|
if (!featureTableDraco) {
|
|
218
170
|
_context2.next = 15;
|
|
219
171
|
break;
|
|
220
172
|
}
|
|
221
|
-
|
|
222
173
|
dracoFeatureTableProperties = featureTableDraco.properties;
|
|
223
174
|
dracoByteOffset = featureTableDraco.byteOffset;
|
|
224
175
|
dracoByteLength = featureTableDraco.byteLength;
|
|
225
|
-
|
|
226
176
|
if (!(!dracoFeatureTableProperties || !Number.isFinite(dracoByteOffset) || !dracoByteLength)) {
|
|
227
177
|
_context2.next = 9;
|
|
228
178
|
break;
|
|
229
179
|
}
|
|
230
|
-
|
|
231
180
|
throw new Error('Draco properties, byteOffset, and byteLength must be defined');
|
|
232
|
-
|
|
233
181
|
case 9:
|
|
234
182
|
dracoBuffer = tile.featureTableBinary.slice(dracoByteOffset, dracoByteOffset + dracoByteLength);
|
|
235
183
|
tile.hasPositions = Number.isFinite(dracoFeatureTableProperties.POSITION);
|
|
@@ -237,15 +185,12 @@ function _parseDraco() {
|
|
|
237
185
|
tile.hasNormals = Number.isFinite(dracoFeatureTableProperties.NORMAL);
|
|
238
186
|
tile.hasBatchIds = Number.isFinite(dracoFeatureTableProperties.BATCH_ID);
|
|
239
187
|
tile.isTranslucent = Number.isFinite(dracoFeatureTableProperties.RGBA);
|
|
240
|
-
|
|
241
188
|
case 15:
|
|
242
189
|
if (dracoBuffer) {
|
|
243
190
|
_context2.next = 17;
|
|
244
191
|
break;
|
|
245
192
|
}
|
|
246
|
-
|
|
247
193
|
return _context2.abrupt("return", true);
|
|
248
|
-
|
|
249
194
|
case 17:
|
|
250
195
|
dracoData = {
|
|
251
196
|
buffer: dracoBuffer,
|
|
@@ -256,10 +201,8 @@ function _parseDraco() {
|
|
|
256
201
|
};
|
|
257
202
|
_context2.next = 20;
|
|
258
203
|
return loadDraco(tile, dracoData, options, context);
|
|
259
|
-
|
|
260
204
|
case 20:
|
|
261
205
|
return _context2.abrupt("return", _context2.sent);
|
|
262
|
-
|
|
263
206
|
case 21:
|
|
264
207
|
case "end":
|
|
265
208
|
return _context2.stop();
|
|
@@ -269,15 +212,12 @@ function _parseDraco() {
|
|
|
269
212
|
}));
|
|
270
213
|
return _parseDraco.apply(this, arguments);
|
|
271
214
|
}
|
|
272
|
-
|
|
273
215
|
function loadDraco(_x11, _x12, _x13, _x14) {
|
|
274
216
|
return _loadDraco.apply(this, arguments);
|
|
275
217
|
}
|
|
276
|
-
|
|
277
218
|
function _loadDraco() {
|
|
278
219
|
_loadDraco = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee3(tile, dracoData, options, context) {
|
|
279
220
|
var parse, dracoOptions, data, decodedPositions, decodedColors, decodedNormals, decodedBatchIds, isQuantizedDraco, isOctEncodedDraco, quantization, range, batchTableAttributes, _i, _Object$keys, attributeName;
|
|
280
|
-
|
|
281
221
|
return _regenerator.default.wrap(function _callee3$(_context3) {
|
|
282
222
|
while (1) {
|
|
283
223
|
switch (_context3.prev = _context3.next) {
|
|
@@ -291,7 +231,6 @@ function _loadDraco() {
|
|
|
291
231
|
delete dracoOptions['3d-tiles'];
|
|
292
232
|
_context3.next = 5;
|
|
293
233
|
return parse(dracoData.buffer, _draco.DracoLoader, dracoOptions);
|
|
294
|
-
|
|
295
234
|
case 5:
|
|
296
235
|
data = _context3.sent;
|
|
297
236
|
decodedPositions = data.attributes.POSITION && data.attributes.POSITION.value;
|
|
@@ -300,7 +239,6 @@ function _loadDraco() {
|
|
|
300
239
|
decodedBatchIds = data.attributes.BATCH_ID && data.attributes.BATCH_ID.value;
|
|
301
240
|
isQuantizedDraco = decodedPositions && data.attributes.POSITION.value.quantization;
|
|
302
241
|
isOctEncodedDraco = decodedNormals && data.attributes.NORMAL.value.quantization;
|
|
303
|
-
|
|
304
242
|
if (isQuantizedDraco) {
|
|
305
243
|
quantization = data.POSITION.data.quantization;
|
|
306
244
|
range = quantization.range;
|
|
@@ -309,31 +247,26 @@ function _loadDraco() {
|
|
|
309
247
|
tile.quantizedRange = (1 << quantization.quantizationBits) - 1.0;
|
|
310
248
|
tile.isQuantizedDraco = true;
|
|
311
249
|
}
|
|
312
|
-
|
|
313
250
|
if (isOctEncodedDraco) {
|
|
314
251
|
tile.octEncodedRange = (1 << data.NORMAL.data.quantization.quantizationBits) - 1.0;
|
|
315
252
|
tile.isOctEncodedDraco = true;
|
|
316
253
|
}
|
|
317
254
|
|
|
318
255
|
batchTableAttributes = {};
|
|
319
|
-
|
|
320
256
|
if (dracoData.batchTableProperties) {
|
|
321
257
|
for (_i = 0, _Object$keys = Object.keys(dracoData.batchTableProperties); _i < _Object$keys.length; _i++) {
|
|
322
258
|
attributeName = _Object$keys[_i];
|
|
323
|
-
|
|
324
259
|
if (data.attributes[attributeName] && data.attributes[attributeName].value) {
|
|
325
260
|
batchTableAttributes[attributeName.toLowerCase()] = data.attributes[attributeName].value;
|
|
326
261
|
}
|
|
327
262
|
}
|
|
328
263
|
}
|
|
329
|
-
|
|
330
264
|
tile.attributes = _objectSpread({
|
|
331
265
|
positions: decodedPositions,
|
|
332
266
|
colors: (0, _normalize3dTileColors.normalize3DTileColorAttribute)(tile, decodedColors, undefined),
|
|
333
267
|
normals: decodedNormals,
|
|
334
268
|
batchIds: decodedBatchIds
|
|
335
269
|
}, batchTableAttributes);
|
|
336
|
-
|
|
337
270
|
case 17:
|
|
338
271
|
case "end":
|
|
339
272
|
return _context3.stop();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/lib/parsers/parse-3d-tile-point-cloud.ts"],"names":["parsePointCloud3DTile","tile","arrayBuffer","byteOffset","options","context","initializeTile","parsePointCloudTables","featureTable","batchTable","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","batchTableDraco","extensions","dracoBatchTableProperties","properties","featureTableDraco","getExtension","dracoFeatureTableProperties","dracoByteOffset","dracoByteLength","byteLength","dracoBuffer","slice","hasPositions","POSITION","hasColors","RGB","RGBA","hasNormals","NORMAL","hasBatchIds","BATCH_ID","dracoData","buffer","featureTableProperties","batchTableProperties","dequantizeInShader","loadDraco","parse","dracoOptions","draco","extraAttributes","DracoLoader","data","decodedPositions","value","decodedColors","COLOR_0","decodedNormals","decodedBatchIds","isQuantizedDraco","quantization","isOctEncodedDraco","range","Vector3","minValues","quantizationBits","octEncodedRange","batchTableAttributes","Object","keys","attributeName","toLowerCase","undefined"],"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: Tile3DBatchTable | null = 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, undefined),\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"}
|
|
1
|
+
{"version":3,"file":"parse-3d-tile-point-cloud.js","names":["parsePointCloud3DTile","tile","arrayBuffer","byteOffset","options","context","parse3DTileHeaderSync","parse3DTileTablesHeaderSync","parse3DTileTablesSync","initializeTile","parsePointCloudTables","featureTable","batchTable","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","normalize3DTilePositionAttribute","UNSIGNED_BYTE","normalize3DTileColorAttribute","constantRGBA","normalize3DTileNormalAttribute","batchFeatureLength","batchTableJson","batchTableBinary","Tile3DBatchTable","batchTableDraco","extensions","dracoBatchTableProperties","properties","featureTableDraco","getExtension","dracoFeatureTableProperties","dracoByteOffset","dracoByteLength","byteLength","dracoBuffer","slice","hasPositions","POSITION","hasColors","RGB","RGBA","hasNormals","NORMAL","hasBatchIds","BATCH_ID","dracoData","buffer","featureTableProperties","batchTableProperties","dequantizeInShader","loadDraco","parse","dracoOptions","draco","extraAttributes","DracoLoader","data","decodedPositions","value","decodedColors","COLOR_0","decodedNormals","decodedBatchIds","isQuantizedDraco","quantization","isOctEncodedDraco","range","Vector3","minValues","quantizationBits","octEncodedRange","batchTableAttributes","Object","keys","attributeName","toLowerCase","undefined"],"sources":["../../../../src/lib/parsers/parse-3d-tile-point-cloud.ts"],"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: Tile3DBatchTable | null = 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, undefined),\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"],"mappings":";;;;;;;;;;;AAGA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAuF;AAAA;AAAA,SAEjEA,qBAAqB;EAAA;AAAA;AAAA;EAAA,mFAApC,iBAAqCC,IAAI,EAAEC,WAAW,EAAEC,UAAU,EAAEC,OAAO,EAAEC,OAAO;IAAA;IAAA;MAAA;QAAA;UAAA;YACzFF,UAAU,GAAG,IAAAG,wCAAqB,EAACL,IAAI,EAAEC,WAAW,EAAEC,UAAU,CAAC;YACjEA,UAAU,GAAG,IAAAI,8CAA2B,EAACN,IAAI,EAAEC,WAAW,EAAEC,UAAU,CAAC;YACvEA,UAAU,GAAG,IAAAK,wCAAqB,EAACP,IAAI,EAAEC,WAAW,EAAEC,UAAU,EAAEC,OAAO,CAAC;YAC1EK,cAAc,CAACR,IAAI,CAAC;YAAC,wBAEcS,qBAAqB,CAACT,IAAI,CAAC,EAAvDU,YAAY,yBAAZA,YAAY,EAAEC,UAAU,yBAAVA,UAAU;YAAA;YAAA,OAEzBC,UAAU,CAACZ,IAAI,EAAEU,YAAY,EAAEC,UAAU,EAAER,OAAO,EAAEC,OAAO,CAAC;UAAA;YAElES,cAAc,CAACb,IAAI,EAAEU,YAAY,EAAEP,OAAO,CAAC;YAC3CW,WAAW,CAACd,IAAI,EAAEU,YAAY,EAAEC,UAAU,CAAC;YAC3CI,YAAY,CAACf,IAAI,EAAEU,YAAY,CAAC;YAAC,iCAE1BR,UAAU;UAAA;UAAA;YAAA;QAAA;MAAA;IAAA;EAAA,CAClB;EAAA;AAAA;AAED,SAASM,cAAc,CAACR,IAAI,EAAE;EAE5BA,IAAI,CAACgB,UAAU,GAAG;IAChBC,SAAS,EAAE,IAAI;IACfC,MAAM,EAAE,IAAI;IACZC,OAAO,EAAE,IAAI;IACbC,QAAQ,EAAE;EACZ,CAAC;EACDpB,IAAI,CAACqB,WAAW,GAAG,KAAK;EACxBrB,IAAI,CAACsB,aAAa,GAAG,KAAK;EAC1BtB,IAAI,CAACuB,QAAQ,GAAG,KAAK;EACrBvB,IAAI,CAACwB,eAAe,GAAG,KAAK;AAC9B;AAEA,SAASf,qBAAqB,CAACT,IAAI,EAAE;EACnC,IAAMU,YAAY,GAAG,IAAIe,2BAAkB,CAACzB,IAAI,CAAC0B,gBAAgB,EAAE1B,IAAI,CAAC2B,kBAAkB,CAAC;EAE3F,IAAMC,YAAY,GAAGlB,YAAY,CAACmB,iBAAiB,CAAC,eAAe,CAAC;EACpE,IAAI,CAACC,MAAM,CAACC,QAAQ,CAACH,YAAY,CAAC,EAAE;IAClC,MAAM,IAAII,KAAK,CAAC,+BAA+B,CAAC;EAClD;EACAtB,YAAY,CAACuB,cAAc,GAAGL,YAAY;EAE1C5B,IAAI,CAACiC,cAAc,GAAGL,YAAY;EAClC5B,IAAI,CAAC4B,YAAY,GAAGA,YAAY;EAChC5B,IAAI,CAACkC,UAAU,GAAGN,YAAY;EAE9B5B,IAAI,CAACmC,SAAS,GAAGzB,YAAY,CAACmB,iBAAiB,CAAC,YAAY,EAAEO,QAAE,CAACC,KAAK,EAAE,CAAC,CAAC;EAE1E,IAAM1B,UAAU,GAAG2B,aAAa,CAACtC,IAAI,EAAEU,YAAY,CAAC;EAEpD,OAAO;IAACA,YAAY,EAAZA,YAAY;IAAEC,UAAU,EAAVA;EAAU,CAAC;AACnC;AAEA,SAASE,cAAc,CAACb,IAAI,EAAEU,YAAY,EAAEP,OAAO,EAAE;EACnD,IAAI,CAACH,IAAI,CAACgB,UAAU,CAACC,SAAS,EAAE;IAC9B,IAAIP,YAAY,CAAC6B,WAAW,CAAC,UAAU,CAAC,EAAE;MACxCvC,IAAI,CAACgB,UAAU,CAACC,SAAS,GAAGP,YAAY,CAAC8B,gBAAgB,CAAC,UAAU,EAAEJ,QAAE,CAACC,KAAK,EAAE,CAAC,CAAC;IACpF,CAAC,MAAM,IAAI3B,YAAY,CAAC6B,WAAW,CAAC,oBAAoB,CAAC,EAAE;MACzD,IAAMtB,SAAS,GAAGP,YAAY,CAAC8B,gBAAgB,CAAC,oBAAoB,EAAEJ,QAAE,CAACK,cAAc,EAAE,CAAC,CAAC;MAE3FzC,IAAI,CAACqB,WAAW,GAAG,IAAI;MACvBrB,IAAI,CAAC0C,cAAc,GAAG,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC;MAEnC1C,IAAI,CAAC2C,oBAAoB,GAAGjC,YAAY,CAACmB,iBAAiB,CACxD,wBAAwB,EACxBO,QAAE,CAACC,KAAK,EACR,CAAC,CACF;MACD,IAAI,CAACrC,IAAI,CAAC2C,oBAAoB,EAAE;QAC9B,MAAM,IAAIX,KAAK,CAAC,iEAAiE,CAAC;MACpF;MAEAhC,IAAI,CAAC4C,qBAAqB,GAAGlC,YAAY,CAACmB,iBAAiB,CACzD,yBAAyB,EACzBO,QAAE,CAACC,KAAK,EACR,CAAC,CACF;MACD,IAAI,CAACrC,IAAI,CAAC4C,qBAAqB,EAAE;QAC/B,MAAM,IAAIZ,KAAK,CAAC,kEAAkE,CAAC;MACrF;MAEAhC,IAAI,CAACgB,UAAU,CAACC,SAAS,GAAG,IAAA4B,0DAAgC,EAAC7C,IAAI,EAAEiB,SAAS,EAAEd,OAAO,CAAC;IACxF;EACF;EAEA,IAAI,CAACH,IAAI,CAACgB,UAAU,CAACC,SAAS,EAAE;IAC9B,MAAM,IAAIe,KAAK,CAAC,wDAAwD,CAAC;EAC3E;AACF;AAEA,SAASlB,WAAW,CAACd,IAAI,EAAEU,YAAY,EAAEC,UAAU,EAAE;EACnD,IAAI,CAACX,IAAI,CAACgB,UAAU,CAACE,MAAM,EAAE;IAC3B,IAAIA,MAAM,GAAG,IAAI;IACjB,IAAIR,YAAY,CAAC6B,WAAW,CAAC,MAAM,CAAC,EAAE;MACpCrB,MAAM,GAAGR,YAAY,CAAC8B,gBAAgB,CAAC,MAAM,EAAEJ,QAAE,CAACU,aAAa,EAAE,CAAC,CAAC;MACnE9C,IAAI,CAACsB,aAAa,GAAG,IAAI;IAC3B,CAAC,MAAM,IAAIZ,YAAY,CAAC6B,WAAW,CAAC,KAAK,CAAC,EAAE;MAC1CrB,MAAM,GAAGR,YAAY,CAAC8B,gBAAgB,CAAC,KAAK,EAAEJ,QAAE,CAACU,aAAa,EAAE,CAAC,CAAC;IACpE,CAAC,MAAM,IAAIpC,YAAY,CAAC6B,WAAW,CAAC,QAAQ,CAAC,EAAE;MAC7CrB,MAAM,GAAGR,YAAY,CAAC8B,gBAAgB,CAAC,QAAQ,EAAEJ,QAAE,CAACK,cAAc,EAAE,CAAC,CAAC;MACtEzC,IAAI,CAACuB,QAAQ,GAAG,IAAI;IACtB;IAEAvB,IAAI,CAACgB,UAAU,CAACE,MAAM,GAAG,IAAA6B,oDAA6B,EAAC/C,IAAI,EAAEkB,MAAM,EAAEP,UAAU,CAAC;EAClF;EAEA,IAAID,YAAY,CAAC6B,WAAW,CAAC,eAAe,CAAC,EAAE;IAC7CvC,IAAI,CAACgD,YAAY,GAAGtC,YAAY,CAACmB,iBAAiB,CAAC,eAAe,EAAEO,QAAE,CAACU,aAAa,EAAE,CAAC,CAAC;EAC1F;AACF;AAEA,SAAS/B,YAAY,CAACf,IAAI,EAAEU,YAAY,EAAE;EACxC,IAAI,CAACV,IAAI,CAACgB,UAAU,CAACG,OAAO,EAAE;IAC5B,IAAIA,OAAO,GAAG,IAAI;IAClB,IAAIT,YAAY,CAAC6B,WAAW,CAAC,QAAQ,CAAC,EAAE;MACtCpB,OAAO,GAAGT,YAAY,CAAC8B,gBAAgB,CAAC,QAAQ,EAAEJ,QAAE,CAACC,KAAK,EAAE,CAAC,CAAC;IAChE,CAAC,MAAM,IAAI3B,YAAY,CAAC6B,WAAW,CAAC,eAAe,CAAC,EAAE;MACpDpB,OAAO,GAAGT,YAAY,CAAC8B,gBAAgB,CAAC,eAAe,EAAEJ,QAAE,CAACU,aAAa,EAAE,CAAC,CAAC;MAC7E9C,IAAI,CAACwB,eAAe,GAAG,IAAI;IAC7B;IAEAxB,IAAI,CAACgB,UAAU,CAACG,OAAO,GAAG,IAAA8B,sDAA8B,EAACjD,IAAI,EAAEmB,OAAO,CAAC;EACzE;AACF;AAEA,SAASmB,aAAa,CAACtC,IAAI,EAAEU,YAAY,EAAE;EACzC,IAAIC,UAAmC,GAAG,IAAI;EAC9C,IAAI,CAACX,IAAI,CAACoB,QAAQ,IAAIV,YAAY,CAAC6B,WAAW,CAAC,UAAU,CAAC,EAAE;IAC1DvC,IAAI,CAACoB,QAAQ,GAAGV,YAAY,CAAC8B,gBAAgB,CAAC,UAAU,EAAEJ,QAAE,CAACK,cAAc,EAAE,CAAC,CAAC;IAE/E,IAAIzC,IAAI,CAACoB,QAAQ,EAAE;MACjB,IAAM8B,kBAAkB,GAAGxC,YAAY,CAACmB,iBAAiB,CAAC,cAAc,CAAC;MACzE,IAAI,CAACqB,kBAAkB,EAAE;QACvB,MAAM,IAAIlB,KAAK,CAAC,yEAAyE,CAAC;MAC5F;MACA,IAAOmB,cAAc,GAAsBnD,IAAI,CAAxCmD,cAAc;QAAEC,gBAAgB,GAAIpD,IAAI,CAAxBoD,gBAAgB;MACvCzC,UAAU,GAAG,IAAI0C,yBAAgB,CAACF,cAAc,EAAEC,gBAAgB,EAAEF,kBAAkB,CAAC;IACzF;EACF;EACA,OAAOvC,UAAU;AACnB;;AAAC,SAGcC,UAAU;EAAA;AAAA;AAAA;EAAA,wEAAzB,kBAA0BZ,IAAI,EAAEU,YAAY,EAAEC,UAAU,EAAER,OAAO,EAAEC,OAAO;IAAA;IAAA;MAAA;QAAA;UAAA;YAIlEkD,eAAe,GACnBtD,IAAI,CAACmD,cAAc,IACnBnD,IAAI,CAACmD,cAAc,CAACI,UAAU,IAC9BvD,IAAI,CAACmD,cAAc,CAACI,UAAU,CAAC,iCAAiC,CAAC;YACnE,IAAID,eAAe,EAAE;cACnBE,yBAAyB,GAAGF,eAAe,CAACG,UAAU;YACxD;YAEMC,iBAAiB,GAAGhD,YAAY,CAACiD,YAAY,CAAC,iCAAiC,CAAC;YAAA,KAClFD,iBAAiB;cAAA;cAAA;YAAA;YACnBE,2BAA2B,GAAGF,iBAAiB,CAACD,UAAU;YACpDI,eAAe,GAAGH,iBAAiB,CAACxD,UAAU;YAC9C4D,eAAe,GAAGJ,iBAAiB,CAACK,UAAU;YAAA,MAChD,CAACH,2BAA2B,IAAI,CAAC9B,MAAM,CAACC,QAAQ,CAAC8B,eAAe,CAAC,IAAI,CAACC,eAAe;cAAA;cAAA;YAAA;YAAA,MACjF,IAAI9B,KAAK,CAAC,8DAA8D,CAAC;UAAA;YAGjFgC,WAAW,GAAGhE,IAAI,CAAC2B,kBAAkB,CAACsC,KAAK,CAACJ,eAAe,EAAEA,eAAe,GAAGC,eAAe,CAAC;YAE/F9D,IAAI,CAACkE,YAAY,GAAGpC,MAAM,CAACC,QAAQ,CAAC6B,2BAA2B,CAACO,QAAQ,CAAC;YACzEnE,IAAI,CAACoE,SAAS,GACZtC,MAAM,CAACC,QAAQ,CAAC6B,2BAA2B,CAACS,GAAG,CAAC,IAChDvC,MAAM,CAACC,QAAQ,CAAC6B,2BAA2B,CAACU,IAAI,CAAC;YACnDtE,IAAI,CAACuE,UAAU,GAAGzC,MAAM,CAACC,QAAQ,CAAC6B,2BAA2B,CAACY,MAAM,CAAC;YACrExE,IAAI,CAACyE,WAAW,GAAG3C,MAAM,CAACC,QAAQ,CAAC6B,2BAA2B,CAACc,QAAQ,CAAC;YACxE1E,IAAI,CAACsB,aAAa,GAAGQ,MAAM,CAACC,QAAQ,CAAC6B,2BAA2B,CAACU,IAAI,CAAC;UAAC;YAAA,IAGpEN,WAAW;cAAA;cAAA;YAAA;YAAA,kCACP,IAAI;UAAA;YAGPW,SAAS,GAAG;cAChBC,MAAM,EAAEZ,WAAW;cACnBP,UAAU,kCAAMG,2BAA2B,GAAKJ,yBAAyB,CAAC;cAC1EqB,sBAAsB,EAAEjB,2BAA2B;cACnDkB,oBAAoB,EAAEtB,yBAAyB;cAC/CuB,kBAAkB,EAAE;YACtB,CAAC;YAAA;YAAA,OAEYC,SAAS,CAAChF,IAAI,EAAE2E,SAAS,EAAExE,OAAO,EAAEC,OAAO,CAAC;UAAA;YAAA;UAAA;UAAA;YAAA;QAAA;MAAA;IAAA;EAAA,CAC1D;EAAA;AAAA;AAAA,SAGqB4E,SAAS;EAAA;AAAA;AAAA;EAAA,uEAAxB,kBAAyBhF,IAAI,EAAE2E,SAAS,EAAExE,OAAO,EAAEC,OAAO;IAAA;IAAA;MAAA;QAAA;UAAA;YACxD6E,KAAK,GAAI7E,OAAO,CAAhB6E,KAAK;YACNC,YAAY,mCACb/E,OAAO;cACVgF,KAAK,kCACAhF,OAAO,CAACgF,KAAK;gBAChBC,eAAe,EAAET,SAAS,CAACG,oBAAoB,IAAI,CAAC;cAAC;YACtD;YAIH,OAAOI,YAAY,CAAC,UAAU,CAAC;YAAC;YAAA,OAEbD,KAAK,CAACN,SAAS,CAACC,MAAM,EAAES,kBAAW,EAAEH,YAAY,CAAC;UAAA;YAA/DI,IAAI;YAEJC,gBAAgB,GAAGD,IAAI,CAACtE,UAAU,CAACmD,QAAQ,IAAImB,IAAI,CAACtE,UAAU,CAACmD,QAAQ,CAACqB,KAAK;YAC7EC,aAAa,GAAGH,IAAI,CAACtE,UAAU,CAAC0E,OAAO,IAAIJ,IAAI,CAACtE,UAAU,CAAC0E,OAAO,CAACF,KAAK;YACxEG,cAAc,GAAGL,IAAI,CAACtE,UAAU,CAACwD,MAAM,IAAIc,IAAI,CAACtE,UAAU,CAACwD,MAAM,CAACgB,KAAK;YACvEI,eAAe,GAAGN,IAAI,CAACtE,UAAU,CAAC0D,QAAQ,IAAIY,IAAI,CAACtE,UAAU,CAAC0D,QAAQ,CAACc,KAAK;YAC5EK,gBAAgB,GAAGN,gBAAgB,IAAID,IAAI,CAACtE,UAAU,CAACmD,QAAQ,CAACqB,KAAK,CAACM,YAAY;YAClFC,iBAAiB,GAAGJ,cAAc,IAAIL,IAAI,CAACtE,UAAU,CAACwD,MAAM,CAACgB,KAAK,CAACM,YAAY;YACrF,IAAID,gBAAgB,EAAE;cAGdC,YAAY,GAAGR,IAAI,CAACnB,QAAQ,CAACmB,IAAI,CAACQ,YAAY;cAC9CE,KAAK,GAAGF,YAAY,CAACE,KAAK;cAChChG,IAAI,CAAC2C,oBAAoB,GAAG,IAAIsD,aAAO,CAACD,KAAK,EAAEA,KAAK,EAAEA,KAAK,CAAC;cAC5DhG,IAAI,CAAC4C,qBAAqB,GAAG,IAAIqD,aAAO,CAACH,YAAY,CAACI,SAAS,CAAC;cAChElG,IAAI,CAAC0C,cAAc,GAAG,CAAC,CAAC,IAAIoD,YAAY,CAACK,gBAAgB,IAAI,GAAG;cAChEnG,IAAI,CAAC6F,gBAAgB,GAAG,IAAI;YAC9B;YACA,IAAIE,iBAAiB,EAAE;cACrB/F,IAAI,CAACoG,eAAe,GAAG,CAAC,CAAC,IAAId,IAAI,CAACd,MAAM,CAACc,IAAI,CAACQ,YAAY,CAACK,gBAAgB,IAAI,GAAG;cAClFnG,IAAI,CAAC+F,iBAAiB,GAAG,IAAI;YAC/B;;YAGMM,oBAAoB,GAAG,CAAC,CAAC;YAC/B,IAAI1B,SAAS,CAACG,oBAAoB,EAAE;cAClC,4BAA4BwB,MAAM,CAACC,IAAI,CAAC5B,SAAS,CAACG,oBAAoB,CAAC,kCAAE;gBAA9D0B,aAAa;gBACtB,IAAIlB,IAAI,CAACtE,UAAU,CAACwF,aAAa,CAAC,IAAIlB,IAAI,CAACtE,UAAU,CAACwF,aAAa,CAAC,CAAChB,KAAK,EAAE;kBAC1Ea,oBAAoB,CAACG,aAAa,CAACC,WAAW,EAAE,CAAC,GAAGnB,IAAI,CAACtE,UAAU,CAACwF,aAAa,CAAC,CAAChB,KAAK;gBAC1F;cACF;YACF;YAEAxF,IAAI,CAACgB,UAAU;cACbC,SAAS,EAAEsE,gBAAgB;cAC3BrE,MAAM,EAAE,IAAA6B,oDAA6B,EAAC/C,IAAI,EAAEyF,aAAa,EAAEiB,SAAS,CAAC;cACrEvF,OAAO,EAAEwE,cAAc;cACvBvE,QAAQ,EAAEwE;YAAe,GACtBS,oBAAoB,CACxB;UAAC;UAAA;YAAA;QAAA;MAAA;IAAA;EAAA,CACH;EAAA;AAAA"}
|
|
@@ -1,41 +1,29 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
4
|
Object.defineProperty(exports, "__esModule", {
|
|
6
5
|
value: true
|
|
7
6
|
});
|
|
8
7
|
exports.parse3DTile = parse3DTile;
|
|
9
|
-
|
|
10
8
|
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
11
|
-
|
|
12
9
|
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
13
|
-
|
|
14
10
|
var _constants = require("../constants");
|
|
15
|
-
|
|
16
11
|
var _parseUtils = require("./helpers/parse-utils");
|
|
17
|
-
|
|
18
12
|
var _parse3dTilePointCloud = require("./parse-3d-tile-point-cloud");
|
|
19
|
-
|
|
20
13
|
var _parse3dTileBatchedModel = require("./parse-3d-tile-batched-model");
|
|
21
|
-
|
|
22
14
|
var _parse3dTileInstancedModel = require("./parse-3d-tile-instanced-model");
|
|
23
|
-
|
|
24
15
|
var _parse3dTileComposite = require("./parse-3d-tile-composite");
|
|
25
|
-
|
|
26
16
|
var _parse3dTileGltf = require("./parse-3d-tile-gltf");
|
|
27
|
-
|
|
28
17
|
function parse3DTile(_x) {
|
|
29
18
|
return _parse3DTile.apply(this, arguments);
|
|
30
19
|
}
|
|
31
|
-
|
|
32
20
|
function _parse3DTile() {
|
|
33
21
|
_parse3DTile = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee(arrayBuffer) {
|
|
34
22
|
var byteOffset,
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
23
|
+
options,
|
|
24
|
+
context,
|
|
25
|
+
tile,
|
|
26
|
+
_args = arguments;
|
|
39
27
|
return _regenerator.default.wrap(function _callee$(_context) {
|
|
40
28
|
while (1) {
|
|
41
29
|
switch (_context.prev = _context.next) {
|
|
@@ -46,48 +34,37 @@ function _parse3DTile() {
|
|
|
46
34
|
tile = _args.length > 4 && _args[4] !== undefined ? _args[4] : {};
|
|
47
35
|
tile.byteOffset = byteOffset;
|
|
48
36
|
tile.type = (0, _parseUtils.getMagicString)(arrayBuffer, byteOffset);
|
|
37
|
+
|
|
49
38
|
_context.t0 = tile.type;
|
|
50
39
|
_context.next = _context.t0 === _constants.TILE3D_TYPE.COMPOSITE ? 9 : _context.t0 === _constants.TILE3D_TYPE.BATCHED_3D_MODEL ? 12 : _context.t0 === _constants.TILE3D_TYPE.GLTF ? 15 : _context.t0 === _constants.TILE3D_TYPE.INSTANCED_3D_MODEL ? 18 : _context.t0 === _constants.TILE3D_TYPE.POINT_CLOUD ? 21 : 24;
|
|
51
40
|
break;
|
|
52
|
-
|
|
53
41
|
case 9:
|
|
54
42
|
_context.next = 11;
|
|
55
43
|
return (0, _parse3dTileComposite.parseComposite3DTile)(tile, arrayBuffer, byteOffset, options, context, parse3DTile);
|
|
56
|
-
|
|
57
44
|
case 11:
|
|
58
45
|
return _context.abrupt("return", _context.sent);
|
|
59
|
-
|
|
60
46
|
case 12:
|
|
61
47
|
_context.next = 14;
|
|
62
48
|
return (0, _parse3dTileBatchedModel.parseBatchedModel3DTile)(tile, arrayBuffer, byteOffset, options, context);
|
|
63
|
-
|
|
64
49
|
case 14:
|
|
65
50
|
return _context.abrupt("return", _context.sent);
|
|
66
|
-
|
|
67
51
|
case 15:
|
|
68
52
|
_context.next = 17;
|
|
69
53
|
return (0, _parse3dTileGltf.parseGltf3DTile)(tile, arrayBuffer, options, context);
|
|
70
|
-
|
|
71
54
|
case 17:
|
|
72
55
|
return _context.abrupt("return", _context.sent);
|
|
73
|
-
|
|
74
56
|
case 18:
|
|
75
57
|
_context.next = 20;
|
|
76
58
|
return (0, _parse3dTileInstancedModel.parseInstancedModel3DTile)(tile, arrayBuffer, byteOffset, options, context);
|
|
77
|
-
|
|
78
59
|
case 20:
|
|
79
60
|
return _context.abrupt("return", _context.sent);
|
|
80
|
-
|
|
81
61
|
case 21:
|
|
82
62
|
_context.next = 23;
|
|
83
63
|
return (0, _parse3dTilePointCloud.parsePointCloud3DTile)(tile, arrayBuffer, byteOffset, options, context);
|
|
84
|
-
|
|
85
64
|
case 23:
|
|
86
65
|
return _context.abrupt("return", _context.sent);
|
|
87
|
-
|
|
88
66
|
case 24:
|
|
89
67
|
throw new Error("3DTileLoader: unknown type ".concat(tile.type));
|
|
90
|
-
|
|
91
68
|
case 25:
|
|
92
69
|
case "end":
|
|
93
70
|
return _context.stop();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"parse-3d-tile.js","names":["parse3DTile","arrayBuffer","byteOffset","options","context","tile","type","getMagicString","TILE3D_TYPE","COMPOSITE","BATCHED_3D_MODEL","GLTF","INSTANCED_3D_MODEL","POINT_CLOUD","parseComposite3DTile","parseBatchedModel3DTile","parseGltf3DTile","parseInstancedModel3DTile","parsePointCloud3DTile","Error"],"sources":["../../../../src/lib/parsers/parse-3d-tile.ts"],"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';\nimport {parseGltf3DTile} from './parse-3d-tile-gltf';\n\n// Extracts\nexport async function parse3DTile(arrayBuffer, byteOffset = 0, options, context, tile = {}) {\n // @ts-expect-error\n tile.byteOffset = byteOffset;\n // @ts-expect-error\n tile.type = getMagicString(arrayBuffer, byteOffset);\n\n // @ts-expect-error\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.GLTF:\n return await parseGltf3DTile(tile, arrayBuffer, 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 // @ts-expect-error\n throw new Error(`3DTileLoader: unknown type ${tile.type}`); // eslint-disable-line\n }\n}\n"],"mappings":";;;;;;;;;AAGA;AACA;AAEA;AACA;AACA;AACA;AACA;AAAqD,SAG/BA,WAAW;EAAA;AAAA;AAAA;EAAA,yEAA1B,iBAA2BC,WAAW;IAAA;MAAA;MAAA;MAAA;MAAA;IAAA;MAAA;QAAA;UAAA;YAAEC,UAAU,2DAAG,CAAC;YAAEC,OAAO;YAAEC,OAAO;YAAEC,IAAI,2DAAG,CAAC,CAAC;YAExFA,IAAI,CAACH,UAAU,GAAGA,UAAU;YAE5BG,IAAI,CAACC,IAAI,GAAG,IAAAC,0BAAc,EAACN,WAAW,EAAEC,UAAU,CAAC;;YAAC,cAG5CG,IAAI,CAACC,IAAI;YAAA,gCACVE,sBAAW,CAACC,SAAS,uBAWrBD,sBAAW,CAACE,gBAAgB,wBAG5BF,sBAAW,CAACG,IAAI,wBAGhBH,sBAAW,CAACI,kBAAkB,wBAG9BJ,sBAAW,CAACK,WAAW;YAAA;UAAA;YAAA;YAAA,OAlBb,IAAAC,0CAAoB,EAC/BT,IAAI,EACJJ,WAAW,EACXC,UAAU,EACVC,OAAO,EACPC,OAAO,EACPJ,WAAW,CACZ;UAAA;YAAA;UAAA;YAAA;YAAA,OAGY,IAAAe,gDAAuB,EAACV,IAAI,EAAEJ,WAAW,EAAEC,UAAU,EAAEC,OAAO,EAAEC,OAAO,CAAC;UAAA;YAAA;UAAA;YAAA;YAAA,OAGxE,IAAAY,gCAAe,EAACX,IAAI,EAAEJ,WAAW,EAAEE,OAAO,EAAEC,OAAO,CAAC;UAAA;YAAA;UAAA;YAAA;YAAA,OAGpD,IAAAa,oDAAyB,EAACZ,IAAI,EAAEJ,WAAW,EAAEC,UAAU,EAAEC,OAAO,EAAEC,OAAO,CAAC;UAAA;YAAA;UAAA;YAAA;YAAA,OAG1E,IAAAc,4CAAqB,EAACb,IAAI,EAAEJ,WAAW,EAAEC,UAAU,EAAEC,OAAO,EAAEC,OAAO,CAAC;UAAA;YAAA;UAAA;YAAA,MAI7E,IAAIe,KAAK,sCAA+Bd,IAAI,CAACC,IAAI,EAAG;UAAA;UAAA;YAAA;QAAA;MAAA;IAAA;EAAA,CAE/D;EAAA;AAAA"}
|
|
@@ -4,6 +4,6 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.VERSION = void 0;
|
|
7
|
-
var VERSION = typeof "3.3.0-alpha.
|
|
7
|
+
var VERSION = typeof "3.3.0-alpha.6" !== 'undefined' ? "3.3.0-alpha.6" : 'latest';
|
|
8
8
|
exports.VERSION = VERSION;
|
|
9
9
|
//# sourceMappingURL=version.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"version.js","names":["VERSION"],"sources":["../../../../src/lib/utils/version.ts"],"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"],"mappings":";;;;;;AAGO,IAAMA,OAAO,GAAG,sBAAkB,KAAK,WAAW,qBAAiB,QAAQ;AAAC"}
|
|
@@ -1,16 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
4
|
Object.defineProperty(exports, "__esModule", {
|
|
6
5
|
value: true
|
|
7
6
|
});
|
|
8
7
|
exports.Tile3DSubtreeLoader = void 0;
|
|
9
|
-
|
|
10
8
|
var _parse3dTileSubtree = _interopRequireDefault(require("./lib/parsers/helpers/parse-3d-tile-subtree"));
|
|
11
|
-
|
|
12
9
|
var _version = require("./lib/utils/version");
|
|
13
|
-
|
|
14
10
|
var Tile3DSubtreeLoader = {
|
|
15
11
|
id: '3d-tiles-subtree',
|
|
16
12
|
name: '3D Tiles Subtree',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"tile-3d-subtree-loader.js","names":["Tile3DSubtreeLoader","id","name","module","version","VERSION","extensions","mimeTypes","tests","parse","parse3DTilesSubtree","options"],"sources":["../../src/tile-3d-subtree-loader.ts"],"sourcesContent":["import type {LoaderWithParser} from '@loaders.gl/loader-utils';\nimport parse3DTilesSubtree from './lib/parsers/helpers/parse-3d-tile-subtree';\nimport {VERSION} from './lib/utils/version';\n\n/**\n * Loader for 3D Tiles Subtree\n *\n */\nexport const Tile3DSubtreeLoader: LoaderWithParser = {\n id: '3d-tiles-subtree',\n name: '3D Tiles Subtree',\n module: '3d-tiles',\n version: VERSION,\n extensions: ['subtree'],\n mimeTypes: ['application/octet-stream'],\n tests: ['subtree'],\n parse: parse3DTilesSubtree,\n options: {}\n};\n"],"mappings":";;;;;;;AACA;AACA;AAMO,IAAMA,mBAAqC,GAAG;EACnDC,EAAE,EAAE,kBAAkB;EACtBC,IAAI,EAAE,kBAAkB;EACxBC,MAAM,EAAE,UAAU;EAClBC,OAAO,EAAEC,gBAAO;EAChBC,UAAU,EAAE,CAAC,SAAS,CAAC;EACvBC,SAAS,EAAE,CAAC,0BAA0B,CAAC;EACvCC,KAAK,EAAE,CAAC,SAAS,CAAC;EAClBC,KAAK,EAAEC,2BAAmB;EAC1BC,OAAO,EAAE,CAAC;AACZ,CAAC;AAAC"}
|
|
@@ -1,18 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
4
|
Object.defineProperty(exports, "__esModule", {
|
|
6
5
|
value: true
|
|
7
6
|
});
|
|
8
7
|
exports.Tile3DWriter = void 0;
|
|
9
|
-
|
|
10
8
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
11
|
-
|
|
12
9
|
var _version = require("./lib/utils/version");
|
|
13
|
-
|
|
14
10
|
var _encode3dTile = _interopRequireDefault(require("./lib/encoders/encode-3d-tile"));
|
|
15
|
-
|
|
16
11
|
var Tile3DWriter = {
|
|
17
12
|
name: '3D Tile',
|
|
18
13
|
id: '3d-tiles',
|
|
@@ -25,7 +20,6 @@ var Tile3DWriter = {
|
|
|
25
20
|
options: (0, _defineProperty2.default)({}, '3d-tiles', {})
|
|
26
21
|
};
|
|
27
22
|
exports.Tile3DWriter = Tile3DWriter;
|
|
28
|
-
|
|
29
23
|
function encodeSync(tile, options) {
|
|
30
24
|
return (0, _encode3dTile.default)(tile, options);
|
|
31
25
|
}
|