@cesium/engine 3.0.1 → 4.0.0
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/Build/ThirdParty/Workers/pako_deflate.min.js +605 -0
- package/Build/ThirdParty/Workers/pako_inflate.min.js +800 -0
- package/Build/ThirdParty/Workers/z-worker-pako.js +502 -0
- package/Build/Workers/chunk-27R2KRIK.js +634 -0
- package/Build/Workers/chunk-2C65EKYA.js +55 -0
- package/Build/Workers/chunk-2NLMZNJI.js +138 -0
- package/Build/Workers/chunk-4V6RCTVH.js +289 -0
- package/Build/Workers/chunk-4VWUFKYW.js +368 -0
- package/Build/Workers/chunk-527JG4D7.js +629 -0
- package/Build/Workers/chunk-5U4UHRZ2.js +8644 -0
- package/Build/Workers/chunk-7CZEWQWE.js +353 -0
- package/Build/Workers/chunk-7IMAWM6A.js +842 -0
- package/Build/Workers/{package.js → chunk-A6EA6KIE.js} +13 -2
- package/Build/Workers/chunk-AXGQUPXA.js +1075 -0
- package/Build/Workers/chunk-BT6YIL2N.js +39 -0
- package/Build/Workers/chunk-C6MRR5YL.js +476 -0
- package/Build/Workers/chunk-DJUTBX6A.js +1860 -0
- package/Build/Workers/chunk-EQ6ZAP37.js +218 -0
- package/Build/Workers/chunk-F7P2HCYZ.js +73 -0
- package/Build/Workers/chunk-FE2XG3SS.js +73 -0
- package/Build/Workers/chunk-FKHRSGKP.js +781 -0
- package/Build/Workers/chunk-FVDTKX3F.js +58 -0
- package/Build/Workers/chunk-FYHCAKU6.js +684 -0
- package/Build/Workers/chunk-G3MOT7BZ.js +157 -0
- package/Build/Workers/chunk-H52L6U76.js +421 -0
- package/Build/Workers/chunk-H6MBQ4W4.js +305 -0
- package/Build/Workers/chunk-HCZR75II.js +2716 -0
- package/Build/Workers/chunk-I5MQWHBR.js +102 -0
- package/Build/Workers/chunk-KAFF2QX3.js +258 -0
- package/Build/Workers/chunk-LGSGX2RH.js +757 -0
- package/Build/Workers/chunk-LQRFWCNX.js +124 -0
- package/Build/Workers/chunk-N5MMDSD2.js +44 -0
- package/Build/Workers/chunk-NRETMGYL.js +390 -0
- package/Build/Workers/chunk-P4M4QUNQ.js +196 -0
- package/Build/Workers/chunk-P7PWX5HR.js +430 -0
- package/Build/Workers/chunk-PGB3EFR7.js +171 -0
- package/Build/Workers/chunk-PW5CA4MJ.js +3273 -0
- package/Build/Workers/chunk-PWDYKCNC.js +501 -0
- package/Build/Workers/chunk-QIS3NB7U.js +1258 -0
- package/Build/Workers/chunk-QVJ6IRKV.js +77 -0
- package/Build/Workers/chunk-RDCDRNJ7.js +117 -0
- package/Build/Workers/chunk-RDM3BKNC.js +1009 -0
- package/Build/Workers/chunk-RRUPTJ6P.js +452 -0
- package/Build/Workers/chunk-SGRWJKNO.js +400 -0
- package/Build/Workers/chunk-TF5D2H7B.js +138 -0
- package/Build/Workers/chunk-TVYIHH4V.js +513 -0
- package/Build/Workers/chunk-U5LKG6LX.js +101 -0
- package/Build/Workers/chunk-UGZGTV5K.js +302 -0
- package/Build/Workers/chunk-UN7AK64D.js +163 -0
- package/Build/Workers/chunk-V2LKNJGT.js +59 -0
- package/Build/Workers/chunk-VSCXSFHE.js +1477 -0
- package/Build/Workers/chunk-XJCTFTBM.js +2041 -0
- package/Build/Workers/chunk-XZVQMPWG.js +100 -0
- package/Build/Workers/chunk-YLAFWVOW.js +834 -0
- package/Build/Workers/chunk-YLS3FX3U.js +236 -0
- package/Build/Workers/chunk-YMJPANZZ.js +693 -0
- package/Build/Workers/combineGeometry.js +65 -15
- package/Build/Workers/createBoxGeometry.js +55 -10
- package/Build/Workers/createBoxOutlineGeometry.js +231 -310
- package/Build/Workers/createCircleGeometry.js +185 -202
- package/Build/Workers/createCircleOutlineGeometry.js +141 -155
- package/Build/Workers/createCoplanarPolygonGeometry.js +477 -557
- package/Build/Workers/createCoplanarPolygonOutlineGeometry.js +218 -230
- package/Build/Workers/createCorridorGeometry.js +1162 -1307
- package/Build/Workers/createCorridorOutlineGeometry.js +533 -569
- package/Build/Workers/createCylinderGeometry.js +57 -10
- package/Build/Workers/createCylinderOutlineGeometry.js +224 -258
- package/Build/Workers/createEllipseGeometry.js +68 -12
- package/Build/Workers/createEllipseOutlineGeometry.js +61 -12
- package/Build/Workers/createEllipsoidGeometry.js +56 -10
- package/Build/Workers/createEllipsoidOutlineGeometry.js +58 -13
- package/Build/Workers/createFrustumGeometry.js +55 -10
- package/Build/Workers/createFrustumOutlineGeometry.js +226 -243
- package/Build/Workers/createGeometry.js +143 -48
- package/Build/Workers/createGroundPolylineGeometry.js +1484 -2011
- package/Build/Workers/createPlaneGeometry.js +216 -243
- package/Build/Workers/createPlaneOutlineGeometry.js +121 -113
- package/Build/Workers/createPolygonGeometry.js +1041 -1327
- package/Build/Workers/createPolygonOutlineGeometry.js +516 -657
- package/Build/Workers/createPolylineGeometry.js +471 -547
- package/Build/Workers/createPolylineVolumeGeometry.js +352 -384
- package/Build/Workers/createPolylineVolumeOutlineGeometry.js +271 -295
- package/Build/Workers/createRectangleGeometry.js +1128 -1331
- package/Build/Workers/createRectangleOutlineGeometry.js +445 -500
- package/Build/Workers/createSimplePolylineGeometry.js +381 -440
- package/Build/Workers/createSphereGeometry.js +112 -118
- package/Build/Workers/createSphereOutlineGeometry.js +112 -121
- package/Build/Workers/createTaskProcessorWorker.js +32 -127
- package/Build/Workers/createVectorTileClampedPolylines.js +462 -505
- package/Build/Workers/createVectorTileGeometries.js +377 -436
- package/Build/Workers/createVectorTilePoints.js +110 -77
- package/Build/Workers/createVectorTilePolygons.js +369 -391
- package/Build/Workers/createVectorTilePolylines.js +252 -244
- package/Build/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js +543 -615
- package/Build/Workers/createVerticesFromHeightmap.js +2244 -2677
- package/Build/Workers/createVerticesFromQuantizedTerrainMesh.js +682 -904
- package/Build/Workers/createWallGeometry.js +459 -593
- package/Build/Workers/createWallOutlineGeometry.js +324 -419
- package/Build/Workers/decodeDraco.js +327 -347
- package/Build/Workers/decodeGoogleEarthEnterprisePacket.js +2530 -3567
- package/Build/Workers/decodeI3S.js +765 -970
- package/Build/Workers/transcodeKTX2.js +3353 -1464
- package/Build/Workers/transferTypedArrayTest.js +3 -4
- package/Build/Workers/upsampleQuantizedTerrainMesh.js +748 -953
- package/LICENSE.md +0 -12
- package/Source/Core/FeatureDetection.js +9 -0
- package/Source/Core/GoogleMaps.js +1 -1
- package/Source/Core/GroundPolylineGeometry.js +3 -2
- package/Source/Core/Ion.js +1 -1
- package/Source/Core/KTX2Transcoder.js +7 -3
- package/Source/Core/RequestScheduler.js +1 -0
- package/Source/Core/TaskProcessor.js +150 -146
- package/Source/Core/Transforms.js +2 -2
- package/Source/Core/buildModuleUrl.js +6 -5
- package/Source/DataSources/CzmlDataSource.js +6 -4
- package/Source/Scene/ArcGisMapService.js +1 -1
- package/Source/Scene/DracoLoader.js +26 -3
- package/Source/Scene/GltfLoaderUtil.js +1 -7
- package/Source/Scene/I3SDataProvider.js +0 -27
- package/Source/Scene/I3SDecoder.js +127 -0
- package/Source/Scene/I3SNode.js +32 -110
- package/Source/Scene/ImageryLayer.js +2 -2
- package/Source/Scene/Implicit3DTileContent.js +13 -0
- package/Source/Scene/ImplicitTileset.js +5 -0
- package/Source/Scene/Model/I3dmLoader.js +5 -1
- package/Source/Scene/Model/Model.js +4 -1
- package/Source/Scene/OpenStreetMapImageryProvider.js +7 -4
- package/Source/Scene/SingleTileImageryProvider.js +4 -2
- package/Source/ThirdParty/Workers/basis_transcoder.js +1 -1
- package/Source/{WorkersES6 → Workers}/createGeometry.js +11 -12
- package/Source/{WorkersES6 → Workers}/createTaskProcessorWorker.js +43 -59
- package/Source/{WorkersES6 → Workers}/decodeDraco.js +19 -25
- package/Source/{WorkersES6 → Workers}/decodeI3S.js +18 -32
- package/Source/{WorkersES6 → Workers}/transcodeKTX2.js +19 -26
- package/Source/Workers/transferTypedArrayTest.js +0 -6
- package/index.d.ts +20 -11
- package/index.js +170 -169
- package/package.json +3 -2
- package/Build/Workers/ArcType-2d9abbbc.js +0 -37
- package/Build/Workers/AttributeCompression-f9f6c717.js +0 -716
- package/Build/Workers/AxisAlignedBoundingBox-4bfd84f3.js +0 -258
- package/Build/Workers/BoundingRectangle-5fd6403a.js +0 -369
- package/Build/Workers/BoxGeometry-7aa4ce7f.js +0 -884
- package/Build/Workers/Check-6ede7e26.js +0 -290
- package/Build/Workers/Color-8e135f71.js +0 -2262
- package/Build/Workers/ComponentDatatype-cf1fa08e.js +0 -341
- package/Build/Workers/CoplanarPolygonGeometryLibrary-59c69b0a.js +0 -132
- package/Build/Workers/CorridorGeometryLibrary-63907365.js +0 -498
- package/Build/Workers/CylinderGeometry-8fc7c44b.js +0 -467
- package/Build/Workers/CylinderGeometryLibrary-7bf291b4.js +0 -63
- package/Build/Workers/EllipseGeometry-16b3736a.js +0 -1304
- package/Build/Workers/EllipseGeometryLibrary-21262a28.js +0 -366
- package/Build/Workers/EllipseOutlineGeometry-05d35d18.js +0 -443
- package/Build/Workers/EllipsoidGeodesic-5b3623dc.js +0 -520
- package/Build/Workers/EllipsoidGeometry-a503d1d6.js +0 -637
- package/Build/Workers/EllipsoidOutlineGeometry-7b09f24d.js +0 -454
- package/Build/Workers/EllipsoidRhumbLine-ef872433.js +0 -741
- package/Build/Workers/EllipsoidTangentPlane-546c0d5e.js +0 -373
- package/Build/Workers/EncodedCartesian3-57415c8a.js +0 -171
- package/Build/Workers/FrustumGeometry-87ce8622.js +0 -2540
- package/Build/Workers/GeometryAttribute-8fcff0d5.js +0 -619
- package/Build/Workers/GeometryAttributes-ad136444.js +0 -91
- package/Build/Workers/GeometryInstance-34d9e21e.js +0 -121
- package/Build/Workers/GeometryOffsetAttribute-9ad0019c.js +0 -16
- package/Build/Workers/GeometryPipeline-70d69a43.js +0 -3690
- package/Build/Workers/IndexDatatype-2643aa47.js +0 -200
- package/Build/Workers/IntersectionTests-85350792.js +0 -1836
- package/Build/Workers/Math-0a2ac845.js +0 -1340
- package/Build/Workers/Matrix2-e1298525.js +0 -7086
- package/Build/Workers/Matrix3-41c58dde.js +0 -4283
- package/Build/Workers/OrientedBoundingBox-29fb0fcd.js +0 -1259
- package/Build/Workers/Plane-4c3d403b.js +0 -309
- package/Build/Workers/PolygonGeometryLibrary-bad6329a.js +0 -1074
- package/Build/Workers/PolygonPipeline-dd13ee78.js +0 -1344
- package/Build/Workers/PolylinePipeline-7119eb3f.js +0 -573
- package/Build/Workers/PolylineVolumeGeometryLibrary-d25f0050.js +0 -781
- package/Build/Workers/PrimitivePipeline-111ee29f.js +0 -966
- package/Build/Workers/RectangleGeometryLibrary-bb378fb6.js +0 -280
- package/Build/Workers/RuntimeError-ef395448.js +0 -68
- package/Build/Workers/TerrainEncoding-c8e029a2.js +0 -1227
- package/Build/Workers/Transforms-e2d4a55a.js +0 -14713
- package/Build/Workers/VertexFormat-030f11ff.js +0 -312
- package/Build/Workers/WallGeometryLibrary-3e0819ec.js +0 -211
- package/Build/Workers/WebGLConstants-0b1ce7ba.js +0 -620
- package/Build/Workers/WebMercatorProjection-13ed1a6e.js +0 -151
- package/Build/Workers/arrayRemoveDuplicates-d2061e85.js +0 -129
- package/Build/Workers/cesiumWorkerBootstrapper.js +0 -1363
- package/Build/Workers/combine-d9581036.js +0 -82
- package/Build/Workers/defaultValue-fe22d8c0.js +0 -51
- package/Source/ThirdParty/Workers/draco_decoder_nodejs.js +0 -117
- package/Source/Workers/cesiumWorkerBootstrapper.js +0 -2290
- package/Source/Workers/package.json +0 -1
- /package/Source/{WorkersES6 → Workers}/combineGeometry.js +0 -0
- /package/Source/{WorkersES6 → Workers}/createBoxGeometry.js +0 -0
- /package/Source/{WorkersES6 → Workers}/createBoxOutlineGeometry.js +0 -0
- /package/Source/{WorkersES6 → Workers}/createCircleGeometry.js +0 -0
- /package/Source/{WorkersES6 → Workers}/createCircleOutlineGeometry.js +0 -0
- /package/Source/{WorkersES6 → Workers}/createCoplanarPolygonGeometry.js +0 -0
- /package/Source/{WorkersES6 → Workers}/createCoplanarPolygonOutlineGeometry.js +0 -0
- /package/Source/{WorkersES6 → Workers}/createCorridorGeometry.js +0 -0
- /package/Source/{WorkersES6 → Workers}/createCorridorOutlineGeometry.js +0 -0
- /package/Source/{WorkersES6 → Workers}/createCylinderGeometry.js +0 -0
- /package/Source/{WorkersES6 → Workers}/createCylinderOutlineGeometry.js +0 -0
- /package/Source/{WorkersES6 → Workers}/createEllipseGeometry.js +0 -0
- /package/Source/{WorkersES6 → Workers}/createEllipseOutlineGeometry.js +0 -0
- /package/Source/{WorkersES6 → Workers}/createEllipsoidGeometry.js +0 -0
- /package/Source/{WorkersES6 → Workers}/createEllipsoidOutlineGeometry.js +0 -0
- /package/Source/{WorkersES6 → Workers}/createFrustumGeometry.js +0 -0
- /package/Source/{WorkersES6 → Workers}/createFrustumOutlineGeometry.js +0 -0
- /package/Source/{WorkersES6 → Workers}/createGroundPolylineGeometry.js +0 -0
- /package/Source/{WorkersES6 → Workers}/createPlaneGeometry.js +0 -0
- /package/Source/{WorkersES6 → Workers}/createPlaneOutlineGeometry.js +0 -0
- /package/Source/{WorkersES6 → Workers}/createPolygonGeometry.js +0 -0
- /package/Source/{WorkersES6 → Workers}/createPolygonOutlineGeometry.js +0 -0
- /package/Source/{WorkersES6 → Workers}/createPolylineGeometry.js +0 -0
- /package/Source/{WorkersES6 → Workers}/createPolylineVolumeGeometry.js +0 -0
- /package/Source/{WorkersES6 → Workers}/createPolylineVolumeOutlineGeometry.js +0 -0
- /package/Source/{WorkersES6 → Workers}/createRectangleGeometry.js +0 -0
- /package/Source/{WorkersES6 → Workers}/createRectangleOutlineGeometry.js +0 -0
- /package/Source/{WorkersES6 → Workers}/createSimplePolylineGeometry.js +0 -0
- /package/Source/{WorkersES6 → Workers}/createSphereGeometry.js +0 -0
- /package/Source/{WorkersES6 → Workers}/createSphereOutlineGeometry.js +0 -0
- /package/Source/{WorkersES6 → Workers}/createVectorTileClampedPolylines.js +0 -0
- /package/Source/{WorkersES6 → Workers}/createVectorTileGeometries.js +0 -0
- /package/Source/{WorkersES6 → Workers}/createVectorTilePoints.js +0 -0
- /package/Source/{WorkersES6 → Workers}/createVectorTilePolygons.js +0 -0
- /package/Source/{WorkersES6 → Workers}/createVectorTilePolylines.js +0 -0
- /package/Source/{WorkersES6 → Workers}/createVerticesFromGoogleEarthEnterpriseBuffer.js +0 -0
- /package/Source/{WorkersES6 → Workers}/createVerticesFromHeightmap.js +0 -0
- /package/Source/{WorkersES6 → Workers}/createVerticesFromQuantizedTerrainMesh.js +0 -0
- /package/Source/{WorkersES6 → Workers}/createWallGeometry.js +0 -0
- /package/Source/{WorkersES6 → Workers}/createWallOutlineGeometry.js +0 -0
- /package/Source/{WorkersES6 → Workers}/decodeGoogleEarthEnterprisePacket.js +0 -0
- /package/Source/{WorkersES6 → Workers}/upsampleQuantizedTerrainMesh.js +0 -0
|
@@ -1,44 +1,124 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Cesium - https://github.com/CesiumGS/cesium
|
|
4
|
+
* Version 1.109
|
|
5
|
+
*
|
|
6
|
+
* Copyright 2011-2022 Cesium Contributors
|
|
7
|
+
*
|
|
8
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
9
|
+
* you may not use this file except in compliance with the License.
|
|
10
|
+
* You may obtain a copy of the License at
|
|
11
|
+
*
|
|
12
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
13
|
+
*
|
|
14
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
15
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
16
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
17
|
+
* See the License for the specific language governing permissions and
|
|
18
|
+
* limitations under the License.
|
|
19
|
+
*
|
|
20
|
+
* Columbus View (Pat. Pend.)
|
|
21
|
+
*
|
|
22
|
+
* Portions licensed separately.
|
|
23
|
+
* See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details.
|
|
24
|
+
*/
|
|
25
|
+
|
|
26
|
+
import {
|
|
27
|
+
require_draco_decoder_nodejs
|
|
28
|
+
} from "./chunk-DJUTBX6A.js";
|
|
29
|
+
import {
|
|
30
|
+
createTaskProcessorWorker_default
|
|
31
|
+
} from "./chunk-U5LKG6LX.js";
|
|
32
|
+
import {
|
|
33
|
+
IndexDatatype_default
|
|
34
|
+
} from "./chunk-TF5D2H7B.js";
|
|
35
|
+
import {
|
|
36
|
+
ComponentDatatype_default
|
|
37
|
+
} from "./chunk-KAFF2QX3.js";
|
|
38
|
+
import "./chunk-PWDYKCNC.js";
|
|
39
|
+
import "./chunk-527JG4D7.js";
|
|
40
|
+
import {
|
|
41
|
+
RuntimeError_default
|
|
42
|
+
} from "./chunk-FVDTKX3F.js";
|
|
43
|
+
import "./chunk-BT6YIL2N.js";
|
|
44
|
+
import "./chunk-UN7AK64D.js";
|
|
45
|
+
import {
|
|
46
|
+
__toESM,
|
|
47
|
+
defined_default
|
|
48
|
+
} from "./chunk-QVJ6IRKV.js";
|
|
49
|
+
|
|
50
|
+
// packages/engine/Source/Workers/decodeDraco.js
|
|
51
|
+
var import_draco_decoder_nodejs = __toESM(require_draco_decoder_nodejs(), 1);
|
|
52
|
+
var draco;
|
|
53
|
+
function decodeIndexArray(dracoGeometry, dracoDecoder) {
|
|
54
|
+
const numPoints = dracoGeometry.num_points();
|
|
55
|
+
const numFaces = dracoGeometry.num_faces();
|
|
56
|
+
const faceIndices = new draco.DracoInt32Array();
|
|
57
|
+
const numIndices = numFaces * 3;
|
|
58
|
+
const indexArray = IndexDatatype_default.createTypedArray(numPoints, numIndices);
|
|
59
|
+
let offset = 0;
|
|
60
|
+
for (let i = 0; i < numFaces; ++i) {
|
|
61
|
+
dracoDecoder.GetFaceFromMesh(dracoGeometry, i, faceIndices);
|
|
62
|
+
indexArray[offset + 0] = faceIndices.GetValue(0);
|
|
63
|
+
indexArray[offset + 1] = faceIndices.GetValue(1);
|
|
64
|
+
indexArray[offset + 2] = faceIndices.GetValue(2);
|
|
65
|
+
offset += 3;
|
|
30
66
|
}
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
67
|
+
draco.destroy(faceIndices);
|
|
68
|
+
return {
|
|
69
|
+
typedArray: indexArray,
|
|
70
|
+
numberOfIndices: numIndices
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
function decodeQuantizedDracoTypedArray(dracoGeometry, dracoDecoder, dracoAttribute, quantization, vertexArrayLength) {
|
|
74
|
+
let vertexArray;
|
|
75
|
+
let attributeData;
|
|
76
|
+
if (quantization.quantizationBits <= 8) {
|
|
77
|
+
attributeData = new draco.DracoUInt8Array();
|
|
78
|
+
vertexArray = new Uint8Array(vertexArrayLength);
|
|
79
|
+
dracoDecoder.GetAttributeUInt8ForAllPoints(
|
|
80
|
+
dracoGeometry,
|
|
81
|
+
dracoAttribute,
|
|
82
|
+
attributeData
|
|
83
|
+
);
|
|
84
|
+
} else if (quantization.quantizationBits <= 16) {
|
|
85
|
+
attributeData = new draco.DracoUInt16Array();
|
|
86
|
+
vertexArray = new Uint16Array(vertexArrayLength);
|
|
87
|
+
dracoDecoder.GetAttributeUInt16ForAllPoints(
|
|
88
|
+
dracoGeometry,
|
|
89
|
+
dracoAttribute,
|
|
90
|
+
attributeData
|
|
91
|
+
);
|
|
92
|
+
} else {
|
|
93
|
+
attributeData = new draco.DracoFloat32Array();
|
|
94
|
+
vertexArray = new Float32Array(vertexArrayLength);
|
|
95
|
+
dracoDecoder.GetAttributeFloatForAllPoints(
|
|
96
|
+
dracoGeometry,
|
|
97
|
+
dracoAttribute,
|
|
98
|
+
attributeData
|
|
99
|
+
);
|
|
100
|
+
}
|
|
101
|
+
for (let i = 0; i < vertexArrayLength; ++i) {
|
|
102
|
+
vertexArray[i] = attributeData.GetValue(i);
|
|
103
|
+
}
|
|
104
|
+
draco.destroy(attributeData);
|
|
105
|
+
return vertexArray;
|
|
106
|
+
}
|
|
107
|
+
function decodeDracoTypedArray(dracoGeometry, dracoDecoder, dracoAttribute, vertexArrayLength) {
|
|
108
|
+
let vertexArray;
|
|
109
|
+
let attributeData;
|
|
110
|
+
switch (dracoAttribute.data_type()) {
|
|
111
|
+
case 1:
|
|
112
|
+
case 11:
|
|
113
|
+
attributeData = new draco.DracoInt8Array();
|
|
114
|
+
vertexArray = new Int8Array(vertexArrayLength);
|
|
115
|
+
dracoDecoder.GetAttributeInt8ForAllPoints(
|
|
116
|
+
dracoGeometry,
|
|
117
|
+
dracoAttribute,
|
|
118
|
+
attributeData
|
|
119
|
+
);
|
|
120
|
+
break;
|
|
121
|
+
case 2:
|
|
42
122
|
attributeData = new draco.DracoUInt8Array();
|
|
43
123
|
vertexArray = new Uint8Array(vertexArrayLength);
|
|
44
124
|
dracoDecoder.GetAttributeUInt8ForAllPoints(
|
|
@@ -46,7 +126,17 @@ define(['./ComponentDatatype-cf1fa08e', './defaultValue-fe22d8c0', './IndexDatat
|
|
|
46
126
|
dracoAttribute,
|
|
47
127
|
attributeData
|
|
48
128
|
);
|
|
49
|
-
|
|
129
|
+
break;
|
|
130
|
+
case 3:
|
|
131
|
+
attributeData = new draco.DracoInt16Array();
|
|
132
|
+
vertexArray = new Int16Array(vertexArrayLength);
|
|
133
|
+
dracoDecoder.GetAttributeInt16ForAllPoints(
|
|
134
|
+
dracoGeometry,
|
|
135
|
+
dracoAttribute,
|
|
136
|
+
attributeData
|
|
137
|
+
);
|
|
138
|
+
break;
|
|
139
|
+
case 4:
|
|
50
140
|
attributeData = new draco.DracoUInt16Array();
|
|
51
141
|
vertexArray = new Uint16Array(vertexArrayLength);
|
|
52
142
|
dracoDecoder.GetAttributeUInt16ForAllPoints(
|
|
@@ -54,336 +144,226 @@ define(['./ComponentDatatype-cf1fa08e', './defaultValue-fe22d8c0', './IndexDatat
|
|
|
54
144
|
dracoAttribute,
|
|
55
145
|
attributeData
|
|
56
146
|
);
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
147
|
+
break;
|
|
148
|
+
case 5:
|
|
149
|
+
case 7:
|
|
150
|
+
attributeData = new draco.DracoInt32Array();
|
|
151
|
+
vertexArray = new Int32Array(vertexArrayLength);
|
|
152
|
+
dracoDecoder.GetAttributeInt32ForAllPoints(
|
|
61
153
|
dracoGeometry,
|
|
62
154
|
dracoAttribute,
|
|
63
155
|
attributeData
|
|
64
156
|
);
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
draco.destroy(attributeData);
|
|
72
|
-
return vertexArray;
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
function decodeDracoTypedArray(
|
|
76
|
-
dracoGeometry,
|
|
77
|
-
dracoDecoder,
|
|
78
|
-
dracoAttribute,
|
|
79
|
-
vertexArrayLength
|
|
80
|
-
) {
|
|
81
|
-
let vertexArray;
|
|
82
|
-
let attributeData;
|
|
83
|
-
|
|
84
|
-
// Some attribute types are casted down to 32 bit since Draco only returns 32 bit values
|
|
85
|
-
switch (dracoAttribute.data_type()) {
|
|
86
|
-
case 1:
|
|
87
|
-
case 11: // DT_INT8 or DT_BOOL
|
|
88
|
-
attributeData = new draco.DracoInt8Array();
|
|
89
|
-
vertexArray = new Int8Array(vertexArrayLength);
|
|
90
|
-
dracoDecoder.GetAttributeInt8ForAllPoints(
|
|
91
|
-
dracoGeometry,
|
|
92
|
-
dracoAttribute,
|
|
93
|
-
attributeData
|
|
94
|
-
);
|
|
95
|
-
break;
|
|
96
|
-
case 2: // DT_UINT8
|
|
97
|
-
attributeData = new draco.DracoUInt8Array();
|
|
98
|
-
vertexArray = new Uint8Array(vertexArrayLength);
|
|
99
|
-
dracoDecoder.GetAttributeUInt8ForAllPoints(
|
|
100
|
-
dracoGeometry,
|
|
101
|
-
dracoAttribute,
|
|
102
|
-
attributeData
|
|
103
|
-
);
|
|
104
|
-
break;
|
|
105
|
-
case 3: // DT_INT16
|
|
106
|
-
attributeData = new draco.DracoInt16Array();
|
|
107
|
-
vertexArray = new Int16Array(vertexArrayLength);
|
|
108
|
-
dracoDecoder.GetAttributeInt16ForAllPoints(
|
|
109
|
-
dracoGeometry,
|
|
110
|
-
dracoAttribute,
|
|
111
|
-
attributeData
|
|
112
|
-
);
|
|
113
|
-
break;
|
|
114
|
-
case 4: // DT_UINT16
|
|
115
|
-
attributeData = new draco.DracoUInt16Array();
|
|
116
|
-
vertexArray = new Uint16Array(vertexArrayLength);
|
|
117
|
-
dracoDecoder.GetAttributeUInt16ForAllPoints(
|
|
118
|
-
dracoGeometry,
|
|
119
|
-
dracoAttribute,
|
|
120
|
-
attributeData
|
|
121
|
-
);
|
|
122
|
-
break;
|
|
123
|
-
case 5:
|
|
124
|
-
case 7: // DT_INT32 or DT_INT64
|
|
125
|
-
attributeData = new draco.DracoInt32Array();
|
|
126
|
-
vertexArray = new Int32Array(vertexArrayLength);
|
|
127
|
-
dracoDecoder.GetAttributeInt32ForAllPoints(
|
|
128
|
-
dracoGeometry,
|
|
129
|
-
dracoAttribute,
|
|
130
|
-
attributeData
|
|
131
|
-
);
|
|
132
|
-
break;
|
|
133
|
-
case 6:
|
|
134
|
-
case 8: // DT_UINT32 or DT_UINT64
|
|
135
|
-
attributeData = new draco.DracoUInt32Array();
|
|
136
|
-
vertexArray = new Uint32Array(vertexArrayLength);
|
|
137
|
-
dracoDecoder.GetAttributeUInt32ForAllPoints(
|
|
138
|
-
dracoGeometry,
|
|
139
|
-
dracoAttribute,
|
|
140
|
-
attributeData
|
|
141
|
-
);
|
|
142
|
-
break;
|
|
143
|
-
case 9:
|
|
144
|
-
case 10: // DT_FLOAT32 or DT_FLOAT64
|
|
145
|
-
attributeData = new draco.DracoFloat32Array();
|
|
146
|
-
vertexArray = new Float32Array(vertexArrayLength);
|
|
147
|
-
dracoDecoder.GetAttributeFloatForAllPoints(
|
|
148
|
-
dracoGeometry,
|
|
149
|
-
dracoAttribute,
|
|
150
|
-
attributeData
|
|
151
|
-
);
|
|
152
|
-
break;
|
|
153
|
-
}
|
|
154
|
-
|
|
155
|
-
for (let i = 0; i < vertexArrayLength; ++i) {
|
|
156
|
-
vertexArray[i] = attributeData.GetValue(i);
|
|
157
|
-
}
|
|
158
|
-
|
|
159
|
-
draco.destroy(attributeData);
|
|
160
|
-
return vertexArray;
|
|
161
|
-
}
|
|
162
|
-
|
|
163
|
-
function decodeAttribute(dracoGeometry, dracoDecoder, dracoAttribute) {
|
|
164
|
-
const numPoints = dracoGeometry.num_points();
|
|
165
|
-
const numComponents = dracoAttribute.num_components();
|
|
166
|
-
|
|
167
|
-
let quantization;
|
|
168
|
-
let transform = new draco.AttributeQuantizationTransform();
|
|
169
|
-
if (transform.InitFromAttribute(dracoAttribute)) {
|
|
170
|
-
const minValues = new Array(numComponents);
|
|
171
|
-
for (let i = 0; i < numComponents; ++i) {
|
|
172
|
-
minValues[i] = transform.min_value(i);
|
|
173
|
-
}
|
|
174
|
-
quantization = {
|
|
175
|
-
quantizationBits: transform.quantization_bits(),
|
|
176
|
-
minValues: minValues,
|
|
177
|
-
range: transform.range(),
|
|
178
|
-
octEncoded: false,
|
|
179
|
-
};
|
|
180
|
-
}
|
|
181
|
-
draco.destroy(transform);
|
|
182
|
-
|
|
183
|
-
transform = new draco.AttributeOctahedronTransform();
|
|
184
|
-
if (transform.InitFromAttribute(dracoAttribute)) {
|
|
185
|
-
quantization = {
|
|
186
|
-
quantizationBits: transform.quantization_bits(),
|
|
187
|
-
octEncoded: true,
|
|
188
|
-
};
|
|
189
|
-
}
|
|
190
|
-
draco.destroy(transform);
|
|
191
|
-
|
|
192
|
-
const vertexArrayLength = numPoints * numComponents;
|
|
193
|
-
let vertexArray;
|
|
194
|
-
if (defaultValue.defined(quantization)) {
|
|
195
|
-
vertexArray = decodeQuantizedDracoTypedArray(
|
|
157
|
+
break;
|
|
158
|
+
case 6:
|
|
159
|
+
case 8:
|
|
160
|
+
attributeData = new draco.DracoUInt32Array();
|
|
161
|
+
vertexArray = new Uint32Array(vertexArrayLength);
|
|
162
|
+
dracoDecoder.GetAttributeUInt32ForAllPoints(
|
|
196
163
|
dracoGeometry,
|
|
197
|
-
dracoDecoder,
|
|
198
164
|
dracoAttribute,
|
|
199
|
-
|
|
200
|
-
vertexArrayLength
|
|
165
|
+
attributeData
|
|
201
166
|
);
|
|
202
|
-
|
|
203
|
-
|
|
167
|
+
break;
|
|
168
|
+
case 9:
|
|
169
|
+
case 10:
|
|
170
|
+
attributeData = new draco.DracoFloat32Array();
|
|
171
|
+
vertexArray = new Float32Array(vertexArrayLength);
|
|
172
|
+
dracoDecoder.GetAttributeFloatForAllPoints(
|
|
204
173
|
dracoGeometry,
|
|
205
|
-
dracoDecoder,
|
|
206
174
|
dracoAttribute,
|
|
207
|
-
|
|
175
|
+
attributeData
|
|
208
176
|
);
|
|
177
|
+
break;
|
|
178
|
+
}
|
|
179
|
+
for (let i = 0; i < vertexArrayLength; ++i) {
|
|
180
|
+
vertexArray[i] = attributeData.GetValue(i);
|
|
181
|
+
}
|
|
182
|
+
draco.destroy(attributeData);
|
|
183
|
+
return vertexArray;
|
|
184
|
+
}
|
|
185
|
+
function decodeAttribute(dracoGeometry, dracoDecoder, dracoAttribute) {
|
|
186
|
+
const numPoints = dracoGeometry.num_points();
|
|
187
|
+
const numComponents = dracoAttribute.num_components();
|
|
188
|
+
let quantization;
|
|
189
|
+
let transform = new draco.AttributeQuantizationTransform();
|
|
190
|
+
if (transform.InitFromAttribute(dracoAttribute)) {
|
|
191
|
+
const minValues = new Array(numComponents);
|
|
192
|
+
for (let i = 0; i < numComponents; ++i) {
|
|
193
|
+
minValues[i] = transform.min_value(i);
|
|
209
194
|
}
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
data: {
|
|
216
|
-
componentsPerAttribute: numComponents,
|
|
217
|
-
componentDatatype: componentDatatype,
|
|
218
|
-
byteOffset: dracoAttribute.byte_offset(),
|
|
219
|
-
byteStride:
|
|
220
|
-
ComponentDatatype.ComponentDatatype.getSizeInBytes(componentDatatype) * numComponents,
|
|
221
|
-
normalized: dracoAttribute.normalized(),
|
|
222
|
-
quantization: quantization,
|
|
223
|
-
},
|
|
195
|
+
quantization = {
|
|
196
|
+
quantizationBits: transform.quantization_bits(),
|
|
197
|
+
minValues,
|
|
198
|
+
range: transform.range(),
|
|
199
|
+
octEncoded: false
|
|
224
200
|
};
|
|
225
201
|
}
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
const decodingStatus = dracoDecoder.DecodeBufferToPointCloud(
|
|
245
|
-
buffer,
|
|
246
|
-
dracoPointCloud
|
|
202
|
+
draco.destroy(transform);
|
|
203
|
+
transform = new draco.AttributeOctahedronTransform();
|
|
204
|
+
if (transform.InitFromAttribute(dracoAttribute)) {
|
|
205
|
+
quantization = {
|
|
206
|
+
quantizationBits: transform.quantization_bits(),
|
|
207
|
+
octEncoded: true
|
|
208
|
+
};
|
|
209
|
+
}
|
|
210
|
+
draco.destroy(transform);
|
|
211
|
+
const vertexArrayLength = numPoints * numComponents;
|
|
212
|
+
let vertexArray;
|
|
213
|
+
if (defined_default(quantization)) {
|
|
214
|
+
vertexArray = decodeQuantizedDracoTypedArray(
|
|
215
|
+
dracoGeometry,
|
|
216
|
+
dracoDecoder,
|
|
217
|
+
dracoAttribute,
|
|
218
|
+
quantization,
|
|
219
|
+
vertexArrayLength
|
|
247
220
|
);
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
221
|
+
} else {
|
|
222
|
+
vertexArray = decodeDracoTypedArray(
|
|
223
|
+
dracoGeometry,
|
|
224
|
+
dracoDecoder,
|
|
225
|
+
dracoAttribute,
|
|
226
|
+
vertexArrayLength
|
|
227
|
+
);
|
|
228
|
+
}
|
|
229
|
+
const componentDatatype = ComponentDatatype_default.fromTypedArray(vertexArray);
|
|
230
|
+
return {
|
|
231
|
+
array: vertexArray,
|
|
232
|
+
data: {
|
|
233
|
+
componentsPerAttribute: numComponents,
|
|
234
|
+
componentDatatype,
|
|
235
|
+
byteOffset: dracoAttribute.byte_offset(),
|
|
236
|
+
byteStride: ComponentDatatype_default.getSizeInBytes(componentDatatype) * numComponents,
|
|
237
|
+
normalized: dracoAttribute.normalized(),
|
|
238
|
+
quantization
|
|
252
239
|
}
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
240
|
+
};
|
|
241
|
+
}
|
|
242
|
+
function decodePointCloud(parameters) {
|
|
243
|
+
const dracoDecoder = new draco.Decoder();
|
|
244
|
+
if (parameters.dequantizeInShader) {
|
|
245
|
+
dracoDecoder.SkipAttributeTransform(draco.POSITION);
|
|
246
|
+
dracoDecoder.SkipAttributeTransform(draco.NORMAL);
|
|
247
|
+
}
|
|
248
|
+
const buffer = new draco.DecoderBuffer();
|
|
249
|
+
buffer.Init(parameters.buffer, parameters.buffer.length);
|
|
250
|
+
const geometryType = dracoDecoder.GetEncodedGeometryType(buffer);
|
|
251
|
+
if (geometryType !== draco.POINT_CLOUD) {
|
|
252
|
+
throw new RuntimeError_default("Draco geometry type must be POINT_CLOUD.");
|
|
253
|
+
}
|
|
254
|
+
const dracoPointCloud = new draco.PointCloud();
|
|
255
|
+
const decodingStatus = dracoDecoder.DecodeBufferToPointCloud(
|
|
256
|
+
buffer,
|
|
257
|
+
dracoPointCloud
|
|
258
|
+
);
|
|
259
|
+
if (!decodingStatus.ok() || dracoPointCloud.ptr === 0) {
|
|
260
|
+
throw new RuntimeError_default(
|
|
261
|
+
`Error decoding draco point cloud: ${decodingStatus.error_msg()}`
|
|
262
|
+
);
|
|
263
|
+
}
|
|
264
|
+
draco.destroy(buffer);
|
|
265
|
+
const result = {};
|
|
266
|
+
const properties = parameters.properties;
|
|
267
|
+
for (const propertyName in properties) {
|
|
268
|
+
if (properties.hasOwnProperty(propertyName)) {
|
|
269
|
+
let dracoAttribute;
|
|
270
|
+
if (propertyName === "POSITION" || propertyName === "NORMAL") {
|
|
271
|
+
const dracoAttributeId = dracoDecoder.GetAttributeId(
|
|
279
272
|
dracoPointCloud,
|
|
280
|
-
|
|
281
|
-
dracoAttribute
|
|
273
|
+
draco[propertyName]
|
|
282
274
|
);
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
draco.destroy(dracoPointCloud);
|
|
287
|
-
draco.destroy(dracoDecoder);
|
|
288
|
-
|
|
289
|
-
return result;
|
|
290
|
-
}
|
|
291
|
-
|
|
292
|
-
function decodePrimitive(parameters) {
|
|
293
|
-
const dracoDecoder = new draco.Decoder();
|
|
294
|
-
|
|
295
|
-
// Skip all parameter types except generic
|
|
296
|
-
const attributesToSkip = ["POSITION", "NORMAL", "COLOR", "TEX_COORD"];
|
|
297
|
-
if (parameters.dequantizeInShader) {
|
|
298
|
-
for (let i = 0; i < attributesToSkip.length; ++i) {
|
|
299
|
-
dracoDecoder.SkipAttributeTransform(draco[attributesToSkip[i]]);
|
|
300
|
-
}
|
|
301
|
-
}
|
|
302
|
-
|
|
303
|
-
const bufferView = parameters.bufferView;
|
|
304
|
-
const buffer = new draco.DecoderBuffer();
|
|
305
|
-
buffer.Init(parameters.array, bufferView.byteLength);
|
|
306
|
-
|
|
307
|
-
const geometryType = dracoDecoder.GetEncodedGeometryType(buffer);
|
|
308
|
-
if (geometryType !== draco.TRIANGULAR_MESH) {
|
|
309
|
-
throw new RuntimeError.RuntimeError("Unsupported draco mesh geometry type.");
|
|
310
|
-
}
|
|
311
|
-
|
|
312
|
-
const dracoGeometry = new draco.Mesh();
|
|
313
|
-
const decodingStatus = dracoDecoder.DecodeBufferToMesh(buffer, dracoGeometry);
|
|
314
|
-
if (!decodingStatus.ok() || dracoGeometry.ptr === 0) {
|
|
315
|
-
throw new RuntimeError.RuntimeError(
|
|
316
|
-
`Error decoding draco mesh geometry: ${decodingStatus.error_msg()}`
|
|
317
|
-
);
|
|
318
|
-
}
|
|
319
|
-
|
|
320
|
-
draco.destroy(buffer);
|
|
321
|
-
|
|
322
|
-
const attributeData = {};
|
|
323
|
-
|
|
324
|
-
const compressedAttributes = parameters.compressedAttributes;
|
|
325
|
-
for (const attributeName in compressedAttributes) {
|
|
326
|
-
if (compressedAttributes.hasOwnProperty(attributeName)) {
|
|
327
|
-
const compressedAttribute = compressedAttributes[attributeName];
|
|
328
|
-
const dracoAttribute = dracoDecoder.GetAttributeByUniqueId(
|
|
329
|
-
dracoGeometry,
|
|
330
|
-
compressedAttribute
|
|
275
|
+
dracoAttribute = dracoDecoder.GetAttribute(
|
|
276
|
+
dracoPointCloud,
|
|
277
|
+
dracoAttributeId
|
|
331
278
|
);
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
279
|
+
} else {
|
|
280
|
+
const attributeId = properties[propertyName];
|
|
281
|
+
dracoAttribute = dracoDecoder.GetAttributeByUniqueId(
|
|
282
|
+
dracoPointCloud,
|
|
283
|
+
attributeId
|
|
336
284
|
);
|
|
337
285
|
}
|
|
286
|
+
result[propertyName] = decodeAttribute(
|
|
287
|
+
dracoPointCloud,
|
|
288
|
+
dracoDecoder,
|
|
289
|
+
dracoAttribute
|
|
290
|
+
);
|
|
338
291
|
}
|
|
339
|
-
|
|
340
|
-
const result = {
|
|
341
|
-
indexArray: decodeIndexArray(dracoGeometry, dracoDecoder),
|
|
342
|
-
attributeData: attributeData,
|
|
343
|
-
};
|
|
344
|
-
|
|
345
|
-
draco.destroy(dracoGeometry);
|
|
346
|
-
draco.destroy(dracoDecoder);
|
|
347
|
-
|
|
348
|
-
return result;
|
|
349
292
|
}
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
293
|
+
draco.destroy(dracoPointCloud);
|
|
294
|
+
draco.destroy(dracoDecoder);
|
|
295
|
+
return result;
|
|
296
|
+
}
|
|
297
|
+
function decodePrimitive(parameters) {
|
|
298
|
+
const dracoDecoder = new draco.Decoder();
|
|
299
|
+
const attributesToSkip = ["POSITION", "NORMAL", "COLOR", "TEX_COORD"];
|
|
300
|
+
if (parameters.dequantizeInShader) {
|
|
301
|
+
for (let i = 0; i < attributesToSkip.length; ++i) {
|
|
302
|
+
dracoDecoder.SkipAttributeTransform(draco[attributesToSkip[i]]);
|
|
354
303
|
}
|
|
355
|
-
return decodePointCloud(parameters);
|
|
356
304
|
}
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
305
|
+
const bufferView = parameters.bufferView;
|
|
306
|
+
const buffer = new draco.DecoderBuffer();
|
|
307
|
+
buffer.Init(parameters.array, bufferView.byteLength);
|
|
308
|
+
const geometryType = dracoDecoder.GetEncodedGeometryType(buffer);
|
|
309
|
+
if (geometryType !== draco.TRIANGULAR_MESH) {
|
|
310
|
+
throw new RuntimeError_default("Unsupported draco mesh geometry type.");
|
|
362
311
|
}
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
312
|
+
const dracoGeometry = new draco.Mesh();
|
|
313
|
+
const decodingStatus = dracoDecoder.DecodeBufferToMesh(buffer, dracoGeometry);
|
|
314
|
+
if (!decodingStatus.ok() || dracoGeometry.ptr === 0) {
|
|
315
|
+
throw new RuntimeError_default(
|
|
316
|
+
`Error decoding draco mesh geometry: ${decodingStatus.error_msg()}`
|
|
317
|
+
);
|
|
318
|
+
}
|
|
319
|
+
draco.destroy(buffer);
|
|
320
|
+
const attributeData = {};
|
|
321
|
+
const compressedAttributes = parameters.compressedAttributes;
|
|
322
|
+
for (const attributeName in compressedAttributes) {
|
|
323
|
+
if (compressedAttributes.hasOwnProperty(attributeName)) {
|
|
324
|
+
const compressedAttribute = compressedAttributes[attributeName];
|
|
325
|
+
const dracoAttribute = dracoDecoder.GetAttributeByUniqueId(
|
|
326
|
+
dracoGeometry,
|
|
327
|
+
compressedAttribute
|
|
328
|
+
);
|
|
329
|
+
attributeData[attributeName] = decodeAttribute(
|
|
330
|
+
dracoGeometry,
|
|
331
|
+
dracoDecoder,
|
|
332
|
+
dracoAttribute
|
|
333
|
+
);
|
|
384
334
|
}
|
|
385
335
|
}
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
}
|
|
336
|
+
const result = {
|
|
337
|
+
indexArray: decodeIndexArray(dracoGeometry, dracoDecoder),
|
|
338
|
+
attributeData
|
|
339
|
+
};
|
|
340
|
+
draco.destroy(dracoGeometry);
|
|
341
|
+
draco.destroy(dracoDecoder);
|
|
342
|
+
return result;
|
|
343
|
+
}
|
|
344
|
+
async function decode(parameters, transferableObjects) {
|
|
345
|
+
if (defined_default(parameters.bufferView)) {
|
|
346
|
+
return decodePrimitive(parameters);
|
|
347
|
+
}
|
|
348
|
+
return decodePointCloud(parameters);
|
|
349
|
+
}
|
|
350
|
+
async function initWorker(parameters, transferableObjects) {
|
|
351
|
+
const wasmConfig = parameters.webAssemblyConfig;
|
|
352
|
+
if (defined_default(wasmConfig) && defined_default(wasmConfig.wasmBinaryFile)) {
|
|
353
|
+
draco = await (0, import_draco_decoder_nodejs.default)(wasmConfig);
|
|
354
|
+
} else {
|
|
355
|
+
draco = await (0, import_draco_decoder_nodejs.default)();
|
|
356
|
+
}
|
|
357
|
+
return true;
|
|
358
|
+
}
|
|
359
|
+
async function decodeDraco(parameters, transferableObjects) {
|
|
360
|
+
const wasmConfig = parameters.webAssemblyConfig;
|
|
361
|
+
if (defined_default(wasmConfig)) {
|
|
362
|
+
return initWorker(parameters, transferableObjects);
|
|
363
|
+
}
|
|
364
|
+
return decode(parameters, transferableObjects);
|
|
365
|
+
}
|
|
366
|
+
var decodeDraco_default = createTaskProcessorWorker_default(decodeDraco);
|
|
367
|
+
export {
|
|
368
|
+
decodeDraco_default as default
|
|
369
|
+
};
|