@cesium/engine 17.0.0 → 18.0.1-splats.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/z-worker-pako.js +1 -1
- package/Build/Workers/{chunk-UC7KH56Y.js → chunk-2AXKROJA.js} +5 -5
- package/Build/Workers/{chunk-IKDQX7DY.js → chunk-2J5ZZ7CY.js} +4 -4
- package/Build/Workers/{chunk-4TIR5UPL.js → chunk-2SYY3UBI.js} +1 -1
- package/Build/Workers/{chunk-CC2WKHIW.js → chunk-2WKW3BEB.js} +6 -6
- package/Build/Workers/{chunk-CBFJVM6I.js → chunk-2ZO6BCHN.js} +11 -11
- package/Build/Workers/{chunk-7PHT4JHA.js → chunk-3UKG5X7F.js} +12 -12
- package/Build/Workers/{chunk-PM4Q36WX.js → chunk-4GYIDPXP.js} +9 -9
- package/Build/Workers/{chunk-QUFN3GEO.js → chunk-6EP7ED36.js} +3 -3
- package/Build/Workers/{chunk-QJTIOB2Z.js → chunk-6QOBORNG.js} +6 -6
- package/Build/Workers/{chunk-YE6MDFDA.js → chunk-6WWHK2ER.js} +14 -14
- package/Build/Workers/{chunk-RX65FA7X.js → chunk-6Y6TVYHS.js} +7 -7
- package/Build/Workers/{chunk-P2N5IDWU.js → chunk-744VWE2U.js} +13 -13
- package/Build/Workers/{chunk-LVGYWPEX.js → chunk-7PQ52XCW.js} +4 -4
- package/Build/Workers/{chunk-PS3OKVOQ.js → chunk-A5UFJW2M.js} +12 -12
- package/Build/Workers/{chunk-CAKU6ZPR.js → chunk-AQKVFTWV.js} +8 -8
- package/Build/Workers/{chunk-236N6BJN.js → chunk-BKTEHJFD.js} +2 -2
- package/Build/Workers/{chunk-5PC577K7.js → chunk-CQXYKPAW.js} +16 -16
- package/Build/Workers/{chunk-DRMXU674.js → chunk-DI7PHKC6.js} +5 -5
- package/Build/Workers/{chunk-CQMXZF4A.js → chunk-DKKIQS6F.js} +6 -6
- package/Build/Workers/{chunk-J2HTPGC7.js → chunk-DTVWE5YL.js} +2 -2
- package/Build/Workers/{chunk-SSLK4U3V.js → chunk-ERPS2WZC.js} +4 -4
- package/Build/Workers/chunk-EYMZ5FSQ.js +280 -0
- package/Build/Workers/{chunk-LPGOAMYH.js → chunk-F43TQW5B.js} +2 -2
- package/Build/Workers/{chunk-5RPUEFSA.js → chunk-FOMRN6II.js} +6 -6
- package/Build/Workers/{chunk-2BJXFXD7.js → chunk-FOTXJYKS.js} +4 -4
- package/Build/Workers/{chunk-VXAKU6EV.js → chunk-G2Y7EA4W.js} +5 -5
- package/Build/Workers/{chunk-KE45DUDH.js → chunk-GY4E4ZP6.js} +10 -10
- package/Build/Workers/{chunk-NZSBSY5K.js → chunk-HDG3VHYL.js} +2 -2
- package/Build/Workers/{chunk-WP3IJYLC.js → chunk-HOEUXPBL.js} +9 -9
- package/Build/Workers/{chunk-5YEFZMMM.js → chunk-IWDYVJ56.js} +12 -12
- package/Build/Workers/{chunk-SQKTLDSD.js → chunk-JA4KPQJL.js} +12 -12
- package/Build/Workers/{chunk-MAIKDIBS.js → chunk-JZZQEZMA.js} +6 -6
- package/Build/Workers/{chunk-77MDEA47.js → chunk-KPLU3WDY.js} +5 -5
- package/Build/Workers/{chunk-E7SMO47Q.js → chunk-LHM6V4D6.js} +5 -5
- package/Build/Workers/{chunk-HBNWBMAM.js → chunk-LMTGCD6P.js} +1 -1
- package/Build/Workers/{chunk-XYGBWBD5.js → chunk-LWZOYSSF.js} +1 -1
- package/Build/Workers/{chunk-OBHLT34A.js → chunk-M6U7SV4T.js} +7 -7
- package/Build/Workers/{chunk-MS5NWDHH.js → chunk-O25M56DO.js} +2 -2
- package/Build/Workers/{chunk-UX5JWAC7.js → chunk-OE2WXO2Z.js} +10 -10
- package/Build/Workers/{chunk-C5DCX2YQ.js → chunk-PFD462OE.js} +6 -6
- package/Build/Workers/{chunk-37PA7GZW.js → chunk-PPI33PXH.js} +7 -7
- package/Build/Workers/{chunk-4BGKMM7J.js → chunk-PRQQHLUB.js} +1 -1
- package/Build/Workers/{chunk-IFIS4CVK.js → chunk-RTUZ7MJB.js} +2 -2
- package/Build/Workers/{chunk-G6JUXZUO.js → chunk-S6QBTP5U.js} +4 -4
- package/Build/Workers/{chunk-UFV3YUIN.js → chunk-SMFCIGM3.js} +5 -5
- package/Build/Workers/{chunk-P57PR3WM.js → chunk-TC3LEKFJ.js} +5 -5
- package/Build/Workers/{chunk-7IIMO7ZZ.js → chunk-UTLYCPFY.js} +16 -16
- package/Build/Workers/{chunk-HGEGZ67N.js → chunk-V7LEBY53.js} +6 -6
- package/Build/Workers/{chunk-GO3RZX2R.js → chunk-VE3UKRDB.js} +9 -9
- package/Build/Workers/{chunk-ZTBZMRQT.js → chunk-W3FBD4FE.js} +8 -8
- package/Build/Workers/{chunk-K5JTWJPE.js → chunk-YRR6CJGG.js} +4 -4
- package/Build/Workers/{chunk-UZ6KXWCA.js → chunk-ZVTKMLU6.js} +4 -4
- package/Build/Workers/combineGeometry.js +21 -21
- package/Build/Workers/createBoxGeometry.js +15 -15
- package/Build/Workers/createBoxOutlineGeometry.js +13 -13
- package/Build/Workers/createCircleGeometry.js +23 -23
- package/Build/Workers/createCircleOutlineGeometry.js +16 -16
- package/Build/Workers/createCoplanarPolygonGeometry.js +30 -30
- package/Build/Workers/createCoplanarPolygonOutlineGeometry.js +28 -28
- package/Build/Workers/createCorridorGeometry.js +26 -26
- package/Build/Workers/createCorridorOutlineGeometry.js +25 -25
- package/Build/Workers/createCylinderGeometry.js +17 -17
- package/Build/Workers/createCylinderOutlineGeometry.js +15 -15
- package/Build/Workers/createEllipseGeometry.js +23 -23
- package/Build/Workers/createEllipseOutlineGeometry.js +16 -16
- package/Build/Workers/createEllipsoidGeometry.js +16 -16
- package/Build/Workers/createEllipsoidOutlineGeometry.js +15 -15
- package/Build/Workers/createFrustumGeometry.js +15 -15
- package/Build/Workers/createFrustumOutlineGeometry.js +15 -15
- package/Build/Workers/createGeometry.js +23 -21
- package/Build/Workers/createGroundPolylineGeometry.js +19 -19
- package/Build/Workers/createPlaneGeometry.js +13 -13
- package/Build/Workers/createPlaneOutlineGeometry.js +12 -12
- package/Build/Workers/createPolygonGeometry.js +29 -29
- package/Build/Workers/createPolygonOutlineGeometry.js +27 -27
- package/Build/Workers/createPolylineGeometry.js +22 -22
- package/Build/Workers/createPolylineVolumeGeometry.js +28 -28
- package/Build/Workers/createPolylineVolumeOutlineGeometry.js +24 -24
- package/Build/Workers/createRectangleGeometry.js +24 -24
- package/Build/Workers/createRectangleOutlineGeometry.js +17 -17
- package/Build/Workers/createSimplePolylineGeometry.js +20 -20
- package/Build/Workers/createSphereGeometry.js +16 -16
- package/Build/Workers/createSphereOutlineGeometry.js +15 -15
- package/Build/Workers/createTaskProcessorWorker.js +3 -3
- package/Build/Workers/createVectorTileClampedPolylines.js +12 -12
- package/Build/Workers/createVectorTileGeometries.js +21 -21
- package/Build/Workers/createVectorTilePoints.js +11 -11
- package/Build/Workers/createVectorTilePolygons.js +19 -19
- package/Build/Workers/createVectorTilePolylines.js +12 -12
- package/Build/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js +19 -19
- package/Build/Workers/createVerticesFromHeightmap.js +19 -19
- package/Build/Workers/createVerticesFromQuantizedTerrainMesh.js +16 -16
- package/Build/Workers/createWallGeometry.js +21 -21
- package/Build/Workers/createWallOutlineGeometry.js +20 -20
- package/Build/Workers/decodeDraco.js +10 -10
- package/Build/Workers/decodeGoogleEarthEnterprisePacket.js +5 -5
- package/Build/Workers/decodeI3S.js +9 -9
- package/Build/Workers/gaussianSplatSorter.js +62 -0
- package/Build/Workers/gaussianSplatTextureGenerator.js +68 -0
- package/Build/Workers/transcodeKTX2.js +78 -7
- package/Build/Workers/transferTypedArrayTest.js +1 -1
- package/Build/Workers/upsampleQuantizedTerrainMesh.js +19 -19
- package/Source/Core/Ion.js +1 -1
- package/Source/Core/PixelFormat.js +98 -0
- package/Source/Renderer/Context.js +2 -0
- package/Source/Renderer/Pass.js +3 -2
- package/Source/Renderer/Texture.js +1 -0
- package/Source/Renderer/Texture3D.js +568 -0
- package/Source/Renderer/VertexArray.js +33 -8
- package/Source/Renderer/createUniform.js +3 -0
- package/Source/Renderer/createUniformArray.js +1 -0
- package/Source/Scene/ArcGisMapService.js +1 -1
- package/Source/Scene/Cesium3DTileContentFactory.js +23 -0
- package/Source/Scene/Cesium3DTileset.js +197 -2
- package/Source/Scene/GaussianSplat3DTileContent.js +504 -0
- package/Source/Scene/GaussianSplatPrimitive.js +932 -0
- package/Source/Scene/GaussianSplatRenderResources.js +81 -0
- package/Source/Scene/GaussianSplatSorter.js +73 -0
- package/Source/Scene/GaussianSplatTextureGenerator.js +64 -0
- package/Source/Scene/GlobeSurfaceShaderSet.js +4 -5
- package/Source/Scene/GltfLoader.js +82 -4
- package/Source/Scene/GltfSpzLoader.js +222 -0
- package/Source/Scene/GltfVertexBufferLoader.js +98 -3
- package/Source/Scene/ImageryLayer.js +19 -4
- package/Source/Scene/ImageryLayerCollection.js +3 -2
- package/Source/Scene/Model/CartesianRectangle.js +108 -0
- package/Source/Scene/Model/ImageryConfiguration.js +25 -0
- package/Source/Scene/Model/ImageryCoverage.js +488 -0
- package/Source/Scene/Model/ImageryFlags.js +31 -0
- package/Source/Scene/Model/ImageryInput.js +60 -0
- package/Source/Scene/Model/ImageryPipelineStage.js +1040 -0
- package/Source/Scene/Model/MappedPositions.js +84 -0
- package/Source/Scene/Model/Model.js +38 -0
- package/Source/Scene/Model/ModelImagery.js +403 -0
- package/Source/Scene/Model/ModelImageryMapping.js +489 -0
- package/Source/Scene/Model/ModelPrimitiveImagery.js +972 -0
- package/Source/Scene/Model/ModelReader.js +810 -0
- package/Source/Scene/Model/ModelRenderResources.js +13 -0
- package/Source/Scene/Model/ModelRuntimePrimitive.js +20 -0
- package/Source/Scene/Model/ModelSceneGraph.js +133 -27
- package/Source/Scene/Model/ModelUtility.js +2 -0
- package/Source/Scene/Model/NodeRenderResources.js +10 -0
- package/Source/Scene/ModelComponents.js +10 -0
- package/Source/Scene/PrimitiveLoadPlan.js +59 -0
- package/Source/Scene/ResourceCache.js +60 -3
- package/Source/Scene/ResourceCacheKey.js +39 -1
- package/Source/Scene/Scene.js +32 -1
- package/Source/Scene/VertexAttributeSemantic.js +30 -0
- package/Source/Scene/VoxelPrimitive.js +22 -37
- package/Source/Scene/VoxelRenderResources.js +1 -1
- package/Source/Scene/processVoxelProperties.js +41 -100
- package/Source/Shaders/Builtin/Constants/passGaussianSplats.glsl +9 -0
- package/Source/Shaders/Builtin/Constants/passGaussianSplats.js +11 -0
- package/Source/Shaders/Builtin/Constants/passOverlay.glsl +1 -1
- package/Source/Shaders/Builtin/Constants/passOverlay.js +1 -1
- package/Source/Shaders/Builtin/CzmBuiltins.js +2 -0
- package/Source/Shaders/Builtin/Functions/windowToEyeCoordinates.glsl +0 -1
- package/Source/Shaders/Builtin/Functions/windowToEyeCoordinates.js +0 -1
- package/Source/Shaders/GlobeFS.glsl +22 -0
- package/Source/Shaders/GlobeFS.js +22 -0
- package/Source/Shaders/Model/MaterialStageFS.glsl +4 -0
- package/Source/Shaders/Model/MaterialStageFS.js +4 -0
- package/Source/Shaders/Model/ModelFS.glsl +3 -1
- package/Source/Shaders/Model/ModelFS.js +3 -1
- package/Source/Shaders/Model/ModelVS.glsl +5 -1
- package/Source/Shaders/Model/ModelVS.js +5 -1
- package/Source/Shaders/Model/PointCloudStylingStageVS.glsl +1 -1
- package/Source/Shaders/Model/PointCloudStylingStageVS.js +2 -1
- package/Source/Shaders/PrimitiveGaussianSplatFS.glsl +18 -0
- package/Source/Shaders/PrimitiveGaussianSplatFS.js +20 -0
- package/Source/Shaders/PrimitiveGaussianSplatVS.glsl +108 -0
- package/Source/Shaders/PrimitiveGaussianSplatVS.js +109 -0
- package/Source/Shaders/Voxels/IntersectDepth.glsl +10 -3
- package/Source/Shaders/Voxels/IntersectDepth.js +10 -3
- package/Source/Shaders/Voxels/Intersection.glsl +1 -3
- package/Source/Shaders/Voxels/Intersection.js +1 -3
- package/Source/Shaders/Voxels/IntersectionUtils.glsl +1 -0
- package/Source/Shaders/Voxels/IntersectionUtils.js +1 -0
- package/Source/Shaders/Voxels/VoxelFS.glsl +37 -24
- package/Source/Shaders/Voxels/VoxelFS.js +37 -24
- package/Source/ThirdParty/Workers/z-worker-pako.js +1 -1
- package/Source/ThirdParty/wasm_splats_bg.wasm +0 -0
- package/Source/Workers/gaussianSplatSorter.js +34 -0
- package/Source/Workers/gaussianSplatTextureGenerator.js +39 -0
- package/index.d.ts +66 -2
- package/index.js +101 -80
- package/package.json +6 -4
|
@@ -9,6 +9,7 @@ import JobType from "./JobType.js";
|
|
|
9
9
|
import ModelComponents from "./ModelComponents.js";
|
|
10
10
|
import ResourceLoader from "./ResourceLoader.js";
|
|
11
11
|
import ResourceLoaderState from "./ResourceLoaderState.js";
|
|
12
|
+
import CesiumMath from "../Core/Math.js";
|
|
12
13
|
|
|
13
14
|
/**
|
|
14
15
|
* Loads a vertex buffer from a glTF buffer view.
|
|
@@ -53,6 +54,7 @@ function GltfVertexBufferLoader(options) {
|
|
|
53
54
|
const attributeSemantic = options.attributeSemantic;
|
|
54
55
|
const accessorId = options.accessorId;
|
|
55
56
|
const cacheKey = options.cacheKey;
|
|
57
|
+
const spz = options.spz;
|
|
56
58
|
const asynchronous = options.asynchronous ?? true;
|
|
57
59
|
const loadBuffer = options.loadBuffer ?? false;
|
|
58
60
|
const loadTypedArray = options.loadTypedArray ?? false;
|
|
@@ -73,10 +75,10 @@ function GltfVertexBufferLoader(options) {
|
|
|
73
75
|
const hasDraco = hasDracoCompression(draco, attributeSemantic);
|
|
74
76
|
const hasAttributeSemantic = defined(attributeSemantic);
|
|
75
77
|
const hasAccessorId = defined(accessorId);
|
|
76
|
-
|
|
77
|
-
if (hasBufferViewId === hasDraco) {
|
|
78
|
+
const hasSpz = defined(spz);
|
|
79
|
+
if (hasBufferViewId === (hasDraco !== hasSpz)) {
|
|
78
80
|
throw new DeveloperError(
|
|
79
|
-
"One of options.bufferViewId
|
|
81
|
+
"One of options.bufferViewId, options.draco, or options.spz must be defined.",
|
|
80
82
|
);
|
|
81
83
|
}
|
|
82
84
|
|
|
@@ -104,6 +106,7 @@ function GltfVertexBufferLoader(options) {
|
|
|
104
106
|
Check.typeOf.string("options.attributeSemantic", attributeSemantic);
|
|
105
107
|
Check.typeOf.number("options.accessorId", accessorId);
|
|
106
108
|
}
|
|
109
|
+
|
|
107
110
|
//>>includeEnd('debug');
|
|
108
111
|
|
|
109
112
|
this._resourceCache = resourceCache;
|
|
@@ -113,6 +116,7 @@ function GltfVertexBufferLoader(options) {
|
|
|
113
116
|
this._bufferViewId = bufferViewId;
|
|
114
117
|
this._primitive = primitive;
|
|
115
118
|
this._draco = draco;
|
|
119
|
+
this._spz = spz;
|
|
116
120
|
this._attributeSemantic = attributeSemantic;
|
|
117
121
|
this._accessorId = accessorId;
|
|
118
122
|
this._cacheKey = cacheKey;
|
|
@@ -210,6 +214,11 @@ GltfVertexBufferLoader.prototype.load = async function () {
|
|
|
210
214
|
return this._promise;
|
|
211
215
|
}
|
|
212
216
|
|
|
217
|
+
if (defined(this._spz)) {
|
|
218
|
+
this._promise = loadFromSpz(this);
|
|
219
|
+
return this._promise;
|
|
220
|
+
}
|
|
221
|
+
|
|
213
222
|
if (hasDracoCompression(this._draco, this._attributeSemantic)) {
|
|
214
223
|
this._promise = loadFromDraco(this);
|
|
215
224
|
return this._promise;
|
|
@@ -270,6 +279,74 @@ function getQuantizationInformation(
|
|
|
270
279
|
return quantization;
|
|
271
280
|
}
|
|
272
281
|
|
|
282
|
+
async function loadFromSpz(vertexBufferLoader) {
|
|
283
|
+
vertexBufferLoader._state = ResourceLoaderState.LOADING;
|
|
284
|
+
const resourceCache = vertexBufferLoader._resourceCache;
|
|
285
|
+
try {
|
|
286
|
+
const spzLoader = resourceCache.getSpzLoader({
|
|
287
|
+
gltf: vertexBufferLoader._gltf,
|
|
288
|
+
primitive: vertexBufferLoader._primitive,
|
|
289
|
+
spz: vertexBufferLoader._spz,
|
|
290
|
+
gltfResource: vertexBufferLoader._gltfResource,
|
|
291
|
+
baseResource: vertexBufferLoader._baseResource,
|
|
292
|
+
});
|
|
293
|
+
vertexBufferLoader._spzLoader = spzLoader;
|
|
294
|
+
await spzLoader.load();
|
|
295
|
+
|
|
296
|
+
if (vertexBufferLoader.isDestroyed()) {
|
|
297
|
+
return;
|
|
298
|
+
}
|
|
299
|
+
|
|
300
|
+
vertexBufferLoader._state = ResourceLoaderState.LOADED;
|
|
301
|
+
return vertexBufferLoader;
|
|
302
|
+
} catch {
|
|
303
|
+
if (vertexBufferLoader.isDestroyed()) {
|
|
304
|
+
return;
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
|
|
309
|
+
function processSpz(vertexBufferLoader) {
|
|
310
|
+
vertexBufferLoader._state = ResourceLoaderState.PROCESSING;
|
|
311
|
+
const spzLoader = vertexBufferLoader._spzLoader;
|
|
312
|
+
|
|
313
|
+
const gcloudData = spzLoader.decodedData.gcloud;
|
|
314
|
+
|
|
315
|
+
if (vertexBufferLoader._attributeSemantic === "POSITION") {
|
|
316
|
+
vertexBufferLoader._typedArray = gcloudData.positions;
|
|
317
|
+
} else if (vertexBufferLoader._attributeSemantic === "_SCALE") {
|
|
318
|
+
vertexBufferLoader._typedArray = gcloudData.scales;
|
|
319
|
+
} else if (vertexBufferLoader._attributeSemantic === "_ROTATION") {
|
|
320
|
+
vertexBufferLoader._typedArray = gcloudData.rotations;
|
|
321
|
+
} else if (vertexBufferLoader._attributeSemantic === "COLOR_0") {
|
|
322
|
+
const colors = gcloudData.colors;
|
|
323
|
+
const alphas = gcloudData.alphas;
|
|
324
|
+
vertexBufferLoader._typedArray = new Uint8Array((colors.length / 3) * 4);
|
|
325
|
+
for (let i = 0; i < colors.length / 3; i++) {
|
|
326
|
+
vertexBufferLoader._typedArray[i * 4] = CesiumMath.clamp(
|
|
327
|
+
colors[i * 3] * 255.0,
|
|
328
|
+
0.0,
|
|
329
|
+
255.0,
|
|
330
|
+
);
|
|
331
|
+
vertexBufferLoader._typedArray[i * 4 + 1] = CesiumMath.clamp(
|
|
332
|
+
colors[i * 3 + 1] * 255.0,
|
|
333
|
+
0.0,
|
|
334
|
+
255.0,
|
|
335
|
+
);
|
|
336
|
+
vertexBufferLoader._typedArray[i * 4 + 2] = CesiumMath.clamp(
|
|
337
|
+
colors[i * 3 + 2] * 255.0,
|
|
338
|
+
0.0,
|
|
339
|
+
255.0,
|
|
340
|
+
);
|
|
341
|
+
vertexBufferLoader._typedArray[i * 4 + 3] = CesiumMath.clamp(
|
|
342
|
+
alphas[i] * 255.0,
|
|
343
|
+
0.0,
|
|
344
|
+
255.0,
|
|
345
|
+
);
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
|
|
273
350
|
async function loadFromDraco(vertexBufferLoader) {
|
|
274
351
|
vertexBufferLoader._state = ResourceLoaderState.LOADING;
|
|
275
352
|
const resourceCache = vertexBufferLoader._resourceCache;
|
|
@@ -427,6 +504,19 @@ GltfVertexBufferLoader.prototype.process = function (frameState) {
|
|
|
427
504
|
processDraco(this);
|
|
428
505
|
}
|
|
429
506
|
|
|
507
|
+
if (defined(this._spzLoader)) {
|
|
508
|
+
try {
|
|
509
|
+
const ready = this._spzLoader.process(frameState);
|
|
510
|
+
if (!ready) {
|
|
511
|
+
return false;
|
|
512
|
+
}
|
|
513
|
+
} catch (error) {
|
|
514
|
+
handleError(this, error);
|
|
515
|
+
}
|
|
516
|
+
|
|
517
|
+
processSpz(this);
|
|
518
|
+
}
|
|
519
|
+
|
|
430
520
|
let buffer;
|
|
431
521
|
const typedArray = this._typedArray;
|
|
432
522
|
if (this._loadBuffer && this._asynchronous) {
|
|
@@ -474,8 +564,13 @@ GltfVertexBufferLoader.prototype.unload = function () {
|
|
|
474
564
|
resourceCache.unload(this._dracoLoader);
|
|
475
565
|
}
|
|
476
566
|
|
|
567
|
+
if (defined(this._spzLoader)) {
|
|
568
|
+
resourceCache.unload(this._spzLoader);
|
|
569
|
+
}
|
|
570
|
+
|
|
477
571
|
this._bufferViewLoader = undefined;
|
|
478
572
|
this._dracoLoader = undefined;
|
|
573
|
+
this._spzLoader = undefined;
|
|
479
574
|
this._typedArray = undefined;
|
|
480
575
|
this._buffer = undefined;
|
|
481
576
|
this._gltf = undefined;
|
|
@@ -127,7 +127,7 @@ import TileImagery from "./TileImagery.js";
|
|
|
127
127
|
|
|
128
128
|
/**
|
|
129
129
|
* An imagery layer that displays tiled image data from a single imagery provider
|
|
130
|
-
* on a {@link Globe}.
|
|
130
|
+
* on a {@link Globe} or {@link Cesium3DTileset}.
|
|
131
131
|
*
|
|
132
132
|
* @alias ImageryLayer
|
|
133
133
|
* @constructor
|
|
@@ -135,8 +135,10 @@ import TileImagery from "./TileImagery.js";
|
|
|
135
135
|
* @param {ImageryProvider} [imageryProvider] The imagery provider to use.
|
|
136
136
|
* @param {ImageryLayer.ConstructorOptions} [options] An object describing initialization options
|
|
137
137
|
*
|
|
138
|
-
* @see ImageryLayer.fromProviderAsync
|
|
139
|
-
* @see ImageryLayer.fromWorldImagery
|
|
138
|
+
* @see {@link ImageryLayer.fromProviderAsync} for creating an imagery layer from an asynchronous imagery provider.
|
|
139
|
+
* @see {@link ImageryLayer.fromWorldImagery} for creating an imagery layer for Cesium ion's default global base imagery layer.
|
|
140
|
+
* @see {@link Scene#imageryLayers} for adding an imagery layer to the globe.
|
|
141
|
+
* @see {@link Cesium3DTileset#imageryLayers} for adding an imagery layer to a 3D tileset.
|
|
140
142
|
*
|
|
141
143
|
* @example
|
|
142
144
|
* // Add an OpenStreetMaps layer
|
|
@@ -155,6 +157,19 @@ import TileImagery from "./TileImagery.js";
|
|
|
155
157
|
* const imageryLayer = Cesium.ImageryLayer.fromProviderAsync(Cesium.IonImageryProvider.fromAssetId(3812));
|
|
156
158
|
* imageryLayer.alpha = 0.5;
|
|
157
159
|
* scene.imageryLayers.add(imageryLayer);
|
|
160
|
+
*
|
|
161
|
+
* @example
|
|
162
|
+
* // Drape Bing Maps Aerial imagery over a 3D tileset
|
|
163
|
+
* const tileset = await Cesium.Cesium3DTileset.fromUrl(
|
|
164
|
+
* "http://localhost:8002/tilesets/Seattle/tileset.json"
|
|
165
|
+
* );
|
|
166
|
+
* scene.primitives.add(tileset);
|
|
167
|
+
*
|
|
168
|
+
* const imageryProvider = await Cesium.createWorldImageryAsync({
|
|
169
|
+
* style: Cesium.IonWorldImageryStyle.AERIAL,
|
|
170
|
+
* });
|
|
171
|
+
* const imageryLayer = new ImageryLayer(imageryProvider);
|
|
172
|
+
* tileset.imageryLayers.add(imageryLayer);
|
|
158
173
|
*/
|
|
159
174
|
function ImageryLayer(imageryProvider, options) {
|
|
160
175
|
this._imageryProvider = imageryProvider;
|
|
@@ -663,7 +678,7 @@ ImageryLayer.prototype.getImageryRectangle = function () {
|
|
|
663
678
|
*
|
|
664
679
|
* @private
|
|
665
680
|
*
|
|
666
|
-
* @param {
|
|
681
|
+
* @param {QuadtreeTile} tile The terrain tile.
|
|
667
682
|
* @param {TerrainProvider|undefined} terrainProvider The terrain provider associated with the terrain tile.
|
|
668
683
|
* @param {number} insertionPoint The position to insert new skeletons before in the tile's imagery list.
|
|
669
684
|
* @returns {boolean} true if this layer overlaps any portion of the terrain tile; otherwise, false.
|
|
@@ -7,11 +7,12 @@ import Rectangle from "../Core/Rectangle.js";
|
|
|
7
7
|
import ImageryLayer from "./ImageryLayer.js";
|
|
8
8
|
|
|
9
9
|
/**
|
|
10
|
-
* An ordered collection of imagery layers.
|
|
10
|
+
* An ordered collection of imagery layers for rendering raster imagery on a {@link Globe} or {@link Cesium3DTileset}.
|
|
11
11
|
*
|
|
12
12
|
* @alias ImageryLayerCollection
|
|
13
13
|
* @constructor
|
|
14
|
-
*
|
|
14
|
+
* @see {@link Scene#imageryLayers} for manipulating imagery layers on the globe.
|
|
15
|
+
* @see {@link Cesium3DTileset#imageryLayers} for manipulating imagery layers on a 3D tileset.
|
|
15
16
|
* @demo {@link https://sandcastle.cesium.com/index.html?src=Imagery%20Adjustment.html|Cesium Sandcastle Imagery Adjustment Demo}
|
|
16
17
|
* @demo {@link https://sandcastle.cesium.com/index.html?src=Imagery%20Layers%20Manipulation.html|Cesium Sandcastle Imagery Manipulation Demo}
|
|
17
18
|
*/
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Internal class for texture coordinate and index range computations.
|
|
3
|
+
*
|
|
4
|
+
* @private
|
|
5
|
+
*/
|
|
6
|
+
class CartesianRectangle {
|
|
7
|
+
/**
|
|
8
|
+
* Creates a new instance
|
|
9
|
+
*
|
|
10
|
+
* @param {number} [minX=0] The minimum x-coordinate
|
|
11
|
+
* @param {number} [minY=0] The minimum y-coordinate
|
|
12
|
+
* @param {number} [maxX=0] The maximum x-coordinate
|
|
13
|
+
* @param {number} [maxY=0] The maximum y-coordinate
|
|
14
|
+
*/
|
|
15
|
+
constructor(minX, minY, maxX, maxY) {
|
|
16
|
+
this._minX = minX ?? 0.0;
|
|
17
|
+
this._minY = minY ?? 0.0;
|
|
18
|
+
this._maxX = maxX ?? 0.0;
|
|
19
|
+
this._maxY = maxY ?? 0.0;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Returns the minimum x-coordinate
|
|
24
|
+
*
|
|
25
|
+
* @returns {number} The coordinate
|
|
26
|
+
*/
|
|
27
|
+
get minX() {
|
|
28
|
+
return this._minX;
|
|
29
|
+
}
|
|
30
|
+
set minX(value) {
|
|
31
|
+
this._minX = value;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Returns the minimum y-coordinate
|
|
36
|
+
*
|
|
37
|
+
* @returns {number} The coordinate
|
|
38
|
+
*/
|
|
39
|
+
get minY() {
|
|
40
|
+
return this._minY;
|
|
41
|
+
}
|
|
42
|
+
set minY(value) {
|
|
43
|
+
this._minY = value;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* Returns the maximum x-coordinate
|
|
48
|
+
*
|
|
49
|
+
* @returns {number} The coordinate
|
|
50
|
+
*/
|
|
51
|
+
get maxX() {
|
|
52
|
+
return this._maxX;
|
|
53
|
+
}
|
|
54
|
+
set maxX(value) {
|
|
55
|
+
this._maxX = value;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* Returns the maximum y-coordinate
|
|
60
|
+
*
|
|
61
|
+
* @returns {number} The coordinate
|
|
62
|
+
*/
|
|
63
|
+
get maxY() {
|
|
64
|
+
return this._maxY;
|
|
65
|
+
}
|
|
66
|
+
set maxY(value) {
|
|
67
|
+
this._maxY = value;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* Returns whether this rectangle contains the given coordinates,
|
|
72
|
+
* using the default containment check, which includes the
|
|
73
|
+
* minimum point, but excludes the maximum point
|
|
74
|
+
*
|
|
75
|
+
* @param {number} x The x-coordinate
|
|
76
|
+
* @param {number} y The y-coordinate
|
|
77
|
+
* @returns {boolean} The result
|
|
78
|
+
*/
|
|
79
|
+
contains(x, y) {
|
|
80
|
+
return x >= this.minX && x < this.maxX && y >= this.minY && y < this.maxY;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
/**
|
|
84
|
+
* Returns whether this rectangle contains the given coordinates,
|
|
85
|
+
* excluding the border
|
|
86
|
+
*
|
|
87
|
+
* @param {number} x The x-coordinate
|
|
88
|
+
* @param {number} y The y-coordinate
|
|
89
|
+
* @returns {boolean} The result
|
|
90
|
+
*/
|
|
91
|
+
containsExclusive(x, y) {
|
|
92
|
+
return x > this.minX && x < this.maxX && y > this.minY && y < this.maxY;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
/**
|
|
96
|
+
* Returns whether this rectangle contains the given coordinates,
|
|
97
|
+
* including the border
|
|
98
|
+
*
|
|
99
|
+
* @param {number} x The x-coordinate
|
|
100
|
+
* @param {number} y The y-coordinate
|
|
101
|
+
* @returns {boolean} The result
|
|
102
|
+
*/
|
|
103
|
+
containsInclusive(x, y) {
|
|
104
|
+
return x >= this.minX && x <= this.maxX && y >= this.minY && y <= this.maxY;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
export default CartesianRectangle;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A class containing a the values that affect the appearance of
|
|
3
|
+
* an <code>ImageryLayer</code>.
|
|
4
|
+
*
|
|
5
|
+
* This is used in the <code>ModelImagery</code> to detect changes in
|
|
6
|
+
* the imagery settings: The <code>ModelImagery</code> stores one
|
|
7
|
+
* instance per imagery layer. During the <code>update</code>
|
|
8
|
+
* call, it checks whether any of the settings was changed.
|
|
9
|
+
* If this is the case, the draw commands of the model are reset.
|
|
10
|
+
*
|
|
11
|
+
* @private
|
|
12
|
+
*/
|
|
13
|
+
class ImageryConfiguration {
|
|
14
|
+
constructor(imageryLayer) {
|
|
15
|
+
this.alpha = imageryLayer.alpha;
|
|
16
|
+
this.brightness = imageryLayer.brightness;
|
|
17
|
+
this.contrast = imageryLayer.contrast;
|
|
18
|
+
this.hue = imageryLayer.hue;
|
|
19
|
+
this.saturation = imageryLayer.saturation;
|
|
20
|
+
this.gamma = imageryLayer.gamma;
|
|
21
|
+
this.colorToAlpha = imageryLayer.colorToAlpha;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export default ImageryConfiguration;
|