@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
|
@@ -55,7 +55,6 @@ import destroyObject from "../Core/destroyObject.js";
|
|
|
55
55
|
import HeightmapEncoding from "../Core/HeightmapEncoding.js";
|
|
56
56
|
import Resource from "../Core/Resource.js";
|
|
57
57
|
import RuntimeError from "../Core/RuntimeError.js";
|
|
58
|
-
import TaskProcessor from "../Core/TaskProcessor.js";
|
|
59
58
|
import WebMercatorProjection from "../Core/WebMercatorProjection.js";
|
|
60
59
|
import I3SLayer from "./I3SLayer.js";
|
|
61
60
|
import Lerc from "lerc";
|
|
@@ -492,32 +491,6 @@ I3SDataProvider.prototype._binarizeGltf = function (rawGltf) {
|
|
|
492
491
|
return binaryGltfData;
|
|
493
492
|
};
|
|
494
493
|
|
|
495
|
-
/**
|
|
496
|
-
* @private
|
|
497
|
-
* @returns {Promise<TaskProcessor>}
|
|
498
|
-
*/
|
|
499
|
-
I3SDataProvider.prototype.getDecoderTaskProcessor = function () {
|
|
500
|
-
if (defined(this._taskProcessorReadyPromise)) {
|
|
501
|
-
return this._taskProcessorReadyPromise;
|
|
502
|
-
}
|
|
503
|
-
|
|
504
|
-
if (!defined(this._decoderTaskProcessor)) {
|
|
505
|
-
const processor = new TaskProcessor("decodeI3S");
|
|
506
|
-
this._taskProcessorReadyPromise = processor
|
|
507
|
-
.initWebAssemblyModule({
|
|
508
|
-
modulePath: "ThirdParty/Workers/draco_decoder_nodejs.js",
|
|
509
|
-
wasmBinaryFile: "ThirdParty/draco_decoder.wasm",
|
|
510
|
-
})
|
|
511
|
-
.then(() => {
|
|
512
|
-
return processor;
|
|
513
|
-
});
|
|
514
|
-
|
|
515
|
-
this._decoderTaskProcessor = processor;
|
|
516
|
-
}
|
|
517
|
-
|
|
518
|
-
return this._taskProcessorReadyPromise;
|
|
519
|
-
};
|
|
520
|
-
|
|
521
494
|
const scratchCartesian2 = new Cartesian2();
|
|
522
495
|
|
|
523
496
|
function getCoveredTiles(terrainProvider, extent) {
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
import Cartographic from "../Core/Cartographic.js";
|
|
2
|
+
import Check from "../Core/Check.js";
|
|
3
|
+
import defined from "../Core/defined.js";
|
|
4
|
+
import Ellipsoid from "../Core/Ellipsoid.js";
|
|
5
|
+
import FeatureDetection from "../Core/FeatureDetection.js";
|
|
6
|
+
import CesiumMath from "../Core/Math.js";
|
|
7
|
+
import Matrix3 from "../Core/Matrix3.js";
|
|
8
|
+
import RuntimeError from "../Core/RuntimeError.js";
|
|
9
|
+
import TaskProcessor from "../Core/TaskProcessor.js";
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Decode I3S using web workers.
|
|
13
|
+
*
|
|
14
|
+
* @private
|
|
15
|
+
*/
|
|
16
|
+
function I3SDecoder() {}
|
|
17
|
+
|
|
18
|
+
// Maximum concurrency to use when decoding draco models
|
|
19
|
+
I3SDecoder._maxDecodingConcurrency = Math.max(
|
|
20
|
+
FeatureDetection.hardwareConcurrency - 1,
|
|
21
|
+
1
|
|
22
|
+
);
|
|
23
|
+
|
|
24
|
+
I3SDecoder._decodeTaskProcessor = new TaskProcessor(
|
|
25
|
+
"decodeI3S",
|
|
26
|
+
I3SDecoder._maxDecodingConcurrency
|
|
27
|
+
);
|
|
28
|
+
|
|
29
|
+
I3SDecoder._promise = undefined;
|
|
30
|
+
|
|
31
|
+
async function initializeDecoder() {
|
|
32
|
+
const result = await I3SDecoder._decodeTaskProcessor.initWebAssemblyModule({
|
|
33
|
+
wasmBinaryFile: "ThirdParty/draco_decoder.wasm",
|
|
34
|
+
});
|
|
35
|
+
if (result) {
|
|
36
|
+
return I3SDecoder._decodeTaskProcessor;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
throw new RuntimeError("I3S decoder could not be initialized.");
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* Transcodes I3S to glTF in a web worker
|
|
44
|
+
* @param {String} url custom attributes source URL
|
|
45
|
+
* @param {Object} defaultGeometrySchema Schema to use during decoding
|
|
46
|
+
* @param {I3SGeometry} geometryData The draco encoded geometry data
|
|
47
|
+
* @param {Array} [featureData] The draco encoded feature data
|
|
48
|
+
* @returns Promise<undefined|object> Returns a promise which resolves to the glTF result, or undefined if the task cannot be scheduled this frame.
|
|
49
|
+
*
|
|
50
|
+
* @exception {RuntimeError} I3S decoder could not be initialized.
|
|
51
|
+
*/
|
|
52
|
+
I3SDecoder.decode = async function (
|
|
53
|
+
url,
|
|
54
|
+
defaultGeometrySchema,
|
|
55
|
+
geometryData,
|
|
56
|
+
featureData
|
|
57
|
+
) {
|
|
58
|
+
//>>includeStart('debug', pragmas.debug);
|
|
59
|
+
Check.typeOf.string("url", url);
|
|
60
|
+
Check.defined("defaultGeometrySchema", defaultGeometrySchema);
|
|
61
|
+
Check.defined("geometryData", geometryData);
|
|
62
|
+
//>>includeEnd('debug');
|
|
63
|
+
|
|
64
|
+
if (!defined(I3SDecoder._promise)) {
|
|
65
|
+
I3SDecoder._promise = initializeDecoder();
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
return I3SDecoder._promise.then(function (taskProcessor) {
|
|
69
|
+
// Prepare the data to send to the worker
|
|
70
|
+
const parentData = geometryData._parent._data;
|
|
71
|
+
const parentRotationInverseMatrix =
|
|
72
|
+
geometryData._parent._inverseRotationMatrix;
|
|
73
|
+
|
|
74
|
+
let longitude = 0.0;
|
|
75
|
+
let latitude = 0.0;
|
|
76
|
+
let height = 0.0;
|
|
77
|
+
|
|
78
|
+
if (defined(parentData.obb)) {
|
|
79
|
+
longitude = parentData.obb.center[0];
|
|
80
|
+
latitude = parentData.obb.center[1];
|
|
81
|
+
height = parentData.obb.center[2];
|
|
82
|
+
} else if (defined(parentData.mbs)) {
|
|
83
|
+
longitude = parentData.mbs[0];
|
|
84
|
+
latitude = parentData.mbs[1];
|
|
85
|
+
height = parentData.mbs[2];
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
const axisFlipRotation = Matrix3.fromRotationX(-CesiumMath.PI_OVER_TWO);
|
|
89
|
+
const parentRotation = new Matrix3();
|
|
90
|
+
|
|
91
|
+
Matrix3.multiply(
|
|
92
|
+
axisFlipRotation,
|
|
93
|
+
parentRotationInverseMatrix,
|
|
94
|
+
parentRotation
|
|
95
|
+
);
|
|
96
|
+
|
|
97
|
+
const cartographicCenter = Cartographic.fromDegrees(
|
|
98
|
+
longitude,
|
|
99
|
+
latitude,
|
|
100
|
+
height
|
|
101
|
+
);
|
|
102
|
+
|
|
103
|
+
const cartesianCenter = Ellipsoid.WGS84.cartographicToCartesian(
|
|
104
|
+
cartographicCenter
|
|
105
|
+
);
|
|
106
|
+
|
|
107
|
+
const payload = {
|
|
108
|
+
binaryData: geometryData._data,
|
|
109
|
+
featureData:
|
|
110
|
+
defined(featureData) && defined(featureData[0])
|
|
111
|
+
? featureData[0].data
|
|
112
|
+
: undefined,
|
|
113
|
+
schema: defaultGeometrySchema,
|
|
114
|
+
bufferInfo: geometryData._geometryBufferInfo,
|
|
115
|
+
ellipsoidRadiiSquare: Ellipsoid.WGS84.radiiSquared,
|
|
116
|
+
url: url,
|
|
117
|
+
geoidDataList: geometryData._dataProvider._geoidDataList,
|
|
118
|
+
cartographicCenter: cartographicCenter,
|
|
119
|
+
cartesianCenter: cartesianCenter,
|
|
120
|
+
parentRotation: parentRotation,
|
|
121
|
+
};
|
|
122
|
+
|
|
123
|
+
return taskProcessor.scheduleTask(payload);
|
|
124
|
+
});
|
|
125
|
+
};
|
|
126
|
+
|
|
127
|
+
export default I3SDecoder;
|
package/Source/Scene/I3SNode.js
CHANGED
|
@@ -3,7 +3,6 @@ import defaultValue from "../Core/defaultValue.js";
|
|
|
3
3
|
import defined from "../Core/defined.js";
|
|
4
4
|
import Ellipsoid from "../Core/Ellipsoid.js";
|
|
5
5
|
import HeadingPitchRoll from "../Core/HeadingPitchRoll.js";
|
|
6
|
-
import CesiumMath from "../Core/Math.js";
|
|
7
6
|
import Matrix3 from "../Core/Matrix3.js";
|
|
8
7
|
import Matrix4 from "../Core/Matrix4.js";
|
|
9
8
|
import Resource from "../Core/Resource.js";
|
|
@@ -11,6 +10,7 @@ import Quaternion from "../Core/Quaternion.js";
|
|
|
11
10
|
import Transforms from "../Core/Transforms.js";
|
|
12
11
|
import Cesium3DTile from "./Cesium3DTile.js";
|
|
13
12
|
import I3SDataProvider from "./I3SDataProvider.js";
|
|
13
|
+
import I3SDecoder from "./I3SDecoder.js";
|
|
14
14
|
import I3SFeature from "./I3SFeature.js";
|
|
15
15
|
import I3SField from "./I3SField.js";
|
|
16
16
|
import I3SGeometry from "./I3SGeometry.js";
|
|
@@ -608,71 +608,6 @@ I3SNode.prototype._create3DTileDefinition = function () {
|
|
|
608
608
|
return inPlaceTileDefinition;
|
|
609
609
|
};
|
|
610
610
|
|
|
611
|
-
/**
|
|
612
|
-
* @private
|
|
613
|
-
*/
|
|
614
|
-
I3SNode.prototype._createI3SDecoderTask = async function (
|
|
615
|
-
decodeI3STaskProcessor,
|
|
616
|
-
data
|
|
617
|
-
) {
|
|
618
|
-
// Prepare the data to send to the worker
|
|
619
|
-
const parentData = data.geometryData._parent._data;
|
|
620
|
-
const parentRotationInverseMatrix =
|
|
621
|
-
data.geometryData._parent._inverseRotationMatrix;
|
|
622
|
-
|
|
623
|
-
let longitude = 0.0;
|
|
624
|
-
let latitude = 0.0;
|
|
625
|
-
let height = 0.0;
|
|
626
|
-
|
|
627
|
-
if (defined(parentData.obb)) {
|
|
628
|
-
longitude = parentData.obb.center[0];
|
|
629
|
-
latitude = parentData.obb.center[1];
|
|
630
|
-
height = parentData.obb.center[2];
|
|
631
|
-
} else if (defined(parentData.mbs)) {
|
|
632
|
-
longitude = parentData.mbs[0];
|
|
633
|
-
latitude = parentData.mbs[1];
|
|
634
|
-
height = parentData.mbs[2];
|
|
635
|
-
}
|
|
636
|
-
|
|
637
|
-
const axisFlipRotation = Matrix3.fromRotationX(-CesiumMath.PI_OVER_TWO);
|
|
638
|
-
const parentRotation = new Matrix3();
|
|
639
|
-
|
|
640
|
-
Matrix3.multiply(
|
|
641
|
-
axisFlipRotation,
|
|
642
|
-
parentRotationInverseMatrix,
|
|
643
|
-
parentRotation
|
|
644
|
-
);
|
|
645
|
-
|
|
646
|
-
const cartographicCenter = Cartographic.fromDegrees(
|
|
647
|
-
longitude,
|
|
648
|
-
latitude,
|
|
649
|
-
height
|
|
650
|
-
);
|
|
651
|
-
|
|
652
|
-
const cartesianCenter = Ellipsoid.WGS84.cartographicToCartesian(
|
|
653
|
-
cartographicCenter
|
|
654
|
-
);
|
|
655
|
-
|
|
656
|
-
const payload = {
|
|
657
|
-
binaryData: data.geometryData._data,
|
|
658
|
-
featureData:
|
|
659
|
-
defined(data.featureData) && defined(data.featureData[0])
|
|
660
|
-
? data.featureData[0].data
|
|
661
|
-
: undefined,
|
|
662
|
-
schema: data.defaultGeometrySchema,
|
|
663
|
-
bufferInfo: data.geometryData._geometryBufferInfo,
|
|
664
|
-
ellipsoidRadiiSquare: Ellipsoid.WGS84.radiiSquared,
|
|
665
|
-
url: data.url,
|
|
666
|
-
geoidDataList: data.geometryData._dataProvider._geoidDataList,
|
|
667
|
-
cartographicCenter: cartographicCenter,
|
|
668
|
-
cartesianCenter: cartesianCenter,
|
|
669
|
-
parentRotation: parentRotation,
|
|
670
|
-
};
|
|
671
|
-
|
|
672
|
-
const transferrableObjects = [];
|
|
673
|
-
return decodeI3STaskProcessor.scheduleTask(payload, transferrableObjects);
|
|
674
|
-
};
|
|
675
|
-
|
|
676
611
|
/**
|
|
677
612
|
* @private
|
|
678
613
|
*/
|
|
@@ -702,59 +637,46 @@ I3SNode.prototype._createContentURL = async function () {
|
|
|
702
637
|
},
|
|
703
638
|
};
|
|
704
639
|
|
|
705
|
-
const decodeI3STaskProcessor = await this._dataProvider.getDecoderTaskProcessor();
|
|
706
|
-
|
|
707
640
|
// Load the geometry data
|
|
708
641
|
const dataPromises = [this._loadGeometryData()];
|
|
709
642
|
if (this._dataProvider.legacyVersion16) {
|
|
710
643
|
dataPromises.push(this._loadFeatureData());
|
|
711
644
|
}
|
|
712
645
|
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
|
|
719
|
-
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
parameters
|
|
729
|
-
);
|
|
730
|
-
if (!defined(promise)) {
|
|
731
|
-
// Postponed
|
|
732
|
-
return;
|
|
733
|
-
}
|
|
734
|
-
|
|
735
|
-
generateGltfPromise = promise.then(function (result) {
|
|
736
|
-
rawGltf = parameters.geometryData._generateGltf(
|
|
737
|
-
result.meshData.nodesInScene,
|
|
738
|
-
result.meshData.nodes,
|
|
739
|
-
result.meshData.meshes,
|
|
740
|
-
result.meshData.buffers,
|
|
741
|
-
result.meshData.bufferViews,
|
|
742
|
-
result.meshData.accessors
|
|
743
|
-
);
|
|
744
|
-
|
|
745
|
-
that._geometryData[0]._customAttributes =
|
|
746
|
-
result.meshData._customAttributes;
|
|
747
|
-
});
|
|
646
|
+
await Promise.all(dataPromises);
|
|
647
|
+
// Binary glTF
|
|
648
|
+
if (defined(this._geometryData) && this._geometryData.length > 0) {
|
|
649
|
+
const url = this._geometryData[0].resource.url;
|
|
650
|
+
const geometrySchema = this._layer._data.store.defaultGeometrySchema;
|
|
651
|
+
const geometryData = this._geometryData[0];
|
|
652
|
+
const result = await I3SDecoder.decode(
|
|
653
|
+
url,
|
|
654
|
+
geometrySchema,
|
|
655
|
+
geometryData,
|
|
656
|
+
this._featureData[0]
|
|
657
|
+
);
|
|
658
|
+
if (!defined(result)) {
|
|
659
|
+
// Postponed
|
|
660
|
+
return;
|
|
748
661
|
}
|
|
749
662
|
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
|
|
663
|
+
rawGltf = geometryData._generateGltf(
|
|
664
|
+
result.meshData.nodesInScene,
|
|
665
|
+
result.meshData.nodes,
|
|
666
|
+
result.meshData.meshes,
|
|
667
|
+
result.meshData.buffers,
|
|
668
|
+
result.meshData.bufferViews,
|
|
669
|
+
result.meshData.accessors
|
|
670
|
+
);
|
|
671
|
+
|
|
672
|
+
this._geometryData[0]._customAttributes = result.meshData._customAttributes;
|
|
673
|
+
}
|
|
674
|
+
|
|
675
|
+
const binaryGltfData = this._dataProvider._binarizeGltf(rawGltf);
|
|
676
|
+
const glbDataBlob = new Blob([binaryGltfData], {
|
|
677
|
+
type: "application/binary",
|
|
757
678
|
});
|
|
679
|
+
return URL.createObjectURL(glbDataBlob);
|
|
758
680
|
};
|
|
759
681
|
|
|
760
682
|
// Reimplement Cesium3DTile.prototype.requestContent so that
|
|
@@ -140,8 +140,8 @@ import TileImagery from "./TileImagery.js";
|
|
|
140
140
|
*
|
|
141
141
|
* @example
|
|
142
142
|
* // Add an OpenStreetMaps layer
|
|
143
|
-
* const imageryLayer = new Cesium.ImageryLayer(OpenStreetMapImageryProvider({
|
|
144
|
-
* url: "https://
|
|
143
|
+
* const imageryLayer = new Cesium.ImageryLayer(new Cesium.OpenStreetMapImageryProvider({
|
|
144
|
+
* url: "https://tile.openstreetmap.org/"
|
|
145
145
|
* })),
|
|
146
146
|
* scene.imageryLayers.add(imageryLayer);
|
|
147
147
|
*
|
|
@@ -536,8 +536,21 @@ function deriveChildTile(
|
|
|
536
536
|
// user specified such as extras or extensions.
|
|
537
537
|
const deep = true;
|
|
538
538
|
const rootHeader = clone(implicitTileset.tileHeader, deep);
|
|
539
|
+
// The bounding volume was computed above since it may come from metadata
|
|
540
|
+
// in the subtree file.
|
|
539
541
|
delete rootHeader.boundingVolume;
|
|
542
|
+
// Copying the transform to all the transcoded tiles would cause the transform
|
|
543
|
+
// to be applied multiple times. Removing it from the header avoids this issue.
|
|
540
544
|
delete rootHeader.transform;
|
|
545
|
+
// The implicit tiling spec does not specify what should happen if explicit
|
|
546
|
+
// tile metadata is added to the placeholder tile. Since implicit tile
|
|
547
|
+
// metadata comes from the subtree file, ignore the explicit version.
|
|
548
|
+
//
|
|
549
|
+
// Also, when a property with the semantic TILE_BOUNDING_VOLUME is added to
|
|
550
|
+
// the placeholder tile to set a tight bounding volume (See Cesium3DTile.js)
|
|
551
|
+
// propagating it to transcoded tiles causes transcoded tiles to use the
|
|
552
|
+
// wrong bounding volume, this can lead to loading far too many tiles.
|
|
553
|
+
delete rootHeader.metadata;
|
|
541
554
|
const combinedTileJson = combine(tileJson, rootHeader, deep);
|
|
542
555
|
|
|
543
556
|
const childTile = makeTile(
|
|
@@ -60,6 +60,11 @@ function ImplicitTileset(baseResource, tileJson, metadataSchema) {
|
|
|
60
60
|
*/
|
|
61
61
|
this.metadataSchema = metadataSchema;
|
|
62
62
|
|
|
63
|
+
// Due to using explicit tile metadata to store a tight bounding box
|
|
64
|
+
// in some cases (see https://github.com/CesiumGS/cesium/pull/11365)
|
|
65
|
+
// it's important that this bounding volume is computed from the tile JSON
|
|
66
|
+
// (which is the original, possibly loose bounding volume) rather than
|
|
67
|
+
// tile.boundingVolume which is the tighter one.
|
|
63
68
|
const boundingVolume = tileJson.boundingVolume;
|
|
64
69
|
if (
|
|
65
70
|
!defined(boundingVolume.box) &&
|
|
@@ -423,7 +423,11 @@ function createInstances(loader, components, frameState) {
|
|
|
423
423
|
// For I3DMs that do not define an RTC center, we manually compute a BoundingSphere and store
|
|
424
424
|
// positions relative to the center, to be uploaded to the GPU. This avoids jittering at higher
|
|
425
425
|
// precisions.
|
|
426
|
-
if
|
|
426
|
+
// Also manually compute if RTC center equals Cartesian3.ZERO
|
|
427
|
+
if (
|
|
428
|
+
!defined(rtcCenter) ||
|
|
429
|
+
Cartesian3.equals(Cartesian3.unpack(rtcCenter), Cartesian3.ZERO)
|
|
430
|
+
) {
|
|
427
431
|
const positionBoundingSphere = BoundingSphere.fromPoints(instancePositions);
|
|
428
432
|
|
|
429
433
|
for (i = 0; i < instancePositions.length; i++) {
|
|
@@ -1838,7 +1838,10 @@ Model.prototype.update = function (frameState) {
|
|
|
1838
1838
|
};
|
|
1839
1839
|
|
|
1840
1840
|
function processLoader(model, frameState) {
|
|
1841
|
-
if (
|
|
1841
|
+
if (
|
|
1842
|
+
!model._resourcesLoaded ||
|
|
1843
|
+
(model._loader.incrementallyLoadTextures && !model._texturesLoaded)
|
|
1844
|
+
) {
|
|
1842
1845
|
// Ensures frames continue to render in requestRender mode while resources are processing
|
|
1843
1846
|
frameState.afterRender.push(() => true);
|
|
1844
1847
|
return model._loader.process(frameState);
|
|
@@ -16,8 +16,9 @@ const defaultCredit = new Credit(
|
|
|
16
16
|
*
|
|
17
17
|
* Initialization options for the OpenStreetMapImageryProvider constructor
|
|
18
18
|
*
|
|
19
|
-
* @property {string} [url='https://
|
|
19
|
+
* @property {string} [url='https://tile.openstreetmap.org'] The OpenStreetMap server url.
|
|
20
20
|
* @property {string} [fileExtension='png'] The file extension for images on the server.
|
|
21
|
+
* @property {boolean} [retinaTiles=false] When true, request tiles at the 2x resolution for retina displays.
|
|
21
22
|
* @property {Rectangle} [rectangle=Rectangle.MAX_VALUE] The rectangle of the layer.
|
|
22
23
|
* @property {number} [minimumLevel=0] The minimum level-of-detail supported by the imagery provider.
|
|
23
24
|
* @property {number} [maximumLevel] The maximum level-of-detail supported by the imagery provider, or undefined if there is no limit.
|
|
@@ -49,7 +50,7 @@ const defaultCredit = new Credit(
|
|
|
49
50
|
*
|
|
50
51
|
* @example
|
|
51
52
|
* const osm = new Cesium.OpenStreetMapImageryProvider({
|
|
52
|
-
* url : 'https://
|
|
53
|
+
* url : 'https://tile.openstreetmap.org/'
|
|
53
54
|
* });
|
|
54
55
|
*
|
|
55
56
|
* @see {@link http://wiki.openstreetmap.org/wiki/Main_Page|OpenStreetMap Wiki}
|
|
@@ -59,10 +60,12 @@ function OpenStreetMapImageryProvider(options) {
|
|
|
59
60
|
options = defaultValue(options, defaultValue.EMPTY_OBJECT);
|
|
60
61
|
|
|
61
62
|
const resource = Resource.createIfNeeded(
|
|
62
|
-
defaultValue(options.url, "https://
|
|
63
|
+
defaultValue(options.url, "https://tile.openstreetmap.org/")
|
|
63
64
|
);
|
|
64
65
|
resource.appendForwardSlash();
|
|
65
|
-
resource.url += `{z}/{x}/{y}
|
|
66
|
+
resource.url += `{z}/{x}/{y}${
|
|
67
|
+
options.retinaTiles ? "@2x" : ""
|
|
68
|
+
}.${defaultValue(options.fileExtension, "png")}`;
|
|
66
69
|
|
|
67
70
|
const tilingScheme = new WebMercatorTilingScheme({
|
|
68
71
|
ellipsoid: options.ellipsoid,
|
|
@@ -24,8 +24,9 @@ import ImageryProvider from "./ImageryProvider.js";
|
|
|
24
24
|
*/
|
|
25
25
|
|
|
26
26
|
/**
|
|
27
|
-
* Provides a single, top-level imagery tile. The single image is assumed to
|
|
28
|
-
*
|
|
27
|
+
* Provides a single, top-level imagery tile. The single image is assumed to be in
|
|
28
|
+
* the Geographic projection (i.e. WGS84 / EPSG:4326),
|
|
29
|
+
* and will be rendered using a {@link GeographicTilingScheme}.
|
|
29
30
|
*
|
|
30
31
|
* @alias SingleTileImageryProvider
|
|
31
32
|
* @constructor
|
|
@@ -295,6 +296,7 @@ async function doRequest(resource, provider, previousError) {
|
|
|
295
296
|
* Creates a provider for a single, top-level imagery tile. The single image is assumed to use a
|
|
296
297
|
* @param {Resource|String} url The url for the tile
|
|
297
298
|
* @param {SingleTileImageryProvider.fromUrlOptions} [options] Object describing initialization options.
|
|
299
|
+
* @returns {Promise.<SingleTileImageryProvider>} The resolved SingleTileImageryProvider.
|
|
298
300
|
*
|
|
299
301
|
* @example
|
|
300
302
|
* const provider = await SingleTileImageryProvider.fromUrl("https://yoururl.com/image.png");
|