@cesium/engine 25.0.0 → 26.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/Workers/{chunk-GPIGURCG.js → chunk-3VFEWOBI.js} +7 -7
- package/Build/Workers/{chunk-BTX2NL3P.js → chunk-424RNO3D.js} +18 -18
- package/Build/Workers/{chunk-HSVQATK2.js → chunk-4MGMYHOO.js} +6 -6
- package/Build/Workers/{chunk-FIBS5S7R.js → chunk-4S7IE3LB.js} +2 -2
- package/Build/Workers/{chunk-A7ZBMVFS.js → chunk-52JDLOEM.js} +14 -14
- package/Build/Workers/{chunk-ZCCIIBZT.js → chunk-54I6Y66F.js} +6 -6
- package/Build/Workers/{chunk-J647NNZW.js → chunk-6YEE6JDR.js} +6 -6
- package/Build/Workers/{chunk-HVMG6AG4.js → chunk-7J2HKPRH.js} +9 -9
- package/Build/Workers/{chunk-K6NFIRFB.js → chunk-7WM2PX4V.js} +5 -5
- package/Build/Workers/{chunk-3LSD7OOA.js → chunk-ACXQXN46.js} +16 -16
- package/Build/Workers/{chunk-CZ23Y3RM.js → chunk-AYKR4VBR.js} +2 -2
- package/Build/Workers/{chunk-4MTRQFJP.js → chunk-C6J67V5A.js} +1 -1
- package/Build/Workers/{chunk-WTQGE7Q6.js → chunk-C6KNZ7T4.js} +17 -17
- package/Build/Workers/{chunk-AWFZHD2B.js → chunk-CFQP6LYM.js} +4 -4
- package/Build/Workers/{chunk-ST2UWDUU.js → chunk-CXOYE2WM.js} +5 -5
- package/Build/Workers/{chunk-H2A4USJR.js → chunk-CZEYZU4N.js} +10 -10
- package/Build/Workers/{chunk-DFEI5MAV.js → chunk-DBOEKL43.js} +7 -7
- package/Build/Workers/{chunk-A7A433MD.js → chunk-DDWSZVMY.js} +5 -5
- package/Build/Workers/{chunk-J7KQEKPK.js → chunk-DOBXCNC3.js} +13 -13
- package/Build/Workers/{chunk-URUCCIPS.js → chunk-E7VQ76KE.js} +6 -6
- package/Build/Workers/{chunk-ZAPOS52G.js → chunk-EBSIOBXY.js} +8 -8
- package/Build/Workers/{chunk-3VDDRF2E.js → chunk-EF2QYXGA.js} +14 -14
- package/Build/Workers/{chunk-WN6P5UDH.js → chunk-EPYXRCDB.js} +12 -12
- package/Build/Workers/{chunk-EZARA5FJ.js → chunk-F6QDY6HU.js} +13 -13
- package/Build/Workers/{chunk-GL7DNVUS.js → chunk-FRQZECAO.js} +5 -5
- package/Build/Workers/{chunk-VQKLRBIK.js → chunk-G7PXZRVF.js} +7 -7
- package/Build/Workers/{chunk-4QQXGTCE.js → chunk-INUEEEQA.js} +8 -8
- package/Build/Workers/{chunk-ITD2IN7N.js → chunk-IRBKFCEJ.js} +2 -2
- package/Build/Workers/{chunk-6SDGQI27.js → chunk-IYOUHCZB.js} +1 -1
- package/Build/Workers/{chunk-DYT5NR6P.js → chunk-J6BWOHUF.js} +3 -3
- package/Build/Workers/{chunk-4GF4MVPY.js → chunk-KFSTQKNM.js} +7 -7
- package/Build/Workers/{chunk-4XXHJI6Y.js → chunk-KKOSKAZB.js} +17 -17
- package/Build/Workers/{chunk-WC57YYBN.js → chunk-KSSWJIZW.js} +2 -2
- package/Build/Workers/{chunk-5T6QQAJW.js → chunk-M3B5JKSM.js} +1 -1
- package/Build/Workers/{chunk-QO2CGXMP.js → chunk-MPZHGZU6.js} +6 -6
- package/Build/Workers/{chunk-WUBKZFF6.js → chunk-MYP774IS.js} +9 -9
- package/Build/Workers/{chunk-WNN5D4W3.js → chunk-O3EA5HS7.js} +10 -10
- package/Build/Workers/{chunk-77RL3MBD.js → chunk-P3CK7MCY.js} +25 -4
- package/Build/Workers/{chunk-QXNQQYPV.js → chunk-Q3PY526V.js} +8 -8
- package/Build/Workers/{chunk-CKQP3DSS.js → chunk-QN67VG36.js} +6 -6
- package/Build/Workers/{chunk-ACFFCHHZ.js → chunk-QRWGUWI6.js} +11 -11
- package/Build/Workers/{chunk-LH5SF3XV.js → chunk-S4MCOY6I.js} +5 -5
- package/Build/Workers/{chunk-FVLVVOBQ.js → chunk-SMQZZOW6.js} +10 -10
- package/Build/Workers/{chunk-TA777BGS.js → chunk-TKKIREQ6.js} +1 -1
- package/Build/Workers/{chunk-AEAVLYPS.js → chunk-U3ZA64U7.js} +2 -2
- package/Build/Workers/{chunk-7LSFAEWF.js → chunk-UA25D5MX.js} +10 -10
- package/Build/Workers/{chunk-J3OFS2RD.js → chunk-UOOIQ3KX.js} +12 -12
- package/Build/Workers/{chunk-ND3NTTOF.js → chunk-V7VQKN6N.js} +6 -6
- package/Build/Workers/{chunk-I3A6DXYZ.js → chunk-VQYETPWC.js} +4 -4
- package/Build/Workers/{chunk-35H3UBIO.js → chunk-VWV2IJRB.js} +11 -11
- package/Build/Workers/{chunk-QSDY4NS7.js → chunk-XZMBNNDX.js} +9 -9
- package/Build/Workers/{chunk-TAI4HLII.js → chunk-Y57HREW5.js} +4 -4
- package/Build/Workers/{chunk-3TKLDHV3.js → chunk-Y5BF6AFU.js} +2 -2
- package/Build/Workers/{chunk-3XY3MVPG.js → chunk-YLY7NKAB.js} +4 -4
- package/Build/Workers/{chunk-BVAIWR7O.js → chunk-ZK3CF7ZD.js} +12 -12
- package/Build/Workers/{chunk-DH26SNAB.js → chunk-ZP7JMQV4.js} +1 -1
- package/Build/Workers/{chunk-3RFFPH4M.js → chunk-ZZ46LWL6.js} +1 -1
- package/Build/Workers/combineGeometry.js +24 -24
- package/Build/Workers/createBoxGeometry.js +18 -18
- package/Build/Workers/createBoxOutlineGeometry.js +16 -16
- package/Build/Workers/createCircleGeometry.js +26 -26
- package/Build/Workers/createCircleOutlineGeometry.js +19 -19
- package/Build/Workers/createCoplanarPolygonGeometry.js +33 -33
- package/Build/Workers/createCoplanarPolygonOutlineGeometry.js +31 -31
- package/Build/Workers/createCorridorGeometry.js +29 -29
- package/Build/Workers/createCorridorOutlineGeometry.js +28 -28
- package/Build/Workers/createCylinderGeometry.js +20 -20
- package/Build/Workers/createCylinderOutlineGeometry.js +18 -18
- package/Build/Workers/createEllipseGeometry.js +26 -26
- package/Build/Workers/createEllipseOutlineGeometry.js +19 -19
- package/Build/Workers/createEllipsoidGeometry.js +19 -19
- package/Build/Workers/createEllipsoidOutlineGeometry.js +18 -18
- package/Build/Workers/createFrustumGeometry.js +18 -18
- package/Build/Workers/createFrustumOutlineGeometry.js +18 -18
- package/Build/Workers/createGeometry.js +24 -24
- package/Build/Workers/createGroundPolylineGeometry.js +22 -22
- package/Build/Workers/createPlaneGeometry.js +16 -16
- package/Build/Workers/createPlaneOutlineGeometry.js +15 -15
- package/Build/Workers/createPolygonGeometry.js +32 -32
- package/Build/Workers/createPolygonOutlineGeometry.js +30 -30
- package/Build/Workers/createPolylineGeometry.js +25 -25
- package/Build/Workers/createPolylineVolumeGeometry.js +31 -31
- package/Build/Workers/createPolylineVolumeOutlineGeometry.js +27 -27
- package/Build/Workers/createRectangleGeometry.js +27 -27
- package/Build/Workers/createRectangleOutlineGeometry.js +20 -20
- package/Build/Workers/createSimplePolylineGeometry.js +23 -23
- package/Build/Workers/createSphereGeometry.js +19 -19
- package/Build/Workers/createSphereOutlineGeometry.js +18 -18
- package/Build/Workers/createTaskProcessorWorker.js +3 -3
- package/Build/Workers/createVectorTileClampedPolylines.js +14 -14
- package/Build/Workers/createVectorTileGeometries.js +24 -24
- package/Build/Workers/createVectorTilePoints.js +13 -13
- package/Build/Workers/createVectorTilePolygons.js +22 -22
- package/Build/Workers/createVectorTilePolylines.js +14 -14
- package/Build/Workers/createVerticesFromCesium3DTilesTerrain.js +25 -25
- package/Build/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js +22 -22
- package/Build/Workers/createVerticesFromHeightmap.js +22 -22
- package/Build/Workers/createVerticesFromQuantizedTerrainMesh.js +20 -20
- package/Build/Workers/createWallGeometry.js +24 -24
- package/Build/Workers/createWallOutlineGeometry.js +23 -23
- package/Build/Workers/decodeDraco.js +10 -10
- package/Build/Workers/decodeGoogleEarthEnterprisePacket.js +5 -5
- package/Build/Workers/decodeI3S.js +10 -10
- package/Build/Workers/gaussianSplatSorter.js +4 -4
- package/Build/Workers/gaussianSplatTextureGenerator.js +4 -4
- package/Build/Workers/incrementallyBuildTerrainPicker.js +10 -10
- package/Build/Workers/transcodeKTX2.js +6 -6
- package/Build/Workers/transferTypedArrayTest.js +1 -1
- package/Build/Workers/upsampleQuantizedTerrainMesh.js +22 -22
- package/Build/Workers/upsampleVerticesFromCesium3DTilesTerrain.js +25 -25
- package/Source/Core/Cartesian2.js +1 -1
- package/Source/Core/Cartesian3.js +1 -1
- package/Source/Core/Cartesian4.js +1 -1
- package/Source/Core/ComponentDatatype.js +35 -0
- package/Source/Core/Ion.js +1 -1
- package/Source/Core/MapProjection.js +1 -0
- package/Source/Core/Matrix2.js +1 -1
- package/Source/Core/Matrix3.js +1 -1
- package/Source/Core/Matrix4.js +1 -1
- package/Source/Core/Resource.js +1 -1
- package/Source/Core/ScreenSpaceEventHandler.js +51 -41
- package/Source/Core/createColorRamp.js +37 -0
- package/Source/Core/globalTypes.js +25 -0
- package/Source/Renderer/Pass.js +3 -2
- package/Source/Renderer/createUniform.js +346 -239
- package/Source/Renderer/createUniformArray.js +494 -381
- package/Source/Scene/ArcGisMapService.js +1 -1
- package/Source/Scene/BufferPoint.js +1 -0
- package/Source/Scene/BufferPointCollection.js +14 -1
- package/Source/Scene/BufferPolygon.js +3 -2
- package/Source/Scene/BufferPolygonCollection.js +10 -0
- package/Source/Scene/BufferPolyline.js +1 -0
- package/Source/Scene/BufferPolylineCollection.js +2 -0
- package/Source/Scene/BufferPrimitiveCollection.js +79 -28
- package/Source/Scene/CameraEventAggregator.js +30 -18
- package/Source/Scene/Cesium3DTile.js +54 -1
- package/Source/Scene/Cesium3DTileContent.js +195 -254
- package/Source/Scene/Cesium3DTileContentFactory.js +10 -2
- package/Source/Scene/Cesium3DTileset.js +45 -5
- package/Source/Scene/Composite3DTileContent.js +254 -292
- package/Source/Scene/EdgeDisplayMode.js +50 -0
- package/Source/Scene/Empty3DTileContent.js +100 -132
- package/Source/Scene/GaussianSplat3DTileContent.js +436 -478
- package/Source/Scene/GeoJsonPrimitive.js +874 -0
- package/Source/Scene/Geometry3DTileContent.js +151 -185
- package/Source/Scene/GltfLoader.js +109 -0
- package/Source/Scene/Implicit3DTileContent.js +179 -214
- package/Source/Scene/MVTDataProvider.js +147 -0
- package/Source/Scene/Model/EdgeVisibilityPipelineStage.js +79 -311
- package/Source/Scene/Model/Model.js +34 -0
- package/Source/Scene/Model/Model3DTileContent.js +424 -458
- package/Source/Scene/Model/ModelDrawCommand.js +31 -3
- package/Source/Scene/Model/ModelUtility.js +4 -0
- package/Source/Scene/Model/createVectorTileBuffersFromModelComponents.js +466 -150
- package/Source/Scene/ModelComponents.js +39 -1
- package/Source/Scene/Multiple3DTileContent.js +291 -334
- package/Source/Scene/Scene.js +26 -0
- package/Source/Scene/Tileset3DTileContent.js +113 -146
- package/Source/Scene/UrlTemplate3DTilesDataProvider.js +499 -0
- package/Source/Scene/Vector3DTileContent.js +205 -234
- package/Source/Scene/VectorGltf3DTileContent.js +85 -36
- package/Source/Scene/VoxelPrimitive.js +159 -175
- package/Source/Scene/VoxelProvider.js +64 -91
- package/Source/Scene/buildVectorGltfFromMVT.js +1059 -0
- package/Source/Scene/buildVoxelCustomShader.js +199 -0
- package/Source/Scene/decodeMVT.js +634 -0
- package/Source/Scene/renderBufferPointCollection.js +110 -64
- package/Source/Scene/renderBufferPolygonCollection.js +102 -55
- package/Source/Scene/renderBufferPolylineCollection.js +365 -166
- package/Source/Shaders/BufferPointMaterialFS.glsl +1 -0
- package/Source/Shaders/BufferPointMaterialFS.js +1 -0
- package/Source/Shaders/BufferPointMaterialVS.glsl +19 -9
- package/Source/Shaders/BufferPointMaterialVS.js +20 -10
- package/Source/Shaders/BufferPolygonMaterialVS.glsl +13 -4
- package/Source/Shaders/BufferPolygonMaterialVS.js +14 -5
- package/Source/Shaders/BufferPolylineMaterialVS.glsl +16 -2
- package/Source/Shaders/BufferPolylineMaterialVS.js +17 -3
- package/Source/Shaders/Builtin/Constants/passCesium3DTileEdgesDirect.glsl +9 -0
- package/Source/Shaders/Builtin/Constants/passCesium3DTileEdgesDirect.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/Model/EdgeVisibilityStageVS.glsl +0 -1
- package/Source/Shaders/Model/EdgeVisibilityStageVS.js +0 -1
- package/index.d.ts +253 -35
- package/index.js +71 -62
- package/package.json +2 -2
|
@@ -27,219 +27,225 @@ import BoundingVolumeSemantics from "./BoundingVolumeSemantics.js";
|
|
|
27
27
|
* </p>
|
|
28
28
|
* This object is normally not instantiated directly, use {@link Implicit3DTileContent.fromSubtreeJson}.
|
|
29
29
|
*
|
|
30
|
-
* @
|
|
31
|
-
* @constructor
|
|
32
|
-
*
|
|
33
|
-
* @param {Cesium3DTileset} tileset The tileset this content belongs to
|
|
34
|
-
* @param {Cesium3DTile} tile The tile this content belongs to.
|
|
35
|
-
* @param {Resource} resource The resource for the tileset
|
|
36
|
-
* @param {object} [json] The JSON object containing the subtree. Mutually exclusive with arrayBuffer.
|
|
37
|
-
* @param {ArrayBuffer} [arrayBuffer] The array buffer that stores the content payload. Mutually exclusive with json.
|
|
38
|
-
* @param {number} [byteOffset=0] The offset into the array buffer, if one was provided
|
|
39
|
-
*
|
|
40
|
-
* @exception {DeveloperError} One of json and arrayBuffer must be defined.
|
|
41
|
-
*
|
|
30
|
+
* @implements Cesium3DTileContent
|
|
42
31
|
* @private
|
|
43
32
|
* @experimental This feature is using part of the 3D Tiles spec that is not final and is subject to change without Cesium's standard deprecation policy.
|
|
44
33
|
*/
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
34
|
+
class Implicit3DTileContent {
|
|
35
|
+
/**
|
|
36
|
+
* @param {Cesium3DTileset} tileset The tileset this content belongs to
|
|
37
|
+
* @param {Cesium3DTile} tile The tile this content belongs to.
|
|
38
|
+
* @param {Resource} resource The resource for the tileset
|
|
39
|
+
* @param {object} [json] The JSON object containing the subtree. Mutually exclusive with arrayBuffer.
|
|
40
|
+
* @param {ArrayBuffer} [arrayBuffer] The array buffer that stores the content payload. Mutually exclusive with json.
|
|
41
|
+
* @param {number} [byteOffset=0] The offset into the array buffer, if one was provided
|
|
42
|
+
*
|
|
43
|
+
* @exception {DeveloperError} One of json and arrayBuffer must be defined.
|
|
44
|
+
*/
|
|
45
|
+
constructor(tileset, tile, resource) {
|
|
46
|
+
//>>includeStart('debug', pragmas.debug);
|
|
47
|
+
Check.defined("tile.implicitTileset", tile.implicitTileset);
|
|
48
|
+
Check.defined("tile.implicitCoordinates", tile.implicitCoordinates);
|
|
49
|
+
//>>includeEnd('debug');
|
|
50
|
+
|
|
51
|
+
const implicitTileset = tile.implicitTileset;
|
|
52
|
+
const implicitCoordinates = tile.implicitCoordinates;
|
|
53
|
+
|
|
54
|
+
this._implicitTileset = implicitTileset;
|
|
55
|
+
this._implicitCoordinates = implicitCoordinates;
|
|
56
|
+
this._implicitSubtree = undefined;
|
|
57
|
+
this._tileset = tileset;
|
|
58
|
+
this._tile = tile;
|
|
59
|
+
this._resource = resource;
|
|
60
|
+
|
|
61
|
+
this._metadata = undefined;
|
|
62
|
+
|
|
63
|
+
this.featurePropertiesDirty = false;
|
|
64
|
+
this._group = undefined;
|
|
65
|
+
|
|
66
|
+
const templateValues = implicitCoordinates.getTemplateValues();
|
|
67
|
+
const subtreeResource =
|
|
68
|
+
implicitTileset.subtreeUriTemplate.getDerivedResource({
|
|
69
|
+
templateValues: templateValues,
|
|
70
|
+
});
|
|
71
|
+
this._url = subtreeResource.getUrlComponent(true);
|
|
72
|
+
|
|
73
|
+
this._ready = false;
|
|
74
|
+
}
|
|
76
75
|
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
return 0;
|
|
81
|
-
},
|
|
82
|
-
},
|
|
76
|
+
get featuresLength() {
|
|
77
|
+
return 0;
|
|
78
|
+
}
|
|
83
79
|
|
|
84
|
-
pointsLength
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
},
|
|
88
|
-
},
|
|
80
|
+
get pointsLength() {
|
|
81
|
+
return 0;
|
|
82
|
+
}
|
|
89
83
|
|
|
90
|
-
trianglesLength
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
},
|
|
94
|
-
},
|
|
84
|
+
get trianglesLength() {
|
|
85
|
+
return 0;
|
|
86
|
+
}
|
|
95
87
|
|
|
96
|
-
geometryByteLength
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
},
|
|
100
|
-
},
|
|
88
|
+
get geometryByteLength() {
|
|
89
|
+
return 0;
|
|
90
|
+
}
|
|
101
91
|
|
|
102
|
-
texturesByteLength
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
},
|
|
106
|
-
},
|
|
92
|
+
get texturesByteLength() {
|
|
93
|
+
return 0;
|
|
94
|
+
}
|
|
107
95
|
|
|
108
|
-
batchTableByteLength
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
},
|
|
112
|
-
},
|
|
96
|
+
get batchTableByteLength() {
|
|
97
|
+
return 0;
|
|
98
|
+
}
|
|
113
99
|
|
|
114
|
-
innerContents
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
},
|
|
118
|
-
},
|
|
100
|
+
get innerContents() {
|
|
101
|
+
return undefined;
|
|
102
|
+
}
|
|
119
103
|
|
|
120
104
|
/**
|
|
121
105
|
* Returns true when the tile's content is ready to render; otherwise false
|
|
122
106
|
*
|
|
123
|
-
* @memberof Implicit3DTileContent.prototype
|
|
124
107
|
*
|
|
125
108
|
* @type {boolean}
|
|
126
109
|
* @readonly
|
|
127
110
|
* @private
|
|
128
111
|
*/
|
|
129
|
-
ready
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
},
|
|
133
|
-
},
|
|
112
|
+
get ready() {
|
|
113
|
+
return this._ready;
|
|
114
|
+
}
|
|
134
115
|
|
|
135
|
-
tileset
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
},
|
|
139
|
-
},
|
|
116
|
+
get tileset() {
|
|
117
|
+
return this._tileset;
|
|
118
|
+
}
|
|
140
119
|
|
|
141
|
-
tile
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
},
|
|
145
|
-
},
|
|
120
|
+
get tile() {
|
|
121
|
+
return this._tile;
|
|
122
|
+
}
|
|
146
123
|
|
|
147
|
-
url
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
},
|
|
151
|
-
},
|
|
124
|
+
get url() {
|
|
125
|
+
return this._url;
|
|
126
|
+
}
|
|
152
127
|
|
|
153
128
|
/**
|
|
154
129
|
* Part of the {@link Cesium3DTileContent} interface. <code>Implicit3DTileContent</code>
|
|
155
130
|
* always returns <code>undefined</code>. Only transcoded tiles have content metadata.
|
|
156
|
-
* @memberof Implicit3DTileContent.prototype
|
|
157
131
|
* @private
|
|
158
132
|
*/
|
|
159
|
-
metadata
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
},
|
|
163
|
-
set: function () {
|
|
164
|
-
//>>includeStart('debug', pragmas.debug);
|
|
165
|
-
throw new DeveloperError("Implicit3DTileContent cannot have metadata");
|
|
166
|
-
//>>includeEnd('debug');
|
|
167
|
-
},
|
|
168
|
-
},
|
|
169
|
-
|
|
170
|
-
batchTable: {
|
|
171
|
-
get: function () {
|
|
172
|
-
return undefined;
|
|
173
|
-
},
|
|
174
|
-
},
|
|
133
|
+
get metadata() {
|
|
134
|
+
return undefined;
|
|
135
|
+
}
|
|
175
136
|
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
this._group = value;
|
|
182
|
-
},
|
|
183
|
-
},
|
|
184
|
-
});
|
|
137
|
+
set metadata(_) {
|
|
138
|
+
//>>includeStart('debug', pragmas.debug);
|
|
139
|
+
throw new DeveloperError("Implicit3DTileContent cannot have metadata");
|
|
140
|
+
//>>includeEnd('debug');
|
|
141
|
+
}
|
|
185
142
|
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
* up a promise chain to expand the immediate subtree.
|
|
189
|
-
*
|
|
190
|
-
* @param {Cesium3DTileset} tileset The tileset this content belongs to
|
|
191
|
-
* @param {Cesium3DTile} tile The tile this content belongs to.
|
|
192
|
-
* @param {Resource} resource The resource for the tileset
|
|
193
|
-
* @param {object} [json] The JSON containing the subtree. Mutually exclusive with arrayBuffer.
|
|
194
|
-
* @param {ArrayBuffer} [arrayBuffer] The ArrayBuffer containing a subtree binary. Mutually exclusive with json.
|
|
195
|
-
* @param {number} [byteOffset=0] The byte offset into the arrayBuffer
|
|
196
|
-
* @return {Promise<Implicit3DTileContent>}
|
|
197
|
-
*
|
|
198
|
-
* @exception {DeveloperError} One of json and arrayBuffer must be defined.
|
|
199
|
-
*
|
|
200
|
-
* @private
|
|
201
|
-
*/
|
|
202
|
-
Implicit3DTileContent.fromSubtreeJson = async function (
|
|
203
|
-
tileset,
|
|
204
|
-
tile,
|
|
205
|
-
resource,
|
|
206
|
-
json,
|
|
207
|
-
arrayBuffer,
|
|
208
|
-
byteOffset,
|
|
209
|
-
) {
|
|
210
|
-
//>>includeStart('debug', pragmas.debug);
|
|
211
|
-
Check.defined("tile.implicitTileset", tile.implicitTileset);
|
|
212
|
-
Check.defined("tile.implicitCoordinates", tile.implicitCoordinates);
|
|
213
|
-
if (defined(json) === defined(arrayBuffer)) {
|
|
214
|
-
throw new DeveloperError("One of json and arrayBuffer must be defined.");
|
|
143
|
+
get batchTable() {
|
|
144
|
+
return undefined;
|
|
215
145
|
}
|
|
216
|
-
//>>includeEnd('debug');
|
|
217
146
|
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
if (defined(arrayBuffer)) {
|
|
221
|
-
uint8Array = new Uint8Array(arrayBuffer, byteOffset);
|
|
147
|
+
get group() {
|
|
148
|
+
return this._group;
|
|
222
149
|
}
|
|
223
150
|
|
|
224
|
-
|
|
225
|
-
|
|
151
|
+
set group(value) {
|
|
152
|
+
this._group = value;
|
|
153
|
+
}
|
|
226
154
|
|
|
227
|
-
|
|
155
|
+
/**
|
|
156
|
+
* Initialize the implicit content by parsing the subtree resource and setting
|
|
157
|
+
* up a promise chain to expand the immediate subtree.
|
|
158
|
+
*
|
|
159
|
+
* @param {Cesium3DTileset} tileset The tileset this content belongs to
|
|
160
|
+
* @param {Cesium3DTile} tile The tile this content belongs to.
|
|
161
|
+
* @param {Resource} resource The resource for the tileset
|
|
162
|
+
* @param {object} [json] The JSON containing the subtree. Mutually exclusive with arrayBuffer.
|
|
163
|
+
* @param {ArrayBuffer} [arrayBuffer] The ArrayBuffer containing a subtree binary. Mutually exclusive with json.
|
|
164
|
+
* @param {number} [byteOffset=0] The byte offset into the arrayBuffer
|
|
165
|
+
* @return {Promise<Implicit3DTileContent>}
|
|
166
|
+
*
|
|
167
|
+
* @exception {DeveloperError} One of json and arrayBuffer must be defined.
|
|
168
|
+
*
|
|
169
|
+
* @private
|
|
170
|
+
*/
|
|
171
|
+
static async fromSubtreeJson(
|
|
172
|
+
tileset,
|
|
173
|
+
tile,
|
|
228
174
|
resource,
|
|
229
175
|
json,
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
176
|
+
arrayBuffer,
|
|
177
|
+
byteOffset,
|
|
178
|
+
) {
|
|
179
|
+
//>>includeStart('debug', pragmas.debug);
|
|
180
|
+
Check.defined("tile.implicitTileset", tile.implicitTileset);
|
|
181
|
+
Check.defined("tile.implicitCoordinates", tile.implicitCoordinates);
|
|
182
|
+
if (defined(json) === defined(arrayBuffer)) {
|
|
183
|
+
throw new DeveloperError("One of json and arrayBuffer must be defined.");
|
|
184
|
+
}
|
|
185
|
+
//>>includeEnd('debug');
|
|
186
|
+
|
|
187
|
+
byteOffset = byteOffset ?? 0;
|
|
188
|
+
let uint8Array;
|
|
189
|
+
if (defined(arrayBuffer)) {
|
|
190
|
+
uint8Array = new Uint8Array(arrayBuffer, byteOffset);
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
const implicitTileset = tile.implicitTileset;
|
|
194
|
+
const implicitCoordinates = tile.implicitCoordinates;
|
|
195
|
+
|
|
196
|
+
const subtree = await ImplicitSubtree.fromSubtreeJson(
|
|
197
|
+
resource,
|
|
198
|
+
json,
|
|
199
|
+
uint8Array,
|
|
200
|
+
implicitTileset,
|
|
201
|
+
implicitCoordinates,
|
|
202
|
+
);
|
|
203
|
+
|
|
204
|
+
const content = new Implicit3DTileContent(tileset, tile, resource);
|
|
234
205
|
|
|
235
|
-
|
|
206
|
+
content._implicitSubtree = subtree;
|
|
207
|
+
expandSubtree(content, subtree);
|
|
208
|
+
content._ready = true;
|
|
236
209
|
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
content._ready = true;
|
|
210
|
+
return content;
|
|
211
|
+
}
|
|
240
212
|
|
|
241
|
-
|
|
242
|
-
}
|
|
213
|
+
/**
|
|
214
|
+
* Part of the {@link Cesium3DTileContent} interface. <code>Implicit3DTileContent</code>
|
|
215
|
+
* always returns <code>false</code> since a tile of this type does not have any features.
|
|
216
|
+
* @private
|
|
217
|
+
*/
|
|
218
|
+
hasProperty(batchId, name) {
|
|
219
|
+
return false;
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
/**
|
|
223
|
+
* Part of the {@link Cesium3DTileContent} interface. <code>Implicit3DTileContent</code>
|
|
224
|
+
* always returns <code>undefined</code> since a tile of this type does not have any features.
|
|
225
|
+
* @private
|
|
226
|
+
*/
|
|
227
|
+
getFeature(batchId) {
|
|
228
|
+
return undefined;
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
applyDebugSettings(enabled, color) {}
|
|
232
|
+
applyStyle(style) {}
|
|
233
|
+
update(tileset, frameState) {}
|
|
234
|
+
|
|
235
|
+
pick(ray, frameState, result) {
|
|
236
|
+
return undefined;
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
isDestroyed() {
|
|
240
|
+
return false;
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
destroy() {
|
|
244
|
+
this._implicitSubtree =
|
|
245
|
+
this._implicitSubtree && this._implicitSubtree.destroy();
|
|
246
|
+
return destroyObject(this);
|
|
247
|
+
}
|
|
248
|
+
}
|
|
243
249
|
|
|
244
250
|
/**
|
|
245
251
|
* Expand a single subtree placeholder tile. This transcodes the subtree into
|
|
@@ -1157,47 +1163,6 @@ function makeTile(content, baseResource, tileJson, parentTile) {
|
|
|
1157
1163
|
return new Cesium3DTile(content._tileset, baseResource, tileJson, parentTile);
|
|
1158
1164
|
}
|
|
1159
1165
|
|
|
1160
|
-
/**
|
|
1161
|
-
* Part of the {@link Cesium3DTileContent} interface. <code>Implicit3DTileContent</code>
|
|
1162
|
-
* always returns <code>false</code> since a tile of this type does not have any features.
|
|
1163
|
-
* @private
|
|
1164
|
-
*/
|
|
1165
|
-
Implicit3DTileContent.prototype.hasProperty = function (batchId, name) {
|
|
1166
|
-
return false;
|
|
1167
|
-
};
|
|
1168
|
-
|
|
1169
|
-
/**
|
|
1170
|
-
* Part of the {@link Cesium3DTileContent} interface. <code>Implicit3DTileContent</code>
|
|
1171
|
-
* always returns <code>undefined</code> since a tile of this type does not have any features.
|
|
1172
|
-
* @private
|
|
1173
|
-
*/
|
|
1174
|
-
Implicit3DTileContent.prototype.getFeature = function (batchId) {
|
|
1175
|
-
return undefined;
|
|
1176
|
-
};
|
|
1177
|
-
|
|
1178
|
-
Implicit3DTileContent.prototype.applyDebugSettings = function (
|
|
1179
|
-
enabled,
|
|
1180
|
-
color,
|
|
1181
|
-
) {};
|
|
1182
|
-
|
|
1183
|
-
Implicit3DTileContent.prototype.applyStyle = function (style) {};
|
|
1184
|
-
|
|
1185
|
-
Implicit3DTileContent.prototype.update = function (tileset, frameState) {};
|
|
1186
|
-
|
|
1187
|
-
Implicit3DTileContent.prototype.pick = function (ray, frameState, result) {
|
|
1188
|
-
return undefined;
|
|
1189
|
-
};
|
|
1190
|
-
|
|
1191
|
-
Implicit3DTileContent.prototype.isDestroyed = function () {
|
|
1192
|
-
return false;
|
|
1193
|
-
};
|
|
1194
|
-
|
|
1195
|
-
Implicit3DTileContent.prototype.destroy = function () {
|
|
1196
|
-
this._implicitSubtree =
|
|
1197
|
-
this._implicitSubtree && this._implicitSubtree.destroy();
|
|
1198
|
-
return destroyObject(this);
|
|
1199
|
-
};
|
|
1200
|
-
|
|
1201
1166
|
// Exposed for testing
|
|
1202
1167
|
Implicit3DTileContent._deriveBoundingBox = deriveBoundingBox;
|
|
1203
1168
|
Implicit3DTileContent._deriveBoundingRegion = deriveBoundingRegion;
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
// @ts-check
|
|
2
|
+
|
|
3
|
+
import Axis from "./Axis.js";
|
|
4
|
+
import Empty3DTileContent from "./Empty3DTileContent.js";
|
|
5
|
+
import RuntimeError from "../Core/RuntimeError.js";
|
|
6
|
+
import UrlTemplate3DTilesDataProvider from "./UrlTemplate3DTilesDataProvider.js";
|
|
7
|
+
import VectorGltf3DTileContent from "./VectorGltf3DTileContent.js";
|
|
8
|
+
import buildVectorGltfFromMVT from "./buildVectorGltfFromMVT.js";
|
|
9
|
+
import decodeMVT from "./decodeMVT.js";
|
|
10
|
+
import oneTimeWarning from "../Core/oneTimeWarning.js";
|
|
11
|
+
import defined from "../Core/defined.js";
|
|
12
|
+
|
|
13
|
+
/** @import Cesium3DTile from "./Cesium3DTile.js"; */
|
|
14
|
+
/** @import Cesium3DTileset from "./Cesium3DTileset.js"; */
|
|
15
|
+
/** @import Rectangle from "../Core/Rectangle.js"; */
|
|
16
|
+
/** @import Resource from "../Core/Resource.js"; */
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* A Mapbox Vector Tiles (MVT) data provider. Loads .mvt or .pbf tiles, converting tiles
|
|
20
|
+
* dynamically (at runtime) into 3D Tiles.
|
|
21
|
+
*
|
|
22
|
+
* <div class="notice">
|
|
23
|
+
* This object is normally not instantiated directly, use {@link MVTDataProvider.fromUrl}.
|
|
24
|
+
* </div>
|
|
25
|
+
*
|
|
26
|
+
* @experimental This feature is not final and is subject to change without Cesium's standard deprecation policy.
|
|
27
|
+
*/
|
|
28
|
+
class MVTDataProvider extends UrlTemplate3DTilesDataProvider {
|
|
29
|
+
/**
|
|
30
|
+
* Creates an MVTDataProvider from the specified URL template and options.
|
|
31
|
+
*
|
|
32
|
+
* @param {Resource|string} url URL template, containing {z}, {x}, and {y} placeholders.
|
|
33
|
+
* @param {object} [options] Provider options.
|
|
34
|
+
* @param {number} [options.minZoom=0] Minimum zoom level represented in the generated tileset.
|
|
35
|
+
* @param {number} [options.maxZoom=14] Maximum zoom level represented in the generated tileset.
|
|
36
|
+
* @param {Rectangle} [options.extent] Optional geographic extent in radians to constrain the generated tile tree.
|
|
37
|
+
* @param {string} [options.featureIdProperty] MVT property name to use as feature ID.
|
|
38
|
+
*/
|
|
39
|
+
static async fromUrl(url, options) {
|
|
40
|
+
return /** @type {Promise<MVTDataProvider>} */ (
|
|
41
|
+
super.fromUrl(url, options)
|
|
42
|
+
);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* @returns {object}
|
|
47
|
+
* @protected
|
|
48
|
+
* @ignore
|
|
49
|
+
*/
|
|
50
|
+
_createTilesetLoadOptions() {
|
|
51
|
+
return {
|
|
52
|
+
skipLevelOfDetail: false,
|
|
53
|
+
enablePick: true,
|
|
54
|
+
featureIdLabel: "featureId_0",
|
|
55
|
+
instanceFeatureIdLabel: "instanceFeatureId_0",
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* @param {Cesium3DTileset} tileset
|
|
61
|
+
* @protected
|
|
62
|
+
* @ignore
|
|
63
|
+
*/
|
|
64
|
+
_configureTileset(tileset) {
|
|
65
|
+
tileset._modelUpAxis = Axis.Z;
|
|
66
|
+
tileset._modelForwardAxis = Axis.X;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* @returns {object}
|
|
71
|
+
* @protected
|
|
72
|
+
* @ignore
|
|
73
|
+
*/
|
|
74
|
+
_createCodec() {
|
|
75
|
+
const featureIdProperty = this._featureIdProperty;
|
|
76
|
+
return {
|
|
77
|
+
contentType: "mvt",
|
|
78
|
+
missingTilePolicy: { statusCodes: [404, 204] },
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
* @param {Cesium3DTileset} tileset
|
|
82
|
+
* @param {Cesium3DTile} tile
|
|
83
|
+
* @param {Resource} resource
|
|
84
|
+
* @param {ArrayBuffer} arrayBuffer
|
|
85
|
+
* @ignore
|
|
86
|
+
*/
|
|
87
|
+
createContent: async (tileset, tile, resource, arrayBuffer) => {
|
|
88
|
+
const decodedTile = decodeMVT(arrayBuffer);
|
|
89
|
+
const tileCoordinates = parseTileCoordinates(
|
|
90
|
+
resource.getUrlComponent(true),
|
|
91
|
+
);
|
|
92
|
+
const glb = buildVectorGltfFromMVT(decodedTile, tileCoordinates, {
|
|
93
|
+
featureIdProperty: featureIdProperty,
|
|
94
|
+
});
|
|
95
|
+
if (!defined(glb)) {
|
|
96
|
+
if (!hasAnyDecodedFeatures(decodedTile)) {
|
|
97
|
+
return new Empty3DTileContent(tileset, tile);
|
|
98
|
+
}
|
|
99
|
+
throw new RuntimeError(
|
|
100
|
+
"Decoded MVT tile did not produce vector glTF content.",
|
|
101
|
+
);
|
|
102
|
+
}
|
|
103
|
+
return VectorGltf3DTileContent.fromGltf(tileset, tile, resource, glb);
|
|
104
|
+
},
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
/**
|
|
110
|
+
* @param {string} url
|
|
111
|
+
* @returns {{tileZ:number, tileX:number, tileY:number}}
|
|
112
|
+
* @ignore
|
|
113
|
+
*/
|
|
114
|
+
function parseTileCoordinates(url) {
|
|
115
|
+
const match = url.match(/\/(\d+)\/(\d+)\/(\d+)(?:\.[^/?#]+)?(?:[?#]|$)/i);
|
|
116
|
+
if (!match) {
|
|
117
|
+
oneTimeWarning(
|
|
118
|
+
"MVTDataProvider.parseTileCoordinates",
|
|
119
|
+
`MVT tile URL did not match /{z}/{x}/{y} pattern. Falling back to z/x/y = 0/0/0. URL: ${url}`,
|
|
120
|
+
);
|
|
121
|
+
return { tileZ: 0, tileX: 0, tileY: 0 };
|
|
122
|
+
}
|
|
123
|
+
return {
|
|
124
|
+
tileZ: parseInt(match[1], 10),
|
|
125
|
+
tileX: parseInt(match[2], 10),
|
|
126
|
+
tileY: parseInt(match[3], 10),
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
/**
|
|
131
|
+
* @param {{layers:Array<{features:Array<*>}>}} decodedTile
|
|
132
|
+
* @returns {boolean}
|
|
133
|
+
* @ignore
|
|
134
|
+
*/
|
|
135
|
+
function hasAnyDecodedFeatures(decodedTile) {
|
|
136
|
+
const layers = decodedTile.layers;
|
|
137
|
+
for (let i = 0; i < layers.length; i++) {
|
|
138
|
+
if (layers[i].features.length > 0) {
|
|
139
|
+
return true;
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
return false;
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
MVTDataProvider._parseTileCoordinates = parseTileCoordinates;
|
|
146
|
+
|
|
147
|
+
export default MVTDataProvider;
|