@cesium/engine 14.0.0 → 16.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.
Files changed (578) hide show
  1. package/Build/Workers/{chunk-WVNLSTOF.js → chunk-2TQ64T4I.js} +2 -2
  2. package/Build/Workers/{chunk-ED6GLQTK.js → chunk-34EWMUFG.js} +1 -1
  3. package/Build/Workers/{chunk-HEZHXDYB.js → chunk-4LHK6E47.js} +1 -1
  4. package/Build/Workers/{chunk-7EO56M5R.js → chunk-5TN3LG2T.js} +2 -2
  5. package/Build/Workers/{chunk-7ZB2RVIQ.js → chunk-6B7KGA5P.js} +16 -19
  6. package/Build/Workers/{chunk-3QLSKXKF.js → chunk-B75OO2DU.js} +7 -10
  7. package/Build/Workers/{chunk-Q4ZVWJXX.js → chunk-COOLDICB.js} +9 -11
  8. package/Build/Workers/{chunk-3PIZQT3I.js → chunk-CQNYYX3N.js} +4 -4
  9. package/Build/Workers/{chunk-JPDKYBLF.js → chunk-CUJH7PS5.js} +27 -29
  10. package/Build/Workers/{chunk-CI2HEJFC.js → chunk-EAWYQ44R.js} +39 -41
  11. package/Build/Workers/{chunk-SDIDRZDG.js → chunk-EJJDBH5W.js} +7 -7
  12. package/Build/Workers/{chunk-5KWRW7YL.js → chunk-EO44CO62.js} +2 -2
  13. package/Build/Workers/{chunk-N2XAJBC6.js → chunk-EOIUWEAK.js} +26 -28
  14. package/Build/Workers/{chunk-YJX7X577.js → chunk-ERKJ7IWJ.js} +21 -23
  15. package/Build/Workers/{chunk-J7IH4EYI.js → chunk-ESED7XBA.js} +13 -16
  16. package/Build/Workers/{chunk-F4CUH4MR.js → chunk-FW2OX42E.js} +18 -21
  17. package/Build/Workers/{chunk-FX4R4MTH.js → chunk-GH6I7PBY.js} +6 -9
  18. package/Build/Workers/{chunk-FYGLNDKG.js → chunk-GQVSADCI.js} +19 -22
  19. package/Build/Workers/{chunk-TY4DKOWR.js → chunk-ICU72UPR.js} +4 -4
  20. package/Build/Workers/{chunk-DT5NFR5C.js → chunk-ILVAXLMC.js} +7 -7
  21. package/Build/Workers/{chunk-ZGFIT57T.js → chunk-KKV6XBF5.js} +27 -23
  22. package/Build/Workers/{chunk-HKHQ3EDR.js → chunk-KV6TEHXY.js} +4 -4
  23. package/Build/Workers/{chunk-B4GSRXE3.js → chunk-LCSH4ZOB.js} +7 -10
  24. package/Build/Workers/{chunk-LNSWJ43X.js → chunk-M5J3S3HY.js} +17 -26
  25. package/Build/Workers/{chunk-LJBJM6VI.js → chunk-NB6D74SQ.js} +6 -6
  26. package/Build/Workers/{chunk-4CHMVQTQ.js → chunk-NREPBWCX.js} +14 -14
  27. package/Build/Workers/{chunk-PWF4EY5P.js → chunk-OD4Q7HE5.js} +4 -4
  28. package/Build/Workers/{chunk-77XPS7ZA.js → chunk-OMFZ4IN6.js} +15 -24
  29. package/Build/Workers/{chunk-HUFQVUMY.js → chunk-OMZGZVHI.js} +12 -17
  30. package/Build/Workers/{chunk-LOZ4NKY3.js → chunk-ORIMMEHO.js} +18 -20
  31. package/Build/Workers/{chunk-5S5OOA6U.js → chunk-OWLBD6BL.js} +1 -1
  32. package/Build/Workers/{chunk-VCNOFQYH.js → chunk-PB6SE3SZ.js} +9 -12
  33. package/Build/Workers/{chunk-3JBEPBPL.js → chunk-PT6U7UNY.js} +25 -30
  34. package/Build/Workers/{chunk-G3BVMPWG.js → chunk-RWAFHSX3.js} +2 -2
  35. package/Build/Workers/{chunk-KHWLAQVA.js → chunk-S2NKKWYE.js} +1 -1
  36. package/Build/Workers/{chunk-FFBJDW4A.js → chunk-S3IQBSIB.js} +6 -6
  37. package/Build/Workers/{chunk-3LYROPON.js → chunk-SCUQTTCN.js} +16 -19
  38. package/Build/Workers/{chunk-ZMNLEL6W.js → chunk-TBSA4MNF.js} +5 -8
  39. package/Build/Workers/{chunk-EWDGNOJE.js → chunk-TEUGW455.js} +9 -12
  40. package/Build/Workers/{chunk-XK4OP6VA.js → chunk-TL5YKZJF.js} +33 -41
  41. package/Build/Workers/{chunk-KM6MITPF.js → chunk-V4Y7C25O.js} +46 -42
  42. package/Build/Workers/{chunk-OMXHEJTK.js → chunk-VNDECE6N.js} +2 -2
  43. package/Build/Workers/{chunk-LS3KVHYY.js → chunk-VVTAI2TN.js} +6 -9
  44. package/Build/Workers/{chunk-WEHZP4SE.js → chunk-VXAAIRJ7.js} +129 -146
  45. package/Build/Workers/{chunk-MVM4JV5U.js → chunk-WGIOUM2S.js} +9 -12
  46. package/Build/Workers/{chunk-JHBPC4LK.js → chunk-XF6EBVKV.js} +7 -7
  47. package/Build/Workers/{chunk-D7ZBZPHV.js → chunk-XMKE4XB2.js} +5 -5
  48. package/Build/Workers/{chunk-7UHKH6M3.js → chunk-YA4XALD5.js} +34 -36
  49. package/Build/Workers/{chunk-KSYBJA4M.js → chunk-YFXXUW6U.js} +6 -12
  50. package/Build/Workers/{chunk-Z3QWTHI7.js → chunk-YL26OJCG.js} +21 -23
  51. package/Build/Workers/{chunk-K4AH3TDT.js → chunk-ZLJDDRGB.js} +14 -17
  52. package/Build/Workers/combineGeometry.js +21 -22
  53. package/Build/Workers/createBoxGeometry.js +15 -16
  54. package/Build/Workers/createBoxOutlineGeometry.js +20 -25
  55. package/Build/Workers/createCircleGeometry.js +26 -28
  56. package/Build/Workers/createCircleOutlineGeometry.js +19 -21
  57. package/Build/Workers/createCoplanarPolygonGeometry.js +38 -42
  58. package/Build/Workers/createCoplanarPolygonOutlineGeometry.js +34 -36
  59. package/Build/Workers/createCorridorGeometry.js +42 -49
  60. package/Build/Workers/createCorridorOutlineGeometry.js +36 -43
  61. package/Build/Workers/createCylinderGeometry.js +17 -18
  62. package/Build/Workers/createCylinderOutlineGeometry.js +23 -25
  63. package/Build/Workers/createEllipseGeometry.js +23 -24
  64. package/Build/Workers/createEllipseOutlineGeometry.js +16 -17
  65. package/Build/Workers/createEllipsoidGeometry.js +16 -17
  66. package/Build/Workers/createEllipsoidOutlineGeometry.js +15 -16
  67. package/Build/Workers/createFrustumGeometry.js +15 -16
  68. package/Build/Workers/createFrustumOutlineGeometry.js +18 -21
  69. package/Build/Workers/createGeometry.js +22 -25
  70. package/Build/Workers/createGroundPolylineGeometry.js +34 -42
  71. package/Build/Workers/createPlaneGeometry.js +19 -21
  72. package/Build/Workers/createPlaneOutlineGeometry.js +12 -13
  73. package/Build/Workers/createPolygonGeometry.js +45 -50
  74. package/Build/Workers/createPolygonOutlineGeometry.js +39 -44
  75. package/Build/Workers/createPolylineGeometry.js +33 -40
  76. package/Build/Workers/createPolylineVolumeGeometry.js +37 -44
  77. package/Build/Workers/createPolylineVolumeOutlineGeometry.js +32 -39
  78. package/Build/Workers/createRectangleGeometry.js +41 -51
  79. package/Build/Workers/createRectangleOutlineGeometry.js +28 -33
  80. package/Build/Workers/createSimplePolylineGeometry.js +29 -34
  81. package/Build/Workers/createSphereGeometry.js +17 -20
  82. package/Build/Workers/createSphereOutlineGeometry.js +16 -19
  83. package/Build/Workers/createTaskProcessorWorker.js +3 -3
  84. package/Build/Workers/createVectorTileClampedPolylines.js +12 -13
  85. package/Build/Workers/createVectorTileGeometries.js +21 -22
  86. package/Build/Workers/createVectorTilePoints.js +11 -12
  87. package/Build/Workers/createVectorTilePolygons.js +19 -20
  88. package/Build/Workers/createVectorTilePolylines.js +12 -13
  89. package/Build/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js +20 -23
  90. package/Build/Workers/createVerticesFromHeightmap.js +31 -58
  91. package/Build/Workers/createVerticesFromQuantizedTerrainMesh.js +17 -18
  92. package/Build/Workers/createWallGeometry.js +30 -35
  93. package/Build/Workers/createWallOutlineGeometry.js +28 -33
  94. package/Build/Workers/decodeDraco.js +10 -11
  95. package/Build/Workers/decodeGoogleEarthEnterprisePacket.js +5 -5
  96. package/Build/Workers/decodeI3S.js +10 -16
  97. package/Build/Workers/transcodeKTX2.js +50 -46
  98. package/Build/Workers/transferTypedArrayTest.js +1 -1
  99. package/Build/Workers/upsampleQuantizedTerrainMesh.js +19 -20
  100. package/Source/Core/ApproximateTerrainHeights.js +2 -3
  101. package/Source/Core/ArcGISTiledElevationTerrainProvider.js +6 -6
  102. package/Source/Core/AxisAlignedBoundingBox.js +2 -3
  103. package/Source/Core/BingMapsGeocoderService.js +2 -2
  104. package/Source/Core/BoundingRectangle.js +7 -8
  105. package/Source/Core/BoundingSphere.js +10 -11
  106. package/Source/Core/BoxGeometry.js +7 -7
  107. package/Source/Core/BoxOutlineGeometry.js +7 -9
  108. package/Source/Core/Cartesian2.js +4 -5
  109. package/Source/Core/Cartesian3.js +7 -8
  110. package/Source/Core/Cartesian4.js +6 -7
  111. package/Source/Core/Cartographic.js +5 -6
  112. package/Source/Core/CatmullRomSpline.js +2 -2
  113. package/Source/Core/CesiumTerrainProvider.js +11 -14
  114. package/Source/Core/CircleGeometry.js +2 -2
  115. package/Source/Core/CircleOutlineGeometry.js +2 -2
  116. package/Source/Core/Clock.js +7 -10
  117. package/Source/Core/Color.js +28 -28
  118. package/Source/Core/ColorGeometryInstanceAttribute.js +4 -5
  119. package/Source/Core/ComponentDatatype.js +4 -6
  120. package/Source/Core/CoplanarPolygonGeometry.js +8 -10
  121. package/Source/Core/CoplanarPolygonOutlineGeometry.js +5 -5
  122. package/Source/Core/CorridorGeometry.js +15 -20
  123. package/Source/Core/CorridorOutlineGeometry.js +10 -15
  124. package/Source/Core/Credit.js +1 -2
  125. package/Source/Core/CullingVolume.js +1 -2
  126. package/Source/Core/CustomHeightmapTerrainProvider.js +3 -3
  127. package/Source/Core/CylinderGeometry.js +7 -7
  128. package/Source/Core/CylinderOutlineGeometry.js +7 -7
  129. package/Source/Core/DistanceDisplayCondition.js +4 -5
  130. package/Source/Core/DistanceDisplayConditionGeometryInstanceAttribute.js +2 -3
  131. package/Source/Core/EarthOrientationParameters.js +4 -4
  132. package/Source/Core/EllipseGeometry.js +17 -23
  133. package/Source/Core/EllipseOutlineGeometry.js +12 -15
  134. package/Source/Core/Ellipsoid.js +7 -8
  135. package/Source/Core/EllipsoidGeodesic.js +1 -2
  136. package/Source/Core/EllipsoidGeometry.js +15 -15
  137. package/Source/Core/EllipsoidOutlineGeometry.js +15 -15
  138. package/Source/Core/EllipsoidRhumbLine.js +3 -4
  139. package/Source/Core/EllipsoidTangentPlane.js +1 -2
  140. package/Source/Core/EllipsoidTerrainProvider.js +4 -4
  141. package/Source/Core/EllipsoidalOccluder.js +2 -3
  142. package/Source/Core/FeatureDetection.js +1 -2
  143. package/Source/Core/Frozen.js +24 -0
  144. package/Source/Core/FrustumGeometry.js +7 -8
  145. package/Source/Core/FrustumOutlineGeometry.js +3 -4
  146. package/Source/Core/GeographicProjection.js +1 -2
  147. package/Source/Core/GeographicTilingScheme.js +6 -12
  148. package/Source/Core/Geometry.js +4 -7
  149. package/Source/Core/GeometryAttribute.js +3 -3
  150. package/Source/Core/GeometryAttributes.js +2 -2
  151. package/Source/Core/GeometryInstance.js +4 -6
  152. package/Source/Core/GeometryInstanceAttribute.js +3 -3
  153. package/Source/Core/GeometryPipeline.js +3 -4
  154. package/Source/Core/GoogleEarthEnterpriseMetadata.js +13 -24
  155. package/Source/Core/GoogleEarthEnterpriseTerrainData.js +9 -12
  156. package/Source/Core/GoogleEarthEnterpriseTerrainProvider.js +3 -3
  157. package/Source/Core/GoogleGeocoderService.js +2 -2
  158. package/Source/Core/GregorianDate.js +8 -9
  159. package/Source/Core/GroundPolylineGeometry.js +8 -8
  160. package/Source/Core/HeadingPitchRange.js +3 -4
  161. package/Source/Core/HeadingPitchRoll.js +3 -4
  162. package/Source/Core/Heap.js +3 -4
  163. package/Source/Core/HeightmapTerrainData.js +22 -38
  164. package/Source/Core/HeightmapTessellator.js +21 -37
  165. package/Source/Core/HermitePolynomialApproximation.js +1 -2
  166. package/Source/Core/HermiteSpline.js +5 -5
  167. package/Source/Core/ITwinPlatform.js +66 -12
  168. package/Source/Core/Iau2006XysData.js +8 -10
  169. package/Source/Core/IntersectionTests.js +1 -2
  170. package/Source/Core/Interval.js +2 -4
  171. package/Source/Core/Ion.js +1 -1
  172. package/Source/Core/IonGeocoderService.js +6 -10
  173. package/Source/Core/IonResource.js +6 -6
  174. package/Source/Core/JulianDate.js +11 -12
  175. package/Source/Core/LinearSpline.js +2 -2
  176. package/Source/Core/ManagedArray.js +2 -3
  177. package/Source/Core/Math.js +36 -27
  178. package/Source/Core/Matrix2.js +7 -8
  179. package/Source/Core/Matrix3.js +12 -13
  180. package/Source/Core/Matrix4.js +28 -28
  181. package/Source/Core/MorphWeightSpline.js +2 -2
  182. package/Source/Core/NearFarScalar.js +6 -7
  183. package/Source/Core/Occluder.js +1 -2
  184. package/Source/Core/OffsetGeometryInstanceAttribute.js +3 -4
  185. package/Source/Core/OpenCageGeocoderService.js +1 -2
  186. package/Source/Core/OrientedBoundingBox.js +7 -8
  187. package/Source/Core/OrthographicFrustum.js +6 -6
  188. package/Source/Core/OrthographicOffCenterFrustum.js +4 -4
  189. package/Source/Core/PerspectiveFrustum.js +8 -8
  190. package/Source/Core/PerspectiveOffCenterFrustum.js +4 -4
  191. package/Source/Core/PlaneGeometry.js +5 -5
  192. package/Source/Core/PolygonGeometry.js +16 -19
  193. package/Source/Core/PolygonGeometryLibrary.js +27 -6
  194. package/Source/Core/PolygonOutlineGeometry.js +11 -14
  195. package/Source/Core/PolygonPipeline.js +5 -6
  196. package/Source/Core/PolylineGeometry.js +10 -15
  197. package/Source/Core/PolylinePipeline.js +7 -14
  198. package/Source/Core/PolylineVolumeGeometry.js +8 -13
  199. package/Source/Core/PolylineVolumeOutlineGeometry.js +7 -12
  200. package/Source/Core/QuantizedMeshTerrainData.js +12 -16
  201. package/Source/Core/Quaternion.js +7 -8
  202. package/Source/Core/QuaternionSpline.js +2 -2
  203. package/Source/Core/Ray.js +2 -3
  204. package/Source/Core/Rectangle.js +18 -19
  205. package/Source/Core/RectangleGeometry.js +17 -25
  206. package/Source/Core/RectangleGeometryLibrary.js +1 -1
  207. package/Source/Core/RectangleOutlineGeometry.js +10 -13
  208. package/Source/Core/Request.js +6 -6
  209. package/Source/Core/RequestScheduler.js +4 -6
  210. package/Source/Core/Resource.js +13 -16
  211. package/Source/Core/S2Cell.js +2 -3
  212. package/Source/Core/ScreenSpaceEventHandler.js +1 -2
  213. package/Source/Core/ShowGeometryInstanceAttribute.js +1 -2
  214. package/Source/Core/Simon1994PlanetaryPositions.js +9 -9
  215. package/Source/Core/SimplePolylineGeometry.js +8 -11
  216. package/Source/Core/SphereGeometry.js +1 -2
  217. package/Source/Core/SphereOutlineGeometry.js +1 -2
  218. package/Source/Core/Spherical.js +4 -5
  219. package/Source/Core/Spline.js +1 -2
  220. package/Source/Core/SteppedSpline.js +2 -2
  221. package/Source/Core/TaskProcessor.js +2 -9
  222. package/Source/Core/TerrainData.js +1 -1
  223. package/Source/Core/TerrainEncoding.js +4 -11
  224. package/Source/Core/TerrainMesh.js +1 -3
  225. package/Source/Core/TerrainProvider.js +1 -1
  226. package/Source/Core/TexturePacker.js +166 -0
  227. package/Source/Core/TileProviderError.js +1 -2
  228. package/Source/Core/TimeInterval.js +7 -7
  229. package/Source/Core/TimeIntervalCollection.js +7 -7
  230. package/Source/Core/Tipsify.js +5 -5
  231. package/Source/Core/Transforms.js +10 -15
  232. package/Source/Core/TranslationRotationScale.js +3 -6
  233. package/Source/Core/VRTheWorldTerrainProvider.js +5 -5
  234. package/Source/Core/VertexFormat.js +10 -10
  235. package/Source/Core/VerticalExaggeration.js +1 -1
  236. package/Source/Core/VideoSynchronizer.js +6 -6
  237. package/Source/Core/WallGeometry.js +8 -11
  238. package/Source/Core/WallOutlineGeometry.js +7 -10
  239. package/Source/Core/WebMercatorProjection.js +1 -2
  240. package/Source/Core/WebMercatorTilingScheme.js +5 -11
  241. package/Source/Core/arrayRemoveDuplicates.js +1 -2
  242. package/Source/Core/clone.js +1 -3
  243. package/Source/Core/combine.js +1 -2
  244. package/Source/Core/createWorldBathymetryAsync.js +3 -3
  245. package/Source/Core/createWorldTerrainAsync.js +4 -4
  246. package/Source/Core/defaultValue.js +20 -1
  247. package/Source/Core/destroyObject.js +1 -5
  248. package/Source/Core/getAbsoluteUri.js +1 -2
  249. package/Source/Core/getMagic.js +1 -2
  250. package/Source/Core/getStringFromTypedArray.js +2 -3
  251. package/Source/Core/loadImageFromTypedArray.js +2 -6
  252. package/Source/Core/oneTimeWarning.js +1 -2
  253. package/Source/Core/writeTextToCanvas.js +10 -13
  254. package/Source/DataSources/BillboardGraphics.js +27 -53
  255. package/Source/DataSources/BillboardVisualizer.js +3 -3
  256. package/Source/DataSources/BoxGraphics.js +13 -18
  257. package/Source/DataSources/CallbackPositionProperty.js +1 -2
  258. package/Source/DataSources/Cesium3DTilesetGraphics.js +6 -8
  259. package/Source/DataSources/CheckerboardMaterialProperty.js +2 -2
  260. package/Source/DataSources/CompositePositionProperty.js +1 -2
  261. package/Source/DataSources/ConstantPositionProperty.js +1 -2
  262. package/Source/DataSources/CorridorGraphics.js +23 -35
  263. package/Source/DataSources/CylinderGraphics.js +18 -25
  264. package/Source/DataSources/CzmlDataSource.js +34 -60
  265. package/Source/DataSources/DataSourceClock.js +12 -13
  266. package/Source/DataSources/DataSourceCollection.js +2 -3
  267. package/Source/DataSources/DataSourceDisplay.js +2 -5
  268. package/Source/DataSources/EllipseGraphics.js +26 -40
  269. package/Source/DataSources/EllipsoidGeometryUpdater.js +1 -2
  270. package/Source/DataSources/EllipsoidGraphics.js +21 -32
  271. package/Source/DataSources/Entity.js +7 -9
  272. package/Source/DataSources/EntityCluster.js +53 -28
  273. package/Source/DataSources/EntityView.js +1 -2
  274. package/Source/DataSources/GeoJsonDataSource.js +12 -12
  275. package/Source/DataSources/GeometryUpdater.js +12 -17
  276. package/Source/DataSources/GeometryVisualizer.js +2 -3
  277. package/Source/DataSources/GpxDataSource.js +4 -7
  278. package/Source/DataSources/GridMaterialProperty.js +2 -2
  279. package/Source/DataSources/GroundGeometryUpdater.js +1 -2
  280. package/Source/DataSources/ImageMaterialProperty.js +2 -2
  281. package/Source/DataSources/KmlDataSource.js +84 -158
  282. package/Source/DataSources/LabelGraphics.js +27 -56
  283. package/Source/DataSources/LabelVisualizer.js +1 -2
  284. package/Source/DataSources/ModelGraphics.js +29 -63
  285. package/Source/DataSources/ModelVisualizer.js +1 -2
  286. package/Source/DataSources/NodeTransformationProperty.js +2 -2
  287. package/Source/DataSources/PathGraphics.js +10 -12
  288. package/Source/DataSources/PlaneGraphics.js +13 -15
  289. package/Source/DataSources/PointGraphics.js +17 -32
  290. package/Source/DataSources/PolygonGraphics.js +28 -45
  291. package/Source/DataSources/PolylineDashMaterialProperty.js +2 -2
  292. package/Source/DataSources/PolylineGeometryUpdater.js +9 -14
  293. package/Source/DataSources/PolylineGlowMaterialProperty.js +2 -2
  294. package/Source/DataSources/PolylineGraphics.js +16 -23
  295. package/Source/DataSources/PolylineOutlineMaterialProperty.js +2 -2
  296. package/Source/DataSources/PolylineVisualizer.js +2 -3
  297. package/Source/DataSources/PolylineVolumeGraphics.js +15 -17
  298. package/Source/DataSources/PositionPropertyArray.js +1 -2
  299. package/Source/DataSources/Property.js +1 -2
  300. package/Source/DataSources/PropertyBag.js +1 -2
  301. package/Source/DataSources/RectangleGraphics.js +23 -35
  302. package/Source/DataSources/Rotation.js +4 -5
  303. package/Source/DataSources/SampledPositionProperty.js +2 -3
  304. package/Source/DataSources/SampledProperty.js +6 -11
  305. package/Source/DataSources/StaticGroundPolylinePerMaterialBatch.js +1 -2
  306. package/Source/DataSources/StripeMaterialProperty.js +2 -2
  307. package/Source/DataSources/TimeIntervalCollectionPositionProperty.js +1 -2
  308. package/Source/DataSources/VelocityOrientationProperty.js +1 -2
  309. package/Source/DataSources/VelocityVectorProperty.js +1 -2
  310. package/Source/DataSources/WallGraphics.js +15 -23
  311. package/Source/DataSources/createPropertyDescriptor.js +2 -3
  312. package/Source/DataSources/exportKml.js +11 -14
  313. package/Source/Renderer/Buffer.js +5 -5
  314. package/Source/Renderer/ClearCommand.js +2 -2
  315. package/Source/Renderer/ComputeCommand.js +3 -3
  316. package/Source/Renderer/Context.js +22 -37
  317. package/Source/Renderer/CubeMap.js +6 -6
  318. package/Source/Renderer/CubeMapFace.js +11 -12
  319. package/Source/Renderer/DrawCommand.js +14 -25
  320. package/Source/Renderer/Framebuffer.js +3 -3
  321. package/Source/Renderer/FramebufferManager.js +25 -39
  322. package/Source/Renderer/MultisampleFramebuffer.js +2 -2
  323. package/Source/Renderer/RenderState.js +63 -92
  324. package/Source/Renderer/Renderbuffer.js +4 -4
  325. package/Source/Renderer/Sampler.js +2 -2
  326. package/Source/Renderer/ShaderBuilder.js +2 -3
  327. package/Source/Renderer/ShaderProgram.js +3 -3
  328. package/Source/Renderer/ShaderSource.js +3 -3
  329. package/Source/Renderer/Texture.js +16 -15
  330. package/Source/Renderer/TextureAtlas.js +802 -0
  331. package/Source/Renderer/UniformState.js +6 -11
  332. package/Source/Renderer/VertexArray.js +14 -23
  333. package/Source/Renderer/VertexArrayFacade.js +7 -11
  334. package/Source/Scene/Appearance.js +4 -4
  335. package/Source/Scene/ArcGisMapServerImageryProvider.js +23 -37
  336. package/Source/Scene/ArcGisMapService.js +1 -1
  337. package/Source/Scene/B3dmParser.js +2 -3
  338. package/Source/Scene/BatchTableHierarchy.js +6 -13
  339. package/Source/Scene/Billboard.js +105 -182
  340. package/Source/Scene/BillboardCollection.js +140 -224
  341. package/Source/Scene/BillboardLoadState.js +44 -0
  342. package/Source/Scene/BillboardTexture.js +348 -0
  343. package/Source/Scene/BingMapsImageryProvider.js +6 -6
  344. package/Source/Scene/BoxEmitter.js +1 -2
  345. package/Source/Scene/BufferLoader.js +2 -2
  346. package/Source/Scene/Camera.js +45 -64
  347. package/Source/Scene/CameraFlightPath.js +6 -6
  348. package/Source/Scene/Cesium3DContentGroup.js +2 -2
  349. package/Source/Scene/Cesium3DTile.js +3 -4
  350. package/Source/Scene/Cesium3DTileBatchTable.js +6 -49
  351. package/Source/Scene/Cesium3DTileFeatureTable.js +2 -3
  352. package/Source/Scene/Cesium3DTilePointFeature.js +10 -18
  353. package/Source/Scene/Cesium3DTileStyle.js +4 -7
  354. package/Source/Scene/Cesium3DTilesVoxelProvider.js +419 -137
  355. package/Source/Scene/Cesium3DTileset.js +77 -143
  356. package/Source/Scene/Cesium3DTilesetMetadata.js +3 -3
  357. package/Source/Scene/Cesium3DTilesetStatistics.js +0 -1
  358. package/Source/Scene/CircleEmitter.js +2 -3
  359. package/Source/Scene/ClassificationPrimitive.js +15 -26
  360. package/Source/Scene/ClippingPlaneCollection.js +7 -12
  361. package/Source/Scene/ClippingPolygon.js +1 -2
  362. package/Source/Scene/ClippingPolygonCollection.js +4 -4
  363. package/Source/Scene/CloudCollection.js +9 -11
  364. package/Source/Scene/Composite3DTileContent.js +1 -2
  365. package/Source/Scene/ConeEmitter.js +1 -2
  366. package/Source/Scene/ContentMetadata.js +2 -2
  367. package/Source/Scene/CreditDisplay.js +5 -9
  368. package/Source/Scene/CumulusCloud.js +9 -15
  369. package/Source/Scene/DebugAppearance.js +7 -7
  370. package/Source/Scene/DebugCameraPrimitive.js +5 -5
  371. package/Source/Scene/DebugModelMatrixPrimitive.js +6 -8
  372. package/Source/Scene/DepthPlane.js +1 -2
  373. package/Source/Scene/DirectionalLight.js +2 -3
  374. package/Source/Scene/DiscardMissingTileImagePolicy.js +2 -2
  375. package/Source/Scene/DynamicEnvironmentMapManager.js +15 -24
  376. package/Source/Scene/EllipsoidPrimitive.js +11 -19
  377. package/Source/Scene/EllipsoidSurfaceAppearance.js +11 -15
  378. package/Source/Scene/Expression.js +1 -0
  379. package/Source/Scene/FrameRateMonitor.js +12 -21
  380. package/Source/Scene/FrustumCommands.js +2 -3
  381. package/Source/Scene/Geometry3DTileContent.js +9 -16
  382. package/Source/Scene/Globe.js +3 -4
  383. package/Source/Scene/GlobeSurfaceTileProvider.js +9 -18
  384. package/Source/Scene/GlobeTranslucencyState.js +12 -25
  385. package/Source/Scene/GltfBufferViewLoader.js +4 -4
  386. package/Source/Scene/GltfDracoLoader.js +2 -2
  387. package/Source/Scene/GltfImageLoader.js +2 -2
  388. package/Source/Scene/GltfIndexBufferLoader.js +5 -5
  389. package/Source/Scene/GltfJsonLoader.js +2 -2
  390. package/Source/Scene/GltfLoader.js +22 -37
  391. package/Source/Scene/GltfLoaderUtil.js +11 -11
  392. package/Source/Scene/GltfPipeline/addDefaults.js +37 -64
  393. package/Source/Scene/GltfPipeline/addToArray.js +1 -3
  394. package/Source/Scene/GltfPipeline/moveTechniqueRenderStates.js +2 -5
  395. package/Source/Scene/GltfPipeline/parseGlb.js +1 -5
  396. package/Source/Scene/GltfPipeline/removeUnusedElements.js +1 -2
  397. package/Source/Scene/GltfPipeline/updateVersion.js +28 -49
  398. package/Source/Scene/GltfStructuralMetadataLoader.js +5 -6
  399. package/Source/Scene/GltfTextureLoader.js +3 -3
  400. package/Source/Scene/GltfVertexBufferLoader.js +5 -5
  401. package/Source/Scene/GoogleEarthEnterpriseImageryProvider.js +2 -2
  402. package/Source/Scene/GoogleEarthEnterpriseMapsProvider.js +3 -4
  403. package/Source/Scene/GridImageryProvider.js +10 -13
  404. package/Source/Scene/GroundPolylinePrimitive.js +11 -22
  405. package/Source/Scene/GroundPrimitive.js +13 -24
  406. package/Source/Scene/GroupMetadata.js +2 -2
  407. package/Source/Scene/I3SDataProvider.js +10 -15
  408. package/Source/Scene/I3SNode.js +1 -6
  409. package/Source/Scene/I3SSublayer.js +1 -2
  410. package/Source/Scene/I3SSymbology.js +2 -3
  411. package/Source/Scene/I3dmParser.js +1 -2
  412. package/Source/Scene/ITwinData.js +11 -6
  413. package/Source/Scene/ImageBasedLighting.js +2 -2
  414. package/Source/Scene/ImageryLayer.js +42 -71
  415. package/Source/Scene/ImageryLayerCollection.js +2 -3
  416. package/Source/Scene/Implicit3DTileContent.js +3 -4
  417. package/Source/Scene/ImplicitAvailabilityBitstream.js +2 -5
  418. package/Source/Scene/ImplicitMetadataView.js +2 -2
  419. package/Source/Scene/ImplicitSubtree.js +10 -15
  420. package/Source/Scene/ImplicitSubtreeCache.js +3 -3
  421. package/Source/Scene/ImplicitSubtreeMetadata.js +2 -2
  422. package/Source/Scene/InstanceAttributeSemantic.js +1 -1
  423. package/Source/Scene/IonImageryProvider.js +3 -3
  424. package/Source/Scene/KeyframeNode.js +16 -2
  425. package/Source/Scene/Label.js +19 -36
  426. package/Source/Scene/LabelCollection.js +218 -196
  427. package/Source/Scene/MapboxImageryProvider.js +4 -4
  428. package/Source/Scene/MapboxStyleImageryProvider.js +5 -5
  429. package/Source/Scene/Material.js +14 -20
  430. package/Source/Scene/MaterialAppearance.js +12 -18
  431. package/Source/Scene/Megatexture.js +145 -82
  432. package/Source/Scene/MetadataClass.js +4 -4
  433. package/Source/Scene/MetadataClassProperty.js +11 -14
  434. package/Source/Scene/MetadataEnum.js +4 -7
  435. package/Source/Scene/MetadataEnumValue.js +2 -2
  436. package/Source/Scene/MetadataSchema.js +4 -4
  437. package/Source/Scene/MetadataSchemaLoader.js +2 -2
  438. package/Source/Scene/MetadataTable.js +2 -2
  439. package/Source/Scene/MetadataTableProperty.js +17 -31
  440. package/Source/Scene/Model/AlphaPipelineStage.js +1 -2
  441. package/Source/Scene/Model/B3dmLoader.js +15 -26
  442. package/Source/Scene/Model/BatchTexturePipelineStage.js +1 -2
  443. package/Source/Scene/Model/ClassificationModelDrawCommand.js +2 -2
  444. package/Source/Scene/Model/CustomShader.js +10 -14
  445. package/Source/Scene/Model/Extensions/Gpm/GltfMeshPrimitiveGpmLoader.js +3 -3
  446. package/Source/Scene/Model/FeatureIdPipelineStage.js +1 -5
  447. package/Source/Scene/Model/GeoJsonLoader.js +5 -8
  448. package/Source/Scene/Model/I3dmLoader.js +13 -21
  449. package/Source/Scene/Model/MaterialPipelineStage.js +1 -2
  450. package/Source/Scene/Model/Model.js +41 -63
  451. package/Source/Scene/Model/ModelAnimation.js +5 -6
  452. package/Source/Scene/Model/ModelAnimationChannel.js +2 -2
  453. package/Source/Scene/Model/ModelAnimationCollection.js +4 -4
  454. package/Source/Scene/Model/ModelArticulation.js +2 -2
  455. package/Source/Scene/Model/ModelArticulationStage.js +2 -2
  456. package/Source/Scene/Model/ModelDrawCommand.js +3 -3
  457. package/Source/Scene/Model/ModelFeatureTable.js +3 -9
  458. package/Source/Scene/Model/ModelLightingOptions.js +3 -3
  459. package/Source/Scene/Model/ModelNode.js +1 -1
  460. package/Source/Scene/Model/ModelRuntimeNode.js +2 -2
  461. package/Source/Scene/Model/ModelRuntimePrimitive.js +2 -2
  462. package/Source/Scene/Model/ModelSceneGraph.js +2 -2
  463. package/Source/Scene/Model/ModelSkin.js +2 -2
  464. package/Source/Scene/Model/ModelUtility.js +5 -1
  465. package/Source/Scene/Model/PickingPipelineStage.js +1 -2
  466. package/Source/Scene/Model/PntsLoader.js +6 -6
  467. package/Source/Scene/Model/PointCloudStylingPipelineStage.js +1 -5
  468. package/Source/Scene/Model/PrimitiveOutlineGenerator.js +2 -2
  469. package/Source/Scene/Model/SelectedFeatureIdPipelineStage.js +2 -3
  470. package/Source/Scene/Model/TextureUniform.js +5 -8
  471. package/Source/Scene/Model/VaryingType.js +2 -2
  472. package/Source/Scene/Model/pickModel.js +4 -5
  473. package/Source/Scene/Moon.js +5 -5
  474. package/Source/Scene/OpenStreetMapImageryProvider.js +7 -7
  475. package/Source/Scene/OrderedGroundPrimitiveCollection.js +1 -2
  476. package/Source/Scene/Particle.js +11 -17
  477. package/Source/Scene/ParticleBurst.js +5 -5
  478. package/Source/Scene/ParticleSystem.js +24 -54
  479. package/Source/Scene/PerInstanceColorAppearance.js +8 -8
  480. package/Source/Scene/PerformanceDisplay.js +3 -3
  481. package/Source/Scene/PickFramebuffer.js +4 -5
  482. package/Source/Scene/Picking.js +3 -4
  483. package/Source/Scene/PntsParser.js +1 -2
  484. package/Source/Scene/PointCloud.js +6 -12
  485. package/Source/Scene/PointCloudShading.js +9 -18
  486. package/Source/Scene/PointPrimitive.js +11 -21
  487. package/Source/Scene/PointPrimitiveCollection.js +6 -14
  488. package/Source/Scene/Polyline.js +5 -5
  489. package/Source/Scene/PolylineCollection.js +5 -10
  490. package/Source/Scene/PolylineColorAppearance.js +7 -11
  491. package/Source/Scene/PolylineMaterialAppearance.js +7 -11
  492. package/Source/Scene/PostProcessStage.js +2 -2
  493. package/Source/Scene/PostProcessStageComposite.js +3 -6
  494. package/Source/Scene/Primitive.js +21 -42
  495. package/Source/Scene/PrimitiveCollection.js +4 -4
  496. package/Source/Scene/PrimitivePipeline.js +1 -2
  497. package/Source/Scene/PropertyAttribute.js +2 -2
  498. package/Source/Scene/PropertyAttributeProperty.js +4 -4
  499. package/Source/Scene/PropertyTable.js +2 -2
  500. package/Source/Scene/PropertyTexture.js +2 -2
  501. package/Source/Scene/PropertyTextureProperty.js +4 -4
  502. package/Source/Scene/QuadtreePrimitive.js +84 -66
  503. package/Source/Scene/QuadtreeTile.js +170 -0
  504. package/Source/Scene/ResourceCache.js +11 -11
  505. package/Source/Scene/ResourceCacheKey.js +11 -11
  506. package/Source/Scene/Scene.js +66 -40
  507. package/Source/Scene/ScreenSpaceCameraController.js +10 -20
  508. package/Source/Scene/ShadowMap.js +15 -15
  509. package/Source/Scene/ShadowVolumeAppearance.js +1 -2
  510. package/Source/Scene/SingleTileImageryProvider.js +4 -4
  511. package/Source/Scene/SkyAtmosphere.js +1 -2
  512. package/Source/Scene/SkyBox.js +1 -2
  513. package/Source/Scene/SpatialNode.js +4 -11
  514. package/Source/Scene/SphereEmitter.js +2 -3
  515. package/Source/Scene/StructuralMetadata.js +2 -2
  516. package/Source/Scene/SunLight.js +4 -4
  517. package/Source/Scene/SupportedImageFormats.js +4 -4
  518. package/Source/Scene/TileBoundingRegion.js +4 -5
  519. package/Source/Scene/TileBoundingS2Cell.js +3 -4
  520. package/Source/Scene/TileCoordinatesImageryProvider.js +5 -5
  521. package/Source/Scene/TileMapServiceImageryProvider.js +18 -27
  522. package/Source/Scene/TileMetadata.js +2 -2
  523. package/Source/Scene/TilesetMetadata.js +2 -2
  524. package/Source/Scene/TimeDynamicImagery.js +2 -2
  525. package/Source/Scene/TimeDynamicPointCloud.js +8 -10
  526. package/Source/Scene/TweenCollection.js +13 -16
  527. package/Source/Scene/UrlTemplateImageryProvider.js +11 -15
  528. package/Source/Scene/Vector3DTileClampedPolylines.js +1 -2
  529. package/Source/Scene/Vector3DTileContent.js +16 -20
  530. package/Source/Scene/Vector3DTileGeometry.js +1 -2
  531. package/Source/Scene/Vector3DTilePoints.js +2 -5
  532. package/Source/Scene/Vector3DTilePolygons.js +2 -3
  533. package/Source/Scene/Vector3DTilePolylines.js +1 -2
  534. package/Source/Scene/Vector3DTilePrimitive.js +9 -13
  535. package/Source/Scene/VoxelBoxShape.js +14 -8
  536. package/Source/Scene/VoxelCell.js +6 -5
  537. package/Source/Scene/VoxelContent.js +171 -107
  538. package/Source/Scene/VoxelCylinderShape.js +69 -69
  539. package/Source/Scene/VoxelEllipsoidShape.js +17 -8
  540. package/Source/Scene/VoxelMetadataOrder.js +24 -0
  541. package/Source/Scene/VoxelPrimitive.js +134 -79
  542. package/Source/Scene/VoxelProvider.js +22 -29
  543. package/Source/Scene/VoxelRenderResources.js +26 -7
  544. package/Source/Scene/VoxelShape.js +10 -3
  545. package/Source/Scene/VoxelTraversal.js +260 -180
  546. package/Source/Scene/WebMapServiceImageryProvider.js +17 -24
  547. package/Source/Scene/WebMapTileServiceImageryProvider.js +7 -10
  548. package/Source/Scene/createElevationBandMaterial.js +4 -4
  549. package/Source/Scene/createGooglePhotorealistic3DTileset.js +8 -16
  550. package/Source/Scene/createOsmBuildingsAsync.js +3 -6
  551. package/Source/Scene/createTangentSpaceDebugPrimitive.js +4 -6
  552. package/Source/Scene/createWorldImageryAsync.js +3 -3
  553. package/Source/Scene/findContentMetadata.js +2 -5
  554. package/Source/Scene/findTileMetadata.js +2 -5
  555. package/Source/Scene/parseBatchTable.js +1 -5
  556. package/Source/Scene/parseFeatureMetadataLegacy.js +2 -2
  557. package/Source/Scene/parseStructuralMetadata.js +2 -2
  558. package/Source/Scene/processVoxelProperties.js +3 -0
  559. package/Source/Shaders/GlobeFS.glsl +10 -1
  560. package/Source/Shaders/GlobeFS.js +10 -1
  561. package/Source/Shaders/Voxels/Megatexture.glsl +4 -16
  562. package/Source/Shaders/Voxels/Megatexture.js +4 -16
  563. package/Source/Shaders/Voxels/Octree.glsl +44 -7
  564. package/Source/Shaders/Voxels/Octree.js +44 -7
  565. package/Source/Shaders/Voxels/VoxelFS.glsl +9 -15
  566. package/Source/Shaders/Voxels/VoxelFS.js +9 -15
  567. package/Source/Shaders/Voxels/convertUvToCylinder.glsl +15 -15
  568. package/Source/Shaders/Voxels/convertUvToCylinder.js +15 -15
  569. package/Source/Widget/CesiumWidget.js +17 -25
  570. package/Source/Workers/createGeometry.js +1 -2
  571. package/Source/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js +1 -2
  572. package/Source/Workers/decodeI3S.js +1 -5
  573. package/Source/Workers/transcodeKTX2.js +1 -2
  574. package/index.d.ts +231 -92
  575. package/index.js +315 -310
  576. package/package.json +3 -3
  577. package/Build/Workers/chunk-TVL3F7IU.js +0 -39
  578. package/Source/Scene/TextureAtlas.js +0 -558
@@ -1,26 +1,50 @@
1
1
  import Cartesian3 from "../Core/Cartesian3.js";
2
+ import Cesium3DTilesetMetadata from "./Cesium3DTilesetMetadata.js";
2
3
  import Check from "../Core/Check.js";
3
- import defaultValue from "../Core/defaultValue.js";
4
+ import Frozen from "../Core/Frozen.js";
4
5
  import defined from "../Core/defined.js";
5
6
  import Ellipsoid from "../Core/Ellipsoid.js";
6
- import Matrix4 from "../Core/Matrix4.js";
7
- import OrientedBoundingBox from "../Core/OrientedBoundingBox.js";
8
- import Resource from "../Core/Resource.js";
9
- import RuntimeError from "../Core/RuntimeError.js";
10
- import Cesium3DTilesetMetadata from "./Cesium3DTilesetMetadata.js";
11
7
  import hasExtension from "./hasExtension.js";
12
8
  import ImplicitSubtree from "./ImplicitSubtree.js";
13
9
  import ImplicitSubtreeCache from "./ImplicitSubtreeCache.js";
14
10
  import ImplicitTileCoordinates from "./ImplicitTileCoordinates.js";
15
11
  import ImplicitTileset from "./ImplicitTileset.js";
12
+ import Matrix4 from "../Core/Matrix4.js";
16
13
  import MetadataSemantic from "./MetadataSemantic.js";
17
14
  import MetadataType from "./MetadataType.js";
15
+ import OrientedBoundingBox from "../Core/OrientedBoundingBox.js";
18
16
  import preprocess3DTileContent from "./preprocess3DTileContent.js";
17
+ import Resource from "../Core/Resource.js";
19
18
  import ResourceCache from "./ResourceCache.js";
19
+ import RuntimeError from "../Core/RuntimeError.js";
20
20
  import VoxelBoxShape from "./VoxelBoxShape.js";
21
21
  import VoxelContent from "./VoxelContent.js";
22
- import VoxelCylinderShape from "./VoxelCylinderShape.js";
22
+ import VoxelMetadataOrder from "./VoxelMetadataOrder.js";
23
23
  import VoxelShapeType from "./VoxelShapeType.js";
24
+ import CesiumMath from "../Core/Math.js";
25
+ import Quaternion from "../Core/Quaternion.js";
26
+
27
+ /**
28
+ * @typedef {Object} Cesium3DTilesVoxelProvider.ConstructorOptions
29
+ *
30
+ * Initialization options for the Cesium3DTilesVoxelProvider constructor
31
+ *
32
+ * @property {string} className The class in the tileset schema describing voxel metadata.
33
+ * @property {string[]} names The metadata names.
34
+ * @property {MetadataType[]} types The metadata types.
35
+ * @property {MetadataComponentType[]} componentTypes The metadata component types.
36
+ * @property {VoxelShapeType} shape The {@link VoxelShapeType}.
37
+ * @property {Cartesian3} dimensions The number of voxels per dimension of a tile. This is the same for all tiles in the dataset.
38
+ * @property {Cartesian3} [paddingBefore=Cartesian3.ZERO] The number of padding voxels before the tile. This improves rendering quality when sampling the edge of a tile, but it increases memory usage.
39
+ * @property {Cartesian3} [paddingAfter=Cartesian3.ZERO] The number of padding voxels after the tile. This improves rendering quality when sampling the edge of a tile, but it increases memory usage.
40
+ * @property {Matrix4} [globalTransform=Matrix4.IDENTITY] A transform from local space to global space.
41
+ * @property {Matrix4} [shapeTransform=Matrix4.IDENTITY] A transform from shape space to local space.
42
+ * @property {Cartesian3} [minBounds] The minimum bounds.
43
+ * @property {Cartesian3} [maxBounds] The maximum bounds.
44
+ * @property {number[][]} [minimumValues] The metadata minimum values.
45
+ * @property {number[][]} [maximumValues] The metadata maximum values.
46
+ * @property {number} [maximumTileCount] The maximum number of tiles that exist for this provider. This value is used as a hint to the voxel renderer to allocate an appropriate amount of GPU memory. If this value is not known it can be undefined.
47
+ */
24
48
 
25
49
  /**
26
50
  * A {@link VoxelProvider} that fetches voxel data from a 3D Tiles tileset.
@@ -35,7 +59,7 @@ import VoxelShapeType from "./VoxelShapeType.js";
35
59
  * @constructor
36
60
  * @augments VoxelProvider
37
61
  *
38
- * @param {object} options Object with the following properties:
62
+ * @param {Cesium3DTilesVoxelProvider.ConstructorOptions} options An object describing initialization options
39
63
  *
40
64
  * @see Cesium3DTilesVoxelProvider.fromUrl
41
65
  * @see VoxelProvider
@@ -45,60 +69,281 @@ import VoxelShapeType from "./VoxelShapeType.js";
45
69
  * @experimental This feature is not final and is subject to change without Cesium's standard deprecation policy.
46
70
  */
47
71
  function Cesium3DTilesVoxelProvider(options) {
48
- options = defaultValue(options, defaultValue.EMPTY_OBJECT);
72
+ options = options ?? Frozen.EMPTY_OBJECT;
73
+
74
+ const {
75
+ className,
76
+ names,
77
+ types,
78
+ componentTypes,
79
+ shape,
80
+ dimensions,
81
+ paddingBefore = Cartesian3.ZERO.clone(),
82
+ paddingAfter = Cartesian3.ZERO.clone(),
83
+ globalTransform = Matrix4.IDENTITY.clone(),
84
+ shapeTransform = Matrix4.IDENTITY.clone(),
85
+ minBounds,
86
+ maxBounds,
87
+ minimumValues,
88
+ maximumValues,
89
+ maximumTileCount,
90
+ } = options;
49
91
 
50
- /** @inheritdoc */
51
- this.shapeTransform = undefined;
92
+ //>>includeStart('debug', pragmas.debug);
93
+ Check.typeOf.string("className", className);
94
+ Check.typeOf.object("names", names);
95
+ Check.typeOf.object("types", types);
96
+ Check.typeOf.object("componentTypes", componentTypes);
97
+ Check.typeOf.string("shape", shape);
98
+ Check.typeOf.object("dimensions", dimensions);
99
+ //>>includeEnd('debug');
52
100
 
53
- /** @inheritdoc */
54
- this.globalTransform = undefined;
101
+ this._shapeTransform = shapeTransform;
102
+ this._globalTransform = globalTransform;
103
+ this._shape = shape;
104
+ this._minBounds = minBounds;
105
+ this._maxBounds = maxBounds;
106
+ this._dimensions = dimensions;
107
+ this._paddingBefore = paddingBefore;
108
+ this._paddingAfter = paddingAfter;
109
+ this._className = className;
110
+ this._names = names;
111
+ this._types = types;
112
+ this._componentTypes = componentTypes;
113
+ this._metadataOrder =
114
+ shape === VoxelShapeType.ELLIPSOID
115
+ ? VoxelMetadataOrder.Z_UP
116
+ : VoxelMetadataOrder.Y_UP;
117
+ this._minimumValues = minimumValues;
118
+ this._maximumValues = maximumValues;
119
+ this._maximumTileCount = maximumTileCount;
120
+ this._availableLevels = undefined;
121
+ this._implicitTileset = undefined;
122
+ this._subtreeCache = new ImplicitSubtreeCache();
123
+ }
55
124
 
56
- /** @inheritdoc */
57
- this.shape = undefined;
125
+ Object.defineProperties(Cesium3DTilesVoxelProvider.prototype, {
126
+ /**
127
+ * A transform from local space to global space.
128
+ *
129
+ * @memberof Cesium3DTilesVoxelProvider.prototype
130
+ * @type {Matrix4}
131
+ * @default Matrix4.IDENTITY
132
+ * @readonly
133
+ */
134
+ globalTransform: {
135
+ get: function () {
136
+ return this._globalTransform;
137
+ },
138
+ },
58
139
 
59
- /** @inheritdoc */
60
- this.minBounds = undefined;
140
+ /**
141
+ * A transform from shape space to local space.
142
+ *
143
+ * @memberof Cesium3DTilesVoxelProvider.prototype
144
+ * @type {Matrix4}
145
+ * @default Matrix4.IDENTITY
146
+ * @readonly
147
+ */
148
+ shapeTransform: {
149
+ get: function () {
150
+ return this._shapeTransform;
151
+ },
152
+ },
61
153
 
62
- /** @inheritdoc */
63
- this.maxBounds = undefined;
154
+ /**
155
+ * Gets the {@link VoxelShapeType}
156
+ *
157
+ * @memberof Cesium3DTilesVoxelProvider.prototype
158
+ * @type {VoxelShapeType}
159
+ * @readonly
160
+ */
161
+ shape: {
162
+ get: function () {
163
+ return this._shape;
164
+ },
165
+ },
64
166
 
65
- /** @inheritdoc */
66
- this.dimensions = undefined;
167
+ /**
168
+ * Gets the minimum bounds.
169
+ * If undefined, the shape's default minimum bounds will be used instead.
170
+ *
171
+ * @memberof Cesium3DTilesVoxelProvider.prototype
172
+ * @type {Cartesian3|undefined}
173
+ * @readonly
174
+ */
175
+ minBounds: {
176
+ get: function () {
177
+ return this._minBounds;
178
+ },
179
+ },
67
180
 
68
- /** @inheritdoc */
69
- this.paddingBefore = undefined;
181
+ /**
182
+ * Gets the maximum bounds.
183
+ * If undefined, the shape's default maximum bounds will be used instead.
184
+ *
185
+ * @memberof Cesium3DTilesVoxelProvider.prototype
186
+ * @type {Cartesian3|undefined}
187
+ * @readonly
188
+ */
189
+ maxBounds: {
190
+ get: function () {
191
+ return this._maxBounds;
192
+ },
193
+ },
70
194
 
71
- /** @inheritdoc */
72
- this.paddingAfter = undefined;
195
+ /**
196
+ * Gets the number of voxels per dimension of a tile. This is the same for all tiles in the dataset.
197
+ *
198
+ * @memberof Cesium3DTilesVoxelProvider.prototype
199
+ * @type {Cartesian3}
200
+ * @readonly
201
+ */
202
+ dimensions: {
203
+ get: function () {
204
+ return this._dimensions;
205
+ },
206
+ },
73
207
 
74
- /** @inheritdoc */
75
- this.names = undefined;
208
+ /**
209
+ * Gets the number of padding voxels before the tile. This improves rendering quality when sampling the edge of a tile, but it increases memory usage.
210
+ *
211
+ * @memberof Cesium3DTilesVoxelProvider.prototype
212
+ * @type {Cartesian3}
213
+ * @default Cartesian3.ZERO
214
+ * @readonly
215
+ */
216
+ paddingBefore: {
217
+ get: function () {
218
+ return this._paddingBefore;
219
+ },
220
+ },
76
221
 
77
- /** @inheritdoc */
78
- this.types = undefined;
222
+ /**
223
+ * Gets the number of padding voxels after the tile. This improves rendering quality when sampling the edge of a tile, but it increases memory usage.
224
+ *
225
+ * @memberof Cesium3DTilesVoxelProvider.prototype
226
+ * @type {Cartesian3}
227
+ * @default Cartesian3.ZERO
228
+ * @readonly
229
+ */
230
+ paddingAfter: {
231
+ get: function () {
232
+ return this._paddingAfter;
233
+ },
234
+ },
79
235
 
80
- /** @inheritdoc */
81
- this.componentTypes = undefined;
236
+ /**
237
+ * The metadata class for this tileset.
238
+ *
239
+ * @memberof Cesium3DTilesVoxelProvider.prototype
240
+ * @type {string}
241
+ * @readonly
242
+ */
243
+ className: {
244
+ get: function () {
245
+ return this._className;
246
+ },
247
+ },
82
248
 
83
- /** @inheritdoc */
84
- this.minimumValues = undefined;
249
+ /**
250
+ * Gets the metadata names.
251
+ *
252
+ * @memberof Cesium3DTilesVoxelProvider.prototype
253
+ * @type {string[]}
254
+ * @readonly
255
+ */
256
+ names: {
257
+ get: function () {
258
+ return this._names;
259
+ },
260
+ },
85
261
 
86
- /** @inheritdoc */
87
- this.maximumValues = undefined;
262
+ /**
263
+ * Gets the metadata types.
264
+ *
265
+ * @memberof Cesium3DTilesVoxelProvider.prototype
266
+ * @type {MetadataType[]}
267
+ * @readonly
268
+ */
269
+ types: {
270
+ get: function () {
271
+ return this._types;
272
+ },
273
+ },
88
274
 
89
- /** @inheritdoc */
90
- this.maximumTileCount = undefined;
275
+ /**
276
+ * Gets the metadata component types.
277
+ *
278
+ * @memberof Cesium3DTilesVoxelProvider.prototype
279
+ * @type {MetadataComponentType[]}
280
+ * @readonly
281
+ */
282
+ componentTypes: {
283
+ get: function () {
284
+ return this._componentTypes;
285
+ },
286
+ },
91
287
 
92
- this._availableLevels = undefined;
93
- this._implicitTileset = undefined;
94
- this._subtreeCache = new ImplicitSubtreeCache();
95
- }
288
+ /**
289
+ * Gets the ordering of the metadata in the buffers.
290
+ *
291
+ * @memberof Cesium3DTilesVoxelProvider.prototype
292
+ * @type {VoxelMetadataOrder}
293
+ * @readonly
294
+ * @private
295
+ */
296
+ metadataOrder: {
297
+ get: function () {
298
+ return this._metadataOrder;
299
+ },
300
+ },
301
+
302
+ /**
303
+ * Gets the metadata minimum values.
304
+ *
305
+ * @memberof Cesium3DTilesVoxelProvider.prototype
306
+ * @type {number[][]|undefined}
307
+ * @readonly
308
+ */
309
+ minimumValues: {
310
+ get: function () {
311
+ return this._minimumValues;
312
+ },
313
+ },
314
+
315
+ /**
316
+ * Gets the metadata maximum values.
317
+ *
318
+ * @memberof Cesium3DTilesVoxelProvider.prototype
319
+ * @type {number[][]|undefined}
320
+ * @readonly
321
+ */
322
+ maximumValues: {
323
+ get: function () {
324
+ return this._maximumValues;
325
+ },
326
+ },
327
+
328
+ /**
329
+ * The maximum number of tiles that exist for this provider.
330
+ * This value is used as a hint to the voxel renderer to allocate an appropriate amount of GPU memory.
331
+ * If this value is not known it can be undefined.
332
+ *
333
+ * @memberof Cesium3DTilesVoxelProvider.prototype
334
+ * @type {number|undefined}
335
+ * @readonly
336
+ */
337
+ maximumTileCount: {
338
+ get: function () {
339
+ return this._maximumTileCount;
340
+ },
341
+ },
96
342
 
97
- Object.defineProperties(Cesium3DTilesVoxelProvider.prototype, {
98
343
  /**
99
344
  * The number of levels of detail containing available tiles in the tileset.
100
345
  *
101
- * @memberof VoxelPrimitive.prototype
346
+ * @memberof Cesium3DTilesVoxelProvider.prototype
102
347
  * @type {number|undefined}
103
348
  * @readonly
104
349
  */
@@ -110,7 +355,7 @@ Object.defineProperties(Cesium3DTilesVoxelProvider.prototype, {
110
355
  });
111
356
 
112
357
  /**
113
- * Creates a {@link VoxelProvider} that fetches voxel data from a 3D Tiles tileset.
358
+ * Creates a {@link Cesium3DTilesVoxelProvider} that fetches voxel data from a 3D Tiles tileset.
114
359
  *
115
360
  * @param {Resource|string} url The URL to a tileset JSON file
116
361
  * @returns {Promise<Cesium3DTilesVoxelProvider>} The created provider
@@ -120,6 +365,22 @@ Object.defineProperties(Cesium3DTilesVoxelProvider.prototype, {
120
365
  * @exception {RuntimeException} Root tile must have implicit tiling
121
366
  * @exception {RuntimeException} Tileset must have a metadata schema
122
367
  * @exception {RuntimeException} Only box, region and 3DTILES_bounding_volume_cylinder are supported in Cesium3DTilesVoxelProvider
368
+ *
369
+ * @example
370
+ * try {
371
+ * const voxelProvider = await Cesium3DTilesVoxelProvider.fromUrl(
372
+ * "http://localhost:8002/tilesets/voxel/tileset.json"
373
+ * );
374
+ * const voxelPrimitive = new VoxelPrimitive({
375
+ * provider: voxelProvider,
376
+ * customShader: customShader,
377
+ * });
378
+ * scene.primitives.add(voxelPrimitive);
379
+ * } catch (error) {
380
+ * console.error(`Error creating voxel primitive: ${error}`);
381
+ * }
382
+ *
383
+ * @see {@link VoxelPrimitive}
123
384
  */
124
385
  Cesium3DTilesVoxelProvider.fromUrl = async function (url) {
125
386
  //>>includeStart('debug', pragmas.debug);
@@ -134,48 +395,38 @@ Cesium3DTilesVoxelProvider.fromUrl = async function (url) {
134
395
  const schemaLoader = getMetadataSchemaLoader(tilesetJson, resource);
135
396
  await schemaLoader.load();
136
397
 
137
- const root = tilesetJson.root;
138
- const voxel = root.content.extensions["3DTILES_content_voxels"];
139
- const className = voxel.class;
398
+ const { root } = tilesetJson;
140
399
 
141
400
  const metadataJson = hasExtension(tilesetJson, "3DTILES_metadata")
142
401
  ? tilesetJson.extensions["3DTILES_metadata"]
143
402
  : tilesetJson;
144
403
 
145
- const metadataSchema = schemaLoader.schema;
146
- const metadata = new Cesium3DTilesetMetadata({
404
+ const tilesetMetadata = new Cesium3DTilesetMetadata({
147
405
  metadataJson: metadataJson,
148
- schema: metadataSchema,
406
+ schema: schemaLoader.schema,
149
407
  });
150
408
 
151
- const provider = new Cesium3DTilesVoxelProvider();
152
-
153
- addAttributeInfo(provider, metadata, className);
154
-
155
- const implicitTileset = new ImplicitTileset(resource, root, metadataSchema);
156
-
157
- const { shape, minBounds, maxBounds, shapeTransform, globalTransform } =
158
- getShape(root);
409
+ const voxel = root.content.extensions["3DTILES_content_voxels"];
410
+ const className = voxel.class;
159
411
 
160
- provider.shape = shape;
161
- provider.minBounds = minBounds;
162
- provider.maxBounds = maxBounds;
163
- provider.dimensions = Cartesian3.unpack(voxel.dimensions);
164
- provider.shapeTransform = shapeTransform;
165
- provider.globalTransform = globalTransform;
166
- provider.maximumTileCount = getTileCount(metadata);
412
+ const providerOptions = getAttributeInfo(tilesetMetadata, className);
413
+ Object.assign(providerOptions, getShape(root));
167
414
 
168
- let paddingBefore;
169
- let paddingAfter;
415
+ providerOptions.dimensions = Cartesian3.unpack(voxel.dimensions);
416
+ providerOptions.maximumTileCount = getTileCount(tilesetMetadata);
170
417
 
171
418
  if (defined(voxel.padding)) {
172
- paddingBefore = Cartesian3.unpack(voxel.padding.before);
173
- paddingAfter = Cartesian3.unpack(voxel.padding.after);
419
+ providerOptions.paddingBefore = Cartesian3.unpack(voxel.padding.before);
420
+ providerOptions.paddingAfter = Cartesian3.unpack(voxel.padding.after);
174
421
  }
175
422
 
176
- provider.paddingBefore = paddingBefore;
177
- provider.paddingAfter = paddingAfter;
423
+ const provider = new Cesium3DTilesVoxelProvider(providerOptions);
178
424
 
425
+ const implicitTileset = new ImplicitTileset(
426
+ resource,
427
+ root,
428
+ schemaLoader.schema,
429
+ );
179
430
  provider._implicitTileset = implicitTileset;
180
431
  provider._availableLevels = implicitTileset.availableLevels;
181
432
 
@@ -239,7 +490,7 @@ function getShape(tile) {
239
490
  return getEllipsoidShape(boundingVolume.region);
240
491
  } else if (hasExtension(boundingVolume, "3DTILES_bounding_volume_cylinder")) {
241
492
  return getCylinderShape(
242
- boundingVolume.extensions["3DTILES_bounding_volume_cylinder"].cylinder,
493
+ boundingVolume.extensions["3DTILES_bounding_volume_cylinder"],
243
494
  tileTransform,
244
495
  );
245
496
  }
@@ -288,16 +539,39 @@ function getBoxShape(box, tileTransform) {
288
539
  }
289
540
 
290
541
  function getCylinderShape(cylinder, tileTransform) {
291
- const obb = OrientedBoundingBox.unpack(cylinder);
292
- const shapeTransform = Matrix4.fromRotationTranslation(
293
- obb.halfAxes,
294
- obb.center,
542
+ const {
543
+ minRadius,
544
+ maxRadius,
545
+ height,
546
+ minAngle = -CesiumMath.PI,
547
+ maxAngle = CesiumMath.PI,
548
+ translation = [0, 0, 0],
549
+ rotation = [0, 0, 0, 1],
550
+ } = cylinder;
551
+
552
+ //>>includeStart('debug', pragmas.debug);
553
+ Check.typeOf.number("minRadius", minRadius);
554
+ Check.typeOf.number("maxRadius", maxRadius);
555
+ Check.typeOf.number("height", height);
556
+ Check.typeOf.number("minAngle", minAngle);
557
+ Check.typeOf.number("maxAngle", maxAngle);
558
+ Check.typeOf.object("translation", translation);
559
+ Check.typeOf.object("rotation", rotation);
560
+ //>>includeEnd('debug');
561
+
562
+ const minHeight = -0.5 * height + translation[2];
563
+ const maxHeight = 0.5 * height + translation[2];
564
+
565
+ const shapeTransform = Matrix4.fromTranslationQuaternionRotationScale(
566
+ Cartesian3.unpack(translation),
567
+ Quaternion.unpack(rotation),
568
+ new Cartesian3(maxRadius, maxRadius, 0.5 * height),
295
569
  );
296
570
 
297
571
  return {
298
572
  shape: VoxelShapeType.CYLINDER,
299
- minBounds: Cartesian3.clone(VoxelCylinderShape.DefaultMinBounds),
300
- maxBounds: Cartesian3.clone(VoxelCylinderShape.DefaultMaxBounds),
573
+ minBounds: Cartesian3.fromElements(minRadius, minAngle, minHeight),
574
+ maxBounds: Cartesian3.fromElements(maxRadius, maxAngle, maxHeight),
301
575
  shapeTransform: shapeTransform,
302
576
  globalTransform: tileTransform,
303
577
  };
@@ -315,7 +589,7 @@ function getMetadataSchemaLoader(tilesetJson, resource) {
315
589
  });
316
590
  }
317
591
 
318
- function addAttributeInfo(provider, metadata, className) {
592
+ function getAttributeInfo(metadata, className) {
319
593
  const { schema, statistics } = metadata;
320
594
  const classStatistics = statistics?.classes[className];
321
595
  const properties = schema.classes[className].properties;
@@ -331,16 +605,22 @@ function addAttributeInfo(provider, metadata, className) {
331
605
  return { id, type, componentType, minValue, maxValue };
332
606
  });
333
607
 
334
- provider.names = propertyInfo.map((info) => info.id);
335
- provider.types = propertyInfo.map((info) => info.type);
336
- provider.componentTypes = propertyInfo.map((info) => info.componentType);
608
+ const names = propertyInfo.map((info) => info.id);
609
+ const types = propertyInfo.map((info) => info.type);
610
+ const componentTypes = propertyInfo.map((info) => info.componentType);
337
611
 
338
612
  const minimumValues = propertyInfo.map((info) => info.minValue);
339
613
  const maximumValues = propertyInfo.map((info) => info.maxValue);
340
614
  const hasMinimumValues = minimumValues.some(defined);
341
615
 
342
- provider.minimumValues = hasMinimumValues ? minimumValues : undefined;
343
- provider.maximumValues = hasMinimumValues ? maximumValues : undefined;
616
+ return {
617
+ className,
618
+ names,
619
+ types,
620
+ componentTypes,
621
+ minimumValues: hasMinimumValues ? minimumValues : undefined,
622
+ maximumValues: hasMinimumValues ? maximumValues : undefined,
623
+ };
344
624
  }
345
625
 
346
626
  function copyArray(values, length) {
@@ -356,29 +636,14 @@ function copyArray(values, length) {
356
636
  return Array.from({ length }, (v, i) => valuesArray[i]);
357
637
  }
358
638
 
359
- async function getVoxelContent(implicitTileset, tileCoordinates) {
360
- const voxelRelative =
361
- implicitTileset.contentUriTemplates[0].getDerivedResource({
362
- templateValues: tileCoordinates.getTemplateValues(),
363
- });
364
- const voxelResource = implicitTileset.baseResource.getDerivedResource({
365
- url: voxelRelative.url,
366
- });
367
-
368
- const arrayBuffer = await voxelResource.fetchArrayBuffer();
369
- const preprocessed = preprocess3DTileContent(arrayBuffer);
370
-
371
- const voxelContent = await VoxelContent.fromJson(
372
- voxelResource,
373
- preprocessed.jsonPayload,
374
- preprocessed.binaryPayload,
375
- implicitTileset.metadataSchema,
376
- );
377
-
378
- return voxelContent;
379
- }
380
-
381
- async function getSubtreePromise(provider, subtreeCoord) {
639
+ /**
640
+ * Get the subtree at a given subtree coordinate
641
+ * @param {VoxelProvider} provider The voxel provider
642
+ * @param {ImplicitTileCoordinates} subtreeCoord The coordinate at which to retrieve the subtree
643
+ * @returns {Promise<ImplicitSubtree>} The subtree at the given coordinate
644
+ * @private
645
+ */
646
+ async function getSubtree(provider, subtreeCoord) {
382
647
  const implicitTileset = provider._implicitTileset;
383
648
  const subtreeCache = provider._subtreeCache;
384
649
 
@@ -419,27 +684,38 @@ async function getSubtreePromise(provider, subtreeCoord) {
419
684
  return subtree;
420
685
  }
421
686
 
422
- /** @inheritdoc */
423
- Cesium3DTilesVoxelProvider.prototype.requestData = function (options) {
424
- options = defaultValue(options, defaultValue.EMPTY_OBJECT);
425
- const tileLevel = defaultValue(options.tileLevel, 0);
426
- const tileX = defaultValue(options.tileX, 0);
427
- const tileY = defaultValue(options.tileY, 0);
428
- const tileZ = defaultValue(options.tileZ, 0);
429
- const keyframe = defaultValue(options.keyframe, 0);
687
+ /**
688
+ * Requests the data for a given tile.
689
+ *
690
+ * @param {object} [options] Object with the following properties:
691
+ * @param {number} [options.tileLevel=0] The tile's level.
692
+ * @param {number} [options.tileX=0] The tile's X coordinate.
693
+ * @param {number} [options.tileY=0] The tile's Y coordinate.
694
+ * @param {number} [options.tileZ=0] The tile's Z coordinate.
695
+ * @privateparam {number} [options.keyframe=0] The requested keyframe.
696
+ * @returns {Promise<VoxelContent>|undefined} A promise resolving to a VoxelContent containing the data for the tile, or undefined if the request could not be scheduled this frame.
697
+ */
698
+ Cesium3DTilesVoxelProvider.prototype.requestData = async function (options) {
699
+ options = options ?? Frozen.EMPTY_OBJECT;
700
+ const {
701
+ tileLevel = 0,
702
+ tileX = 0,
703
+ tileY = 0,
704
+ tileZ = 0,
705
+ keyframe = 0,
706
+ } = options;
430
707
 
431
- // 3D Tiles currently doesn't support time-dynamic data.
432
708
  if (keyframe !== 0) {
433
- return undefined;
709
+ return Promise.reject(
710
+ `3D Tiles currently doesn't support time-dynamic data.`,
711
+ );
434
712
  }
435
713
 
436
714
  // 1. Load the subtree that the tile belongs to (possibly from the subtree cache)
437
715
  // 2. Load the voxel content if available
438
716
 
439
- const implicitTileset = this._implicitTileset;
440
- const names = this.names;
441
-
442
717
  // Can't use a scratch variable here because the object is used inside the promise chain.
718
+ const implicitTileset = this._implicitTileset;
443
719
  const tileCoordinates = new ImplicitTileCoordinates({
444
720
  subdivisionScheme: implicitTileset.subdivisionScheme,
445
721
  subtreeLevels: implicitTileset.subtreeLevels,
@@ -461,23 +737,29 @@ Cesium3DTilesVoxelProvider.prototype.requestData = function (options) {
461
737
 
462
738
  const that = this;
463
739
 
464
- return getSubtreePromise(that, subtreeCoord)
465
- .then(function (subtree) {
466
- const available = isSubtreeRoot
467
- ? subtree.childSubtreeIsAvailableAtCoordinates(tileCoordinates)
468
- : subtree.tileIsAvailableAtCoordinates(tileCoordinates);
469
-
470
- if (!available) {
471
- return Promise.reject("Tile is not available");
472
- }
473
-
474
- return getVoxelContent(implicitTileset, tileCoordinates);
475
- })
476
- .then(function (voxelContent) {
477
- return names.map(function (name) {
478
- return voxelContent.metadataTable.getPropertyTypedArray(name);
479
- });
480
- });
740
+ const subtree = await getSubtree(that, subtreeCoord);
741
+ // NOTE: these two subtree methods are ONLY used by voxels!
742
+ const isAvailable = isSubtreeRoot
743
+ ? subtree.childSubtreeIsAvailableAtCoordinates
744
+ : subtree.tileIsAvailableAtCoordinates;
745
+
746
+ const available = isAvailable.call(subtree, tileCoordinates);
747
+
748
+ if (!available) {
749
+ return Promise.reject(
750
+ `Tile is not available at level ${tileLevel}, x ${tileX}, y ${tileY}, z ${tileZ}.`,
751
+ );
752
+ }
753
+
754
+ const { contentUriTemplates, baseResource } = implicitTileset;
755
+ const gltfRelative = contentUriTemplates[0].getDerivedResource({
756
+ templateValues: tileCoordinates.getTemplateValues(),
757
+ });
758
+ const gltfResource = baseResource.getDerivedResource({
759
+ url: gltfRelative.url,
760
+ });
761
+
762
+ return VoxelContent.fromGltf(gltfResource);
481
763
  };
482
764
 
483
765
  export default Cesium3DTilesVoxelProvider;