- Added support for the
KHR_texture_transform
glTF extension. #7549 - Added support for color-to-alpha with a threshold on imagery layers. #7727
- Fixed an error where
clampToHeightMostDetailed
orsampleHeightMostDetailed
would crash if entities were created when the promise resolved. #7690 - Fixed an error where many imagery layers within a single tile would cause parts of the tile to render as black on some platforms. #7649
Resource.fetchImage
now takes apreferImageBitmap
option to usecreateImageBitmap
when supported to move image decode off the main thread. This option defaults tofalse
.
- The following breaking changes are relative to 1.56. The
Resource.fetchImage
behavior is now identical to 1.55 and earlier.- Changed
Resource.fetchImage
back to return anImage
by default, instead of anImageBitmap
when supported. Note that anImageBitmap
cannot be flipped during texture upload. Instead, setflipY : true
during fetch to flip it. - Changed the default
flipY
option inResource.fetchImage
to false. This only has an effect when ImageBitmap is used.
- Changed
Resource.fetchImage
now returns anImageBitmap
instead ofImage
when supported. This allows for decoding images while fetching usingcreateImageBitmap
to greatly speed up texture upload and decrease frame drops when loading models with large textures. #7579Cesium3DTileStyle.style
now has an emptyObject
as its default value, instead ofundefined
. #7567Scene.clampToHeight
now takes an optionalwidth
argument before theresult
argument. #7693- In the
Resource
class,addQueryParameters
andaddTemplateValues
have been removed. Please usesetQueryParameters
andsetTemplateValues
instead. #7695
Resource.fetchImage
now takes an options object. Useresource.fetchImage({ preferBlob: true })
instead ofresource.fetchImage(true)
. The previous function definition will no longer work in 1.57. #7579
- Added support for touch and hold gesture. The touch and hold delay can be customized by updating
ScreenSpaceEventHandler.touchHoldDelayMilliseconds
. #7286 Resource.fetchImage
now has aflipY
option to vertically flip an image during fetch & decode. It is only valid whenImageBitmapOptions
is supported by the browser. #7579- Added
backFaceCulling
andnormalShading
options toPointCloudShading
. Both options are only applicable for point clouds containing normals. #7399 Cesium3DTileStyle.style
reacts to updates and represents the current state of the style. #7567
- Fixed the value for
BlendFunction.ONE_MINUS_CONSTANT_COLOR
. #7624 - Fixed
HeadingPitchRoll.pitch
beingNaN
when using.fromQuaternion
due to a rounding error for pitches close to +/- 90°. #7654 - Fixed a type of crash caused by the camera being rotated through terrain. #6783
- Fixed an error in
Resource
when used with template replacements using numeric keys. #7668 - Fixed an error in
Cesium3DTilePointFeature
whereanchorLineColor
used the same color instance instead of cloning the color #7686
czm_materialInput.slope
is now an angle in radians between 0 and pi/2 (flat to vertical), rather than a projected length 1 to 0 (flat to vertical).
- Updated terrain and imagery rendering, resulting in terrain/imagery loading ~33% faster and using ~33% less data #7061
czm_materialInput.aspect
was added as an angle in radians between 0 and 2pi (east, north, west to south).- Added CZML
arcType
support forpolyline
andpolygon
, which supersedesfollowSurface
.followSurface
is still supported for compatibility with existing documents. #7582
- Fixed an issue where models would cause a crash on load if some primitives were Draco encoded and others were not. #7383
- Fixed an issue where RTL labels not reversing correctly non alphabetic characters #7501
- Fixed Node.js support for the
Resource
class and any functionality using it internally. - Fixed an issue where some ground polygons crossing the Prime Meridian would have incorrect bounding rectangles. #7533
- Fixed an issue where polygons on terrain using rhumb lines where being rendered incorrectly. #7538
- Fixed an issue with
EllipsoidRhumbLines.findIntersectionWithLongitude
when longitude was IDL. #7551 - Fixed model silhouette colors when rendering with high dynamic range. #7563
- Fixed an issue with ground polylines on globes that use ellipsoids other than WGS84. #7552
- Fixed an issue where Draco compressed models with RGB per-vertex color would not load in Cesium. #7576
- Fixed an issue where the outline geometry for extruded Polygons didn't calculate the correct indices. #7599
- Added support for polylines and textured entities on 3D Tiles. #7437 and #7434
- Added support for loading models and 3D tilesets with WebP images using the
EXT_texture_webp
glTF extension. #7486 - Added support for rhumb lines to polygon and polyline geometries. #7492
- Billboards with
HeightReference.CLAMP_TO_GROUND
are now clamped to both terrain and 3D Tiles. #7434 - The default
classificationType
forGroundPrimitive
,CorridorGraphics
,EllipseGraphics
,PolygonGraphics
andRectangleGraphics
is nowClassificationType.BOTH
. #7434 - The properties
ModelAnimation.speedup
andModelAnimationCollection.speedup
have been removed. UseModelAnimation.multiplier
andModelAnimationCollection.multiplier
respectively instead. #7494
Scene.clampToHeight
now takes an optionalwidth
argument before theresult
argument. The previous function definition will no longer work in 1.56. #7287PolylineGeometry.followSurface
has been superceded byPolylineGeometry.arcType
. The previous definition will no longer work in 1.57. ReplacefollowSurface: false
witharcType: Cesium.ArcType.NONE
andfollowSurface: true
witharcType: Cesium.ArcType.GEODESIC
. #7492SimplePolylineGeometry.followSurface
has been superceded bySimplePolylineGeometry.arcType
. The previous definition will no longer work in 1.57. ReplacefollowSurface: false
witharcType: Cesium.ArcType.NONE
andfollowSurface: true
witharcType: Cesium.ArcType.GEODESIC
. #7492
- Added support for textured ground entities (entities with unspecified
height
) andGroundPrimitives
on 3D Tiles. #7434 - Added support for polylines on 3D Tiles. #7437
- Added
classificationType
property toPolylineGraphics
andGroundPolylinePrimitive
which specifies whether a polyline clamped to ground should be clamped to terrain, 3D Tiles, or both. #7437 - Added the ability to specify the width of the intersection volume for
Scene.sampleHeight
,Scene.clampToHeight
,Scene.sampleHeightMostDetailed
, andScene.clampToHeightMostDetailed
. #7287 - Added a new Sandcastle example on using
nodeTransformations
to rotate a model's wheels based on its velocity. #7361 - Added a new Sandcastle example for drawing polylines on 3D Tiles #7522
- Added
EllipsoidRhumbLine
class as a rhumb line counterpart toEllipsoidGeodesic
. #7484 - Added rhumb line support to
PolygonGeometry
,PolygonOutlineGeometry
,PolylineGeometry
,GroundPolylineGeometry
, andSimplePolylineGeometry
. #7492 - When using Cesium in Node.js, we now use the combined and minified version for improved performance unless
NODE_ENV
is specifically set todevelopment
. - Improved the performance of
QuantizedMeshTerrainData.interpolateHeight
. #7508 - Added support for glTF models with WebP textures using the
EXT_texture_webp
extension. #7486
- Fixed 3D Tiles performance regression. #7482
- Fixed an issue where classification primitives with the
CESIUM_3D_TILE
classification type would render on terrain. #7422 - Fixed an issue where 3D Tiles would show through the globe. #7422
- Fixed crash when entity geometry show value is an interval that only covered part of the entity availability range #7458
- Fix rectangle positions at the north and south poles. #7451
- Fixed image size issue when using multiple particle systems. #7412
- Fixed Sandcastle's "Open in New Window" button not displaying imagery due to blob URI limitations. #7250
- Fixed an issue where setting
scene.globe.cartographicLimitRectangle
toundefined
would cause a crash. #7477 - Fixed
PrimitiveCollection.removeAll
to no longercontain
removed primitives. #7491 - Fixed
GeoJsonDataSource
to use polygons and polylines that use rhumb lines. #7492 - Fixed an issue where some ground polygons would be cut off along circles of latitude. #7507
- Fixed an issue that would cause IE 11 to crash when enabling image-based lighting. #7485
- Added image-based lighting for PBR models and 3D Tiles. #7172
Scene.specularEnvironmentMaps
is a url to a KTX file that contains the specular environment map and convoluted mipmaps for image-based lighting of all PBR models in the scene.Scene.sphericalHarmonicCoefficients
is an array of 9Cartesian3
spherical harmonics coefficients for the diffuse irradiance of all PBR models in the scene.- The
specularEnvironmentMaps
andsphericalHarmonicCoefficients
properties ofModel
andCesium3DTileset
can be used to override the values from the scene for specific models and tilesets. - The
luminanceAtZenith
property ofModel
andCesium3DTileset
adjusts the luminance of the procedural image-based lighting.
- Double click away from an entity to un-track it #7285
- Fixed 3D Tiles visibility checking when running multiple passes within the same frame. #7289
- Fixed contrast on imagery layers. #7382
- Fixed rendering transparent background color when
highDynamicRange
is enabled. #7427 - Fixed translucent geometry when
highDynamicRange
is toggled. #7451
TerrainProviders
that implementavailability
must now also implement theloadTileDataAvailability
method.
- The property
ModelAnimation.speedup
has been deprecated and renamed toModelAnimation.multiplier
.speedup
will be removed in version 1.54. #7393
- Added functions to get the most detailed height of 3D Tiles on-screen or off-screen. #7115
- Added
Scene.sampleHeightMostDetailed
, an asynchronous version ofScene.sampleHeight
that uses the maximum level of detail for 3D Tiles. - Added
Scene.clampToHeightMostDetailed
, an asynchronous version ofScene.clampToHeight
that uses the maximum level of detail for 3D Tiles.
- Added
- Added support for high dynamic range rendering. It is enabled by default when supported, but can be disabled with
Scene.highDynamicRange
. #7017 - Added
Scene.invertClassificationSupported
for checking if invert classification is supported. - Added
computeLineSegmentLineSegmentIntersection
toIntersections2D
. #7228 - Added ability to load availability progressively from a quantized mesh extension instead of upfront. This will speed up load time and reduce memory usage. #7196
- Added the ability to apply styles to 3D Tilesets that don't contain features. #7255
- Fixed issue causing polyline to look wavy depending on the position of the camera #7209
- Fixed translucency issues for dynamic geometry entities. #7364
- Added WMS-T (time) support in WebMapServiceImageryProvider #2581
- Added
cutoutRectangle
toImageryLayer
, which allows cutting out rectangular areas in imagery layers to reveal underlying imagery. #7056 - Added
atmosphereHueShift
,atmosphereSaturationShift
, andatmosphereBrightnessShift
properties toGlobe
which shift the color of the ground atmosphere to match the hue, saturation, and brightness shifts of the sky atmosphere. #4195 - Shrink minified and gzipped Cesium.js by 27 KB (~3.7%) by delay loading seldom-used third-party dependencies. #7140
- Added
lightColor
property toCesium3DTileset
,Model
, andModelGraphics
to change the intensity of the light used when shading model. #7025 - Added
imageBasedLightingFactor
property toCesium3DTileset
,Model
, andModelGraphics
to scale the diffuse and specular image-based lighting contributions to the final color. #7025 - Added per-feature selection to the 3D Tiles BIM Sandcastle example. #7181
- Added
Transforms.fixedFrameToHeadingPitchRoll
, a helper function for extracting aHeadingPitchRoll
from a fixed frame transform. #7164 - Added
Ray.clone
. #7174
- Fixed issue removing geometry entities with different materials. #7163
- Fixed texture coordinate calculation for polygon entities with
perPositionHeight
. #7188 - Fixed crash when updating polyline attributes twice in one frame. #7155
- Fixed entity visibility issue related to setting an entity show property and altering or adding entity geometry. #7156
- Fixed an issue where dynamic Entities on terrain would cause a crash in platforms that do not support depth textures such as Internet Explorer. #7103
- Fixed an issue that would cause a crash when removing a post process stage. #7210
- Fixed an issue where
pickPosition
would return incorrect results when called aftersampleHeight
orclampToHeight
. #7113 - Fixed an issue where
sampleHeight
andclampToHeight
would crash if picking a primitive that doesn't write depth. #7120 - Fixed a crash when using
BingMapsGeocoderService
. #7143 - Fixed accuracy of rotation matrix generated by
VelocityOrientationProperty
. #6641 - Fixed clipping plane crash when adding a plane to an empty collection. #7168
- Fixed clipping planes on tilesets not taking into account the tileset model matrix. #7182
- Fixed incorrect rendering of models using the
KHR_materials_common
lights extension. #7206
- Clipping planes on tilesets now use the root tile's transform, or the root tile's bounding sphere if a transform is not defined. #7034
- This is to make clipping planes' coordinates always relative to the object they're attached to. So if you were positioning the clipping planes as in the example below, this is no longer necessary:
clippingPlanes.modelMatrix = Cesium.Transforms.eastNorthUpToFixedFrame(tileset.boundingSphere.center);
- This also fixes several issues with clipping planes not using the correct transform for tilesets with children.
- Initial support for clamping to 3D Tiles. #6934
- Added
Scene.sampleHeight
to get the height of geometry in the scene. May be used to clamp objects to the globe, 3D Tiles, or primitives in the scene. - Added
Scene.clampToHeight
to clamp a cartesian position to the scene geometry. - Requires depth texture support (
WEBGL_depth_texture
orWEBKIT_WEBGL_depth_texture
). AddedScene.sampleHeightSupported
andScene.clampToHeightSupported
functions for checking if height sampling is supported.
- Added
- Added
Cesium3DTileset.initialTilesLoaded
to indicate that all tiles in the initial view are loaded. #6934 - Added support for glTF extension KHR_materials_pbrSpecularGlossiness #7006.
- Added support for glTF extension KHR_materials_unlit #6977.
- Added support for glTF extensions KHR_techniques_webgl and KHR_blend. #6805
- Update gltf-pipeline to 2.0. #6805
- Added
cartographicLimitRectangle
toGlobe
. Use this to limit terrain and imagery to a specificRectangle
area. #6987 - Added
OpenCageGeocoderService
, which provides geocoding via OpenCage. #7015 - Added ground atmosphere lighting in 3D. This can be toggled with
Globe.showGroundAtmosphere
. 6877- Added
Globe.nightFadeOutDistance
andGlobe.nightFadeInDistance
to configure when ground atmosphere night lighting fades in and out. 6877
- Added
- Added
onStop
event toClock
that fires each time stopTime is reached. #7066
- Fixed picking for overlapping translucent primitives. #7039
- Fixed an issue in the 3D Tiles traversal where tilesets would render with mixed level of detail if an external tileset was visible but its root tile was not. #7099
- Fixed an issue in the 3D Tiles traversal where external tilesets would not always traverse to their root tile. #7035
- Fixed an issue in the 3D Tiles traversal where empty tiles would be selected instead of their nearest loaded ancestors. #7011
- Fixed an issue where scaling near zero with an model animation could cause rendering to stop. #6954
- Fixed bug where credits weren't displaying correctly if more than one viewer was initialized [#6965](expect(CesiumGS#6965)
- Fixed entity show issues. #7048
- Fixed a bug where polylines on terrain covering very large portions of the globe would cull incorrectly in 3d-only scenes. #7043
- Fixed bug causing crash on entity geometry material change. #7047
- Fixed MIME type behavior for
Resource
requests in recent versions of Edge #7085.
- Removed
ClippingPlaneCollection.clone
. #6872 - Changed
Globe.pick
to return a position in ECEF coordinates regardless of the current scene mode. This will only effect you if you were working around a bug to makeGlobe.pick
work in 2D and Columbus View. UseGlobe.pickWorldCoordinates
to get the position in world coordinates that correlate to the current scene mode. #6859 - Removed the unused
frameState
parameter inevaluate
andevaluateColor
functions inExpression
,StyleExpression
,ConditionsExpression
and all other places that call the functions. #6890 - Removed
PostProcessStageLibrary.createLensFlarStage
. UsePostProcessStageLibrary.createLensFlareStage
instead. #6972 - Removed
Scene.fxaa
. UseScene.postProcessStages.fxaa.enabled
instead. #6980
- Added
heightReference
toBoxGraphics
,CylinderGraphics
andEllipsoidGraphics
, which can be used to clamp these entity types to terrain. #6932 - Added
GeocoderViewModel.destinationFound
for specifying a function that is called upon a successful geocode. The default behavior is to fly to the destination found by the geocoder. #6915 - Added
ClippingPlaneCollection.planeAdded
andClippingPlaneCollection.planeRemoved
events.planeAdded
is raised when a new plane is added to the collection andplaneRemoved
is raised when a plane is removed. #6875 - Added
Matrix4.setScale
for setting the scale on an affine transformation matrix #6888 - Added optional
width
andheight
toScene.drillPick
for specifying a search area. #6922 - Added
Cesium3DTileset.root
for getting the root tile of a tileset. #6944 - Added
Cesium3DTileset.extras
andCesium3DTile.extras
for getting application specific metadata from 3D Tiles. #6974
- Several performance improvements and fixes to the 3D Tiles traversal code. #6390
- Improved load performance when
skipLevelOfDetail
is false. - Fixed a bug that caused some skipped tiles to load when
skipLevelOfDetail
is true. - Fixed pick statistics in the 3D Tiles Inspector.
- Fixed drawing of debug labels for external tilesets.
- Fixed drawing of debug outlines for empty tiles.
- Improved load performance when
- The Geocoder widget now takes terrain altitude into account when calculating its final destination. #6876
- The Viewer widget now takes terrain altitude into account when zooming or flying to imagery layers. #6895
- Fixed Firefox camera control issues with mouse and touch events. #6372
- Fixed
getPickRay
in 2D. #2480 - Fixed
Globe.pick
for 2D and Columbus View. #6859 - Fixed imagery layer feature picking in 2D and Columbus view. #6859
- Fixed intermittent ground clamping issues for all entity types that use a height reference. #6930
- Fixed bug that caused a new
ClippingPlaneCollection
to be created every frame when used with a model entity. #6872 - Improved
Plane
entities so they are better aligned with the globe surface. #6887 - Fixed crash when rendering translucent objects when all shadow maps in the scene set
fromLightSource
to false. #6883 - Fixed night shading in 2D and Columbus view. #4122
- Fixed model loading failure when a glTF 2.0 primitive does not have a material. 6906
- Fixed a crash when setting show to
false
on a polyline clamped to the ground. #6912 - Fixed a bug where
Cesium3DTileset
wasn't using the correcttilesetVersion
. #6933 - Fixed crash that happened when calling
scene.pick
after setting a new terrain provider. #6918 - Fixed an issue that caused the browser to hang when using
drillPick
on a polyline clamped to the ground. 6907 - Fixed an issue where color wasn't updated properly for polylines clamped to ground. #6927
- Fixed an excessive memory use bug that occurred when a data URI was used to specify a glTF model. #6928
- Fixed an issue where switching from 2D to 3D could cause a crash. #6929
- Fixed an issue where point primitives behind the camera would appear in view. #6904
- The
createGroundPolylineGeometry
web worker no longer depends onGroundPolylinePrimitive
, making the worker smaller and potentially avoiding a hanging build in some webpack configurations. #6946 - Fixed an issue that cause terrain entities (entities with unspecified
height
) andGroundPrimitives
to fail when crossing the international date line. #6951 - Fixed normal calculation for
CylinderGeometry
when the top radius is not equal to the bottom radius #6863
- Added support for loading Draco compressed Point Cloud tiles for 2-3x better compression. #6559
- Added
TimeDynamicPointCloud
for playback of time-dynamic point cloud data, where each frame is a 3D Tiles Point Cloud tile. #6721 - Added
CoplanarPolygonGeometry
andCoplanarPolygonGeometryOutline
for drawing polygons composed of coplanar positions that are not necessarily on the ellipsoid surface. #6769 - Improved support for polygon entities using
perPositionHeight
, including supporting vertical polygons. This also improves KML compatibility. #6791 - Added
Cartesian3.midpoint
to compute the midpoint between twoCartesian3
positions #6836 - Added
equalsEpsilon
methods toOrthographicFrustum
,PerspectiveFrustum
,OrthographicOffCenterFrustum
andPerspectiveOffCenterFrustum
.
- Support for 3D Tiles
content.url
is deprecated to reflect updates to the 3D Tiles spec. Usecontent.uri instead
. Support forcontent.url
will remain for backwards compatibility. #6744 - Support for the 3D Tiles pre-version 1.0 Batch Table Hierarchy is deprecated to reflect updates to the 3D Tiles spec. Use the
3DTILES_batch_table_hierarchy
extension instead. Support for the deprecated batch table hierarchy will remain for backwards compatibility. #6780 PostProcessStageLibrary.createLensFlarStage
is deprecated due to misspelling and will be removed in Cesium 1.49. UsePostProcessStageLibrary.createLensFlareStage
instead.
- Fixed a bug where 3D Tilesets using the
region
bounding volume don't get transformed when the tileset'smodelMatrix
changes. #6755 - Fixed a bug that caused eye dome lighting for point clouds to fail in Safari on macOS and Edge on Windows by removing the dependency on floating point color textures. #6792
- Fixed a bug that caused polylines on terrain to render incorrectly in 2D and Columbus View with a
WebMercatorProjection
. #6809 - Fixed bug causing billboards and labels to appear the wrong size when switching scene modes #6745
- Fixed
PolygonGeometry
when usingVertexFormat.POSITION_ONLY
,perPositionHeight
andextrudedHeight
[#6790](expect(CesiumGS#6790) - Fixed an issue where tiles were missing in VR mode. #6612
- Fixed issues related to updating entity show and geometry color #6835
- Fixed
PolygonGeometry
andEllipseGeometry
tangent and bitangent attributes when a texture rotation is used #6788 - Fixed bug where entities with a height reference weren't being updated correctly when the terrain provider was changed. #6820
- Fixed an issue where glTF 2.0 models sometimes wouldn't be centered in the view after putting the camera on them. #6784
- Fixed the geocoder when
Viewer
is passed the optiongeocoder: true
#6833 - Improved performance for billboards and labels clamped to terrain #6781 #6844
- Fixed a bug that caused billboard positions to be set incorrectly when using a
CallbackProperty
. #6815 - Improved support for generating a TypeScript typings file using
tsd-jsdoc
#6767 - Updated viewBoundingSphere to use correct zoomOptions #6848
- Fixed a bug that caused the scene to continuously render after resizing the viewer when
requestRenderMode
was enabled. #6812
- Added support for polylines on terrain #6689 #6615
- Added
heightReference
andextrudedHeightReference
properties toCorridorGraphics
,EllipseGraphics
,PolygonGraphics
andRectangleGraphics
. #6717 PostProcessStage
has aselected
property which is an array of primitives used for selectively applying a post-process stage. #6476
- glTF 2.0 models corrected to face +Z forwards per specification. Internally Cesium uses +X as forward, so a new +Z to +X rotation was added for 2.0 models only. To fix models that are oriented incorrectly after this change:
- If the model faces +X forwards update the glTF to face +Z forwards. This can be done by loading the glTF in a model editor and applying a 90 degree clockwise rotation about the up-axis. Alternatively, add a new root node to the glTF node hierarchy whose
matrix
is[0,0,1,0,0,1,0,0,-1,0,0,0,0,0,0,1]
. - Apply a -90 degree rotation to the model's heading. This can be done by setting the model's
orientation
using the Entity API or from within CZML. See #6738 for more details.
- If the model faces +X forwards update the glTF to face +Z forwards. This can be done by loading the glTF in a model editor and applying a 90 degree clockwise rotation about the up-axis. Alternatively, add a new root node to the glTF node hierarchy whose
- Dropped support for directory URLs when loading tilesets to match the updated 3D Tiles spec. #6502
- KML and GeoJSON now use
PolylineGraphics
instead ofCorridorGraphics
for polylines on terrain. #6706
- Added support for polylines on terrain #6689 #6615
- Use the
clampToGround
option forPolylineGraphics
(polyline entities). - Requires depth texture support (
WEBGL_depth_texture
orWEBKIT_WEBGL_depth_texture
), otherwiseclampToGround
will be ignored. UseEntity.supportsPolylinesOnTerrain
to check for support. - Added
GroundPolylinePrimitive
andGroundPolylineGeometry
.
- Use the
PostProcessStage
has aselected
property which is an array of primitives used for selectively applying a post-process stage. #6476- The
PostProcessStageLibrary.createBlackAndWhiteStage
andPostProcessStageLibrary.createSilhouetteStage
have per-feature support.
- The
- Added CZML support for
zIndex
withcorridor
,ellipse
,polygon
,polyline
andrectangle
. #6708 - Added CZML
clampToGround
option forpolyline
. #6706 - Added support for
RTC_CENTER
property in batched 3D model tilesets to conform to the updated 3D Tiles spec. #6488 - Added
heightReference
andextrudedHeightReference
properties toCorridorGraphics
,EllipseGraphics
,PolygonGraphics
andRectangleGraphics
. #6717- This can be used in conjunction with the
height
and/orextrudedHeight
properties to clamp the geometry to terrain or set the height relative to terrain. - Note, this will not make the geometry conform to terrain. Extruded geoemtry that is clamped to the ground will have a flat top will sinks into the terrain at the base.
- This can be used in conjunction with the
- Fixed a bug that caused Cesium to be unable to load local resources in Electron. #6726
- Fixed a bug causing crashes with custom vertex attributes on
Geometry
crossing the IDL. Attributes will be barycentrically interpolated. #6644 - Fixed a bug causing Point Cloud tiles with unsigned int batch-ids to not load. #6666
- Fixed a bug with Draco encoded i3dm tiles, and loading two Draco models with the same url. #6668
- Fixed a bug caused by creating a polygon with positions at the same longitude/latitude position but different heights #6731
- Fixed terrain clipping when the camera was close to flat terrain and was using logarithmic depth. #6701
- Fixed KML bug that constantly requested the same image if it failed to load. #6710
- Improved billboard and label rendering so they no longer sink into terrain when clamped to ground. #6621
- Fixed an issue where KMLs containing a
colorMode
ofrandom
could return the exact same color on successive calls toColor.fromRandom()
. Iso8601.MAXIMUM_VALUE
now formats to a string which can be parsed byfromIso8601
.- Fixed material support when using an image that is already loaded #6729
- This is an npm only release to fix the improperly published 1.46.0. There were no code changes.
- Added support for materials on terrain entities (entities with unspecified
height
) andGroundPrimitives
. #6393 - Added a post-processing framework. #5615
- Added
zIndex
for ground geometry, including corridor, ellipse, polygon and rectangle entities. #6362
ParticleSystem
no longer usesforces
. #6510Particle
no longer usessize
,rate
,lifeTime
,life
,minimumLife
,maximumLife
,minimumWidth
,minimumHeight
,maximumWidth
, andmaximumHeight
. #6510- Removed
Scene.copyGlobeDepth
. Globe depth will now be copied by default when supported. #6393 - The default
classificationType
forGroundPrimitive
,CorridorGraphics
,EllipseGraphics
,PolygonGraphics
andRectangleGraphics
is nowClassificationType.TERRAIN
. If you wish the geometry to color both terrain and 3D tiles, pass in the optionclassificationType: Cesium.ClassificationType.BOTH
. - Removed support for the
options
argument forCredit
#6373. Pass in an html string instead. - glTF 2.0 models corrected to face +Z forwards per specification. Internally Cesium uses +X as forward, so a new +Z to +X rotation was added for 2.0 models only. #6632
- The
Scene.fxaa
property has been deprecated and will be removed in Cesium 1.47. UseScene.postProcessStages.fxaa.enabled
.
- Added support for materials on terrain entities (entities with unspecified
height
) andGroundPrimitives
. #6393- Only available for
ClassificationType.TERRAIN
at this time. Adding a material to a terrainEntity
will cause it to behave as if it isClassificationType.TERRAIN
. - Requires depth texture support (
WEBGL_depth_texture
orWEBKIT_WEBGL_depth_texture
), so materials on terrain entities andGroundPrimitives
are not supported in Internet Explorer. - Best suited for notational patterns and not intended for precisely mapping textures to terrain - for that use case, use
SingleTileImageryProvider
.
- Only available for
- Added
GroundPrimitive.supportsMaterials
andEntity.supportsMaterialsforEntitiesOnTerrain
, both of which can be used to check if materials on terrain entities andGroundPrimitives
is supported. #6393 - Added a post-processing framework. #5615
- Added
Scene.postProcessStages
which is a collection of post-process stages to be run in order.- Has a built-in
ambientOcclusion
property which will apply screen space ambient occlusion to the scene and run before all stages. - Has a built-in
bloom
property which applies a bloom filter to the scene before all other stages but after the ambient occlusion stage. - Has a built-in
fxaa
property which applies Fast Approximate Anti-aliasing (FXAA) to the scene after all other stages.
- Has a built-in
- Added
PostProcessStageLibrary
which contains several built-in stages that can be added to the collection. - Added
PostProcessStageComposite
for multi-stage post-processes like depth of field. - Added a new Sandcastle label
Post Processing
to showcase the different built-in post-process stages.
- Added
- Added
zIndex
for ground geometry, including corridor, ellipse, polygon and rectangle entities. #6362 - Added
Rectangle.equalsEpsilon
for comparing the equality of two rectangles #6533
- Fixed a bug causing custom TilingScheme classes to not be able to use a GeographicProjection. #6524
- Fixed incorrect 3D Tiles statistics when a tile fails during processing. #6558
- Fixed race condition causing intermittent crash when changing geometry show value #3061
ProviderViewModel
s with no category are displayed in an untitled group inBaseLayerPicker
instead of being labeled as'Other'
#6574- Fixed a bug causing intermittent crashes with clipping planes due to uninitialized textures. #6576
- Added a workaround for clipping planes causing a picking shader compilation failure for gltf models and 3D Tilesets in Internet Explorer #6575
- Allowed Bing Maps servers with a subpath (instead of being at the root) to work correctly. #6597
- Added support for loading of Draco compressed glTF assets in IE11 #6404
- Fixed polygon outline when using
perPositionHeight
andextrudedHeight
. #6595 - Fixed broken links in documentation of
createTileMapServiceImageryProvider
. #5818 - Transitioning from 2 touches to 1 touch no longer triggers a new pan gesture. #6479
- We've launched Cesium ion! Read all about it in our blog post.
- Cesium now uses ion services by default for base imagery, terrain, and geocoding. A demo key is provided, but to use them in your own apps you must sign up for a free ion Commmunity account.
ClippingPlaneCollection
now usesClippingPlane
objects instead ofPlane
objects. #6498- Cesium no longer ships with a demo Bing Maps API key.
BingMapsImageryProvider
is no longer the default base imagery layer. (Bing imagery itself is still the default, however it is provided through Cesium ion)BingMapsGeocoderService
is no longer the default geocoding service.- If you wish to continue to use your own Bing API key for imagery and geocoding, you can go back to the old default behavior by constructing the Viewer as follows:
Cesium.BingMapsApi.defaultKey = 'yourBingKey'; var viewer = new Cesium.Viewer('cesiumContainer', { imageryProvider : new Cesium.BingMapsImageryProvider({ url : 'https://dev.virtualearth.net' }), geocoder : [ new Cesium.CartographicGeocoderService(), new Cesium.BingMapsGeocoderService() ] });
Particle.size
,ParticleSystem.rate
,ParticleSystem.lifeTime
,ParticleSystem.life
,ParticleSystem.minimumLife
, andParticleSystem.maximumLife
have been renamed toParticle.imageSize
,ParticleSystem.emissionRate
,ParticleSystem.lifetime
,ParticleSystem.particleLife
,ParticleSystem.minimumParticleLife
, andParticleSystem.maximumParticleLife
. Use of thesize
,rate
,lifeTime
,life
,minimumLife
, andmaximumLife
parameters is deprecated and will be removed in Cesium 1.46.ParticleSystem.forces
array has been switched out for singular functionParticleSystems.updateCallback
. Use of theforces
parameter is deprecated and will be removed in Cesium 1.46.- Any width and height variables in
ParticleSystem
will no longer be individual components.ParticleSystem.minimumWidth
andParticleSystem.minimumHeight
will now beParticleSystem.minimumImageSize
,ParticleSystem.maximumWidth
andParticleSystem.maximumHeight
will now beParticleSystem.maximumImageSize
, andParticleSystem.width
andParticleSystem.height
will now beParticleSystem.imageSize
. Use of theminimumWidth
,minimumHeight
,maximumWidth
,maximumHeight
,width
, andheight
parameters is deprecated and will be removed in Cesium 1.46.
- Added option
logarithmicDepthBuffer
toScene
. With this option there is typically a single frustum using logarithmic depth rendered. This increases performance by issuing less draw calls to the GPU and helps to avoid artifacts on the connection of two frustums. #5851 - When a log depth buffer is supported, the frustum near and far planes default to
0.1
and1e10
respectively. - Added
IonGeocoderService
and made it the default geocoding service for theGeocoder
widget. - Added
createWorldImagery
which provides Bing Maps imagery via a Cesium ion account. - Added
PeliasGeocoderService
, which provides geocoding via a Pelias server. - Added the ability for
BaseLayerPicker
to group layers by category.ProviderViewModel.category
was also added to support this feature. - Added
Math.log2
to compute the base 2 logarithm of a number. - Added
GeocodeType
enum and use it as an optional parameter to allGeocoderService
instances to differentiate between autocomplete and search requests. - Added
initWebAssemblyModule
function toTaskProcessor
to load a Web Assembly module in a web worker. #6420 - Added
supportsWebAssembly
function toFeatureDetection
to check if a browser supports loading Web Assembly modules. #6420 - Improved
MapboxImageryProvider
performance by 300% viatiles.mapbox.com
subdomain switching. #6426 - Added ability to invoke
sampleTerrain
from node.js to enable offline terrain sampling - Added more ParticleSystem Sandcastle examples for rocket and comet tails and weather. #6375
- Added color and scale attributes to the
ParticleSystem
class constructor. When defined the variables override startColor and endColor and startScale and endScale. #6429
- Fixed bugs in
TimeIntervalCollection.removeInterval
. #6418. - Fixed glTF support to handle meshes with and without tangent vectors, and with/without morph targets, sharing one material. #6421
- Fixed glTF support to handle skinned meshes when no skin is supplied. #6061
- Updated glTF 2.0 PBR shader to have brighter lighting. #6430
- Allow loadWithXhr to work with string URLs in a web worker.
- Updated to Draco 1.3.0 and implemented faster loading of Draco compressed glTF assets in browsers that support Web Assembly. #6420
GroundPrimitive
s andClassificationPrimitive
s will become ready whenshow
isfalse
. #6428- Fix Firefox WebGL console warnings. #5912
- Fix parsing Cesium.js in older browsers that do not support all TypedArray types. #6396
- Fixed a bug causing crashes when setting colors on un-pickable models. $6442
- Fix flicker when adding, removing, or modifying entities. #3945
- Fixed crash bug in PolylineCollection when a polyline was updated and removed at the same time. #6455
- Fixed crash when animating a glTF model with a single keyframe. #6422
- Fixed Imagery Layers Texture Filters Sandcastle example. #6472.
- Fixed a bug causing Cesium 3D Tilesets to not clip properly when tiles were unloaded and reloaded. #6484
- Fixed
TimeInterval
so now it throws iffromIso8601
is given an ISO 8601 string with improper formatting. #6164 - Improved rendering of glTF models that don't contain normals with a temporary unlit shader workaround. #6501
- Fixed rendering of glTF models with emissive-only materials. #6501
- Fixed a bug in shader modification for glTF 1.0 quantized attributes and Draco quantized attributes. #6523
- Added a new Sandcastle label,
New in X.X
which will include all new Sandcastle demos added for the current release. #6384 - Added support for glTF models with Draco geometry compression. #5120
- Added support for ordering in
DataSourceCollection
. #6316
GeometryVisualizer
now requiresprimitive
andgroundPrimitive
parameters. #6316- For all classes/functions that take a
Resource
instance, all additional parameters that are part of theResource
class have been removed. This generally includesproxy
,headers
andquery
parameters. #6368 - All low level load functions including
loadArrayBuffer
,loadBlob
,loadImage
,loadJson
,loadJsonp
,loadText
,loadXML
andloadWithXhr
have been removed. Please use the equivalentfetch
functions on theResource
class. #6368
ClippingPlaneCollection
is now supported in Internet Explorer, soClippingPlaneCollection.isSupported
has been deprecated and will be removed in Cesium 1.45.ClippingPlaneCollection
should now be used withClippingPlane
objects instead ofPlane
. Use ofPlane
objects has been deprecated and will be removed in Cesium 1.45.Credit
now takes anhtml
andshowOnScreen
parameters instead of anoptions
object. Use of theoptions
parameter is deprecated and will be removed in Cesium 1.46.Credit.text
,Credit.imageUrl
andCredit.link
properties have all been deprecated and will be removed in Cesium 1.46. UseCredit.html
to retrieve the credit content.Credit.hasImage
andCredit.hasLink
functions have been deprecated and will be removed in Cesium 1.46.
- Added a new Sandcastle label,
New in X.X
which will include all new Sandcastle demos added for the current release. #6384 - Added support for glTF models with Draco geometry compression. #5120
- Added
dequantizeInShader
option parameter toModel
andModel.fromGltf
to specify if Draco compressed glTF assets should be dequantized on the GPU.
- Added
- Added support for ordering in
DataSourceCollection
. #6316- All ground geometry from one
DataSource
will render in front of all ground geometry from anotherDataSource
in the same collection with a lower index. - Use
DataSourceCollection.raise
,DataSourceCollection.lower
,DataSourceCollection.raiseToTop
andDataSourceCollection.lowerToBottom
functions to change the ordering of aDataSource
in the collection.
- All ground geometry from one
ClippingPlaneCollection
updates #6201:- Removed the 6-clipping-plane limit.
- Added support for Internet Explorer.
- Added a
ClippingPlane
object to be used withClippingPlaneCollection
. - Added 3D Tiles use-case to the Terrain Clipping Planes Sandcastle.
Credit
has been modified to take an HTML string as the credit content. #6331- Sharing Sandcastle examples now works by storing the full example directly in the URL instead of creating GitHub gists, because anonymous gist creation was removed by GitHub. Loading existing gists will still work. #6342
- Updated
WebMapServiceImageryProvider
so it can take an srs or crs string to pass to the resource query parameters based on the WMS version. #6223 - Added additional query parameter options to the CesiumViewer demo application #6328:
sourceType
specifies the type of data source if the URL doesn't have a known file extension.flyTo=false
optionally disables the automaticflyTo
after loading the data source.
- Added a multi-part CZML example to Sandcastle. #6320
- Improved processing order of 3D tiles. #6364
- Fixed Cesium ion browser caching. #6353.
- Fixed formula for Weighted Blended Order-Independent Transparency. #6340
- Fixed support of glTF-supplied tangent vectors. #6302
- Fixed model loading failure when containing unused materials. 6315
- Fixed default value of
alphaCutoff
in glTF models. #6346 - Fixed double-sided flag for glTF materials with
BLEND
enabled. #6371 - Fixed animation for glTF models with missing animation targets. #6351
- Fixed improper zoom during model load failure. #6305
- Fixed rendering vector tiles when using
invertClassification
. #6349 - Fixed occlusion when
globe.show
isfalse
. #6374 - Fixed crash for entities with static geometry and time-dynamic attributes. #6377
- Fixed geometry tile rendering in IE. #6406
- Say hello to Cesium ion
- Cesium, the JavaScript library, is now officially renamed to CesiumJS (no code changes required)
- The STK World Terrain tileset is deprecated and will be available until September 1, 2018. Check out the new high-resolution Cesium World Terrain
- Removed
GeometryUpdater.perInstanceColorAppearanceType
andGeometryUpdater.materialAppearanceType
. #6239 GeometryVisualizer
no longer uses atype
parameter. #6239GeometryVisualizer
no longer displays polylines. UsePolylineVisualizer
instead. #6239- The experimental
CesiumIon
object has been completely refactored and renamed toIon
.
- The STK World Terrain, ArcticDEM, and PAMAP Terrain tilesets hosted on
assets.agi.com
are deprecated and will be available until September 1, 2018. To continue using them, access them via Cesium ion - In the
Resource
class,addQueryParameters
andaddTemplateValues
have been deprecated and will be removed in Cesium 1.45. Please usesetQueryParameters
andsetTemplateValues
instead.
- Added new
Ion
,IonResource
, andIonImageryProvider
objects for loading data hosted on Cesium ion. - Added
createWorldTerrain
helper function for easily constructing the new Cesium World Terrain. - Added support for a promise to a resource for
CesiumTerrainProvider
,createTileMapServiceImageryProvider
andCesium3DTileset
#6204 - Added
Cesium.Math.cbrt
. #6222 - Added
PolylineVisualizer
for displaying polyline entities #6239 Resource
class #6205- Added
put
,patch
,delete
,options
andhead
methods, so it can be used for all XHR requests. - Added
preserveQueryParameters
parameter togetDerivedResource
, to allow us to append query parameters instead of always replacing them. - Added
setQueryParameters
andappendQueryParameters
to allow for better handling of query strings.
- Added
- Enable terrain in the
CesiumViewer
demo application #6198 - Added
Globe.tilesLoaded
getter property to determine if all terrain and imagery is loaded. #6194 - Added
classificationType
property to entities which specifies whether an entity on the ground, like a polygon or rectangle, should be clamped to terrain, 3D Tiles, or both. #6195
- Fixed bug where KmlDataSource did not use Ellipsoid to convert coordinates. Use
options.ellipsoid
to pass the ellipsoid to KmlDataSource constructors / loaders. #6176 - Fixed bug where 3D Tiles Point Clouds would fail in Internet Explorer. #6220
- Fixed issue where
CESIUM_BASE_URL
wouldn't work without a trailing/
. #6225 - Fixed coloring for polyline entities with a dynamic color for the depth fail material #6245
- Fixed bug with zooming to dynamic geometry. #6269
- Fixed bug where
AxisAlignedBoundingBox
did not copy over center value when cloning an undefined result. #6183 - Fixed a bug where imagery stops loading when changing terrain in request render mode. #6193
- Fixed
Resource.fetch
when called with no arguments #6206 - Fixed
Resource.clone
to clone theRequest
object, so resource can be used in parallel. #6208 - Fixed
Material
so it can now take aResource
object as an image. #6199 - Fixed an issue causing the Bing Maps key to be sent unnecessarily with every tile request. #6250
- Fixed documentation issue for the
Cesium.Math
class. #6233 - Fixed rendering 3D Tiles as classification volumes. #6295
This is an npm-only release to fix an issue with using Cesium in Node.js._
- Fixed a bug where Cesium would fail to load under Node.js. #6177
- Added experimental support for 3D Tiles Vector and Geometry data. (#4665)
- Added optional mode to reduce CPU usage. See Improving Performance with Explicit Rendering. (#6115)
- Added experimental
CesiumIon
utility class for working with the Cesium ion beta API. #6136 - Major refactor of URL handling. All classes that take a url parameter, can now take a Resource or a String. This includes all imagery providers, all terrain providers,
Cesium3DTileset
,KMLDataSource
,CZMLDataSource
,GeoJsonDataSource
,Model
, andBillboard
.
- The clock does not animate by default. Set the
shouldAnimate
option totrue
when creating the Viewer to enable animation.
- For all classes/functions that can now take a
Resource
instance, all additional parameters that are part of theResource
class have been deprecated and will be removed in Cesium 1.44. This generally includesproxy
,headers
andquery
parameters. - All low level load functions including
loadArrayBuffer
,loadBlob
,loadImage
,loadJson
,loadJsonp
,loadText
,loadXML
andloadWithXhr
have been deprecated and will be removed in Cesium 1.44. Please use the equivalentfetch
functions on theResource
class.
- Added experimental support for 3D Tiles Vector and Geometry data (#4665). The new and modified Cesium APIs are:
Cesium3DTileStyle
has expanded to include styling point features. See the styling specification for details.Cesium3DTileFeature
can modifycolor
andshow
properties for polygon, polyline, and geometry features.Cesium3DTilePointFeature
can modify the styling options for a point feature.
- Added optional mode to reduce CPU usage. #6115
Scene.requestRenderMode
enables a mode which will only request new render frames on changes to the scene, or when the simulation time change exceedsscene.maximumRenderTimeChange
.Scene.requestRender
will explicitly request a new render frame when in request render mode.- Added
Scene.preUpdate
andScene.postUpdate
events that are raised before and after the scene updates respectively. The scene is always updated before executing a potential render. Continue to listen toScene.preRender
andScene.postRender
events for when the scene renders a frame. - Added
CreditDisplay.update
, which updates the credit display before a new frame is rendered. - Added
Globe.imageryLayersUpdatedEvent
, which is raised when an imagery layer is added, shown, hidden, moved, or removed on the globe.
- Added
Cesium3DTileset.classificationType
to specify if a tileset classifies terrain, another 3D Tiles tileset, or both. This only applies to vector, geometry and batched 3D model tilesets. The limitations on the glTF contained in the b3dm tile are:POSITION
and_BATCHID
semantics are required.- All indices with the same batch id must occupy contiguous sections of the index buffer.
- All shaders and techniques are ignored. The generated shader simply multiplies the position by the model-view-projection matrix.
- The only supported extensions are
CESIUM_RTC
andWEB3D_quantized_attributes
. - Only one node is supported.
- Only one mesh per node is supported.
- Only one primitive per mesh is supported.
- Added geometric-error-based point cloud attenuation and eye dome lighting for point clouds using replacement refinement. #6069
- Updated
Viewer.zoomTo
andViewer.flyTo
to take aCesium3DTileset
as a target. #6104 - Added
shouldAnimate
option to theViewer
constructor to indicate if the clock should begin animating on startup. #6154 - Added
Cesium3DTileset.ellipsoid
determining the size and shape of the globe. This can be set at construction and defaults to a WGS84 ellipsoid. - Added
Plane.projectPointOntoPlane
for projecting aCartesian3
position onto aPlane
. #6092 - Added
Cartesian3.projectVector
for projecting one vector to another. #6093 - Added
Cesium3DTileset.tileFailed
event that will be raised when a tile fails to load. The object passed to the event listener will have a url and message property. If there are no event listeners, error messages will be logged to the console. #6088 - Added
AttributeCompression.zigZagDeltaDecode
which will decode delta and ZigZag encoded buffers in place. - Added
pack
andunpack
functions toOrientedBoundingBox
for packing to and unpacking from a flat buffer. - Added support for vertex shader uniforms when
tileset.colorBlendMode
isMIX
orREPLACE
. #5874 - Added
ClippingPlaneCollection.isSupported
function for checking if rendering with clipping planes is supported.#6084 - Added
Cartographic.toCartesian
to convert fromCartographic
toCartesian3
. #6163 - Added
BoundingSphere.volume
for computing the volume of aBoundingSphere
. #6069 - Added new file for the Cesium Code of Conduct. #6129
- Fixed a bug that could cause tiles to be missing from the globe surface, especially when starting with the camera zoomed close to the surface. #4969
- Fixed applying a translucent style to a point cloud tileset. #6113
- Fixed Sandcastle error in IE 11. #6169
- Fixed a glTF animation bug that caused certain animations to jitter. #5740
- Fixed a bug when creating billboard and model entities without a globe. #6109
- Improved CZML Custom Properties Sandcastle example. #6086
- Improved Particle System Sandcastle example for better visual. #6132
- Fixed behavior of
Camera.move*
andCamera.look*
functions in 2D mode. #5884 - Fixed
Camera.moveStart
andCamera.moveEnd
events not being raised when camera is close to the ground. #4753 - Fixed
OrientedBoundingBox
documentation. #6147 - Updated documentation links to reflect new locations on
https://cesiumjs.org
andhttps://cesium.com
.
- Breaking changes
- Removed the
text
,imageUrl
, andlink
parameters fromCredit
, which were deprecated in Cesium 1.40. Useoptions.text
,options.imageUrl
, andoptions.link
instead.
- Removed the
- Added support for clipping planes. #5913, #5996
- Added
clippingPlanes
property toModelGraphics
,Model
,Cesium3DTileset
, andGlobe
, which specifies aClippingPlaneCollection
to selectively disable rendering. - Added
PlaneGeometry
,PlaneOutlineGeometry
,PlaneGeometryUpdater
,PlaneOutlineGeometryUpdater
,PlaneGraphics
, andEntity.plane
to visualize planes. - Added
Plane.transformPlane
to apply a transformation to a plane.
- Added
- Fixed point cloud exception in IE. #6051
- Fixed globe materials when
Globe.enableLighting
wasfalse
. #6042 - Fixed shader compilation failure on pick when globe materials were enabled. #6039
- Fixed exception when
invertClassification
was enabled, the invert color had an alpha less than1.0
, and the window was resized. #6046
- Deprecated
- The
text
,imageUrl
andlink
parameters fromCredit
have been deprecated and will be removed in Cesium 1.41. Useoptions.text
,options.imageUrl
andoptions.link
instead.
- The
- Added
Globe.material
to apply materials to the globe/terrain for shading such as height- or slope-based color ramps. See the new Sandcastle example. #5919 - Added CZML support for
polyline.depthFailMaterial
,label.scaleByDistance
,distanceDisplayCondition
, anddisableDepthTestDistance
. #5986 - Fixed a bug where drill picking a polygon clamped to ground would cause the browser to hang. #5971
- Fixed bug in KML LookAt bug where degrees and radians were mixing in a subtraction. #5992
- Fixed handling of KMZ files with missing
xsi
namespace declarations. #6003 - Added function that removes duplicate namespace declarations while loading a KML or a KMZ. #5972
- Fixed a language detection issue. #6016
- Fixed a bug where glTF models with animations of different lengths would cause an error. #5694
- Added a
clampAnimations
parameter toModel
andEntity.model
. Setting this tofalse
allows different length animations to loop asynchronously over the duration of the longest animation. - Fixed
Invalid asm.js: Invalid member of stdlib
console error by recompiling crunch.js with latest emscripten toolchain. #5847 - Added
file:
scheme compatibility tojoinUrls
. #5989 - Added a Reverse Geocoder Sandcastle example. #5976
- Added ability to support touch event in Imagery Layers Split Sandcastle example. #5948
- Added a new
@experimental
tag to the documentation. A small subset of the Cesium API tagged as such are subject to breaking changes without deprecation. See the Coding Guide for further explanation. #6010 - Moved terrain and imagery credits to a lightbox that pops up when you click a link in the onscreen credits #3013
- Cesium now officially supports webpack. See our Integrating Cesium and webpack blog post for more details.
- Added support for right-to-left language detection in labels, currently Hebrew and Arabic are supported. To enable it, set
Cesium.Label.enableRightToLeftDetection = true
at the start of your application. #5771 - Fixed handling of KML files with missing
xsi
namespace declarations. #5860 - Fixed a bug that caused KML ground overlays to appear distorted when rotation was applied. #5914
- Fixed a bug where KML placemarks with no specified icon would be displayed with default icon. #5819
- Changed KML loading to ignore NetworkLink failures and continue to load the rest of the document. #5871
- Added the ability to load Cesium's assets from the local file system if security permissions allow it. #5830
- Added two new properties to
ImageryLayer
that allow for adjusting the texture sampler used for up and down-sampling of imagery tiles, namelyminificationFilter
andmagnificationFilter
with possible valuesLINEAR
(the default) andNEAREST
defined inTextureMinificationFilter
andTextureMagnificationFilter
. #5846 - Fixed flickering artifacts with 3D Tiles tilesets with thin walls. #5940
- Fixed bright fog when terrain lighting is enabled and added
Fog.minimumBrightness
to affect how bright the fog will be when in complete darkness. #5934 - Fixed using arrow keys in geocoder widget to select search suggestions. #5943
- Added support for the layer.json
parentUrl
property inCesiumTerrainProvider
to allow for compositing of tilesets. #5864 - Added
invertClassification
andinvertClassificationColor
toScene
. WheninvertClassification
istrue
, any 3D Tiles geometry that is not classified by aClassificationPrimitive
orGroundPrimitive
will have its color multiplied byinvertClassificationColor
. #5836 - Added
customTags
property to the UrlTemplateImageryProvider to allow custom keywords in the template URL. #5696 - Added
eyeSeparation
andfocalLength
properties toScene
to configure VR settings. #5917 - Improved CZML Reference Properties example #5754
- Breaking changes
Scene/CullingVolume
has been removed. UseCore/CullingVolume
.Scene/OrthographicFrustum
has been removed. UseCore/OrthographicFrustum
.Scene/OrthographicOffCenterFrustum
has been removed. UseCore/OrthographicOffCenterFrustum
.Scene/PerspectiveFrustum
has been removed. UseCore/PerspectiveFrustum
.Scene/PerspectiveOffCenterFrustum
has been removed. UseCore/PerspectiveOffCenterFrustum
.
- Added support in CZML for expressing
orientation
as the velocity vector of an entity, usingvelocityReference
syntax. #5807 - Fixed CZML processing of
velocityReference
within an interval. #5738 - Added ability to add an animation to
ModelAnimationCollection
by its index. #5815 - Fixed a bug in
ModelAnimationCollection
that caused adding an animation by its name to throw an error. #5815 - Fixed issue in Internet Explorer and Edge with loading unicode strings in typed arrays that impacted 3D Tiles Batch Table values.
- Zoom now maintains camera heading, pitch, and roll. #4639
- Fixed a bug in
PolylineCollection
preventing the display of more than 16K points in a single collection. #5538 - Fixed a 3D Tiles point cloud bug causing a stray point to appear at the center of the screen on certain hardware. #5599
- Fixed removing multiple event listeners within event callbacks. #5827
- Running
buildApps
now creates a built version of Sandcastle which uses the built version of Cesium for better performance. - Fixed a tileset traversal bug when the
skipLevelOfDetail
optimization is off. #5869
- Breaking changes
- Passing
options.clock
when creating a newViewer
instance is removed, passoptions.clockViewModel
instead. - Removed
GoogleEarthImageryProvider
, useGoogleEarthEnterpriseMapsProvider
instead. - Removed the
throttleRequest
parameter fromTerrainProvider.requestTileGeometry
and inherited terrain providers. It is replaced with an optionalRequest
object. Set the request'sthrottle
property totrue
to throttle requests. - Removed the ability to provide a Promise for the
options.url
parameter ofloadWithXhr
and for theurl
parameter ofloadArrayBuffer
,loadBlob
,loadImageViaBlob
,loadText
,loadJson
,loadXML
,loadImage
,loadCRN
,loadKTX
, andloadCubeMap
. Insteadurl
must be a string.
- Passing
- Added
classificationType
toClassificationPrimitive
andGroundPrimitive
to choose whether terrain, 3D Tiles, or both are classified. #5770 - Fixed depth picking on 3D Tiles. #5676
- Fixed glTF model translucency bug. #5731
- Fixed
replaceState
bug that was causing theCesiumViewer
demo application to crash in Safari and iOS. #5691 - Fixed a 3D Tiles traversal bug for tilesets using additive refinement. #5766
- Fixed a 3D Tiles traversal bug where out-of-view children were being loaded unnecessarily. #5477
- Fixed
Entity
id type to beString
inEntityCollection
andCompositeEntityCollection
#5791 - Fixed issue where
Model
andBillboardCollection
would throw an error if the globe is undefined. #5638 - Fixed issue where the
Model
glTF cache loses reference to the model's buffer data. #5720 - Fixed some issues with
disableDepthTestDistance
. #5501 #5331 #5621 - Added several new Bing Maps styles:
CANVAS_DARK
,CANVAS_LIGHT
, andCANVAS_GRAY
. #5737 - Added small improvements to the atmosphere. #5741
- Fixed a bug that caused imagery splitting to work incorrectly when CSS pixels were not equivalent to WebGL drawing buffer pixels, such as on high DPI displays in Microsoft Edge and Internet Explorer. #5743
- Added
Cesium3DTileset.loadJson
to support overriding the default tileset loading behavior. #5685 - Fixed loading of binary glTFs containing CRN or KTX textures. #5753
- Fixed specular computation for certain models using the
KHR_materials_common
extension. #5773 - Fixed a picking bug in the
3D Tiles Interactivity
Sandcastle demo. #5703 - Updated knockout from 3.4.0 to 3.4.2 #5703
- Breaking changes
- The function
Quaternion.fromHeadingPitchRoll(heading, pitch, roll, result)
was removed. UseQuaternion.fromHeadingPitchRoll(hpr, result)
instead wherehpr
is aHeadingPitchRoll
. - The function
Transforms.headingPitchRollToFixedFrame(origin, headingPitchRoll, ellipsoid, result)
was removed. UseTransforms.headingPitchRollToFixedFrame(origin, headingPitchRoll, ellipsoid, fixedFrameTransform, result)
instead wherefixedFrameTransform
is a a 4x4 transformation matrix (seeTransforms.localFrameToFixedFrameGenerator
). - The function
Transforms.headingPitchRollQuaternion(origin, headingPitchRoll, ellipsoid, result)
was removed. UseTransforms.headingPitchRollQuaternion(origin, headingPitchRoll, ellipsoid, fixedFrameTransform, result)
instead wherefixedFrameTransform
is a a 4x4 transformation matrix (seeTransforms.localFrameToFixedFrameGenerator
). - The
color
,show
, andpointSize
properties ofCesium3DTileStyle
are no longer initialized with default values.
- The function
- Deprecated
Scene/CullingVolume
is deprecated and will be removed in 1.38. UseCore/CullingVolume
.Scene/OrthographicFrustum
is deprecated and will be removed in 1.38. UseCore/OrthographicFrustum
.Scene/OrthographicOffCenterFrustum
is deprecated and will be removed in 1.38. UseCore/OrthographicOffCenterFrustum
.Scene/PerspectiveFrustum
is deprecated and will be removed in 1.38. UseCore/PerspectiveFrustum
.Scene/PerspectiveOffCenterFrustum
is deprecated and will be removed in 1.38. UseCore/PerspectiveOffCenterFrustum
.
- Added glTF 2.0 support, including physically-based material rendering, morph targets, and appropriate updating of glTF 1.0 models to 2.0. #5641
- Added
ClassificationPrimitive
which defines a volume and draws the intersection of the volume and terrain or 3D Tiles. #5625 - Added
tileLoad
event toCesium3DTileset
. #5628 - Fixed issue where scene would blink when labels were added. #5537
- Fixed label positioning when height reference changes #5609
- Fixed label positioning when using
HeightReference.CLAMP_TO_GROUND
and no position #5648 - Fix for dynamic polylines with polyline dash material #5681
- Added ability to provide a
width
andheight
toscene.pick
. #5602 - Fixed
Viewer.flyTo
not respecting zoom limits, and resetting minimumZoomDistance if the camera zoomed past the minimumZoomDistance. 5573 - Added ability to show tile urls in the 3D Tiles Inspector. #5592
- Fixed a bug when reading CRN compressed textures with multiple mip levels. #5618
- Fixed issue where composite 3D Tiles that contained instanced 3D Tiles with an external model reference would fail to download the model.
- Added behavior to
Cesium3DTilesInspector
that selects the first tileset hovered over if no tilest is specified. #5139 - Added
Entity.computeModelMatrix
which returns the model matrix representing the entity's transformation. #5584 - Added ability to set a style's
color
,show
, orpointSize
with a string or object literal.show
may also take a boolean andpointSize
may take a number. #5412 - Added setter for
KmlDataSource.name
to specify a name for the datasource #5660. - Added setter for
GeoJsonDataSource.name
to specify a name for the datasource #5653 - Fixed crash when using the
Cesium3DTilesInspectorViewModel
and removing a tileset #5607 - Fixed polygon outline in Polygon Sandcastle demo #5642
- Updated
Billboard
,Label
andPointPrimitive
constructors to cloneNearFarScale
parameters #5654 - Added
FrustumGeometry
andFrustumOutlineGeometry
. #5649 - Added an
options
parameter to the constructors ofPerspectiveFrustum
,PerspectiveOffCenterFrustum
,OrthographicFrustum
, andOrthographicOffCenterFrustum
to set properties. #5649
- This is an npm-only release to fix an issue with using Cesium in Node.js.
- Fixed a bug where Cesium would fail to load under Node.js and some webpack configurations. #5593
- Fixed a bug where a Model's compressed textures were not being displayed. #5596
- Fixed documentation for
OrthographicFrustum
. #5586
- This is an npm-only release to fix a deployment issue with 1.35. No code changes.
- Breaking changes
JulianDate.fromIso8601
will default to midnight UTC if no time is provided to match the JavascriptDate
specification. You must specify a local time of midnight to achieve the old behavior.
- Deprecated
GoogleEarthImageryProvider
has been deprecated and will be removed in Cesium 1.37, useGoogleEarthEnterpriseMapsProvider
instead.- The
throttleRequest
parameter forTerrainProvider.requestTileGeometry
,CesiumTerrainProvider.requestTileGeometry
,VRTheWorldTerrainProvider.requestTileGeometry
, andEllipsoidTerrainProvider.requestTileGeometry
is deprecated and will be replaced with an optionalRequest
object. ThethrottleRequests
parameter will be removed in 1.37. Instead set the request'sthrottle
property totrue
to throttle requests. - The ability to provide a Promise for the
options.url
parameter ofloadWithXhr
and for theurl
parameter ofloadArrayBuffer
,loadBlob
,loadImageViaBlob
,loadText
,loadJson
,loadXML
,loadImage
,loadCRN
,loadKTX
, andloadCubeMap
is deprecated. This will be removed in 1.37, insteadurl
must be a string.
- Added support for 3D Tiles for streaming massive heterogeneous 3D geospatial datasets (#5308). See the new Sandcastle examples. The new Cesium APIs are:
Cesium3DTileset
Cesium3DTileStyle
,StyleExpression
,Expression
, andConditionsExpression
Cesium3DTile
Cesium3DTileContent
Cesium3DTileFeature
Cesium3DTilesInspector
,Cesium3DTilesInspectorViewModel
, andviewerCesium3DTilesInspectorMixin
Cesium3DTileColorBlendMode
- Added a particle system for effects like smoke, fire, sparks, etc. See
ParticleSystem
,Particle
,ParticleBurst
,BoxEmitter
,CircleEmitter
,ConeEmitter
,ParticleEmitter
, andSphereEmitter
, and the new Sandcastle examples: Particle System and Particle System Fireworks. #5212 - Added
options.clock
,options.times
andoptions.dimensions
toWebMapTileServiceImageryProvider
in order to handle time dynamic and static values for dimensions. - Added an
options.request
parameter toloadWithXhr
and arequest
parameter toloadArrayBuffer
,loadBlob
,loadImageViaBlob
,loadText
,loadJson
,loadJsonp
,loadXML
,loadImageFromTypedArray
,loadImage
,loadCRN
, andloadKTX
. CzmlDataSource
andKmlDataSource
load functions now take an optionalquery
object, which will append query parameters to all network requests. #5419, #5434- Added Sandcastle demo for setting time with the Clock API #5457;
- Added Sandcastle demo for ArcticDEM data. #5224
- Added
fromIso8601
,fromIso8601DateArray
, andfromIso8601DurationArray
toTimeIntervalCollection
for handling various ways groups of intervals can be specified in ISO8601 format. - Added
fromJulianDateArray
toTimeIntervalCollection
for generating intervals from a list of dates. - Fixed geocoder bug so geocoder can accurately handle NSEW inputs #5407
- Fixed a bug where picking would break when the Sun came into view #5478
- Fixed a bug where picking clusters would return undefined instead of a list of the clustered entities. #5286
- Fixed bug where if polylines were set to follow the surface of an undefined globe, Cesium would throw an exception. #5413
- Reduced the amount of Sun bloom post-process effect near the horizon. #5381
- Fixed a bug where camera zooming worked incorrectly when the display height was greater than the display width #5421
- Updated glTF/glb MIME types. #5420
- Added
Cesium.Math.randomBetween
. - Modified
defaultValue
to check for bothundefined
andnull
. #5551 - The
throttleRequestByServer
function has been removed. Instead pass aRequest
object withthrottleByServer
set totrue
to any of following load functions:loadWithXhr
,loadArrayBuffer
,loadBlob
,loadImageViaBlob
,loadText
,loadJson
,loadJsonp
,loadXML
,loadImageFromTypedArray
,loadImage
,loadCRN
, andloadKTX
.
- Deprecated
- Passing
options.clock
when creating a newViewer
instance has been deprecated and will be removed in Cesium 1.37, passoptions.clockViewModel
instead.
- Passing
- Fix issue where polylines in a
PolylineCollection
would ignore the far distance when updating the distance display condition. #5283 - Fixed a crash when calling
Camera.pickEllipsoid
with a canvas of size 0. - Fix
BoundingSphere.fromOrientedBoundingBox
. #5334 - Fixed bug where polylines would not update when
PolylineCollection
model matrix was updated. #5327 - Fixed a bug where adding a ground clamped label without a position would show up at a previous label's clamped position. #5338
- Fixed translucency bug for certain material types. #5335
- Fix picking polylines that use a depth fail appearance. #5337
- Fixed a crash when morphing from Columbus view to 3D. #5311
- Fixed a bug which prevented KML descriptions with relative paths from loading. #5352
- Fixed an issue where camera view could be invalid at the last frame of animation. #4949
- Fixed an issue where using the depth fail material for polylines would cause a crash in Edge. #5359
- Fixed a crash where
EllipsoidGeometry
andEllipsoidOutlineGeometry
were given floating point values when expecting integers. #5260 - Fixed an issue where billboards were not properly aligned. #2487
- Fixed an issue where translucent objects could flicker when picking on mouse move. #5307
- Fixed a bug where billboards with
sizeInMeters
set to true would move upwards when zooming out. #5373 - Fixed a bug where
SampledProperty.setInterpolationOptions
does not ignore undefinedoptions
. #3575 - Added
basePath
option toCesium.Model.fromGltf
. #5320
- Breaking changes
- Removed left, right, bottom and top properties from
OrthographicFrustum
. UseOrthographicOffCenterFrustum
instead. #5109
- Removed left, right, bottom and top properties from
- Added
GoogleEarthEnterpriseTerrainProvider
andGoogleEarthEnterpriseImageryProvider
to read data from Google Earth Enterprise servers. #5189. - Support for dashed polylines #5159.
- Added
PolylineDash
Material type. - Added
PolylineDashMaterialProperty
to the Entity API. - Added CZML
polylineDash
property .
- Added
- Added
disableDepthTestDistance
to billboards, points and labels. This sets the distance to the camera where the depth test will be disabled. Setting it to zero (the default) will always enable the depth test. Setting it toNumber.POSITVE_INFINITY
will never enabled the depth test. Also addedscene.minimumDisableDepthTestDistance
to change the default value from zero. #5166 - Added a
depthFailMaterial
property to line entities, which is the material used to render the line when it fails the depth test. #5160 - Fixed billboards not initially clustering. #5208
- Fixed issue with displaying
MapboxImageryProvider
default token error message. #5191 - Fixed bug in conversion formula in
Matrix3.fromHeadingPitchRoll
. #5195 - Upgrade FXAA to version 3.11. #5200
Scene.pickPosition
now caches results per frame to increase performance. #5117
- Deprecated
- The
left
,right
,bottom
, andtop
properties ofOrthographicFrustum
are deprecated and will be removed in 1.33. UseOrthographicOffCenterFrustum
instead.
- The
- Breaking changes
- Removed
ArcGisImageServerTerrainProvider
. - The top-level
properties
in anEntity
created byGeoJsonDataSource
are now instances ofConstantProperty
instead of raw values.
- Removed
- Added support for an orthographic projection in 3D and Columbus view.
- Set
projectionPicker
totrue
in the options when creating aViewer
to add a widget that will switch projections. #5021 - Call
switchToOrthographicFrustum
orswitchToPerspectiveFrustum
onCamera
to change projections.
- Set
- Added support for custom time-varying properties in CZML. #5105.
- Added new flight parameters to
Camera.flyTo
andCamera.flyToBoundingSphere
:flyOverLongitude
,flyOverLongitudeWeight
, andpitchAdjustHeight
. #5070 - Added the event
Viewer.trackedEntityChanged
, which is raised when the value ofviewer.trackedEntity
changes. #5060 - Added
Camera.DEFAULT_OFFSET
for default view of objects with bounding spheres. #4936 - Fixed an issue with
TileBoundingBox
that caused the terrain to disappear in certain places 4032 - Fixed overlapping billboard blending. #5066
- Fixed an issue with
PinBuilder
where inset images could have low-alpha fringes against an opaque background. #5099 - Fix billboard, point and label clustering in 2D and Columbus view. #5136
- Fixed
GroundPrimitive
rendering in 2D and Columbus View. #5078 - Fixed an issue with camera tracking of dynamic ellipsoids. #5133
- Fixed issues with imagerySplitPosition and the international date line in 2D mode. #5151
- Fixed a bug in
ModelAnimationCache
causing different animations to reference the same animation. #5064 ConstantProperty
now providesvalueOf
andtoString
methods that return the constant value.- Improved depth artifacts between opaque and translucent primitives. #5116
- Fixed crunch compressed textures in IE11. #5057
- Fixed a bug in
Quaternion.fromHeadingPitchRoll
that made it erroneously throw an exception when passed individual angles in an unminified / debug build. - Fixed a bug that caused an exception in
CesiumInspectorViewModel
when using the NW / NE / SW / SE / Parent buttons to navigate to a terrain tile that is not yet loaded. QuadtreePrimitive
now usesframeState.afterRender
to firetileLoadProgressEvent
#3450
- Deprecated
- The function
Quaternion.fromHeadingPitchRoll(heading, pitch, roll, result)
will be removed in 1.33. UseQuaternion.fromHeadingPitchRoll(hpr, result)
instead wherehpr
is aHeadingPitchRoll
. #4896 - The function
Transforms.headingPitchRollToFixedFrame(origin, headingPitchRoll, ellipsoid, result)
will be removed in 1.33. UseTransforms.headingPitchRollToFixedFrame(origin, headingPitchRoll, ellipsoid, fixedFrameTransform, result)
instead wherefixedFrameTransform
is a a 4x4 transformation matrix (seeTransforms.localFrameToFixedFrameGenerator
). #4896 - The function
Transforms.headingPitchRollQuaternion(origin, headingPitchRoll, ellipsoid, result)
will be removed in 1.33. UseTransforms.headingPitchRollQuaternion(origin, headingPitchRoll, ellipsoid, fixedFrameTransform, result)
instead wherefixedFrameTransform
is a a 4x4 transformation matrix (seeTransforms.localFrameToFixedFrameGenerator
). #4896 ArcGisImageServerTerrainProvider
will be removed in 1.32 due to missing TIFF support in web browsers. #4981
- The function
- Breaking changes
- Corrected spelling of
Color.FUCHSIA
fromColor.FUSCHIA
. #4977 - The enums
MIDDLE_DOUBLE_CLICK
andRIGHT_DOUBLE_CLICK
fromScreenSpaceEventType
have been removed. #5052 - Removed the function
GeometryPipeline.computeBinormalAndTangent
. UseGeometryPipeline.computeTangentAndBitangent
instead. #5053 - Removed the
url
andkey
properties fromGeocoderViewModel
. #5056 BingMapsGeocoderServices
now requiresoptions.scene
. #5056
- Corrected spelling of
- Added compressed texture support. #4758
- glTF models and imagery layers can now reference KTX textures and textures compressed with crunch.
- Added
loadKTX
, to load KTX textures, andloadCRN
to load crunch compressed textures. - Added new
PixelFormat
andWebGLConstants
enums from WebGL extensionsWEBGL_compressed_s3tc
,WEBGL_compressed_texture_pvrtc
, andWEBGL_compressed_texture_etc1
. - Added
CompressedTextureBuffer
.
- Added support for
Scene.pickPosition
in Columbus view and 2D. #4990 - Added support for depth picking translucent primitives when
Scene.pickTranslucentDepth
istrue
. #4979 - Fixed an issue where the camera would zoom past an object and flip to the other side of the globe. #4967 and #4982
- Enable rendering
GroundPrimitives
on hardware without theEXT_frag_depth
extension; however, this could cause artifacts for certain viewing angles. #4930 - Added
Transforms.localFrameToFixedFrameGenerator
to generate a function that computes a 4x4 transformation matrix from a local reference frame to fixed reference frame. #4896 - Added
Label.scaleByDistance
to control minimum/maximum label size based on distance from the camera. #5019 - Added support to
DebugCameraPrimitive
to draw multifrustum planes. The attributedebugShowFrustumPlanes
ofScene
andfrustumPlanes
ofCesiumInspector
toggle this. #4932 - Added fix to always outline KML line extrusions so that they show up properly in 2D and other straight down views. #4961
- Improved
RectangleGeometry
by skipping unnecessary logic in the code. #4948 - Fixed exception for polylines in 2D when rotating the map. #4619
- Fixed an issue with constant
VertexArray
attributes not being set correctly. #4995 - Added the event
Viewer.selectedEntityChanged
, which is raised when the value ofviewer.selectedEntity
changes. #5043
- Deprecated
- The properties
url
andkey
will be removed fromGeocoderViewModel
in 1.31. These properties will be available on geocoder services that support them, likeBingMapsGeocoderService
. - The function
GeometryPipeline.computeBinormalAndTangent
will be removed in 1.31. UseGeometryPipeline.createTangentAndBitangent
instead. #4856 - The enums
MIDDLE_DOUBLE_CLICK
andRIGHT_DOUBLE_CLICK
fromScreenSpaceEventType
have been deprecated and will be removed in 1.31. #4910
- The properties
- Breaking changes
- Removed separate
heading
,pitch
,roll
parameters fromTransform.headingPitchRollToFixedFrame
andTransform.headingPitchRollQuaternion
. Pass aHeadingPitchRoll
object instead. #4843 - The property
binormal
has been renamed tobitangent
forGeometry
andVertexFormat
. #4856 - A handful of
CesiumInspectorViewModel
properties were removed or changed from variables to functions. #4857 - The
ShadowMap
constructor has been made private. #4010
- Removed separate
- Added
sampleTerrainMostDetailed
to sample the height of an array of positions using the best available terrain data at each point. This requires aTerrainProvider
with theavailability
property. - Transparent parts of billboards, labels, and points no longer overwrite parts of the scene behind them. #4886
- Added
blendOption
property toBillboardCollection
,LabelCollection
, andPointPrimitiveCollection
. The default isBlendOption.OPAQUE_AND_TRANSLUCENT
; however, if all billboards, labels, or points are either completely opaque or completely translucent,blendOption
can be changed toBlendOption.OPAQUE
orBlendOption.TRANSLUCENT
, respectively, to increase performance by up to 2x.
- Added
- Added support for custom geocoder services and autocomplete, see the Sandcastle example. Added
GeocoderService
, an interface for geocoders, andBingMapsGeocoderService
andCartographicGeocoderService
implementations. #4723 - Added ability to draw an
ImageryLayer
with a splitter to allow layers to only display to the left or right of a splitter. SeeImageryLayer.splitDirection
,Scene.imagerySplitPosition
, and the Sandcastle example. - Fixed bug where
GroundPrimitives
where rendering incorrectly or disappearing at different zoom levels. #4161, #4326 TerrainProvider
now optionally exposes anavailability
property that can be used to query the terrain level that is available at a location or in a rectangle. Currently onlyCesiumTerrainProvider
exposes this property.- Added support for WMS version 1.3 by using CRS vice SRS query string parameter to request projection. SRS is still used for older versions.
- Fixed a bug that caused all models to use the same highlight color. [#4798] (CesiumGS#4798)
- Fixed sky atmosphere from causing incorrect picking and hanging drill picking. #4783 and #4784
- Fixed KML loading when color is an empty string. #4826
- Fixed a bug that could cause a "readyImagery is not actually ready" exception when quickly zooming past the maximum available imagery level of an imagery layer near the poles.
- Fixed a bug that affected dynamic graphics with time-dynamic modelMatrix. #4907
- Fixed
Geocoder
autocomplete drop down visibility in Firefox. #4916 - Added
Rectangle.fromRadians
. - Updated the morph so the default view in Columbus View is now angled. #3878
- Added 2D and Columbus View support for models using the RTC extension or whose vertices are in WGS84 coordinates. #4922
- The attribute
perInstanceAttribute
ofDebugAppearance
has been made optional and defaults tofalse
. - Fixed a bug that would cause a crash when
debugShowFrustums
is enabled with OIT. #4864 - Added the ability to run the unit tests with a WebGL Stub, which makes all WebGL calls a noop and ignores test expectations that rely on reading back from WebGL. Use the web link from the main index.html or run with
npm run test-webgl-stub
.
- Improved 3D Models
- Added the ability to blend a
Model
with a color/translucency. Addedcolor
,colorBlendMode
, andcolorBlendAmount
properties toModel
,ModelGraphics
, and CZML. Also addedColorBlendMode
enum. #4547 - Added the ability to render a
Model
with a silhouette. AddedsilhouetteColor
andsilhouetteSize
properties toModel
,ModelGraphics
, and CZML. #4314
- Added the ability to blend a
- Improved Labels
- Added new
Label
propertiesshowBackground
,backgroundColor
, andbackgroundPadding
to the primitive, Entity, and CZML layers. - Added support for newlines (
\n
) in CesiumLabel
s and CZML. [#2402] - Added new enum
VerticalOrigin.BASELINE
. Previously,VerticalOrigin.BOTTOM
would sometimes align to the baseline depending on the contents of a label. (CesiumGS#2402)
- Added new
- Fixed translucency in Firefox 50. #4762
- Fixed texture rotation for
RectangleGeometry
. #2737 - Fixed issue where billboards on terrain had an incorrect offset. #4598
- Fixed issue where
globe.getHeight
incorrectly returnedundefined
. #3411 - Fixed a crash when using Entity path visualization with reference properties. #4915
- Fixed a bug that caused
GroundPrimitive
to render incorrectly on systems without theWEBGL_depth_texture
extension. #4747 - Fixed default Mapbox token and added a watermark to notify users that they need to sign up for their own token.
- Fixed glTF models with skinning that used
bindShapeMatrix
. #4722 - Fixed a bug that could cause a "readyImagery is not actually ready" exception with some configurations of imagery layers.
- Fixed
Rectangle.union
to correctly account for rectangles that cross the IDL. #4732 - Fixed tooltips for gallery thumbnails in Sandcastle [#4702].(CesiumGS#4702)
- DataSourceClock.getValue now preserves the provided
result
properties when its properties areundefined
. #4029 - Added
divideComponents
function toCartesian2
,Cartesian3
, andCartesian4
. #4750 - Added
WebGLConstants
enum. Previously, this was part of the private Renderer API. #4731
- Improved terrain/imagery load ordering, especially when the terrain is already fully loaded and a new imagery layer is loaded. This results in a 25% reduction in load times in many cases. #4616
- Improved
Billboard
,Label
, andPointPrimitive
visual quality. #4675- Corrected odd-width and odd-height billboard sizes from being incorrectly rounded up.
- Changed depth testing from
LESS
toLEQUAL
, allowing label glyphs of equal depths to overlap. - Label glyph positions have been adjusted and corrected.
TextureAtlas.borderWidthInPixels
has always been applied to the upper and right edges of each internal texture, but is now also applied to the bottom and left edges of the entire TextureAtlas, guaranteeing borders on all sides regardless of position within the atlas.
- Fall back to packing floats into an unsigned byte texture when floating point textures are unsupported. #4563
- Added support for saving html and css in GitHub Gists. #4125
- Fixed
Cartographic.fromCartesian
when the cartesian is not on the ellipsoid surface. #4611
- Deprecated
- Individual heading, pitch, and roll options to
Transforms.headingPitchRollToFixedFrame
andTransforms.headingPitchRollQuaternion
have been deprecated and will be removed in 1.30. Pass the newHeadingPitchRoll
object instead. #4498
- Individual heading, pitch, and roll options to
- Breaking changes
- The
scene
parameter for creatingBillboardVisualizer
,LabelVisualizer
, andPointVisualizer
has been removed. Instead, pass an instance ofEntityCluster
. #4514
- The
- Fixed an issue where a billboard entity would not render after toggling the show property. #4408
- Fixed a crash when zooming from touch input on viewer initialization. #4177
- Fixed a crash when clustering is enabled, an entity has a label graphics defined, but the label isn't visible. #4414
- Added the ability for KML files to load network links to other KML files within the same KMZ archive. #4477
KmlDataSource
andGeoJsonDataSource
were not honoring theclampToGround
option for billboards and labels and was instead always clamping, reducing performance in cases when it was unneeded. #4459- Fixed
KmlDataSource
features to respecttimespan
andtimestamp
properties of its parents (e.g. Folders or NetworkLinks). #4041 - Fixed a
KmlDataSource
bug where features had duplicate IDs and only one was drawn. #3941 GeoJsonDataSource
now treats null crs values as a no-op instead of failing to load. #4456GeoJsonDataSource
now gracefully handles missing style icons instead of failing to load. #4452- Added
HeadingPitchRoll
#4047HeadingPitchRoll.fromQuaternion
function for retrieving heading-pitch-roll angles from a quaternion.HeadingPitchRoll.fromDegrees
function that returns a new HeadingPitchRoll instance from angles given in degrees.HeadingPitchRoll.clone
function to duplicate HeadingPitchRoll instance.HeadingPitchRoll.equals
andHeadingPitchRoll.equalsEpsilon
functions for comparing two instances.- Added
Matrix3.fromHeadingPitchRoll
Computes a 3x3 rotation matrix from the provided headingPitchRoll.
- Fixed primitive bounding sphere bug that would cause a crash when loading data sources. #4431
- Fixed
BoundingSphere
computation forPrimitive
instances with a modelMatrix. #4428 - Fixed a bug with rotated, textured rectangles. #4430
- Added the ability to specify retina options, such as
@2x.png
, via theMapboxImageryProvider
format
option. #4453. - Fixed a crash that could occur when specifying an imagery provider's
rectangle
option. CesiumGS#4377 - Fixed a crash that would occur when using dynamic
distanceDisplayCondition
properties. #4403 - Fixed several bugs that lead to billboards and labels being improperly clamped to terrain. #4396, #4062
- Fixed a bug affected models with multiple meshes without indices. #4237
- Fixed a glTF transparency bug where
blendFuncSeparate
parameters were loaded in the wrong order. #4435 - Fixed a bug where creating a custom geometry with attributes and indices that have values that are not a typed array would cause a crash. #4419
- Fixed a bug when morphing from 2D to 3D. #4388
- Fixed
RectangleGeometry
rotation when the rectangle is close to the international date line #3874 - Added
clusterBillboards
,clusterLabels
, andcluserPoints
properties toEntityCluster
to selectively cluster screen space entities. - Prevent execution of default device/browser behavior when handling "pinch" touch event/gesture. #4518.
- Fixed a shadow aliasing issue where polygon offset was not being applied. #4559
- Removed an unnecessary reprojection of Web Mercator imagery tiles to the Geographic projection on load. This should improve both visual quality and load performance slightly. #4339
- Added
Transforms.northUpEastToFixedFrame
to compute a 4x4 local transformation matrix from a reference frame with a north-west-up axes. - Improved
Geocoder
usability by selecting text on click #4464 - Added
Rectangle.simpleIntersection
which is an optimized version ofRectangle.intersection
for more constrained input. #4339 - Fixed warning when using Webpack. #4467
- Deprecated
- The
scene
parameter for creatingBillboardVisualizer
,LabelVisualizer
, andPointVisualizer
has been deprecated and will be removed in 1.28. Instead, pass an instance ofEntityCluster
.
- The
- Breaking changes
- Vertex texture fetch is now required to be supported to render polylines. Maximum vertex texture image units must be greater than zero.
- Removed
castShadows
andreceiveShadows
properties fromModel
,Primitive
, andGlobe
. Instead, useshadows
with theShadowMode
enum, e.g.model.shadows = ShadowMode.ENABLED
. Viewer.terrainShadows
now uses theShadowMode
enum instead of a Boolean, e.g.viewer.terrainShadows = ShadowMode.RECEIVE_ONLY
.
- Added support for clustering
Billboard
,Label
andPoint
entities. #4240 - Added
DistanceDisplayCondition
s to all primitives to determine the range interval from the camera for when it will be visible. - Removed the default gamma correction for Bing Maps aerial imagery, because it is no longer an improvement to current versions of the tiles. To restore the previous look, set the
defaultGamma
property of yourBingMapsImageryProvider
instance to 1.3. - Fixed a bug that could lead to incorrect terrain heights when using
HeightmapTerrainData
with an encoding in which actual heights were equal to the minimum representable height. - Fixed a bug in
AttributeCompression.compressTextureCoordinates
anddecompressTextureCoordinates
that could cause a small inaccuracy in the encoded texture coordinates. - Fixed a bug where viewing a model with transparent geometry would cause a crash. #4378
- Added
TrustedServer
collection that controls which servers should havewithCredential
set totrue
on XHR Requests. - Fixed billboard rotation when sized in meters. #3979
- Added
backgroundColor
andborderWidth
properties towriteTextToCanvas
. - Fixed timeline touch events. #4305
- Fixed a bug that was incorrectly clamping Latitudes in KML (s) to the range -PI..PI. Now correctly clamps to -PI/2..PI/2.
- Added
CesiumMath.clampToLatitudeRange
. A convenience function to clamp a passed radian angle to valid Latitudes. - Added
DebugCameraPrimitive
to visualize the view frustum of a camera.
- Breaking changes
- The number and order of arguments passed to
KmlDataSource
unsupportedNodeEvent
listeners have changed to allow better handling of unsupported KML Features. - Changed billboards and labels that are clamped to terrain to have the
verticalOrigin
set toCENTER
by default instead ofBOTTOM
.
- The number and order of arguments passed to
- Deprecated
- Deprecated
castShadows
andreceiveShadows
properties fromModel
,Primitive
, andGlobe
. They will be removed in 1.26. Useshadows
instead with theShadowMode
enum, e.g.model.shadows = ShadowMode.ENABLED
. Viewer.terrainShadows
now uses theShadowMode
enum instead of a Boolean, e.g.viewer.terrainShadows = ShadowMode.RECEIVE_ONLY
. Boolean support will be removed in 1.26.
- Deprecated
- Updated the online model converter to convert OBJ models to glTF with obj2gltf, as well as optimize existing glTF models with the gltf-pipeline. Added an option to bake ambient occlusion onto the glTF model. Also added an option to compress geometry using the glTF WEB3D_quantized_attributes extension.
- Improve label quality for oblique and italic fonts. #3782
- Added
shadows
property to the entity API forBox
,Corridor
,Cylinder
,Ellipse
,Ellipsoid
,Polygon
,Polyline
,PoylineVolume
,Rectangle
, andWall
. #4005 - Added
Camera.cancelFlight
to cancel the existing camera flight if it exists. - Fix overlapping camera flights by always cancelling the previous flight when a new one is created.
- Camera flights now disable collision with the terrain until all of the terrain in the area has finished loading. This prevents the camera from being moved to be above lower resolution terrain when flying to a position close to higher resolution terrain. #4075
- Fixed a crash that would occur if quickly toggling imagery visibility. #4083
- Fixed an issue causing an error if KML has a clamped to ground LineString with color. #4131
- Added logic to
KmlDataSource
defaulting KML Feature node to hidden unless all ancestors are visible. This better matches the KML specification. - Fixed position of KML point features with an altitude mode of
relativeToGround
andclampToGround
. - Added
GeocoderViewModel.keepExpanded
which when set to true will always keep the Geocoder in its expanded state. - Added support for
INT
andUNSIGNED_INT
inComponentDatatype
. - Added
ComponentDatatype.fromName
for getting aComponentDatatype
from its name. - Fixed a crash caused by draping dynamic geometry over terrain. #4255
- Added support in CZML for expressing
BillboardGraphics.alignedAxis
as the velocity vector of an entity, usingvelocityReference
syntax. - Added
urlSchemeZeroPadding
property toUrlTemplateImageryProvider
to allow the numeric parts of a URL, such as{x}
, to be padded with zeros to make them a fixed width. - Added leap second just prior to January 2017. #4092
- Fixed an exception that would occur when switching to 2D view when shadows are enabled. #4051
- Fixed an issue causing entities to disappear when updating multiple entities simultaneously. #4096
- Normalizing the velocity vector produced by
VelocityVectorProperty
is now optional. - Pack functions now return the result array #4156
- Added optional
rangeMax
parameter toMath.toSNorm
andMath.fromSNorm
. #4121 - Removed
MapQuest OpenStreetMap
from the list of demo base layers since direct tile access has been discontinued. See the MapQuest Developer Blog for details. - Fixed PolylinePipeline.generateArc to accept an array of heights when there's only one position #4155
- Breaking changes
GroundPrimitive.initializeTerrainHeights()
must be called and have the returned promise resolve before aGroundPrimitive
can be added synchronously.
- Added terrain clamping to entities, KML, and GeoJSON
- Added
heightReference
property to point, billboard and model entities. - Changed corridor, ellipse, polygon and rectangle entities to conform to terrain by using a
GroundPrimitive
if its material is aColorMaterialProperty
instance and it doesn't have aheight
orextrudedHeight
. Entities with any other type of material are not clamped to terrain. KMLDataSource
- Point and Model features will always respect
altitudeMode
. - Added
clampToGround
property. Whentrue
, clampsPolygon
,LineString
andLinearRing
features to the ground if theiraltitudeMode
isclampToGround
. For this case, lines use a corridor instead of a polyline.
- Point and Model features will always respect
GeoJsonDataSource
- Points with a height will be drawn at that height; otherwise, they will be clamped to the ground.
- Added
clampToGround
property. Whentrue
, clampsPolygon
andLineString
features to the ground. For this case, lines use a corridor instead of a polyline.
- Added Ground Clamping Sandcastle example.
- Added
- Improved performance and accuracy of polygon triangulation by using the earcut library. Loading a GeoJSON with polygons for each country was 2x faster.
- Fix some large polygon triangulations. #2788
- Added support for the glTF extension WEB3D_quantized_attributes. #3241
- Added CZML support for
Box
,Corridor
andCylinder
. Added new CZML properties:Billboard
:width
,height
,heightReference
,scaleByDistance
,translucencyByDistance
,pixelOffsetScaleByDistance
,imageSubRegion
Label
:heightReference
,translucencyByDistance
,pixelOffsetScaleByDistance
Model
:heightReference
,maximumScale
Point
:heightReference
,scaleByDistance
,translucencyByDistance
Ellipsoid
:subdivisions
,stackPartitions
,slicePartitions
- Added
rotatable2D
property to toScene
,CesiumWidget
andViewer
to enable map rotation in 2D mode. #3897 Camera.setView
andCamera.flyTo
now use theorientation.heading
parameter in 2D if the map is rotatable.- Added
Camera.changed
event that will fire whenever the camera has changed more thanCamera.percentageChanged
.percentageChanged
is in the range [0, 1]. - Zooming in toward a target point now keeps the target point at the same screen position. #4016
- Improved
GroundPrimitive
performance. - Some incorrect KML (specifically KML that reuses IDs) is now parsed correctly.
- Added
unsupportedNodeEvent
toKmlDataSource
that is fired whenever an unsupported node is encountered. Clock
now keeps its configuration settings self-consistent. Previously, this was done byAnimationViewModel
and could become inconsistent in certain cases. #4007- Updated Google Cardboard Sandcastle example.
- Added hot air balloon sample model.
- Fixed handling of sampled Rectangle coordinates in CZML. #4033
- Fix "Cannot read property 'x' of undefined" error when calling SceneTransforms.wgs84ToWindowCoordinates in certain cases. #4022
- Re-enabled mouse inputs after a specified number of milliseconds past the most recent touch event.
- Exposed a parametric ray-triangle intersection test to the API as
IntersectionTests.rayTriangleParametric
. - Added
packArray
andunpackArray
functions toCartesian2
,Cartesian3
, andCartesian4
.
- This is an npm only release to fix the improperly published 1.22.1. There were no code changes.
- Fixed default Bing Key and added a watermark to notify users that they need to sign up for their own key.
- Breaking changes
KmlDataSource
now requiresoptions.camera
andoptions.canvas
.
- Added shadows
- See the Sandcastle demo: Shadows.
- Added
Viewer.shadows
andViewer.terrainShadows
. Both are off by default. - Added
Viewer.shadowMap
andScene.shadowMap
for accessing the scene's shadow map. - Added
castShadows
andreceiveShadows
properties toModel
andEntity.model
, and options to theModel
constructor andModel.fromGltf
. - Added
castShadows
andreceiveShadows
properties toPrimitive
, and options to thePrimitive
constructor. - Added
castShadows
andreceiveShadows
properties toGlobe
.
- Added
heightReference
to models so they can be drawn on terrain. - Added support for rendering models in 2D and Columbus view.
- Added option to enable sun position based atmosphere color when
Globe.enableLighting
istrue
. 3439 - Improved KML NetworkLink compatibility by supporting the
Url
tag. #3895. - Added
VelocityVectorProperty
so billboard's aligned axis can follow the velocity vector. #3908 - Improve memory management for entity billboard/label/point/path visualization.
- Added
terrainProviderChanged
event toScene
andGlobe
- Added support for hue, saturation, and brightness color shifts in the atmosphere in
SkyAtmosphere
. See the new Sandcastle example: Atmosphere Color. #3439 - Fixed exaggerated terrain tiles disappearing. #3676
- Fixed a bug that could cause incorrect normals to be computed for exaggerated terrain, especially for low-detail tiles. #3904
- Fixed a bug that was causing errors to be thrown when picking and terrain was enabled. #3779
- Fixed a bug that was causing the atmosphere to disappear when only atmosphere is visible. #3347
- Fixed infinite horizontal 2D scrolling in IE/Edge. #3893
- Fixed a bug that would cause a crash is the camera was on the IDL in 2D. #3951
- Fixed issue where a repeating model animation doesn't play when the clock is set to a time before the model was created. #3932
- Fixed
Billboard.computeScreenSpacePosition
returning the wrong y coordinate. #3920 - Fixed issue where labels were disappearing. #3730
- Fixed issue where billboards on terrain didn't always update when the terrain provider was changed. #3921
- Fixed issue where
Matrix4.fromCamera
was taking eye/target instead of position/direction. #3927 - Added
Scene.nearToFarDistance2D
that determines the size of each frustum of the multifrustum in 2D. - Added
Matrix4.computeView
. - Added
CullingVolume.fromBoundingSphere
. - Added
debugShowShadowVolume
toGroundPrimitive
. - Fix issue with disappearing tiles on Linux. #3889
- Breaking changes
- Removed
ImageryMaterialProperty.alpha
. UseImageryMaterialProperty.color.alpha
instead. - Removed
OpenStreetMapImageryProvider
. UsecreateOpenStreetMapImageryProvider
instead.
- Removed
- Added ability to import and export Sandcastle example using GitHub Gists. #3795
- Added
PolygonGraphics.closeTop
,PolygonGraphics.closeBottom
, andPolygonGeometry
options for creating an extruded polygon without a top or bottom. #3879 - Added support for polyline arrow material to
CzmlDataSource
#3860 - Fixed issue causing the sun not to render. #3801
- Fixed issue where
Camera.flyTo
would not work with a rectangle in 2D. #3688 - Fixed issue causing the fog to go dark and the atmosphere to flicker when the camera clips the globe. #3178
- Fixed a bug that caused an exception and rendering to stop when using
ArcGisMapServerImageryProvider
to connect to a MapServer specifying the Web Mercator projection and a fullExtent bigger than the valid extent of the projection. #3854 - Fixed issue causing an exception when switching scene modes with an active KML network link. #3865
- Breaking changes
- Removed
TileMapServiceImageryProvider
. UsecreateTileMapServiceImageryProvider
instead. - Removed
GroundPrimitive.geometryInstance
. UseGroundPrimitive.geometryInstances
instead. - Removed
definedNotNull
. Usedefined
instead. - Removed ability to rotate the map in 2D due to the new infinite 2D scrolling feature.
- Removed
- Deprecated
- Deprecated
ImageryMaterialProperty.alpha
. It will be removed in 1.21. UseImageryMaterialProperty.color.alpha
instead.
- Deprecated
- Added infinite horizontal scrolling in 2D.
- Added a code example to Sandcastle for the new 1-meter Pennsylvania terrain service.
- Fixed loading for KML
NetworkLink
to not append a?
if there isn't a query string. - Fixed handling of non-standard KML
styleUrl
references within aStyleMap
. - Fixed issue in KML where StyleMaps from external documents fail to load.
- Added translucent and colored image support to KML ground overlays
- Fix bug when upsampling exaggerated terrain where the terrain heights were exaggerated at twice the value. #3607
- All external urls are now https by default to make Cesium work better with non-server-based applications. #3650
GeoJsonDataSource
now handles CRSurn:ogc:def:crs:EPSG::4326
- Fixed
TimeIntervalCollection.removeInterval
bug that resulted in too many intervals being removed. GroundPrimitive
throws aDeveloperError
when passed an unsupported geometry type instead of crashing.- Fix issue with billboard collections that have at least one billboard with an aligned axis and at least one billboard without an aligned axis. #3318
- Fix a race condition that would cause the terrain to continue loading and unloading or cause a crash when changing terrain providers. #3690
- Fix issue where the
GroundPrimitive
volume was being clipped by the far plane. #3706 - Fixed issue where
Camera.computeViewRectangle
was incorrect when crossing the international date line. #3717 - Added
Rectangle
result parameter toCamera.computeViewRectangle
. - Fixed a reentrancy bug in
EntityCollection.collectionChanged
. #3739 - Fixed a crash that would occur if you added and removed an
Entity
with a path without ever actually rendering it. #3738 - Fixed issue causing parts of geometry and billboards/labels to be clipped. #3748
- Fixed bug where transparent image materials were drawn black.
- Fixed
Color.fromCssColorString
from reusing the inputresult
alpha value in some cases.
- Breaking changes
PolygonGeometry
now changes the inputCartesian3
values ofoptions.positions
so that they are on the ellipsoid surface. This only affects polygons created synchronously withoptions.perPositionHeight = false
when the positions have a non-zero height and the same positions are used for multiple entities. In this case, make a copy of theCartesian3
values used for the polygon positions.
- Deprecated
- Deprecated
KmlDataSource
taking a proxy object. It will throw an exception in 1.21. It now should take aoptions
object with requiredcamera
andcanvas
parameters. - Deprecated
definedNotNull
. It will be removed in 1.20. Usedefined
instead, which now checks fornull
as well asundefined
.
- Deprecated
- Improved KML support.
- Added support for
NetworkLink
refresh modesonInterval
,onExpire
andonStop
. Includes support forviewboundScale
,viewFormat
,httpQuery
. - Added partial support for
NetworkLinkControl
includingminRefreshPeriod
,cookie
andexpires
. - Added support for local
StyleMap
. Thehighlight
style is still ignored. - Added support for
root://
URLs. - Added more warnings for unsupported features.
- Improved style processing in IE.
- Added support for
Viewer.zoomTo
andViewer.flyTo
now accept anImageryLayer
instance as a valid parameter and will zoom to the extent of the imagery.- Added
Camera.flyHome
function for resetting the camera to the home view. Camera.flyTo
now honors max and min zoom settings inScreenSpaceCameraController
.- Added
show
property toCzmlDataSource
,GeoJsonDataSource
,KmlDataSource
,CustomDataSource
, andEntityCollection
for easily toggling display of entire data sources. - Added
owner
property toCompositeEntityCollection
. - Added
DataSouceDisplay.ready
for determining whether or not static data associated with the Entity API has been rendered. - Fix an issue when changing a billboard's position property multiple times per frame. #3511
- Fixed texture coordinates for polygon with position heights.
- Fixed issue that kept
GroundPrimitive
with anEllipseGeometry
from having arotation
. - Fixed crash caused when drawing
CorridorGeometry
andCorridorOutlineGeometry
synchronously. - Added the ability to create empty geometries. Instead of throwing
DeveloperError
,undefined
is returned. - Fixed flying to
latitude, longitude, height
in the Geocoder. - Fixed bug in
IntersectionTests.lineSegmentSphere
where the ray origin was not set. - Added
length
toMatrix2
,Matrix3
andMatrix4
so these can be used as array-like objects. - Added
Color.add
,Color.subtract
,Color.multiply
,Color.divide
,Color.mod
,Color.multiplyByScalar
, andColor.divideByScalar
functions to perform arithmetic operations on colors. - Added optional
result
parameter toColor.fromRgba
,Color.fromHsl
andColor.fromCssColorString
. - Fixed bug causing
navigator is not defined
reference error when Cesium is used with Node.js. - Upgraded Knockout from version 3.2.0 to 3.4.0.
- Fixed hole that appeared in the top of in dynamic ellipsoids
- Breaking changes
- Removed support for
CESIUM_binary_glTF
. UseKHR_binary_glTF
instead, which is the default for the online COLLADA-to-glTF converter.
- Removed support for
- Deprecated
- Deprecated
GroundPrimitive.geometryInstance
. It will be removed in 1.20. UseGroundPrimitive.geometryInstances
instead. - Deprecated
TileMapServiceImageryProvider
. It will be removed in 1.20. UsecreateTileMapServiceImageryProvider
instead.
- Deprecated
- Reduced the amount of CPU memory used by terrain by ~25% in Chrome.
- Added a Sandcastle example to "star burst" overlapping billboards and labels.
- Added
VRButton
which is a simple, single-button widget that toggles VR mode. It is off by default. To enable the button, set thevrButton
option toViewer
totrue
. Only Cardboard for mobile is supported. More VR devices will be supported when the WebVR API is more stable. - Added
Scene.useWebVR
to switch the scene to use stereoscopic rendering. - Cesium now honors
window.devicePixelRatio
on browsers that support the CSSimageRendering
attribute. This greatly improves performance on mobile devices and high DPI displays by rendering at the browser-recommended resolution. This also reduces bandwidth usage and increases battery life in these cases. To enable the previous behavior, use the following code:if(Cesium.FeatureDetection.supportsImageRenderingPixelated()){ viewer.resolutionScale = window.devicePixelRatio; }
GroundPrimitive
now supports batching geometry for better performance.- Improved compatibility with glTF KHR_binary_glTF and KHR_materials_common extensions
- Added
ImageryLayer.getViewableRectangle
to make it easy to get the effective bounds of an imagery layer. - Improved compatibility with glTF KHR_binary_glTF and KHR_materials_common extensions
- Fixed a picking issue that sometimes prevented objects being selected. #3386
- Fixed cracking between tiles in 2D. #3486
- Fixed creating bounding volumes for
GroundPrimitive
s whose containing rectangle has a width greater than pi. - Fixed incorrect texture coordinates for polygons with large height.
- Fixed camera.flyTo not working when in 2D mode and only orientation changes
- Added
UrlTemplateImageryProvider.reinitialize
for changing imagery provider options without creating a new instance. UrlTemplateImageryProvider
now accepts a promise to anoptions
object in addition to taking the object directly.- Fixed a bug that prevented WMS feature picking from working with THREDDS XML and msGMLOutput in Internet Explorer 11.
- Added
Scene.useDepthPicking
to enable or disable picking using the depth buffer. #3390 - Added
BoundingSphere.fromEncodedCartesianVertices
to create bounding volumes from parallel arrays of the upper and lower bits ofEncodedCartesian3
s. - Added helper functions:
getExtensionFromUri
,getAbsoluteUri
, andMath.logBase
. - Added
Rectangle.union
andRectangle.expand
. - TMS support now works with newer versions of gdal2tiles.py generated layers.
createTileMapServiceImageryProvider
. Tilesets generated with older gdal2tiles.py versions may need to have theflipXY : true
option set to load correctly.
- Breaking changes
- Removed
Camera.viewRectangle
. UseCamera.setView({destination: rectangle})
instead. - Removed
RectanglePrimitive
. UseRectangleGeometry
orEntity.rectangle
instead. - Removed
Polygon
. UsePolygonGeometry
orEntity.polygon
instead. - Removed
OrthographicFrustum.getPixelSize
. UseOrthographicFrustum.getPixelDimensions
instead. - Removed
PerspectiveFrustum.getPixelSize
. UsePerspectiveFrustum.getPixelDimensions
instead. - Removed
PerspectiveOffCenterFrustum.getPixelSize
. UsePerspectiveOffCenterFrustum.getPixelDimensions
instead. - Removed
Scene\HeadingPitchRange
. UseCore\HeadingPitchRange
instead. - Removed
jsonp
. UseloadJsonp
instead. - Removed
HeightmapTessellator
from the public API. It is an implementation details. - Removed
TerrainMesh
from the public API. It is an implementation details.
- Removed
- Reduced the amount of GPU and CPU memory used by terrain by using compression. The CPU memory was reduced by up to 40%.
- Added the ability to manipulate
Model
node transformations via CZML and the Entity API. See the new Sandcastle example: CZML Model - Node Transformations. #3316 - Added
Globe.tileLoadProgressEvent
, which is raised when the length of the tile load queue changes, enabling incremental loading indicators. - Added support for msGMLOutput and Thredds server feature information formats to
GetFeatureInfoFormat
andWebMapServiceImageryProvider
. - Added dynamic
enableFeaturePicking
toggle to all ImageryProviders that support feature picking. - Fixed disappearing terrain while fog is active. #3335
- Fixed short segments in
CorridorGeometry
andPolylineVolumeGeometry
. #3293 - Fixed
CorridorGeometry
with nearly colinear points. #3320 - Added missing points to
EllipseGeometry
andEllipseOutlineGeometry
. #3078 Rectangle.fromCartographicArray
now uses the smallest rectangle regardess of whether or not it crosses the international date line. #3227- Added
TranslationRotationScale
property, which represents an affine transformation defined by a translation, rotation, and scale. - Added
Matrix4.fromTranslationRotationScale
. - Added
NodeTransformationProperty
, which is aProperty
value that is defined by independenttranslation
,rotation
, andscale
Property
instances. - Added
PropertyBag
, which is aProperty
whose value is a key-value mapping of property names to the computed value of other properties. - Added
ModelGraphics.runAnimations
which is a booleanProperty
indicating if all model animations should be started after the model is loaded. - Added
ModelGraphics.nodeTransformations
which is aPropertyBag
ofTranslationRotationScale
properties to be applied to a loaded model. - Added CZML support for new
runAnimations
andnodeTransformations
properties on themodel
packet.
- Deprecated
- Deprecated
HeightmapTessellator
. It will be removed in 1.17. - Deprecated
TerrainMesh
. It will be removed in 1.17. - Deprecated
OpenStreetMapImageryProvider
. It will be removed in 1.18. UsecreateOpenStreetMapImageryProvider
instead.
- Deprecated
- Improved terrain performance by up to 35%. Added support for fog near the horizon, which improves performance by rendering less terrain tiles and reduces terrain tile requests. This is enabled by default. See
Scene.fog
for options. #3154 - Added terrain exaggeration. Enabled on viewer creation with the exaggeration scalar as the
terrainExaggeration
option. - Added support for incrementally loading textures after a Model is ready. This allows the Model to be visible as soon as possible while its textures are loaded in the background.
ImageMaterialProperty.image
now accepts anHTMLVideoElement
. You can also assign a video element directly to an Entitymaterial
property.Material
image uniforms now accept andHTMLVideoElement
anywhere it could previously take aCanvas
element.- Added
VideoSynchronizer
helper object for keeping anHTMLVideoElement
in sync with a scene's clock. - Fixed an issue with loading skeletons for skinned glTF models. #3224
- Fixed an issue with tile selection when below the surface of the ellipsoid. #3170
- Added
Cartographic.fromCartesian
function. - Added
createOpenStreetMapImageryProvider
function to replace theOpenStreetMapImageryProvider
class. This function returns a constructedUrlTemplateImageryProvider
. GeoJsonDataSource.load
now takes an optionaldescribeProperty
function for generating feature description properties. #3140- Added
ImageryProvider.readyPromise
andTerrainProvider.readyPromise
and implemented it in all terrain and imagery providers. This is a promise which resolves whenready
becomes true and rejected if there is an error during initialization. #3175 - Fixed an issue where the sun texture is not generated correctly on some mobile devices. #3141
- Fixed a bug that caused setting
Entity.parent
toundefined
to throw an exception. #3169 - Fixed a bug which caused
Entity
polyline graphics to be incorrect when a scene's ellipsoid was not WGS84. #3174 - Entities have a reference to their entity collection and to their owner (usually a data source, but can be a
CompositeEntityCollection
). - Added
ImageMaterialProperty.alpha
and aalpha
uniform toImage
andMaterial
types to control overall image opacity. It defaults to 1.0, fully opaque. - Added
Camera.getPixelSize
function to get the size of a pixel in meters based on the current view. - Added
Camera.distanceToBoundingSphere
function. - Added
BoundingSphere.fromOrientedBoundingBox
function. - Added utility function
getBaseUri
, which given a URI with or without query parameters, returns the base path of the URI. - Added
Queue.peek
to return the item at the front of a Queue. - Fixed
JulianDate.fromIso8601
so that it correctly parses theYYYY-MM-DDThh:mmTZD
format. - Added
Model.maximumScale
andModelGraphics.maximumScale
properties, giving an upper limit for minimumPixelSize. - Fixed glTF implementation to read the version as a string as per the specification and to correctly handle backwards compatibility for axis-angle rotations in glTF 0.8 models.
- Fixed a bug in the deprecated
jsonp
that prevented it from returning a promise. Its replacement,loadJsonp
, was unaffected. - Fixed a bug where loadWithXhr would reject the returned promise with successful HTTP responses (2xx) that weren't 200.
- Breaking changes
- Deleted old
<subfolder>/package.json
and*.profile.js
files, not used since Cesium moved away from a Dojo-based build years ago. This will allow future compatibility with newer systems like Browserify and Webpack.
- Deleted old
- Deprecated
- Deprecated
Camera.viewRectangle
. It will be removed in 1.17. UseCamera.setView({destination: rectangle})
instead. - The following options to
Camera.setView
have been deprecated and will be removed in 1.17:position
. Usedestination
instead.positionCartographic
. Convert to aCartesian3
and usedestination
instead.heading
,pitch
androll
. Useorientation.heading/pitch/roll
instead.
- Deprecated
CESIUM_binary_glTF
extension support for glTF models. KHR_binary_glTF should be used instead.CESIUM_binary_glTF
will be removed in 1.18. Reconvert models using the online model converter. - Deprecated
RectanglePrimitive
. It will be removed in 1.17. UseRectangleGeometry
orEntity.rectangle
instead. - Deprecated
EllipsoidPrimitive
. It will be removed in 1.17. UseEllipsoidGeometry
orEntity.ellipsoid
instead. - Made
EllipsoidPrimitive
private, useEllipsoidGeometry
orEntity.ellipsoid
instead. - Deprecated
BoxGeometry.minimumCorner
andBoxGeometry.maximumCorner
. These will be removed in 1.17. UseBoxGeometry.minimum
andBoxGeometry.maximum
instead. - Deprecated
BoxOutlineGeometry.minimumCorner
andBoxOutlineGeometry.maximumCorner
. These will be removed in 1.17. UseBoxOutlineGeometry.minimum
andBoxOutlineGeometry.maximum
instead. - Deprecated
OrthographicFrustum.getPixelSize
. It will be removed in 1.17. UseOrthographicFrustum.getPixelDimensions
instead. - Deprecated
PerspectiveFrustum.getPixelSize
. It will be removed in 1.17. UsePerspectiveFrustum.getPixelDimensions
instead. - Deprecated
PerspectiveOffCenterFrustum.getPixelSize
. It will be removed in 1.17. UsePerspectiveOffCenterFrustum.getPixelDimensions
instead. - Deprecated
Scene\HeadingPitchRange
. It will be removed in 1.17. UseCore\HeadingPitchRange
instead. - Deprecated
jsonp
. It will be removed in 1.17. UseloadJsonp
instead.
- Deprecated
- Added support for the glTF 1.0 draft specification.
- Added support for the glTF extensions KHR_binary_glTF and KHR_materials_common.
- Decreased GPU memory usage in
BillboardCollection
andLabelCollection
by using WebGL instancing. - Added CZML examples to Sandcastle. See the new CZML tab.
- Changed
Camera.setView
to take the same parameter options asCamera.flyTo
.options.destination
takes a rectangle,options.orientation
works with heading/pitch/roll or direction/up, andoptions.endTransform
was added. #3100 - Fixed token issue in
ArcGisMapServerImageryProvider
. ImageryLayerFeatureInfo
now has animageryLayer
property, indicating the layer that contains the feature.- Made
TileMapServiceImageryProvider
andCesiumTerrainProvider
work properly when the provided base url contains query parameters and fragments. - The WebGL setting of
failIfMajorPerformanceCaveat
now defaults tofalse
, which is the WebGL default. This improves compatibility with out-of-date drivers and remote desktop sessions. Cesium will run slower in these cases instead of simply failing to load. #3108 - Fixed the issue where the camera inertia takes too long to finish causing the camera move events to fire after it appears to. #2839
- Make KML invalid coordinate processing match Google Earth behavior. #3124
- Added
BoxOutlineGeometry.fromAxisAlignedBoundingBox
andBoxGeometry.fromAxisAlignedBoundingBox
functions. - Switched to gulp for all build tasks.
Java
andant
are no longer required to develop Cesium. #3106 - Updated
requirejs
from 2.1.9 to 2.1.20. #3107 - Updated
almond
from 0.2.6 to 0.3.1. #3107
- Fixed issues causing the terrain and sky to disappear when the camera is near the surface. #2415 and #2271
- Changed the
ScreenSpaceCameraController.minimumZoomDistance
default from20.0
to1.0
. - Added
Billboard.sizeInMeters
.true
sets the billboard size to be measured in meters; otherwise, the size of the billboard is measured in pixels. Also added support for billboardsizeInMeters
to entities and CZML. - Fixed a bug in
AssociativeArray
that would cause unbounded memory growth when adding and removing lots of items. - Provided a workaround for Safari 9 where WebGL constants can't be accessed through
WebGLRenderingContext
. Now constants are hard-coded inWebGLConstants
. #2989 - Added a workaround for Chrome 45, where the first character in a label with a small font size would not appear. #3011
- Added
subdomains
option to theWebMapTileServiceImageryProvider
constructor. - Added
subdomains
option to theWebMapServiceImageryProvider
constructor. - Fix zooming in 2D when tracking an object. The zoom was based on location rather than the tracked object. #2991
- Added
options.credit
parameter toMapboxImageryProvider
. - Fixed an issue with drill picking at low frame rates that would cause a crash. #3010
- Fixed a bug that prevented
setView
from working across all scene modes. - Fixed a bug that caused
camera.positionWC
to occasionally return the incorrect value. - Used all the template urls defined in the CesiumTerrain provider.#3038
-
Breaking changes
- Remove deprecated
AxisAlignedBoundingBox.intersect
andBoundingSphere.intersect
. UseBoundingSphere.intersectPlane
instead. - Remove deprecated
getFeatureInfoAsGeoJson
andgetFeatureInfoAsXml
constructor parameters fromWebMapServiceImageryProvider
.
- Remove deprecated
-
Added support for
GroundPrimitive
which works much likePrimitive
but drapes geometry over terrain. Valid geometries that can be draped on terrain areCircleGeometry
,CorridorGeometry
,EllipseGeometry
,PolygonGeometry
, andRectangleGeometry
. Because of the cutting edge nature of this feature in WebGL, it requires the EXT_frag_depth extension, which is currently only supported in Chrome, Firefox, and Edge. Apple support is expected in iOS 9 and MacOS Safari 9. Android support varies by hardware and IE11 will most likely never support it. You can use webglreport.com to verify support for your hardware. Finally, this feature is currently only supported in Primitives and not yet available via the Entity API. #2865 -
Added
Scene.groundPrimitives
, which is a primitive collection likeScene.primitives
, but forGroundPrimitive
instances. It allows custom z-ordering. #2960 For example:// draws the ellipse on top of the rectangle var ellipse = scene.groundPrimitives.add(new Cesium.GroundPrimitive({...})); var rectangle = scene.groundPrimitives.add(new Cesium.GroundPrimitive({...})); // move the rectangle to draw on top of the ellipse scene.groundPrimitives.raise(rectangle);
-
Added
reverseZ
tag toUrlTemplateImageryProvider
. #2961 -
Added
BoundingSphere.isOccluded
andOrientedBoundingBox.isOccluded
to determine if the volumes are occluded by anOccluder
. -
Added
distanceSquaredTo
andcomputePlaneDistances
functions toOrientedBoundingBox
. -
Fixed a GLSL precision issue that enables Cesium to support Mali-400MP GPUs and other mobile GPUs where GLSL shaders did not previously compile. #2984
-
Fixed an issue where extruded
PolygonGeometry
was always extruding to the ellipsoid surface instead of specified height. #2923 -
Fixed an issue where non-feature nodes prevented KML documents from loading. #2945
-
Fixed an issue where
JulianDate
would not parse certain dates properly. #405
- Breaking changes
- Remove deprecated
ObjectOrientedBoundingBox
. UseOrientedBoundingBox
instead.
- Remove deprecated
- Added
MapboxImageryProvider
to load imagery from Mapbox. - Added
maximumHeight
option toViewer.flyTo
. #2868 - Added picking support to
UrlTemplateImageryProvider
. - Added ArcGIS token-based authentication support to
ArcGisMapServerImageryProvider
. - Added proxy support to
ArcGisMapServerImageryProvider
forpickFeatures
requests. - The default
CTRL + Left Click Drag
mouse behavior is now duplicated forCTRL + Right Click Drag
for better compatibility with Firefox on Mac OS #2872. - Fixed incorrect texture coordinates for
WallGeometry
#2872 - Fixed
WallGeometry
bug that caused walls covering a short distance not to render. #2897 - Fixed
PolygonGeometry
clockwise winding order bug. - Fixed extruded
RectangleGeometry
bug for small heights. #2823 - Fixed
BillboardCollection
bounding sphere for billboards with a non-center vertical origin. #2894 - Fixed a bug that caused
Camera.positionCartographic
to be incorrect. #2838 - Fixed calling
Scene.pickPosition
after callingScene.drillPick
. #2813 - The globe depth is now rendered during picking when
Scene.depthTestAgainstTerrain
istrue
so objects behind terrain are not picked. - Fixed Cesium.js failing to parse in IE 8 and 9. While Cesium doesn't work in IE versions less than 11, this allows for more graceful error handling.
- Breaking changes
- Removed
Scene.fxaaOrderIndependentTranslucency
, which was deprecated in 1.10. UseScene.fxaa
which is nowtrue
by default. - Removed
Camera.clone
, which was deprecated in 1.10.
- Removed
- Deprecated
- The STK World Terrain url
cesiumjs.org/stk-terrain/world
has been deprecated, useassets.agi.com/stk-terrain/world
instead. A redirect will be in place until 1.14. - Deprecated
AxisAlignedBoundingBox.intersect
andBoundingSphere.intersect
. These will be removed in 1.13. UseAxisAlignedBoundingBox.intersectPlane
andBoundingSphere.intersectPlane
instead. - Deprecated
ObjectOrientedBoundingBox
. It will be removed in 1.12. UseOrientedBoundingBox
instead.
- The STK World Terrain url
- Improved camera flights. #2825
- The camera now zooms to the point under the mouse cursor.
- Added a new camera mode for horizon views. When the camera is looking at the horizon and a point on terrain above the camera is picked, the camera moves in the plane containing the camera position, up and right vectors.
- Improved terrain and imagery performance and reduced tile loading by up to 50%, depending on the camera view, by using the new
OrientedBoundingBox
for view frustum culling. See Terrain Culling with Oriented Bounding Boxes. - Added
UrlTemplateImageryProvider
. This new imagery provider allows access to a wide variety of imagery sources, including OpenStreetMap, TMS, WMTS, WMS, WMS-C, and various custom schemes, by specifying a URL template to use to request imagery tiles. - Fixed flash/streak rendering artifacts when picking. #2790, #2811
- Fixed 2D and Columbus view lighting issue. #2635.
- Fixed issues with material caching which resulted in the inability to use an image-based material multiple times. #2821
- Improved
Camera.viewRectangle
so that the specified rectangle is now better centered on the screen. #2764 - Fixed a crash when
viewer.zoomTo
orviewer.flyTo
were called immediately before or during a scene morph. #2775 - Fixed an issue where
Camera
functions would throw an exception if used from within aScene.morphComplete
callback. #2776 - Fixed camera flights that ended up at the wrong position in Columbus view. #802
- Fixed camera flights through the map in 2D. #804
- Fixed strange camera flights from opposite sides of the globe. #1158
- Fixed camera flights that wouldn't fly to the home view after zooming out past it. #1400
- Fixed flying to rectangles that cross the IDL in Columbus view and 2D. #2093
- Fixed flights with a pitch of -90 degrees. #2468
Model
can now load Binary glTF from aUint8Array
.- Fixed a bug in
ImageryLayer
that could cause an exception and the render loop to stop when the base layer did not cover the entire globe. - The performance statistics displayed when
scene.debugShowFramesPerSecond === true
can now be styled using thecesium-performanceDisplay
CSS classes inshared.css
#2779. - Added
Plane.fromCartesian4
. - Added
Plane.ORIGIN_XY_PLANE
/ORIGIN_YZ_PLANE
/ORIGIN_ZX_PLANE
constants for commonly-used planes. - Added
Matrix2
/Matrix3
/Matrix4.ZERO
constants. - Added
Matrix2
/Matrix3.multiplyByScale
for multiplying against non-uniform scales. - Added
projectPointToNearestOnPlane
andprojectPointsToNearestOnPlane
toEllipsoidTangentPlane
to project 3D points to the nearest 2D point on anEllipsoidTangentPlane
. - Added
EllipsoidTangentPlane.plane
property to get thePlane
for the tangent plane. - Added
EllipsoidTangentPlane.xAxis
/yAxis
/zAxis
properties to get the local coordinate system of the tangent plane. - Add
QuantizedMeshTerrainData
constructor argumentorientedBoundingBox
. - Add
TerrainMesh.orientedBoundingBox
which holds theOrientedBoundingBox
for the mesh for a single terrain tile.
- Breaking changes
- Existing bookmarks to documentation of static members have changed #2757.
- Removed
InfoBoxViewModel.defaultSanitizer
,InfoBoxViewModel.sanitizer
, andCesium.sanitize
, which was deprecated in 1.7. - Removed
InfoBoxViewModel.descriptionRawHtml
, which was deprecated in 1.7. UseInfoBoxViewModel.description
instead. - Removed
GeoJsonDataSource.fromUrl
, which was deprecated in 1.7. UseGeoJsonDataSource.load
instead. Unlike fromUrl, load can take either a url or parsed JSON object and returns a promise to a new instance, rather than a new instance. - Removed
GeoJsonDataSource.prototype.loadUrl
, which was deprecated in 1.7. Instead, pass a url as the first parameter toGeoJsonDataSource.prototype.load
. - Removed
CzmlDataSource.prototype.loadUrl
, which was deprecated in 1.7. Instead, pass a url as the first parameter toCzmlDataSource.prototype.load
. - Removed
CzmlDataSource.prototype.processUrl
, which was deprecated in 1.7. Instead, pass a url as the first parameter toCzmlDataSource.prototype.process
. - Removed the
sourceUri
parameter to allCzmlDataSource
load and process functions, which was deprecated in 1.7. Instead pass anoptions
object withsourceUri
property. - Removed
PolygonGraphics.positions
which was deprecated in 1.6. Instead, usePolygonGraphics.hierarchy
. - Existing bookmarks to documentation of static members changed. #2757
- Deprecated
WebMapServiceImageryProvider
constructor parametersoptions.getFeatureInfoAsGeoJson
andoptions.getFeatureInfoAsXml
were deprecated and will be removed in Cesium 1.13. Useoptions.getFeatureInfoFormats
instead.- Deprecated
Camera.clone
. It will be removed in 1.11. - Deprecated
Scene.fxaaOrderIndependentTranslucency
. It will be removed in 1.11. UseScene.fxaa
which is nowtrue
by default. - The Cesium sample models are now in the Binary glTF format (
.bgltf
). Cesium will also include the models as plain glTF (.gltf
) until 1.13. Cesium support for.gltf
will not be removed.
- Added
view
query parameter to the CesiumViewer app, which sets the initial camera position using longitude, latitude, height, heading, pitch and roll. For example:http://cesiumjs.org/Cesium/Build/Apps/CesiumViewer/index.html/index.html?view=-75.0,40.0,300.0,9.0,-13.0,3.0
- Added
Billboard.heightReference
andLabel.heightReference
to clamp billboards and labels to terrain. - Added support for the CESIUM_binary_glTF extension for loading binary blobs of glTF to
Model
. See Faster 3D Models with Binary glTF. - Added support for the CESIUM_RTC glTF extension for high-precision rendering to
Model
. - Added
PointPrimitive
andPointPrimitiveCollection
, which are faster and use less memory than billboards with circles. - Changed
Entity.point
to use the newPointPrimitive
instead of billboards. This does not change theEntity.point
API. - Added
Scene.pickPosition
to reconstruct the WGS84 position from window coordinates. - The default mouse controls now support panning and zooming on 3D models and other opaque geometry.
- Added
Camera.moveStart
andCamera.moveEnd
events. - Added
GeocoderViewModel.complete
event. Triggered after the camera flight is completed. KmlDataSource
can now load a KML file that uses explicit XML namespacing, e.g.kml:Document
.- Setting
Entity.show
now properly toggles the display of all descendant entities, previously it only affected its direct children. - Fixed a bug that sometimes caused
Entity
instances withshow
set to false to reappear when newEntity
geometry is added. #2686 - Added a
Rotation
object which, when passed toSampledProperty
, always interpolates values towards the shortest angle. Also hooked up CZML to useRotation
for all time-dynamic rotations. - Fixed a bug where moon rendered in front of foreground geometry. #1964
- Fixed a bug where the sun was smeared when the skybox/stars was disabled. #1829
TileProviderError
now optionally takes anerror
parameter with more details of the error or exception that occurred.ImageryLayer
passes that information through when tiles fail to load. This allows tile provider error handling to take a different action when a tile returns a 404 versus a 500, for example.ArcGisMapServerImageryProvider
now has amaximumLevel
constructor parameter.ArcGisMapServerImageryProvider
picking now works correctly when thelayers
parameter is specified. Previously, it would pick from all layers even if only displaying a subset.WebMapServiceImageryProvider.pickFeatures
now works with WMS servers, such as Google Maps Engine, that can only return feature information in HTML format.WebMapServiceImageryProvider
now accepts an array ofGetFeatureInfoFormat
instances that it will use to obtain information about the features at a given position on the globe. This enables an arbitraryinfo_format
to be passed to the WMS server, and an arbitrary JavaScript function to be used to interpret the response.- Fixed a crash caused by
ImageryLayer
attempting to generate mipmaps for textures that are not a power-of-two size. - Fixed a bug where
ImageryLayerCollection.pickImageryLayerFeatures
would return incorrect results when picking from a terrain tile that was partially covered by correct-level imagery and partially covered by imagery from an ancestor level. - Fixed incorrect counting of
debug.tilesWaitingForChildren
inQuadtreePrimitive
. - Added
throttleRequestsByServer.maximumRequestsPerServer
property. - Changed
createGeometry
to load individual-geometry workers using a CommonJS-stylerequire
when run in a CommonJS-like environment. - Added
buildModuleUrl.setBaseUrl
function to allow the Cesium base URL to be set without the use of the global CESIUM_BASE_URL variable. - Changed
ThirdParty/zip
to defer its call tobuildModuleUrl
until it is needed, rather than executing during module loading. - Added optional drilling limit to
Scene.drillPick
. - Added optional
ellipsoid
parameter to construction options of imagery and terrain providers that were lacking it. Note that terrain bounding spheres are precomputed on the server, so any supplied terrain ellipsoid must match the one used by the server. - Added debug option to
Scene
to show the depth buffer information for a specified view frustum slice and exposed capability inCesiumInspector
widget. - Added new leap second for 30 June 2015 at UTC 23:59:60.
- Upgraded Autolinker from version 0.15.2 to 0.17.1.
- Breaking changes
- Removed
ColorMaterialProperty.fromColor
, previously deprecated in 1.6. Pass aColor
directly to theColorMaterialProperty
constructor instead. - Removed
CompositeEntityCollection.entities
andEntityCollection.entities
, both previously deprecated in 1.6. UseCompositeEntityCollection.values
andEntityCollection.values
instead. - Removed
DataSourceDisplay.getScene
andDataSourceDisplay.getDataSources
, both previously deprecated in 1.6. UseDataSourceDisplay.scene
andDataSourceDisplay.dataSources
instead. Entity
no longer takes a string id as its constructor argument. Pass an options object withid
property instead. This was previously deprecated in 1.6.- Removed
Model.readyToRender
, previously deprecated in 1.6. UseModel.readyPromise
instead.
- Removed
- Entity
material
properties andMaterial
uniform values can now take acanvas
element in addition to an image or url. #2667 - Fixed a bug which caused
Entity.viewFrom
to be ignored when flying to, zooming to, or tracking an Entity. #2628 - Fixed a bug that caused
Corridor
andPolylineVolume
geometry to be incorrect for sharp corners #2626 - Fixed crash when modifying a translucent entity geometry outline. #2630
- Fixed crash when loading KML GroundOverlays that spanned 360 degrees. #2639
- Fixed
Geocoder
styling issue in Safari. #2658. - Fixed a crash that would occur when the
Viewer
orCesiumWidget
was resized to 0 while the camera was in motion. #2662 - Fixed a bug that prevented the
InfoBox
title from updating if the name ofviewer.selectedEntity
changed. #2644 - Added an optional
result
parameter tocomputeScreenSpacePosition
on bothBillboard
andLabel
. - Added number of cached shaders to the
CesiumInspector
debugging widget. - An exception is now thrown if
Primitive.modelMatrix
is not the identity matrix when in in 2D or Columbus View.
- Breaking changes
- Removed the
eye
,target
, andup
parameters toCamera.lookAt
which were deprecated in Cesium 1.6. Use thetarget
andoffset
. - Removed
Camera.setTransform
, which was deprecated in Cesium 1.6. UseCamera.lookAtTransform
. - Removed
Camera.transform
, which was deprecated in Cesium 1.6. UseCamera.lookAtTransform
. - Removed the
direction
andup
options toCamera.flyTo
, which were deprecated in Cesium 1.6. Use theorientation
option. - Removed
Camera.flyToRectangle
, which was deprecated in Cesium 1.6. UseCamera.flyTo
.
- Removed the
- Deprecated
- Deprecated the
smallterrain
tileset. It will be removed in 1.11. Use the STK World Terrain tileset.
- Deprecated the
- Added
Entity.show
, a boolean for hiding or showing an entity and its children. - Added
Entity.isShowing
, a read-only property that indicates if an entity is currently being drawn. - Added support for the KML
visibility
element. - Added
PolylineArrowMaterialProperty
to allow entities materials to use polyline arrows. - Added
VelocityOrientationProperty
to easily orient Entity graphics (such as a model) along the direction it is moving. - Added a new Sandcastle demo, Interpolation, which illustrates time-dynamic position interpolation options and uses the new
VelocityOrientationProperty
to orient an aircraft in flight. - Improved
viewer.zoomTo
andviewer.flyTo
so they are now "best effort" and work even if some entities being zoomed to are not currently in the scene. - Fixed
PointerEvent
detection so that it works with older implementations of the specification. This also fixes lack of mouse handling when detection failed, such as when using Cesium in the WindowsWebBrowser
control. - Fixed an issue with transparency. #2572
- Fixed improper handling of null values when loading
GeoJSON
data. - Added support for automatic raster feature picking from
ArcGisMapServerImagerProvider
. - Added the ability to specify the desired tiling scheme, rectangle, and width and height of tiles to the
ArcGisMapServerImagerProvider
constructor. - Added the ability to access dynamic ArcGIS MapServer layers by specifying the
layers
parameter to theArcGisMapServerImagerProvider
constructor. - Fixed a bug that could cause incorrect rendering of an
ArcGisMapServerImageProvider
with a "singleFusedMapCache" in the geographic projection (EPSG:4326). - Added new construction options to
CesiumWidget
andViewer
, forskyBox
,skyAtmosphere
, andglobe
. - Fixed a bug that prevented Cesium from working in browser configurations that explicitly disabled localStorage, such as Safari's private browsing mode.
- Cesium is now tested using Jasmine 2.2.0.
- Fixed a crash in
InfoBox
that would occur when attempting to display plain text. - Fixed a crash when loading KML features that have no description and an empty
ExtendedData
node. - Fixed a bug
in Color.fromCssColorString
where undefined would be returned for the CSS colortransparent
. - Added
Color.TRANSPARENT
. - Added support for KML
TimeStamp
nodes. - Improved KML compatibility to work with non-specification compliant KML files that still happen to load in Google Earth.
- All data sources now print errors to the console in addition to raising the
errorEvent
and rejecting their load promise.
- Breaking changes
- Removed
viewerEntityMixin
, which was deprecated in Cesium 1.5. Its functionality is now directly part of theViewer
widget. - Removed
Camera.tilt
, which was deprecated in Cesium 1.6. UseCamera.pitch
. - Removed
Camera.heading
andCamera.tilt
. They were deprecated in Cesium 1.6. UseCamera.setView
. - Removed
Camera.setPositionCartographic
, which was was deprecated in Cesium 1.6. UseCamera.setView
.
- Removed
- Deprecated
- Deprecated
InfoBoxViewModel.defaultSanitizer
,InfoBoxViewModel.sanitizer
, andCesium.sanitize
. They will be removed in 1.10. - Deprecated
InfoBoxViewModel.descriptionRawHtml
, it will be removed in 1.10. UseInfoBoxViewModel.description
instead. - Deprecated
GeoJsonDataSource.fromUrl
, it will be removed in 1.10. UseGeoJsonDataSource.load
instead. Unlike fromUrl, load can take either a url or parsed JSON object and returns a promise to a new instance, rather than a new instance. - Deprecated
GeoJsonDataSource.prototype.loadUrl
, it will be removed in 1.10. Instead, pass a url as the first parameter toGeoJsonDataSource.prototype.load
. - Deprecated
CzmlDataSource.prototype.loadUrl
, it will be removed in 1.10. Instead, pass a url as the first parameter toCzmlDataSource.prototype.load
. - Deprecated
CzmlDataSource.prototype.processUrl
, it will be removed in 1.10. Instead, pass a url as the first parameter toCzmlDataSource.prototype.process
. - Deprecated the
sourceUri
parameter to allCzmlDataSource
load and process functions. Support will be removed in 1.10. Instead pass anoptions
object withsourceUri
property.
- Deprecated
- Added initial support for KML 2.2 via
KmlDataSource
. Check out the new Sandcastle Demo and the reference documentation for more details. InfoBox
sanitization now relies on iframe sandboxing. This allows for much more content to be displayed in the InfoBox (and still be secure).- Added
InfoBox.frame
which is the instance of the iframe that is used to host description content. Sanitization can be controlled via the frame'ssandbox
attribute. See the above link for additional information. - Worked around a bug in Safari that caused most of Cesium to be broken. Cesium should now work much better on Safari for both desktop and mobile.
- Fixed incorrect ellipse texture coordinates. #2363 and #2465
- Fixed a bug that would cause incorrect geometry for long Corridors and Polyline Volumes. #2513
- Fixed a bug in imagery loading that could cause some or all of the globe to be missing when using an imagery layer that does not cover the entire globe.
- Fixed a bug that caused
ElipseOutlineGeometry
andCircleOutlineGeometry
to be extruded to the ground when they should have instead been drawn at height. #2499. - Fixed a bug that prevented per-vertex colors from working with
PolylineGeometry
andSimplePolylineGeometry
when used asynchronously. #2516 - Fixed a bug that would caused duplicate graphics if non-time-dynamic
Entity
objects were modified in quick succession. #2514. - Fixed a bug where
camera.flyToBoundingSphere
would ignore range if the bounding sphere radius was 0. #2519 - Fixed some styling issues with
InfoBox
andBaseLayerPicker
caused by using Bootstrap with Cesium. #2487 - Added support for rendering a water effect on Quantized-Mesh terrain tiles.
- Added
pack
andunpack
functions toMatrix2
andMatrix3
. - Added camera-terrain collision detection/response when the camera reference frame is set.
- Added
ScreenSpaceCameraController.enableCollisionDetection
to enable/disable camera collision detection with terrain. - Added
CzmlDataSource.load
andGeoJsonDataSource.load
to make it easy to create and load data in a single line. - Added the ability to pass a
Promise
to aDataSource
toDataSourceCollection.add
. TheDataSource
will not actually be added until the promise resolves. - Added the ability to pass a
Promise
to a target toviewer.zoomTo
andviewer.flyTo
. - All
CzmlDataSource
andGeoJsonDataSource
loading functions now returnPromise
instances that resolve to the instances after data is loaded. - Error handling in all
CzmlDataSource
andGeoJsonDataSource
loading functions is now more consistent. Rather than a mix of exceptions andPromise
rejections, all errors are raised viaPromise
rejections. - In addition to addresses, the
Geocoder
widget now allows input of longitude, latitude, and an optional height in degrees and meters. Example:-75.596, 40.038, 1000
or-75.596 40.038
.
- Breaking changes
Rectangle.intersectWith
was deprecated in Cesium 1.5. UseRectangle.intersection
, which is the same but returnsundefined
when two rectangles do not intersect.Rectangle.isEmpty
was deprecated in Cesium 1.5.- The
sourceUri
parameter toGeoJsonDatasource.load
was deprecated in Cesium 1.4 and has been removed. Use options.sourceUri instead. PolygonGraphics.positions
created byGeoJSONDataSource
now evaluate to aPolygonHierarchy
object instead of an array of positions.
- Deprecated
Camera.tilt
was deprecated in Cesium 1.6. It will be removed in Cesium 1.7. UseCamera.pitch
.Camera.heading
andCamera.tilt
were deprecated in Cesium 1.6. They will become read-only in Cesium 1.7. UseCamera.setView
.Camera.setPositionCartographic
was deprecated in Cesium 1.6. It will be removed in Cesium 1.7. UseCamera.setView
.- The
direction
andup
options toCamera.flyTo
have been deprecated in Cesium 1.6. They will be removed in Cesium 1.8. Use theorientation
option. Camera.flyToRectangle
has been deprecated in Cesium 1.6. They will be removed in Cesium 1.8. UseCamera.flyTo
.Camera.setTransform
was deprecated in Cesium 1.6. It will be removed in Cesium 1.8. UseCamera.lookAtTransform
.Camera.transform
was deprecated in Cesium 1.6. It will be removed in Cesium 1.8. UseCamera.lookAtTransform
.- The
eye
,target
, andup
parameters toCamera.lookAt
were deprecated in Cesium 1.6. It will be removed in Cesium 1.8. Use thetarget
andoffset
. PolygonGraphics.positions
was deprecated and replaced withPolygonGraphics.hierarchy
, whose value is aPolygonHierarchy
instead of an array of positions.PolygonGraphics.positions
will be removed in Cesium 1.8.- The
Model.readyToRender
event was deprecated and will be removed in Cesium 1.9. Use the newModel.readyPromise
instead. ColorMaterialProperty.fromColor(color)
has been deprecated and will be removed in Cesium 1.9. The constructor can now take a Color directly, for examplenew ColorMaterialProperty(color)
.DataSourceDisplay
methodsgetScene
andgetDataSources
have been deprecated and replaced withscene
anddataSources
properties. They will be removed in Cesium 1.9.- The
Entity
constructor taking a single string value for the id has been deprecated. The constructor now takes an options object which allows you to provide any and allEntity
related properties at construction time. Support for the deprecated behavior will be removed in Cesium 1.9. - The
EntityCollection.entities
andCompositeEntityCollect.entities
properties have both been renamed tovalues
. Support for the deprecated behavior will be removed in Cesium 1.9.
- Fixed an issue which caused order independent translucency to be broken on many video cards. Disabling order independent translucency should no longer be necessary.
GeoJsonDataSource
now supports polygons with holes.- Many Sandcastle examples have been rewritten to make use of the newly improved Entity API.
- Instead of throwing an exception when there are not enough unique positions to define a geometry, creating a
Primitive
will succeed, but not render. #2375 - Improved performance of asynchronous geometry creation (as much as 20% faster in some use cases). #2342
- Fixed picking in 2D. #2447
- Added
viewer.entities
which allows you to easily create and manageEntity
instances without a correspondingDataSource
. This is just a shortcut toviewer.dataSourceDisplay.defaultDataSource.entities
- Added
viewer.zoomTo
andviewer.flyTo
which takes an entity, array of entities,EntityCollection
, orDataSource
as a parameter and zooms or flies to the corresponding visualization. - Setting
viewer.trackedEntity
toundefined
will now restore the camera controls to their default states. - When you track an entity by clicking on the track button in the
InfoBox
, you can now stop tracking by clicking the button a second time. - Added
Quaternion.fromHeadingPitchRoll
to create a rotation from heading, pitch, and roll angles. - Added
Transforms.headingPitchRollToFixedFrame
to create a local frame from a position and heading/pitch/roll angles. - Added
Transforms.headingPitchRollQuaternion
which is the quaternion rotation fromTransforms.headingPitchRollToFixedFrame
. - Added
Color.fromAlpha
andColor.withAlpha
to make it easy to create translucent colors from constants, i.e.var translucentRed = Color.RED.withAlpha(0.95)
. - Added
PolylineVolumeGraphics
andEntity.polylineVolume
- Added
Camera.lookAtTransform
which sets the camera position and orientation given a transformation matrix defining a reference frame and either a cartesian offset or heading/pitch/range from the center of that frame. - Added
Camera.setView
(which use heading, pitch, and roll) andCamera.roll
. - Added an orientation option to
Camera.flyTo
that can be either direction and up unit vectors or heading, pitch and roll angles. - Added
BillboardGraphics.imageSubRegion
, to enable custom texture atlas use forEntity
instances. - Added
CheckerboardMaterialProperty
to enable use of the checkerboard material with the entity API. - Added
PolygonHierarchy
to make defining polygons with holes clearer. - Added
PolygonGraphics.hierarchy
for supporting polygons with holes via data sources. - Added
BoundingSphere.fromBoundingSpheres
, which creates aBoundingSphere
that encloses the specified array of BoundingSpheres. - Added
Model.readyPromise
andPrimitive.readyPromise
which are promises that resolve when the primitives are ready. ConstantProperty
can now hold any value; previously it was limited to values that implementedequals
andclones
functions, as well as a few special cases.- Fixed a bug in
EllipsoidGeodesic
that caused it to modify theheight
of the positions passed to the constructor or to tosetEndPoints
. WebMapTileServiceImageryProvider
now supports RESTful requests (by accepting a tile-URL template).- Fixed a bug that caused
Camera.roll
to be around 180 degrees, indicating the camera was upside-down, when in the Southern hemisphere. - The object returned by
Primitive.getGeometryInstanceAttributes
now contains the instance's bounding sphere and repeated calls will always now return the same object instance. - Fixed a bug that caused dynamic geometry outlines widths to not work on implementations that support them.
- The
SelectionIndicator
widget now works for all entity visualization and uses the center of visualization instead of entity.position. This produces more accurate results, especially for shapes, volumes, and models. - Added
CustomDataSource
which makes it easy to create and manage a group of entities without having to manually implement the DataSource interface in a new class. - Added
DataSourceDisplay.defaultDataSource
which is an instance ofCustomDataSource
and allows you to easily add custom entities to the display. - Added
Camera.viewBoundingSphere
andCamera.flyToBoundingSphere
, which as the names imply, sets or flies to a view that encloses the providedBoundingSphere
- For constant
Property
values, there is no longer a need to create an instance ofConstantProperty
orConstantPositionProperty
, you can now assign a value directly to the corresponding property. The same is true for material images and colors. - All Entity and related classes can now be assigned using anonymous objects as well as be passed template objects. The correct underlying instance is created for you automatically. For a more detailed overview of changes to the Entity API, see this forum thread for details.
- Breaking changes
- Removed
GeometryPipeline.wrapLongitude
, which was deprecated in 1.4. UseGeometryPipeline.splitLongitude
instead. - Removed
GeometryPipeline.combine
, which was deprecated in 1.4. UseGeometryPipeline.combineInstances
instead.
- Removed
- Deprecated
viewerEntityMixin
was deprecated. It will be removed in Cesium 1.6. Its functionality is now directly part of theViewer
widget.Rectangle.intersectWith
was deprecated. It will be removed in Cesium 1.6. UseRectangle.intersection
, which is the same but returnsundefined
when two rectangles do not intersect.Rectangle.isEmpty
was deprecated. It will be removed in Cesium 1.6.
- Improved GeoJSON, TopoJSON, and general polygon loading performance.
- Added caching to
Model
to save memory and improve loading speed when several models with the same url are created. - Added
ModelNode.show
for per-node show/hide. - Added the following properties to
Viewer
andCesiumWidget
:imageryLayers
,terrainProvider
, andcamera
. This avoids the need to accessviewer.scene
in some cases. - Dramatically improved the quality of font outlines.
- Added
BoxGraphics
andEntity.box
. - Added
CorridorGraphics
andEntity.corridor
. - Added
CylinderGraphics
andEntity.cylinder
. - Fixed imagery providers whose rectangle crosses the IDL. Added
Rectangle.computeWidth
,Rectangle.computeHeight
,Rectangle.width
, andRectangle.height
. #2195 ConstantProperty
now acceptsHTMLElement
instances as valid values.BillboardGraphics.image
andImageMaterialProperty.image
now acceptProperty
instances that represent anImage
orCanvas
in addition to a url.- Fixed a bug in
PolylineGeometry
that would cause gaps in the line. #2136 - Fixed
upsampleQuantizedTerrainMesh
rounding errors that had occasionally led to missing terrain skirt geometry in upsampled tiles. - Added
Math.mod
which computesm % n
but also works whenm
is negative.
- Breaking changes
- Types implementing
TerrainProvider
are now required to implement thegetTileDataAvailable
function. Backwards compatibility for this was deprecated in Cesium 1.2.
- Types implementing
- Deprecated
- The
sourceUri
parameter toGeoJsonDatasource.load
was deprecated and will be removed in Cesium 1.6 on February 3, 2015 (#2257). Useoptions.sourceUri
instead. GeometryPipeline.wrapLongitude
was deprecated. It will be removed in Cesium 1.5 on January 2, 2015. UseGeometryPipeline.splitLongitude
. (#2272)GeometryPipeline.combine
was deprecated. It will be removed in Cesium 1.5. UseGeometryPipeline.combineInstances
.
- The
- Added support for touch events on Internet Explorer 11 using the Pointer Events API.
- Added geometry outline width support to the
DataSource
layer. This is exposed via the newoutlineWidth
property onEllipseGraphics
,EllipsoidGraphics
,PolygonGraphics
,RectangleGraphics
, andWallGraphics
. - Added
outlineWidth
support to CZML geometry packets. - Added
stroke-width
support to the GeoJSON simple-style implementation. - Added the ability to specify global GeoJSON default styling. See the documentation for details.
- Added
CallbackProperty
to support lazy property evaluation as well as make custom properties easier to create. - Added an options parameter to
GeoJsonDataSource.load
,GeoJsonDataSource.loadUrl
, andGeoJsonDataSource.fromUrl
to allow for basic per-instance styling. Sandcastle example. - Improved GeoJSON loading performance.
- Improved point visualization performance for all DataSources.
- Improved the performance and memory usage of
EllipseGeometry
,EllipseOutlineGeometry
,CircleGeometry
, andCircleOutlineGeometry
. - Added
tileMatrixLabels
option toWebMapTileServiceImageryProvider
. - Fixed a bug in
PolylineGeometry
that would cause the geometry to be split across the IDL for 3D only scenes. #1197 - Added
modelMatrix
andcull
options toPrimitive
constructor. - The
translation
parameter toMatrix4.fromRotationTranslation
now defaults toCartesian3.ZERO
. - Fixed
ModelNode.matrix
when a node is targeted for animation. Camera.tilt
now clamps to [-pi / 2, pi / 2] instead of [0, pi / 2].- Fixed an issue that could lead to poor performance on lower-end GPUs like the Intel HD 3000.
- Added
distanceSquared
toCartesian2
,Cartesian3
, andCartesian4
. - Added
Matrix4.multiplyByMatrix3
. - Fixed a bug in
Model
where the WebGL shader optimizer in Linux was causing mesh loading to fail.
- Worked around a shader compilation regression in Firefox 33 and 34 by falling back to a less precise shader on those browsers. #2197
- Added support to the
CesiumTerrainProvider
for terrain tiles with more than 64K vertices, which is common for sub-meter terrain. - Added
Primitive.compressVertices
. When true (default), geometry vertices are compressed to save GPU memory. - Added
culture
option toBingMapsImageryProvider
constructor. - Reduced the amount of GPU memory used by billboards and labels.
- Fixed a bug that caused non-base imagery layers with a limited
rectangle
to be stretched to the edges of imagery tiles. #416 - Fixed rendering polylines with duplicate positions. #898
- Fixed a bug in
Globe.pick
that caused it to return incorrect results when using terrain data with vertex normals. The bug manifested itself as strange behavior when navigating around the surface with the mouse as well as incorrect results when usingCamera.viewRectangle
. - Fixed a bug in
sampleTerrain
that could cause it to produce undefined heights when sampling for a position very near the edge of a tile. ReferenceProperty
instances now retain their last value if the entity being referenced is removed from the target collection. The reference will be automatically reattached if the target is reintroduced.- Upgraded topojson from 1.6.8 to 1.6.18.
- Upgraded Knockout from version 3.1.0 to 3.2.0.
- Upgraded CodeMirror, used by SandCastle, from 2.24 to 4.6.
- Deprecated
- Types implementing the
TerrainProvider
interface should now include the newgetTileDataAvailable
function. The function will be required starting in Cesium 1.4.
- Types implementing the
- Fixed model orientations to follow the same Z-up convention used throughout Cesium. There was also an orientation issue fixed in the online model converter. If you are having orientation issues after updating, try reconverting your models.
- Fixed a bug in
Model
where the wrong animations could be used when the model was created from glTF JSON instead of a url to a glTF file. #2078 - Fixed a bug in
GeoJsonDataSource
which was causing polygons with height values to be drawn onto the surface. - Fixed a bug that could cause a crash when quickly adding and removing imagery layers.
- Eliminated imagery artifacts at some zoom levels due to Mercator reprojection.
- Added support for the GeoJSON simplestyle specification. (Sandcastle example)
- Added
GeoJsonDataSource.fromUrl
to make it easy to add a data source in less code. - Added
PinBuilder
class for easy creation of map pins. (Sandcastle example) - Added
Color.brighten
andColor.darken
to make it easy to brighten or darker a color instance. - Added a constructor option to
Scene
,CesiumWidget
, andViewer
to disable order independent translucency. - Added support for WKID 102113 (equivalent to 102100) to
ArcGisMapServerImageryProvider
. - Added
TerrainProvider.getTileDataAvailable
to improve tile loading performance when camera starts near globe. - Added
Globe.showWaterEffect
to enable/disable the water effect for supported terrain providers. - Added
Globe.baseColor
to set the color of the globe when no imagery is available. - Changed default
GeoJSON
Point feature graphics to useBillboardGraphics
with a blue map pin instead of colorPointGraphics
. - Cesium now ships with a version of the maki icon set for use with
PinBuilder
and GeoJSON simplestyle support. - Cesium now ships with a default web.config file to simplify IIS deployment.
- Added a new imagery provider,
WebMapTileServiceImageryProvider
, for accessing tiles on a WMTS 1.0.0 server. - Added an optional
pickFeatures
function to theImageryProvider
interface. With supporting imagery providers, such asWebMapServiceImageryProvider
, it can be used to determine the rasterized features under a particular location. - Added
ImageryLayerCollection.pickImageryLayerFeatures
. It determines the rasterized imagery layer features intersected by a given pick ray by querying supporting layers usingImageryProvider.pickFeatures
. - Added
tileWidth
,tileHeight
,minimumLevel
, andtilingScheme
parameters to theWebMapServiceImageryProvider
constructor. - Added
id
property toScene
which is a readonly unique identifier associated with each instance. - Added
FeatureDetection.supportsWebWorkers
. - Greatly improved the performance of time-varying polylines when using DataSources.
viewerEntityMixin
now automatically queries for imagery layer features on click and shows their properties in theInfoBox
panel.- Fixed a bug in terrain and imagery loading that could cause an inconsistent frame rate when moving around the globe, especially on a faster internet connection.
- Fixed a bug that caused
SceneTransforms.wgs84ToWindowCoordinates
to incorrectly returnundefined
when in 2D. - Fixed a bug in
ImageryLayer
that caused layer images to be rendered twice for each terrain tile that existed prior to adding the imagery layer. - Fixed a bug in
Camera.pickEllipsoid
that caused it to return the back side of the ellipsoid when near the surface. - Fixed a bug which prevented
loadWithXhr
from working with older browsers, such as Internet Explorer 9.
- Breaking changes (why so many?)
-
All
Matrix2
,Matrix3
,Matrix4
andQuaternion
functions that take aresult
parameter now require the parameter, except functions starting withfrom
. -
Removed
Billboard.imageIndex
andBillboardCollection.textureAtlas
. Instead, useBillboard.image
.-
Code that looked like:
var billboards = new Cesium.BillboardCollection(); var textureAtlas = new Cesium.TextureAtlas({ scene : scene, images : images // array of loaded images }); billboards.textureAtlas = textureAtlas; billboards.add({ imageIndex : 0, position : //... });
-
should now look like:
var billboards = new Cesium.BillboardCollection(); billboards.add({ image : '../images/Cesium_Logo_overlay.png', position : //... });
-
-
Updated the Model Converter and
Model
to support glTF 0.8. See the forum post for full details. -
Model
primitives are now rotated to beZ
-up to match Cesium convention; glTF stores models withY
up. -
SimplePolylineGeometry
andPolylineGeometry
now curve to follow the ellipsoid surface by default. To disable this behavior, set the optionfollowSurface
tofalse
. -
Renamed
DynamicScene
layer toDataSources
. The following types were also renamed:DynamicBillboard
->BillboardGraphics
DynamicBillboardVisualizer
->BillboardVisualizer
CompositeDynamicObjectCollection
->CompositeEntityCollection
DynamicClock
->DataSourceClock
DynamicEllipse
->EllipseGraphics
DynamicEllipsoid
->EllipsoidGraphics
DynamicObject
->Entity
DynamicObjectCollection
->EntityCollection
DynamicObjectView
->EntityView
DynamicLabel
->LabelGraphics
DynamicLabelVisualizer
->LabelVisualizer
DynamicModel
->ModelGraphics
DynamicModelVisualizer
->ModelVisualizer
DynamicPath
->PathGraphics
DynamicPathVisualizer
->PathVisualizer
DynamicPoint
->PointGraphics
DynamicPointVisualizer
->PointVisualizer
DynamicPolygon
->PolygonGraphics
DynamicPolyline
->PolylineGraphics
DynamicRectangle
->RectangleGraphics
DynamicWall
->WallGraphics
viewerDynamicObjectMixin
->viewerEntityMixin
-
Removed
DynamicVector
andDynamicVectorVisualizer
. -
Renamed
DataSource.dynamicObjects
toDataSource.entities
. -
EntityCollection.getObjects()
andCompositeEntityCollection.getObjects()
are now properties namedEntityCollection.entities
andCompositeEntityCollection.entities
. -
Renamed
Viewer.trackedObject
andViewer.selectedObject
toViewer.trackedEntity
andViewer.selectedEntity
when using theviewerEntityMixin
. -
Renamed functions for consistency:
BoundingSphere.getPlaneDistances
->BoundingSphere.computePlaneDistances
Cartesian[2,3,4].getMaximumComponent
->Cartesian[2,3,4].maximumComponent
Cartesian[2,3,4].getMinimumComponent
->Cartesian[2,3,4].minimumComponent
Cartesian[2,3,4].getMaximumByComponent
->Cartesian[2,3,4].maximumByComponent
Cartesian[2,3,4].getMinimumByComponent
->Cartesian[2,3,4].minimumByComponent
CubicRealPolynomial.realRoots
->CubicRealPolynomial.computeRealRoots
CubicRealPolynomial.discriminant
->CubicRealPolynomial.computeDiscriminant
JulianDate.getTotalDays
->JulianDate.totalDyas
JulianDate.getSecondsDifference
->JulianDate.secondsDifference
JulianDate.getDaysDifference
->JulianDate.daysDifference
JulianDate.getTaiMinusUtc
->JulianDate.computeTaiMinusUtc
Matrix3.getEigenDecompostion
->Matrix3.computeEigenDecomposition
Occluder.getVisibility
->Occluder.computeVisibility
Occluder.getOccludeePoint
->Occluder.computerOccludeePoint
QuadraticRealPolynomial.discriminant
->QuadraticRealPolynomial.computeDiscriminant
QuadraticRealPolynomial.realRoots
->QuadraticRealPolynomial.computeRealRoots
QuarticRealPolynomial.discriminant
->QuarticRealPolynomial.computeDiscriminant
QuarticRealPolynomial.realRoots
->QuarticRealPolynomial.computeRealRoots
Quaternion.getAxis
->Quaternion.computeAxis
Quaternion.getAngle
->Quaternion.computeAngle
Quaternion.innerQuadrangle
->Quaternion.computeInnerQuadrangle
Rectangle.getSouthwest
->Rectangle.southwest
Rectangle.getNorthwest
->Rectangle.northwest
Rectangle.getSoutheast
->Rectangle.southeast
Rectangle.getNortheast
->Rectangle.northeast
Rectangle.getCenter
->Rectangle.center
CullingVolume.getVisibility
->CullingVolume.computeVisibility
-
Replaced
PerspectiveFrustum.fovy
withPerspectiveFrustum.fov
which will change the field of view angle in either theX
orY
direction depending on the aspect ratio. -
Removed the following from the Cesium API:
Transforms.earthOrientationParameters
,EarthOrientationParameters
,EarthOrientationParametersSample
,Transforms.iau2006XysData
,Iau2006XysData
,Iau2006XysSample
,IauOrientationAxes
,TimeConstants
,Scene.frameState
,FrameState
,EncodedCartesian3
,EllipsoidalOccluder
,TextureAtlas
, andFAR
. These are still available but are not part of the official API and may change in future versions. -
Removed
DynamicObject.vertexPositions
. UseDynamicWall.positions
,DynamicPolygon.positions
, andDynamicPolyline.positions
instead. -
Removed
defaultPoint
,defaultLine
, anddefaultPolygon
fromGeoJsonDataSource
. -
Removed
Primitive.allow3DOnly
. Set theScene
constructor optionscene3DOnly
instead. -
SampledProperty
andSampledPositionProperty
no longer extrapolate outside of their sample data time range by default. -
Changed the following functions to properties:
TerrainProvider.hasWaterMask
CesiumTerrainProvider.hasWaterMask
ArcGisImageServerTerrainProvider.hasWaterMask
EllipsoidTerrainProvider.hasWaterMask
VRTheWorldTerrainProvider.hasWaterMask
-
Removed
ScreenSpaceCameraController.ellipsoid
. The behavior that depended on the ellipsoid is now determined based on the scene state. -
Sandcastle examples now automatically wrap the example code in RequireJS boilerplate. To upgrade any custom examples, copy the code into an existing example (such as Hello World) and save a new file.
-
Removed
CustomSensorVolume
,RectangularPyramidSensorVolume
,DynamicCone
,DynamicConeVisualizerUsingCustomSensor
,DynamicPyramid
andDynamicPyramidVisualizer
. This will be moved to a plugin in early August. #1887 -
If
Primitive.modelMatrix
is changed after creation, it only affects primitives with one instance and only in 3D mode. -
ImageryLayer
propertiesalpha
,brightness
,contrast
,hue
,saturation
, andgamma
may no longer be functions. If you need to change these values each frame, consider moving your logic to an event handler forScene.preRender
. -
Removed
closeTop
andcloseBottom
options fromRectangleGeometry
. -
CZML changes:
- CZML is now versioned using the . scheme. For example, any CZML 1.0 implementation will be able to load any 1. document (with graceful degradation). Major version number increases will be reserved for breaking changes. We fully expect these major version increases to happen, as CZML is still in development, but we wanted to give developers a stable target to work with.
- A
"1.0"
version string is required to be on the document packet, which is required to be the first packet in a CZML file. Previously thedocument
packet was optional; it is now mandatory. The simplest document packet is:{ "id":"document", "version":"1.0" }
- The
vertexPositions
property has been removed. There is now apositions
property directly on objects that use it, currentlypolyline
,polygon
, andwall
. cone
,pyramid
, andvector
have been removed from the core CZML schema. They are now treated as extensions maintained by Analytical Graphics and have been renamed toagi_conicSensor
,agi_customPatternSensor
, andagi_vector
respectively.- The
orientation
property has been changed to match Cesium convention. To update existing CZML documents, conjugate the quaternion values. pixelOffset
now uses the top-left of the screen as the origin; previously it was the bottom-left. To update existing documents, negate they
value.- Removed
color
,outlineColor
, andoutlineWidth
properties frompolyline
andpath
. There is a newmaterial
property that allows you to specify a variety of materials, such assolidColor
,polylineOutline
andpolylineGlow
. - See the CZML Schema for more details. We plan on greatly improving this document in the coming weeks.
-
- Added camera collision detection with terrain to the default mouse interaction.
- Modified the default camera tilt mouse behavior to tilt about the point clicked, taking into account terrain.
- Modified the default camera mouse behavior to look about the camera's position when the sky is clicked.
- Cesium can now render an unlimited number of imagery layers, no matter how few texture units are supported by the hardware.
- Added support for rendering terrain lighting with oct-encoded per-vertex normals. Added
CesiumTerrainProvider.requestVertexNormals
to request per vertex normals. AddedhasVertexNormals
property to all terrain providers to indicate whether or not vertex normals are included in the requested terrain tiles. - Added
Globe.getHeight
andGlobe.pick
for finding the terrain height at a given Cartographic coordinate and picking the terrain with a ray. - Added
scene3DOnly
options toViewer
,CesiumWidget
, andScene
constructors. This setting optimizes memory usage and performance for 3D mode at the cost of losing the ability to use 2D or Columbus View. - Added
forwardExtrapolationType
,forwardExtrapolationDuration
,backwardExtrapolationType
, andbackwardExtrapolationDuration
toSampledProperty
andSampledPositionProperty
which allows the user to specify how a property calculates its value when outside the range of its sample data. - Prevent primitives from flashing off and on when modifying static DataSources.
- Added the following methods to
IntersectionTests
:rayTriangle
,lineSegmentTriangle
,raySphere
, andlineSegmentSphere
. - Matrix types now have
add
andsubtract
functions. Matrix3
type now has afromCrossProduct
function.- Added
CesiumMath.signNotZero
,CesiumMath.toSNorm
andCesiumMath.fromSNorm
functions. - DataSource & CZML models now default to North-East-Down orientation if none is provided.
TileMapServiceImageryProvider
now works with tilesets created by tools that better conform to the TMS specification. In particular, a profile ofglobal-geodetic
orglobal-mercator
is now supported (in addition to the previousgeodetic
andmercator
) and in these profiles it is assumed that the X coordinates of the bounding box correspond to the longitude direction.EntityCollection
andCompositeEntityCollection
now include the array of modified entities as the last parameter to theironCollectionChanged
event.RectangleGeometry
,RectangleOutlineGeometry
andRectanglePrimitive
can cross the international date line.
- Breaking changes (why so many?)
-
CZML property references now use a
#
symbol to separate identifier from property path.objectId.position
should now beobjectId#position
. -
All
Cartesian2
,Cartesian3
,Cartesian4
,TimeInterval
, andJulianDate
functions that take aresult
parameter now require the parameter (except for functions starting withfrom
). -
Modified
Transforms.pointToWindowCoordinates
andSceneTransforms.wgs84ToWindowCoordinates
to return window coordinates with origin at the top left corner. -
Billboard.pixelOffset
andLabel.pixelOffset
now have their origin at the top left corner. -
Replaced
CameraFlightPath.createAnimation
withCamera.flyTo
and replacedCameraFlightPath.createAnimationRectangle
withCamera.flyToRectangle
. Code that looked like:scene.animations.add(Cesium.CameraFlightPath.createAnimation(scene, { destination : Cesium.Cartesian3.fromDegrees(-117.16, 32.71, 15000.0) }));
should now look like:
scene.camera.flyTo({ destination : Cesium.Cartesian3.fromDegrees(-117.16, 32.71, 15000.0) });
-
In
Camera.flyTo
andCamera.flyToRectangle
:options.duration
is now in seconds, not milliseconds.- Renamed
options.endReferenceFrame
tooptions.endTransform
. - Renamed
options.onComplete
tooptions.complete
. - Renamed
options.onCancel
tooptions.cancel
.
-
The following are now in seconds, not milliseconds.
Scene.morphToColumbusView
,Scene.morphTo2D
, andScene.morphTo3D
parameterduration
.HomeButton
constructor parameteroptions.duration
,HomeButtonViewModel
constructor parameterduration
, andHomeButtonViewModel.duration
.SceneModePicker
constructor parameterduration
,SceneModePickerViewModel
constructor parameterduration
, andSceneModePickerViewModel.duration
.Geocoder
andGeocoderViewModel
constructor parameteroptions.flightDuration
andGeocoderViewModel.flightDuration
.ScreenSpaceCameraController.bounceAnimationTime
.FrameRateMonitor
constructor parameteroptions.samplingWindow
,options.quietPeriod
, andoptions.warmupPeriod
.
-
Refactored
JulianDate
to be in line with other Core types.- Most functions now take result parameters.
- The default constructor no longer creates a date at the current time, use
JulianDate.now()
instead. - Removed
JulianDate.getJulianTimeFraction
andJulianDate.compareTo
new JulianDate()
->JulianDate.now()
date.getJulianDayNumber()
->date.dayNumber
date.getSecondsOfDay()
->secondsOfDay
date.getTotalDays()
->JulianDate.getTotalDays(date)
date.getSecondsDifference(arg1, arg2)
->JulianDate.getSecondsDifference(arg2, arg1)
(Note, order of arguments flipped)date.getDaysDifference(arg1, arg2)
->JulianDate.getDaysDifference(arg2, arg1)
(Note, order of arguments flipped)date.getTaiMinusUtc()
->JulianDate.getTaiMinusUtc(date)
date.addSeconds(seconds)
->JulianDate.addSeconds(date, seconds)
date.addMinutes(minutes)
->JulianDate.addMinutes(date, minutes)
date.addHours(hours)
->JulianDate.addHours(date, hours)
date.addDays(days)
->JulianDate.addDays(date, days)
date.lessThan(right)
->JulianDate.lessThan(left, right)
date.lessThanOrEquals(right)
->JulianDate.lessThanOrEquals(left, right)
date.greaterThan(right)
->JulianDate.greaterThan(left, right)
date.greaterThanOrEquals(right)
->JulianDate.greaterThanOrEquals(left, right)
-
Refactored
TimeInterval
to be in line with other Core types.-
The constructor no longer requires parameters and now takes a single options parameter. Code that looked like:
new TimeInterval(startTime, stopTime, true, true, data);
should now look like:
new TimeInterval({ start : startTime, stop : stopTime, isStartIncluded : true, isStopIncluded : true, data : data });
-
TimeInterval.fromIso8601
now takes a single options parameter. Code that looked like:TimeInterval.fromIso8601(intervalString, true, true, data);
should now look like:
TimeInterval.fromIso8601({ iso8601 : intervalString, isStartIncluded : true, isStopIncluded : true, data : data });
interval.intersect(otherInterval)
->TimeInterval.intersect(interval, otherInterval)
interval.contains(date)
->TimeInterval.contains(interval, date)
-
-
Removed
TimeIntervalCollection.intersectInterval
. -
TimeIntervalCollection.findInterval
now takes a single options parameter instead of individual parameters. Code that looked like:intervalCollection.findInterval(startTime, stopTime, false, true);
should now look like:
intervalCollection.findInterval({ start : startTime, stop : stopTime, isStartIncluded : false, isStopIncluded : true });
-
TimeIntervalCollection.empty
was renamed toTimeIntervalCollection.isEmpty
-
Removed
Scene.animations
andAnimationCollection
from the public Cesium API. -
Replaced
color
,outlineColor
, andoutlineWidth
inDynamicPath
with amaterial
property. -
ModelAnimationCollection.add
andModelAnimationCollection.addAll
renamedoptions.startOffset
tooptions.delay
. Also renamedModelAnimation.startOffset
toModelAnimation.delay
. -
Replaced
Scene.scene2D.projection
property with read-onlyScene.mapProjection
. Set this with themapProjection
option for theViewer
,CesiumWidget
, orScene
constructors. -
Moved Fresnel, Reflection, and Refraction materials to the Materials Pack Plugin.
-
Renamed
Simon1994PlanetaryPositions
functionsComputeSunPositionInEarthInertialFrame
andComputeMoonPositionInEarthInertialFrame
tocomputeSunPositionInEarthInertialFrame
andcomputeMoonPositionInEarthInertialFrame
, respectively. -
Scene
constructor function now takes anoptions
parameter instead of individual parameters. -
CesiumWidget.showErrorPanel
now takes amessage
parameter in between the previoustitle
anderror
parameters. -
Removed
Camera.createCorrectPositionAnimation
. -
Moved
LeapSecond.leapSeconds
toJulianDate.leapSeconds
. -
Event.removeEventListener
no longer throwsDeveloperError
if thelistener
does not exist; it now returnsfalse
. -
Enumeration values of
SceneMode
have better correspondence with mode names to help with debugging. -
The build process now requires Node.js to be installed on the system.
-
- Cesium now supports Internet Explorer 11.0.9 on desktops. For the best results, use the new IE Developer Channel for development.
ReferenceProperty
can now handle sub-properties, for example,myObject#billboard.scale
.DynamicObject.id
can now include period characters.- Added
PolylineGlowMaterialProperty
which enables data sources to use the PolylineGlow material. - Fixed support for embedded resources in glTF models.
- Added
HermitePolynomialApproximation.interpolate
for performing interpolation when derivative information is available. SampledProperty
andSampledPositionProperty
can now store derivative information for each sample value. This allows for more accurate interpolation when usingHermitePolynomialApproximation
.- Added
FrameRateMonitor
to monitor the frame rate achieved by aScene
and to raise alowFrameRate
event when it falls below a configurable threshold. - Added
PerformanceWatchdog
widget andviewerPerformanceWatchdogMixin
. Viewer
andCesiumWidget
now provide more user-friendly error messages when an initialization or rendering error occurs.Viewer
andCesiumWidget
now take a new optional parameter,creditContainer
.Viewer
can now optionally be constructed with aDataSourceCollection
. Previously, it always created one itself internally.- Fixed a problem that could rarely lead to the camera's
tilt
property beingNaN
. GeoJsonDataSource
no longer uses thename
ortitle
property of the feature as the dynamic object's name if the value of the property is null.- Added
TimeIntervalCollection.isStartIncluded
andTimeIntervalCollection.isStopIncluded
. - Added
Cesium.VERSION
to the combinedCesium.js
file. - Made general improvements to the reference documentation.
- Updated third-party Tween.js from r7 to r13.
- Updated third-party JSDoc 3.3.0-alpha5 to 3.3.0-alpha9.
- The development web server has been rewritten in Node.js, and is now included as part of each release.
- Breaking changes (why so many?)
-
Replaced
Scene.createTextureAtlas
withnew TextureAtlas
. -
Removed
CameraFlightPath.createAnimationCartographic
. Code that looked like:var flight = CameraFlightPath.createAnimationCartographic(scene, { destination : cartographic }); scene.animations.add(flight);
should now look like:
var flight = CameraFlightPath.createAnimation(scene, { destination : ellipsoid.cartographicToCartesian(cartographic) }); scene.animations.add(flight);
-
Removed
CesiumWidget.onRenderLoopError
andViewer.renderLoopError
. They have been replaced byScene.renderError
. -
Renamed
CompositePrimitive
toPrimitiveCollection
and added anoptions
parameter to the constructor function. -
Removed
Shapes.compute2DCircle
,Shapes.computeCircleBoundary
andShapes.computeEllipseBoundary
. Instead, useCircleOutlineGeometry
andEllipseOutlineGeometry
. See the tutorial. -
Removed
PolylinePipeline
,PolygonPipeline
,Tipsify
,FrustumCommands
, and allRenderer
types (except noted below) from the public Cesium API. These are still available but are not part of the official API and may change in future versions.Renderer
types in particular are likely to change. -
For AMD users only:
- Moved
PixelFormat
fromRenderer
toCore
. - Moved the following from
Renderer
toScene
:TextureAtlas
,TextureAtlasBuilder
,BlendEquation
,BlendFunction
,BlendingState
,CullFace
,DepthFunction
,StencilFunction
, andStencilOperation
. - Moved the following from
Scene
toCore
:TerrainProvider
,ArcGisImageServerTerrainProvider
,CesiumTerrainProvider
,EllipsoidTerrainProvider
,VRTheWorldTerrainProvider
,TerrainData
,HeightmapTerrainData
,QuantizedMeshTerrainData
,TerrainMesh
,TilingScheme
,GeographicTilingScheme
,WebMercatorTilingScheme
,sampleTerrain
,TileProviderError
,Credit
.
- Moved
-
Removed
TilingScheme.createRectangleOfLevelZeroTiles
,GeographicTilingScheme.createLevelZeroTiles
andWebMercatorTilingScheme.createLevelZeroTiles
. -
Removed
CameraColumbusViewMode
. -
Removed
Enumeration
.
-
- Added new functions to
Cartesian3
:fromDegrees
,fromRadians
,fromDegreesArray
,fromRadiansArray
,fromDegreesArray3D
andfromRadiansArray3D
. AddedfromRadians
toCartographic
. - Fixed dark lighting in 3D and Columbus View when viewing a primitive edge on. (#592)
- Improved Internet Explorer 11.0.8 support including workarounds for rendering labels, billboards, and the sun.
- Improved terrain and imagery rendering performance when very close to the surface.
- Added
preRender
andpostRender
events toScene
. - Added
Viewer.targetFrameRate
andCesiumWidget.targetFrameRate
to allow for throttling of the requestAnimationFrame rate. - Added
Viewer.resolutionScale
andCesiumWidget.resolutionScale
to allow the scene to be rendered at a resolution other than the canvas size. Camera.transform
now works consistently across scene modes.- Fixed a bug that prevented
sampleTerrain
from working with STK World Terrain in Firefox. sampleTerrain
no longer fails when used with aTerrainProvider
that is not yet ready.- Fixed problems that could occur when using
ArcGisMapServerImageryProvider
to access a tiled MapServer of non-global extent. - Added
interleave
option toPrimitive
constructor. - Upgraded JSDoc from 3.0 to 3.3.0-alpha5. The Cesium reference documentation now has a slightly different look and feel.
- Upgraded Dojo from 1.9.1 to 1.9.3. NOTE: Dojo is only used in Sandcastle and not required by Cesium.
- Breaking changes (why so many?):
- Renamed and moved
Scene.primitives.centralBody
moved toScene.globe
. - Removed
CesiumWidget.centralBody
andViewer.centralBody
. UseCesiumWidget.scene.globe
andViewer.scene.globe
. - Renamed
CentralBody
toGlobe
. - Replaced
Model.computeWorldBoundingSphere
withModel.boundingSphere
. - Refactored visualizers, removing
setDynamicObjectCollection
,getDynamicObjectCollection
,getScene
, andremoveAllPrimitives
which are all superfluous after the introduction ofDataSourceDisplay
. The affected classes are:DynamicBillboardVisualizer
DynamicConeVisualizerUsingCustomSensor
DynamicLabelVisualizer
DynamicModelVisualizer
DynamicPathVisualizer
DynamicPointVisualizer
DynamicPyramidVisualizer
DynamicVectorVisualizer
GeometryVisualizer
- Renamed Extent to Rectangle
Extent
->Rectangle
ExtentGeometry
->RectangleGeomtry
ExtentGeometryOutline
->RectangleGeometryOutline
ExtentPrimitive
->RectanglePrimitive
BoundingRectangle.fromExtent
->BoundingRectangle.fromRectangle
BoundingSphere.fromExtent2D
->BoundingSphere.fromRectangle2D
BoundingSphere.fromExtentWithHeights2D
->BoundingSphere.fromRectangleWithHeights2D
BoundingSphere.fromExtent3D
->BoundingSphere.fromRectangle3D
EllipsoidalOccluder.computeHorizonCullingPointFromExtent
->EllipsoidalOccluder.computeHorizonCullingPointFromRectangle
Occluder.computeOccludeePointFromExtent
->Occluder.computeOccludeePointFromRectangle
Camera.getExtentCameraCoordinates
->Camera.getRectangleCameraCoordinates
Camera.viewExtent
->Camera.viewRectangle
CameraFlightPath.createAnimationExtent
->CameraFlightPath.createAnimationRectangle
TilingScheme.extentToNativeRectangle
->TilingScheme.rectangleToNativeRectangle
TilingScheme.tileXYToNativeExtent
->TilingScheme.tileXYToNativeRectangle
TilingScheme.tileXYToExtent
->TilingScheme.tileXYToRectangle
- Converted
DataSource
get methods into properties.getName
->name
getClock
->clock
getChangedEvent
->changedEvent
getDynamicObjectCollection
->dynamicObjects
getErrorEvent
->errorEvent
BaseLayerPicker
has been extended to support terrain selection (#1607).- The
BaseLayerPicker
constructor function now takes the container element and an options object instead of a CentralBody and ImageryLayerCollection. - The
BaseLayerPickerViewModel
constructor function now takes an options object instead of aCentralBody
andImageryLayerCollection
. ImageryProviderViewModel
->ProviderViewModel
BaseLayerPickerViewModel.selectedName
->BaseLayerPickerViewModel.buttonTooltip
BaseLayerPickerViewModel.selectedIconUrl
->BaseLayerPickerViewModel.buttonImageUrl
BaseLayerPickerViewModel.selectedItem
->BaseLayerPickerViewModel.selectedImagery
BaseLayerPickerViewModel.imageryLayers
has been removed and replaced withBaseLayerPickerViewModel.centralBody
- The
- Renamed
TimeIntervalCollection.clear
toTimeIntervalColection.removeAll
Context
is now private.- Removed
Scene.context
. Instead, useScene.drawingBufferWidth
,Scene.drawingBufferHeight
,Scene.maximumAliasedLineWidth
, andScene.createTextureAtlas
. Billboard.computeScreenSpacePosition
,Label.computeScreenSpacePosition
,SceneTransforms.clipToWindowCoordinates
andSceneTransforms.clipToDrawingBufferCoordinates
take aScene
parameter instead of aContext
.Camera
constructor takesScene
as parameter instead ofContext
- Removed
- Types implementing the
ImageryProvider
interface arenow require ahasAlphaChannel
property. - Removed
checkForChromeFrame
since Chrome Frame is no longer supported by Google. See Google's official announcement. - Types implementing
DataSource
no longer need to implementgetIsTimeVarying
.
- Renamed and moved
- Added a
NavigationHelpButton
widget that, when clicked, displays information about how to navigate around the globe with the mouse. The new button is enabled by default in theViewer
widget. - Added
Model.minimumPixelSize
property so models remain visible when the viewer zooms out. - Added
DynamicRectangle
to support DataSource providedRectangleGeometry
. - Added
DynamicWall
to support DataSource providedWallGeometry
. - Improved texture upload performance and reduced memory usage when using
BingMapsImageryProvider
and other imagery providers that return false fromhasAlphaChannel
. - Added the ability to offset the grid in the
GridMaterial
. GeometryVisualizer
now creates geometry asynchronously to prevent locking up the browser.- Add
Clock.canAnimate
to prevent time from advancing, even while the clock is animating. Viewer
now prevents time from advancing if asynchronous geometry is being processed in order to avoid showing an incomplete picture. This can be disabled via theViewer.allowDataSourcesToSuspendAnimation
settings.- Added ability to modify glTF material parameters using
Model.getMaterial
,ModelMaterial
, andModelMesh.material
. - Added
asynchronous
andready
properties toModel
. - Added
Cartesian4.fromColor
andColor.fromCartesian4
. - Added
getScale
andgetMaximumScale
toMatrix2
,Matrix3
, andMatrix4
. - Upgraded Knockout from version 3.0.0 to 3.1.0.
- Upgraded TopoJSON from version 1.1.4 to 1.6.8.
- Breaking changes:
-
All
CameraController
functions have been moved up to theCamera
. RemovedCameraController
. For example, code that looked like:scene.camera.controller.viewExtent(extent);
should now look like:
scene.camera.viewExtent(extent);
-
Finished replacing getter/setter functions with properties:
ImageryLayer
getImageryProvider
->imageryProvider
getExtent
->extent
Billboard
,Label
getShow
,setShow
->show
getPosition
,setPosition
->position
getPixelOffset
,setPixelOffset
->pixelOffset
getTranslucencyByDistance
,setTranslucencyByDistance
->translucencyByDistance
getPixelOffsetScaleByDistance
,setPixelOffsetScaleByDistance
->pixelOffsetScaleByDistance
getEyeOffset
,setEyeOffset
->eyeOffset
getHorizontalOrigin
,setHorizontalOrigin
->horizontalOrigin
getVerticalOrigin
,setVerticalOrigin
->verticalOrigin
getScale
,setScale
->scale
getId
->id
Billboard
getScaleByDistance
,setScaleByDistance
->scaleByDistance
getImageIndex
,setImageIndex
->imageIndex
getColor
,setColor
->color
getRotation
,setRotation
->rotation
getAlignedAxis
,setAlignedAxis
->alignedAxis
getWidth
,setWidth
->width
getHeight
setHeight
->height
Label
getText
,setText
->text
getFont
,setFont
->font
getFillColor
,setFillColor
->fillColor
getOutlineColor
,setOutlineColor
->outlineColor
getOutlineWidth
,setOutlineWidth
->outlineWidth
getStyle
,setStyle
->style
Polygon
getPositions
,setPositions
->positions
Polyline
getShow
,setShow
->show
getPositions
,setPositions
->positions
getMaterial
,setMeterial
->material
getWidth
,setWidth
->width
getLoop
,setLoop
->loop
getId
->id
Occluder
getPosition
->position
getRadius
->radius
setCameraPosition
->cameraPosition
LeapSecond
getLeapSeconds
,setLeapSeconds
->leapSeconds
Fullscreen
getFullscreenElement
->element
getFullscreenChangeEventName
->changeEventName
getFullscreenErrorEventName
->errorEventName
isFullscreenEnabled
->enabled
isFullscreen
->fullscreen
Event
getNumberOfListeners
->numberOfListeners
EllipsoidGeodesic
getSurfaceDistance
->surfaceDistance
getStart
->start
getEnd
->end
getStartHeading
->startHeading
getEndHeading
->endHeading
AnimationCollection
getAll
->all
CentralBodySurface
getTerrainProvider
,setTerrainProvider
->terrainProvider
Credit
getText
->text
getImageUrl
->imageUrl
getLink
->link
TerrainData
,HightmapTerrainData
,QuanitzedMeshTerrainData
getWaterMask
->waterMask
Tile
getChildren
->children
Buffer
getSizeInBytes
->sizeInBytes
getUsage
->usage
getVertexArrayDestroyable
,setVertexArrayDestroyable
->vertexArrayDestroyable
CubeMap
getPositiveX
->positiveX
getNegativeX
->negativeX
getPositiveY
->positiveY
getNegativeY
->negativeY
getPositiveZ
->positiveZ
getNegativeZ
->negativeZ
CubeMap
,Texture
getSampler
,setSampler
->sampler
getPixelFormat
->pixelFormat
getPixelDatatype
->pixelDatatype
getPreMultiplyAlpha
->preMultiplyAlpha
getFlipY
->flipY
getWidth
->width
getHeight
->height
CubeMapFace
getPixelFormat
->pixelFormat
getPixelDatatype
->pixelDatatype
Framebuffer
getNumberOfColorAttachments
->numberOfColorAttachments
getDepthTexture
->depthTexture
getDepthRenderbuffer
->depthRenderbuffer
getStencilRenderbuffer
->stencilRenderbuffer
getDepthStencilTexture
->depthStencilTexture
getDepthStencilRenderbuffer
->depthStencilRenderbuffer
hasDepthAttachment
->hasdepthAttachment
Renderbuffer
getFormat
->format
getWidth
->width
getHeight
->height
ShaderProgram
getVertexAttributes
->vertexAttributes
getNumberOfVertexAttributes
->numberOfVertexAttributes
getAllUniforms
->allUniforms
getManualUniforms
->manualUniforms
Texture
getDimensions
->dimensions
TextureAtlas
getBorderWidthInPixels
->borderWidthInPixels
getTextureCoordinates
->textureCoordinates
getTexture
->texture
getNumberOfImages
->numberOfImages
getGUID
->guid
VertexArray
getNumberOfAttributes
->numberOfAttributes
getIndexBuffer
->indexBuffer
-
Finished removing prototype functions. (Use 'static' versions of these functions instead):
BoundingRectangle
union
,expand
BoundingSphere
union
,expand
,getPlaneDistances
,projectTo2D
Plane
getPointDistance
Ray
getPoint
Spherical
normalize
Extent
validate
,getSouthwest
,getNorthwest
,getNortheast
,getSoutheast
,getCenter
,intersectWith
,contains
,isEmpty
,subsample
-
DataSource
now has additional required properties,isLoading
andloadingEvent
as well as a new optionalupdate
method which will be called each frame. -
Renamed
Stripe
material uniformslightColor
anddarkColor
toevenColor
andoddColor
. -
Replaced
SceneTransitioner
with new functions and properties on theScene
:morphTo2D
,morphToColumbusView
,morphTo3D
,completeMorphOnUserInput
,morphStart
,morphComplete
, andcompleteMorph
. -
Removed
TexturePool
.
-
- Improved visual quality for translucent objects with Weighted Blended Order-Independent Transparency.
- Fixed extruded polygons rendered in the southern hemisphere. #1490
- Fixed Primitive picking that have a closed appearance drawn on the surface. #1333
- Added
StripeMaterialProperty
for supporting theStripe
material in DynamicScene. loadArrayBuffer
,loadBlob
,loadJson
,loadText
, andloadXML
now support loading data from data URIs.- The
debugShowBoundingVolume
property on primitives now works across all scene modes. - Eliminated the use of a texture pool for Earth surface imagery textures. The use of the pool was leading to mipmapping problems in current versions of Google Chrome where some tiles would show imagery from entirely unrelated parts of the globe.
- Breaking changes:
- Replaced getter/setter functions with properties:
Scene
getCanvas
->canvas
getContext
->context
getPrimitives
->primitives
getCamera
->camera
getScreenSpaceCameraController
->screenSpaceCameraController
getFrameState
->frameState
getAnimations
->animations
CompositePrimitive
getCentralBody
,setCentralBody
->centralBody
getLength
->length
Ellipsoid
getRadii
->radii
getRadiiSquared
->radiiSquared
getRadiiToTheFourth
->radiiToTheFourth
getOneOverRadii
->oneOverRadii
getOneOverRadiiSquared
->oneOverRadiiSquared
getMinimumRadius
->minimumRadius
getMaximumRadius
->maximumRadius
CentralBody
getEllipsoid
->ellipsoid
getImageryLayers
->imageryLayers
EllipsoidalOccluder
getEllipsoid
->ellipsoid
getCameraPosition
,setCameraPosition
->cameraPosition
EllipsoidTangentPlane
getEllipsoid
->ellipsoid
getOrigin
->origin
GeographicProjection
getEllipsoid
->ellipsoid
WebMercatorProjection
getEllipsoid
->ellipsoid
SceneTransitioner
getScene
->scene
getEllipsoid
->ellipsoid
ScreenSpaceCameraController
getEllipsoid
,setEllipsoid
->ellipsoid
SkyAtmosphere
getEllipsoid
->ellipsoid
TilingScheme
,GeographicTilingScheme
,WebMercatorTilingSheme
getEllipsoid
->ellipsoid
getExtent
->extent
getProjection
->projection
ArcGisMapServerImageryProvider
,BingMapsImageryProvider
,GoogleEarthImageryProvider
,GridImageryProvider
,OpenStreetMapImageryProvider
,SingleTileImageryProvider
,TileCoordinatesImageryProvider
,TileMapServiceImageryProvider
,WebMapServiceImageryProvider
getProxy
->proxy
getTileWidth
->tileWidth
getTileHeight
->tileHeight
getMaximumLevel
->maximumLevel
getMinimumLevel
->minimumLevel
getTilingScheme
->tilingScheme
getExtent
->extent
getTileDiscardPolicy
->tileDiscardPolicy
getErrorEvent
->errorEvent
isReady
->ready
getCredit
->credit
ArcGisMapServerImageryProvider
,BingMapsImageryProvider
,GoogleEarthImageryProvider
,OpenStreetMapImageryProvider
,SingleTileImageryProvider
,TileMapServiceImageryProvider
,WebMapServiceImageryProvider
getUrl
->url
ArcGisMapServerImageryProvider
isUsingPrecachedTiles
- >usingPrecachedTiles
BingMapsImageryProvider
getKey
->key
getMapStyle
->mapStyle
GoogleEarthImageryProvider
getPath
->path
getChannel
->channel
getVersion
->version
getRequestType
->requestType
WebMapServiceImageryProvider
getLayers
->layers
CesiumTerrainProvider
,EllipsoidTerrainProvider
,ArcGisImageServerTerrainProvider
,VRTheWorldTerrainProvider
getErrorEvent
->errorEvent
getCredit
->credit
getTilingScheme
->tilingScheme
isReady
->ready
TimeIntervalCollection
getChangedEvent
->changedEvent
getStart
->start
getStop
->stop
getLength
->length
isEmpty
->empty
DataSourceCollection
,ImageryLayerCollection
,LabelCollection
,PolylineCollection
,SensorVolumeCollection
getLength
->length
BillboardCollection
getLength
->length
getTextureAtlas
,setTextureAtlas
->textureAtlas
getDestroyTextureAtlas
,setDestroyTextureAtlas
->destroyTextureAtlas
- Removed
Scene.getUniformState()
. Usescene.context.getUniformState()
. - Visualizers no longer create a
dynamicObject
property on the primitives they create. Instead, they set theid
property that is standard for all primitives. - The
propertyChanged
on DynamicScene objects has been renamed todefinitionChanged
. Also, the event is now raised in the case of an existing property being modified as well as having a new property assigned (previously only property assignment would raise the event). - The
visualizerTypes
parameter to theDataSouceDisplay
has been changed to a callback function that creates an array of visualizer instances. DynamicDirectionsProperty
andDynamicVertexPositionsProperty
were both removed, they have been superseded byPropertyArray
andPropertyPositionArray
, which make it easy for DataSource implementations to create time-dynamic arrays.VisualizerCollection
has been removed. It is superseded byDataSourceDisplay
.DynamicEllipsoidVisualizer
,DynamicPolygonVisualizer
, andDynamicPolylineVisualizer
have been removed. They are superseded byGeometryVisualizer
and correspondingGeometryUpdater
implementations;EllipsoidGeometryUpdater
,PolygonGeometryUpdater
,PolylineGeometryUpdater
.- Modified
CameraFlightPath
functions to take place in the camera's current reference frame. The arguments to the function now need to be given in world coordinates and an optional reference frame can be given when the flight is completed. PixelDatatype
properties are now JavaScript numbers, notEnumeration
instances.combine
now takes two objects instead of an array, and defaults to copying shallow references. TheallowDuplicates
parameter has been removed. In the event of duplicate properties, the first object's properties will be used.- Removed
FeatureDetection.supportsCrossOriginImagery
. This check was only useful for very old versions of WebKit.
- Replaced getter/setter functions with properties:
- Added
Model
for drawing 3D models using glTF. See the tutorial and Sandcastle example. - DynamicScene now makes use of Geometry and Appearances, which provides a tremendous improvements to DataSource visualization (CZML, GeoJSON, etc..). Extruded geometries are now supported and in many use cases performance is an order of magnitude faster.
- Added new
SelectionIndicator
andInfoBox
widgets toViewer
, activated byviewerDynamicObjectMixin
. CesiumTerrainProvider
now supports mesh-based terrain like the tiles created by STK Terrain Server.- Fixed rendering artifact on translucent objects when zooming in or out.
- Added
CesiumInspector
widget for graphics debugging. In Cesium Viewer, it is enabled by using the query parameterinspector=true
. Also see the Sandcastle example. - Improved compatibility with Internet Explorer 11.
DynamicEllipse
,DynamicPolygon
, andDynamicEllipsoid
now have properties matching their geometry counterpart, i.e.EllipseGeometry
,EllipseOutlineGeometry
, etc. These properties are also available in CZML.- Added a
definitionChanged
event to theProperty
interface as well as mostDynamicScene
objects. This makes it easy for a client to observe when new data is loaded into a property or object. - Added an
isConstant
property to theProperty
interface. Constant properties do not change in regards to simulation time, i.e.Property.getValue
will always return the same result for all times. ConstantProperty
is now mutable; it's value can be updated viaConstantProperty.setValue
.- Improved the quality of imagery near the poles when the imagery source uses a
GeographicTilingScheme
. OpenStreetMapImageryProvider
now supports imagery with a minimum level.BingMapsImageryProvider
now uses HTTPS by default for metadata and tiles when the document is loaded over HTTPS.- Added the ability for imagery providers to specify view-dependent attribution to be display in the
CreditDisplay
. - View-dependent imagery source attribution is now added to the
CreditDisplay
by theBingMapsImageryProvider
. - Fixed viewing an extent. #1431
- Fixed camera tilt in ICRF. #544
- Fixed developer error when zooming in 2D. If the zoom would create an invalid frustum, nothing is done. #1432
- Fixed
WallGeometry
bug that failed by removing positions that were less close together by less than 6 decimal places. #1483 - Fixed
EllipsoidGeometry
texture coordinates. #1454 - Added a loop property to
Polyline
s to join the first and last point. #960 - Use
performance.now()
instead ofDate.now()
, when available, to limit time spent loading terrain and imagery tiles. This results in more consistent frame rates while loading tiles on some systems. RequestErrorEvent
now includes the headers that were returned with the error response.- Added
AssociativeArray
, which is a helper class for maintaining a hash of objects that also needs to be iterated often. - Added
TimeIntervalCollection.getChangedEvent
which returns an event that will be raised whenever intervals are updated. - Added a second parameter to
Material.fromType
to override default uniforms. #1522 - Added
Intersections2D
class containing operations on 2D triangles. - Added
czm_inverseViewProjection
andczm_inverseModelViewProjection
automatic GLSL uniform.
- Breaking changes:
- The
Viewer
constructor argumentoptions.fullscreenElement
now matches theFullscreenButton
default ofdocument.body
, it was previously theViewer
container itself. - Removed
Viewer.objectTracked
event;Viewer.trackedObject
is now an ES5 Knockout observable that can be subscribed to directly. - Replaced
PerformanceDisplay
withScene.debugShowFramesPerSecond
. Asphalt
,Blob
,Brick
,Cement
,Erosion
,Facet
,Grass
,TieDye
, andWood
materials were moved to the Materials Pack Plugin.- Renamed
GeometryPipeline.createAttributeIndices
toGeometryPipeline.createAttributeLocations
. - Renamed
attributeIndices
property toattributeLocations
when callingContext.createVertexArrayFromGeometry
. PerformanceDisplay
requires a DOM element as a parameter.
- The
- Fixed globe rendering in the current Canary version of Google Chrome.
Viewer
now monitors the clock settings of the first addedDataSource
for changes, and also now has a constructor optionautomaticallyTrackFirstDataSourceClock
which will turn off this behavior.- The
DynamicObjectCollection
created byCzmlDataSource
now sends a singlecollectionChanged
event after CZML is loaded; previously it was sending an event every time an object was created or removed during the load process. - Added
ScreenSpaceCameraController.enableInputs
to fix issue with inputs not being restored after overlapping camera flights. - Fixed picking in 2D with rotated map. #1337
TileMapServiceImageryProvider
can now handle casing differences in tilemapresource.xml.OpenStreetMapImageryProvider
now supports imagery with a minimum level.- Added
Quaternion.fastSlerp
andQuaternion.fastSquad
. - Upgraded Tween.js to version r12.
- Breaking changes:
-
Added
allowTextureFilterAnisotropic
(default:true
) andfailIfMajorPerformanceCaveat
(default:true
) properties to thecontextOptions
property passed toViewer
,CesiumWidget
, andScene
constructors and moved the existing properties to a newwebgl
sub-property. For example, code that looked like:var viewer = new Viewer('cesiumContainer', { contextOptions : { alpha : true } });
should now look like:
var viewer = new Viewer('cesiumContainer', { contextOptions : { webgl : { alpha : true } } });
-
The read-only
Cartesian3
objects must now be cloned to camera properties instead of assigned. For example, code that looked like:camera.up = Cartesian3.UNIT_Z;
should now look like:
Cartesian3.clone(Cartesian3.UNIT_Z, camera.up);
-
The CSS files for individual widgets, e.g.
BaseLayerPicker.css
, no longer import other CSS files. Most applications should importwidgets.css
(and optionallylighter.css
). -
SvgPath
has been replaced by a Knockout binding:cesiumSvgPath
. -
DynamicObject.availability
is now aTimeIntervalCollection
instead of aTimeInterval
. -
Removed prototype version of
BoundingSphere.transform
. -
Matrix4.multiplyByPoint
now returns aCartesian3
instead of aCartesian4
.
-
- The minified, combined
Cesium.js
file now omits certainDeveloperError
checks, to increase performance and reduce file size. When developing your application, we recommend using the unminified version locally for early error detection, then deploying the minified version to production. - Fixed disabling
CentralBody.enableLighting
. - Fixed
Geocoder
flights when following an object. - The
Viewer
widget now clearsGeocoder
input when the user clicks the home button. - The
Geocoder
input type has been changed tosearch
, which improves usability (particularly on mobile devices). There were also some other minor styling improvements. - Added
CentralBody.maximumScreenSpaceError
. - Added
translateEventTypes
,zoomEventTypes
,rotateEventTypes
,tiltEventTypes
, andlookEventTypes
properties toScreenSpaceCameraController
to change the default mouse inputs. - Added
Billboard.setPixelOffsetScaleByDistance
,Label.setPixelOffsetScaleByDistance
,DynamicBillboard.pixelOffsetScaleByDistance
, andDynamicLabel.pixelOffsetScaleByDistance
to control minimum/maximum pixelOffset scaling based on camera distance. - Added
BoundingSphere.transformsWithoutScale
. - Added
fromArray
function toMatrix2
,Matrix3
andMatrix4
. - Added
Matrix4.multiplyTransformation
,Matrix4.multiplyByPointAsVector
.
- Breaking changes:
-
Changed the
CatmulRomSpline
andHermiteSpline
constructors from taking an array of structures to a structure of arrays. For example, code that looked like:var controlPoints = [ { point: new Cartesian3(1235398.0, -4810983.0, 4146266.0), time: 0.0}, { point: new Cartesian3(1372574.0, -5345182.0, 4606657.0), time: 1.5}, { point: new Cartesian3(-757983.0, -5542796.0, 4514323.0), time: 3.0}, { point: new Cartesian3(-2821260.0, -5248423.0, 4021290.0), time: 4.5}, { point: new Cartesian3(-2539788.0, -4724797.0, 3620093.0), time: 6.0} ]; var spline = new HermiteSpline(controlPoints);
should now look like:
var spline = new HermiteSpline({ times : [ 0.0, 1.5, 3.0, 4.5, 6.0 ], points : [ new Cartesian3(1235398.0, -4810983.0, 4146266.0), new Cartesian3(1372574.0, -5345182.0, 4606657.0), new Cartesian3(-757983.0, -5542796.0, 4514323.0), new Cartesian3(-2821260.0, -5248423.0, 4021290.0), new Cartesian3(-2539788.0, -4724797.0, 3620093.0) ] });
-
loadWithXhr
now takes an options object, and allows specifying HTTP method and data to send with the request. -
Renamed
SceneTransitioner.onTransitionStart
toSceneTransitioner.transitionStart
. -
Renamed
SceneTransitioner.onTransitionComplete
toSceneTransitioner.transitionComplete
. -
Renamed
CesiumWidget.onRenderLoopError
toCesiumWidget.renderLoopError
. -
Renamed
SceneModePickerViewModel.onTransitionStart
toSceneModePickerViewModel.transitionStart
. -
Renamed
Viewer.onRenderLoopError
toViewer.renderLoopError
. -
Renamed
Viewer.onDropError
toViewer.dropError
. -
Renamed
CesiumViewer.onDropError
toCesiumViewer.dropError
. -
Renamed
viewerDragDropMixin.onDropError
toviewerDragDropMixin.dropError
. -
Renamed
viewerDynamicObjectMixin.onObjectTracked
toviewerDynamicObjectMixin.objectTracked
. -
PixelFormat
,PrimitiveType
,IndexDatatype
,TextureWrap
,TextureMinificationFilter
, andTextureMagnificationFilter
properties are now JavaScript numbers, notEnumeration
instances. -
Replaced
sizeInBytes
properties onIndexDatatype
withIndexDatatype.getSizeInBytes
.
-
- Added
perPositionHeight
option toPolygonGeometry
andPolygonOutlineGeometry
. - Added
QuaternionSpline
andLinearSpline
. - Added
Quaternion.log
,Quaternion.exp
,Quaternion.innerQuadrangle
, andQuaternion.squad
. - Added
Matrix3.inverse
andMatrix3.determinant
. - Added
ObjectOrientedBoundingBox
. - Added
Ellipsoid.transformPositionFromScaledSpace
. - Added
Math.nextPowerOfTwo
. - Renamed our main website from cesium.agi.com to cesiumjs.org.
-
Breaking changes:
- Reversed the rotation direction of
Matrix3.fromQuaternion
to be consistent with graphics conventions. Mirrored change inQuaternion.fromRotationMatrix
. - The following prototype functions were removed:
- From
Matrix2
,Matrix3
, andMatrix4
:toArray
,getColumn
,setColumn
,getRow
,setRow
,multiply
,multiplyByVector
,multiplyByScalar
,negate
, andtranspose
. - From
Matrix4
:getTranslation
,getRotation
,inverse
,inverseTransformation
,multiplyByTranslation
,multiplyByUniformScale
,multiplyByPoint
. For example, code that previously looked likematrix.toArray();
should now look likeMatrix3.toArray(matrix);
.
- From
- Replaced
DynamicPolyline
color
,outlineColor
, andoutlineWidth
properties with a singlematerial
property. - Renamed
DynamicBillboard.nearFarScalar
toDynamicBillboard.scaleByDistance
. - All data sources must now implement
DataSource.getName
, which returns a user-readable name for the data source. - CZML
document
objects are no longer added to theDynamicObjectCollection
created byCzmlDataSource
. Use theCzmlDataSource
interface to access the data instead. TimeInterval.equals
, andTimeInterval.equalsEpsilon
now compare interval data as well.- All SVG files were deleted from
Widgets/Images
and replaced by a newSvgPath
class. - The toolbar widgets (Home, SceneMode, BaseLayerPicker) and the fullscreen button now depend on
CesiumWidget.css
for global Cesium button styles. - The toolbar widgets expect their
container
to be the toolbar itself now, no need for separate containers for each widget on the bar. Property
implementations are now required to implement a prototypeequals
function.ConstantProperty
andTimeIntervalCollectionProperty
no longer take aclone
function and instead require objects to implement prototypeclone
andequals
functions.- The
SkyBox
constructor now takes anoptions
argument with asources
property, instead of directly takingsources
. - Replaced
SkyBox.getSources
withSkyBox.sources
. - The
bearing
property ofDynamicEllipse
is now calledrotation
. - CZML
ellipse.bearing
property is nowellipse.rotation
.
- Reversed the rotation direction of
-
Added a
Geocoder
widget that allows users to enter an address or the name of a landmark and zoom to that location. It is enabled by default in applications that use theViewer
widget. -
Added
GoogleEarthImageryProvider
. -
Added
Moon
for drawing the moon, andIauOrientationAxes
for computing the Moon's orientation. -
Added
Material.translucent
property. Set this property orAppearance.translucent
for correct rendering order. Translucent geometries are rendered after opaque geometries. -
Added
enableLighting
,lightingFadeOutDistance
, andlightingFadeInDistance
properties toCentralBody
to configure lighting. -
Added
Billboard.setTranslucencyByDistance
,Label.setTranslucencyByDistance
,DynamicBillboard.translucencyByDistance
, andDynamicLabel.translucencyByDistance
to control minimum/maximum translucency based on camera distance. -
Added
PolylineVolumeGeometry
andPolylineVolumeGeometryOutline
. -
Added
Shapes.compute2DCircle
. -
Added
Appearances
tab to Sandcastle with an example for each geometry appearance. -
Added
Scene.drillPick
to return list of objects each containing 1 primitive at a screen space position. -
Added
PolylineOutlineMaterialProperty
for use withDynamicPolyline.material
. -
Added the ability to use
Array
andJulianDate
objects as custom CZML properties. -
Added
DynamicObject.name
and corresponding CZML support. This is a non-unique, user-readable name for the object. -
Added
DynamicObject.parent
and corresponding CZML support. This allows forDataSource
objects to present data hierarchically. -
Added
DynamicPoint.scaleByDistance
to control minimum/maximum point size based on distance from the camera. -
The toolbar widgets (Home, SceneMode, BaseLayerPicker) and the fullscreen button can now be styled directly with user-supplied CSS.
-
Added
skyBox
to theCesiumWidget
andViewer
constructors for changing the default stars. -
Added
Matrix4.fromTranslationQuaternionRotationScale
andMatrix4.multiplyByScale
. -
Added
Matrix3.getEigenDecomposition
. -
Added utility function
getFilenameFromUri
, which given a URI with or without query parameters, returns the last segment of the URL. -
Added prototype versions of
equals
andequalsEpsilon
method back toCartesian2
,Cartesian3
,Cartesian4
, andQuaternion
. -
Added prototype equals function to
NearFarScalar
, andTimeIntervalCollection
. -
Added
FrameState.events
. -
Added
Primitive.allowPicking
to save memory when picking is not needed. -
Added
debugShowBoundingVolume
, for debugging primitive rendering, toPrimitive
,Polygon
,ExtentPrimitive
,EllipsoidPrimitive
,BillboardCollection
,LabelCollection
, andPolylineCollection
. -
Added
DebugModelMatrixPrimitive
for debugging primitive'smodelMatrix
. -
Added
options
argument to theEllipsoidPrimitive
constructor. -
Upgraded Knockout from version 2.3.0 to 3.0.0.
-
Upgraded RequireJS to version 2.1.9, and Almond to 0.2.6.
-
Added a user-defined
id
to all primitives for use with picking. For example:primitives.add(new Polygon({ id : { // User-defined object returned by Scene.pick }, // ... })); // ... var p = scene.pick(/* ... */); if (defined(p) && defined(p.id)) { // Use properties and functions in p.id }
-
Breaking changes:
-
Cesium now prints a reminder to the console if your application uses Bing Maps imagery and you do not supply a Bing Maps key for your application. This is a reminder that you should create a Bing Maps key for your application as soon as possible and prior to deployment. You can generate a Bing Maps key by visiting https://www.bingmapsportal.com/. Set the
BingMapsApi.defaultKey
property to the value of your application's key before constructing theCesiumWidget
or any other types that use the Bing Maps API.BingMapsApi.defaultKey = 'my-key-generated-with-bingmapsportal.com';
-
Scene.pick
now returns an object with aprimitive
property, not the primitive itself. For example, code that looked like:var primitive = scene.pick(/* ... */); if (defined(primitive)) { // Use primitive }
should now look like:
var p = scene.pick(/* ... */); if (defined(p) && defined(p.primitive)) { // Use p.primitive }
-
Removed
getViewMatrix
,getInverseViewMatrix
,getInverseTransform
,getPositionWC
,getDirectionWC
,getUpWC
andgetRightWC
fromCamera
. Instead, use theviewMatrix
,inverseViewMatrix
,inverseTransform
,positionWC
,directionWC
,upWC
, andrightWC
properties. -
Removed
getProjectionMatrix
andgetInfiniteProjectionMatrix
fromPerspectiveFrustum
,PerspectiveOffCenterFrustum
andOrthographicFrustum
. Instead, use theprojectionMatrix
andinfiniteProjectionMatrix
properties. -
The following prototype functions were removed:
- From
Quaternion
:conjugate
,magnitudeSquared
,magnitude
,normalize
,inverse
,add
,subtract
,negate
,dot
,multiply
,multiplyByScalar
,divideByScalar
,getAxis
,getAngle
,lerp
,slerp
,equals
,equalsEpsilon
- From
Cartesian2
,Cartesian3
, andCartesian4
:getMaximumComponent
,getMinimumComponent
,magnitudeSquared
,magnitude
,normalize
,dot
,multiplyComponents
,add
,subtract
,multiplyByScalar
,divideByScalar
,negate
,abs
,lerp
,angleBetween
,mostOrthogonalAxis
,equals
, andequalsEpsilon
. - From
Cartesian3
:cross
Code that previously looked like
quaternion.magnitude();
should now look likeQuaternion.magnitude(quaternion);
. - From
-
DynamicObjectCollection
andCompositeDynamicObjectCollection
have been largely re-written, see the documentation for complete details. Highlights include:getObject
has been renamedgetById
.removeObject
has been renamedremoveById
.collectionChanged
event added for notification of objects being added or removed.
-
DynamicScene
graphics object (DynamicBillboard
, etc...) have had their staticmergeProperties
andclean
functions removed. -
UniformState.update
now takes a context as its first parameter. -
Camera
constructor now takes a context instead of a canvas. -
SceneTransforms.clipToWindowCoordinates
now takes a context instead of a canvas. -
Removed
canvasDimensions
fromFrameState
. -
Removed
context
option fromMaterial
constructor and parameter fromMaterial.fromType
. -
Renamed
TextureWrap.CLAMP
toTextureWrap.CLAMP_TO_EDGE
.
-
-
Added
Geometries
tab to Sandcastle with an example for each geometry type. -
Added
CorridorOutlineGeometry
. -
Added
PolylineGeometry
,PolylineColorAppearance
, andPolylineMaterialAppearance
. -
Added
colors
option toSimplePolylineGeometry
for per vertex or per segment colors. -
Added proper support for browser zoom.
-
Added
propertyChanged
event toDynamicScene
graphics objects for receiving change notifications. -
Added prototype
clone
andmerge
functions toDynamicScene
graphics objects. -
Added
width
,height
, andnearFarScalar
properties toDynamicBillboard
for controlling the image size. -
Added
heading
andtilt
properties toCameraController
. -
Added
Scene.sunBloom
to enable/disable the bloom filter on the sun. The bloom filter should be disabled for better frame rates on mobile devices. -
Added
getDrawingBufferWidth
andgetDrawingBufferHeight
toContext
. -
Added new built-in GLSL functions
czm_getLambertDiffuse
andczm_getSpecular
. -
Added support for EXT_frag_depth.
-
Improved graphics performance.
- An Everest terrain view went from 135-140 to over 150 frames per second.
- Rendering over a thousand polylines in the same collection with different materials went from 20 to 40 frames per second.
-
Improved runtime generation of GLSL shaders.
-
Made sun size accurate.
-
Fixed bug in triangulation that fails on complex polygons. Instead, it makes a best effort to render what it can. #1121
-
Fixed geometries not closing completely. #1093
-
Fixed
EllipsoidTangentPlane.projectPointOntoPlane
for tangent planes on an ellipsoid other than the unit sphere. -
CompositePrimitive.add
now returns the added primitive. This allows us to write more concise code.var p = new Primitive(/* ... */); primitives.add(p); return p;
becomes
return primitives.add(new Primitive(/* ... */));
This releases fixes 2D and other issues with Chrome 29.0.1547.57 (#1002 and #1047).
- Breaking changes:
-
The
CameraFlightPath
functionscreateAnimation
,createAnimationCartographic
, andcreateAnimationExtent
now takescene
as their first parameter instead offrameState
. -
Completely refactored the
DynamicScene
property system to vastly improve the API. See #1080 for complete details.- Removed
CzmlBoolean
,CzmlCartesian2
,CzmlCartesian3
,CzmlColor
,CzmlDefaults
,CzmlDirection
,CzmlHorizontalOrigin
,CzmlImage
,CzmlLabelStyle
,CzmlNumber
,CzmlPosition
,CzmlString
,CzmlUnitCartesian3
,CzmlUnitQuaternion
,CzmlUnitSpherical
, andCzmlVerticalOrigin
since they are no longer needed. - Removed
DynamicProperty
,DynamicMaterialProperty
,DynamicDirectionsProperty
, andDynamicVertexPositionsProperty
; replacing them with an all new system of properties.Property
- base interface for all properties.CompositeProperty
- a property composed of other properties.ConstantProperty
- a property whose value never changes.SampledProperty
- a property whose value is interpolated from a set of samples.TimeIntervalCollectionProperty
- a property whose value changes based on time interval.MaterialProperty
- base interface for all material properties.CompositeMaterialProperty
- aCompositeProperty
for materials.ColorMaterialProperty
- a property that maps to a color material. (replacesDynamicColorMaterial
)GridMaterialProperty
- a property that maps to a grid material. (replacesDynamicGridMaterial
)ImageMaterialProperty
- a property that maps to an image material. (replacesDynamicImageMaterial
)PositionProperty
- base interface for all position properties.CompositePositionProperty
- aCompositeProperty
for positions.ConstantPositionProperty
- aPositionProperty
whose value does not change in respect to theReferenceFrame
in which is it defined.SampledPositionProperty
- aSampledProperty
for positions.TimeIntervalCollectionPositionProperty
- ATimeIntervalCollectionProperty
for positions.
- Removed
-
Removed
processCzml
, useCzmlDataSource
instead. -
Source/Widgets/Viewer/lighter.css
was deleted, useSource/Widgets/lighter.css
instead. -
Replaced
ExtentGeometry
parameters for extruded extent to make them consistent with other geometries.options.extrudedOptions.height
->options.extrudedHeight
options.extrudedOptions.closeTop
->options.closeBottom
options.extrudedOptions.closeBottom
->options.closeTop
-
Geometry constructors no longer compute vertices or indices. Use the type's
createGeometry
method. For example, code that looked like:var boxGeometry = new BoxGeometry({ minimumCorner : min, maximumCorner : max, vertexFormat : VertexFormat.POSITION_ONLY });
should now look like:
var box = new BoxGeometry({ minimumCorner : min, maximumCorner : max, vertexFormat : VertexFormat.POSITION_ONLY }); var geometry = BoxGeometry.createGeometry(box);
-
Removed
createTypedArray
andcreateArrayBufferView
from each of theComponentDatatype
enumerations. Instead, useComponentDatatype.createTypedArray
andComponentDatatype.createArrayBufferView
. -
DataSourceDisplay
now requires aDataSourceCollection
to be passed into its constructor. -
DeveloperError
andRuntimeError
no longer contain anerror
property. CalltoString
, or check thestack
property directly instead. -
Replaced
createPickFragmentShaderSource
withcreateShaderSource
. -
Renamed
PolygonPipeline.earClip2D
toPolygonPipeline.triangulate
.
-
- Added outline geometries. #1021.
- Added
CorridorGeometry
. - Added
Billboard.scaleByDistance
andNearFarScalar
to control billboard minimum/maximum scale based on camera distance. - Added
EllipsoidGeodesic
. - Added
PolylinePipeline.scaleToSurface
. - Added
PolylinePipeline.scaleToGeodeticHeight
. - Added the ability to specify a
minimumTerrainLevel
andmaximumTerrainLevel
when constructing anImageryLayer
. The layer will only be shown for terrain tiles within the specified range. - Added
Math.setRandomNumberSeed
andMath.nextRandomNumber
for generating repeatable random numbers. - Added
Color.fromRandom
to generate random and partially random colors. - Added an
onCancel
callback toCameraFlightPath
functions that will be executed if the flight is canceled. - Added
Scene.debugShowFrustums
andScene.debugFrustumStatistics
for rendering debugging. - Added
Packable
andPackableForInterpolation
interfaces to aid interpolation and in-memory data storage. Also made most core Cesium types implement them. - Added
InterpolationAlgorithm
interface to codify the base interface already being used byLagrangePolynomialApproximation
,LinearApproximation
, andHermitePolynomialApproximation
. - Improved the performance of polygon triangulation using an O(n log n) algorithm.
- Improved geometry batching performance by moving work to a web worker.
- Improved
WallGeometry
to follow the curvature of the earth. - Improved visual quality of closed translucent geometries.
- Optimized polyline bounding spheres.
Viewer
now automatically sets its clock to that of the first addedDataSource
, regardless of how it was added to theDataSourceCollection
. Previously, this was only done for dropped files byviewerDragDropMixin
.CesiumWidget
andViewer
now display an HTML error panel if an error occurs while rendering, which can be disabled with a constructor option.CameraFlightPath
now automatically disables and restores mouse input for the flights it generates.- Fixed broken surface rendering in Columbus View when using the
EllipsoidTerrainProvider
. - Fixed triangulation for polygons that cross the international date line.
- Fixed
EllipsoidPrimitive
rendering for some oblate ellipsoids. #1067. - Fixed Cesium on Nexus 4 with Android 4.3.
- Upgraded Knockout from version 2.2.1 to 2.3.0.
- Breaking changes:
- Replaced tessellators and meshes with geometry. In particular:
- Replaced
CubeMapEllipsoidTessellator
withEllipsoidGeometry
. - Replaced
BoxTessellator
withBoxGeometry
. - Replaced
ExtentTessletaor
withExtentGeometry
. - Removed
PlaneTessellator
. It was incomplete and not used. - Renamed
MeshFilters
toGeometryPipeline
. - Renamed
MeshFilters.toWireframeInPlace
toGeometryPipeline.toWireframe
. - Removed
MeshFilters.mapAttributeIndices
. It was not used. - Renamed
Context.createVertexArrayFromMesh
toContext.createVertexArrayFromGeometry
. Likewise, renamedmesh
constructor property togeometry
.
- Replaced
- Renamed
ComponentDatatype.*.toTypedArray
toComponentDatatype.*.createTypedArray
. - Removed
Polygon.configureExtent
. UseExtentPrimitive
instead. - Removed
Polygon.bufferUsage
. It is no longer needed. - Removed
height
andtextureRotationAngle
arguments fromPolygon
setPositions
andconfigureFromPolygonHierarchy
functions. UsePolygon
height
andtextureRotationAngle
properties. - Renamed
PolygonPipeline.cleanUp
toPolygonPipeline.removeDuplicates
. - Removed
PolygonPipeline.wrapLongitude
. UseGeometryPipeline.wrapLongitude
instead. - Added
surfaceHeight
parameter toBoundingSphere.fromExtent3D
. - Added
surfaceHeight
parameter toExtent.subsample
. - Renamed
pointInsideTriangle2D
topointInsideTriangle
. - Renamed
getLogo
togetCredit
forImageryProvider
andTerrainProvider
.
- Replaced tessellators and meshes with geometry. In particular:
- Added Geometry and Appearances #911.
- Added property
intersectionWidth
toDynamicCone
,DynamicPyramid
,CustomSensorVolume
, andRectangularPyramidSensorVolume
. - Added
ExtentPrimitive
. - Added
PolylinePipeline.removeDuplicates
. - Added
barycentricCoordinates
to compute the barycentric coordinates of a point in a triangle. - Added
BoundingSphere.fromEllipsoid
. - Added
BoundingSphere.projectTo2D
. - Added
Extent.fromDegrees
. - Added
czm_tangentToEyeSpaceMatrix
built-in GLSL function. - Added debugging aids for low-level rendering:
DrawCommand.debugShowBoundingVolume
andScene.debugCommandFilter
. - Added extrusion to
ExtentGeometry
. - Added
Credit
andCreditDisplay
for displaying credits on the screen. - Improved performance and visual quality of
CustomSensorVolume
andRectangularPyramidSensorVolume
. - Improved the performance of drawing polygons created with
configureFromPolygonHierarchy
.
- Breaking changes:
- Removed
CesiumViewerWidget
and replaced it with a newViewer
widget with mixin architecture. This new widget does not depend on Dojo and is part of the combined Cesium.js file. It is intended to be a flexible base widget for easily building robust applications. (#838) - Changed all widgets to use ECMAScript 5 properties. All public observable properties now must be accessed and assigned as if they were normal properties, instead of being called as functions. For example:
clockViewModel.shouldAnimate()
->clockViewModel.shouldAnimate
clockViewModel.shouldAnimate(true);
->clockViewModel.shouldAnimate = true;
ImageryProviderViewModel.fromConstants
has been removed. Use theImageryProviderViewModel
constructor directly.- Renamed the
transitioner
property onCesiumWidget
,HomeButton
, andScreenModePicker
tosceneTrasitioner
to be consistent with property naming convention. ImageryProvider.loadImage
now requires that the calling imagery provider instance be passed as its first parameter.- Removed the Dojo-based
checkForChromeFrame
function, and replaced it with a new standalone version that returns a promise to signal when the asynchronous check has completed. - Removed
Assets/Textures/NE2_LR_LC_SR_W_DR_2048.jpg
. If you were previously using this image withSingleTileImageryProvider
, consider instead usingTileMapServiceImageryProvider
with a URL ofAssets/Textures/NaturalEarthII
. - The
Client CZML
SandCastle demo has been removed, largely because it is redundant with the Simple CZML demo. - The
Two Viewer Widgets
SandCastle demo has been removed. We will add back a multi-scene example when we have a good architecture for it in place. - Changed static
clone
functions in all objects such that if the object being cloned is undefined, the function will return undefined instead of throwing an exception.
- Removed
- Fix resizing issues in
CesiumWidget
(#608, #834). - Added initial support for GeoJSON and TopoJSON. (#890, #906)
- Added rotation, aligned axis, width, and height properties to
Billboard
s. - Improved the performance of "missing tile" checking, especially for Bing imagery.
- Improved the performance of terrain and imagery refinement, especially when using a mixture of slow and fast imagery sources.
TileMapServiceImageryProvider
now supports imagery with a minimum level. This improves compatibility with tile sets generated by MapTiler or gdal2tiles.py using their default settings.- Added
Context.getAntialias
. - Improved test robustness on Mac.
- Upgraded RequireJS to version 2.1.6, and Almond to 0.2.5.
- Fixed artifacts that showed up on the edges of imagery tiles on a number of GPUs.
- Fixed an issue in
BaseLayerPicker
where destroy wasn't properly cleaning everything up. - Added the ability to unsubscribe to
Timeline
update event. - Added a
screenSpaceEventHandler
property toCesiumWidget
. Also added asceneMode
option to the constructor to set the initial scene mode. - Added
useDefaultRenderLoop
property toCesiumWidget
that allows the default render loop to be disabled so that a custom render loop can be used. - Added
CesiumWidget.onRenderLoopError
which is anEvent
that is raised if an exception is generated inside of the default render loop. ImageryProviderViewModel.creationCommand
can now return an array of ImageryProvider instances, which allows adding multiple layers when a single item is selected in theBaseLayerPicker
widget.
- Breaking changes:
- Replaced
Uniform.getFrameNumber
andUniform.getTime
withUniform.getFrameState
, which returns the full frame state. - Renamed
Widgets/Fullscreen
folder toWidgets/FullscreenButton
along with associated objects/files.FullscreenWidget
->FullscreenButton
FullscreenViewModel
->FullscreenButtonViewModel
- Removed
addAttribute
,removeAttribute
, andsetIndexBuffer
fromVertexArray
. They were not used.
- Replaced
- Added support for approximating local vertical, local horizontal (LVLH) reference frames when using
DynamicObjectView
in 3D. The object automatically selects LVLH or EastNorthUp based on the object's velocity. - Added support for CZML defined vectors via new
CzmlDirection
,DynamicVector
, andDynamicVectorVisualizer
objects. - Added
SceneTransforms.wgs84ToWindowCoordinates
. #746. - Added
fromElements
toCartesian2
,Cartesian3
, andCartesian4
. - Added
DrawCommand.cull
to avoid redundant visibility checks. - Added
czm_morphTime
automatic GLSL uniform. - Added support for OES_vertex_array_object, which improves rendering performance.
- Added support for floating-point textures.
- Added
IntersectionTests.trianglePlaneIntersection
. - Added
computeHorizonCullingPoint
,computeHorizonCullingPointFromVertices
, andcomputeHorizonCullingPointFromExtent
methods toEllipsoidalOccluder
and used them to build a more accurate horizon occlusion test for terrain rendering. - Added sun visualization. See
Sun
andScene.sun
. - Added a new
HomeButton
widget for returning to the default view of the current scene mode. - Added
Command.beforeExecute
andCommand.afterExecute
events to enable additional processing when a command is executed. - Added rotation parameter to
Polygon.configureExtent
. - Added camera flight to extents. See new methods
CameraController.getExtentCameraCoordinates
andCameraFlightPath.createAnimationExtent
. - Improved the load ordering of terrain and imagery tiles, so that relevant detail is now more likely to be loaded first.
- Improved appearance of the Polyline arrow material.
- Fixed polyline clipping artifact. #728.
- Fixed polygon crossing International Date Line for 2D and Columbus view. #99.
- Fixed issue for camera flights when
frameState.mode === SceneMode.MORPHING
. - Fixed ISO8601 date parsing when UTC offset is specified in the extended format, such as
2008-11-10T14:00:00+02:30
.
- Breaking changes:
-
Removed the color, outline color, and outline width properties of polylines. Instead, use materials for polyline color and outline properties. Code that looked like:
var polyline = polylineCollection.add({ positions : positions, color : new Color(1.0, 1.0, 1.0, 1.0), outlineColor : new Color(1.0, 0.0, 0.0, 1.0), width : 1.0, outlineWidth : 3.0 });
should now look like:
var outlineMaterial = Material.fromType(context, Material.PolylineOutlineType); outlineMaterial.uniforms.color = new Color(1.0, 1.0, 1.0, 1.0); outlineMaterial.uniforms.outlineColor = new Color(1.0, 0.0, 0.0, 1.0); outlineMaterial.uniforms.outlinewidth = 2.0; var polyline = polylineCollection.add({ positions : positions, width : 3.0, material : outlineMaterial });
-
CzmlCartographic
has been removed and all cartographic values are converted to Cartesian internally during CZML processing. This improves performance and fixes interpolation of cartographic source data. The Cartographic representation can still be retrieved if needed. -
Removed
ComplexConicSensorVolume
, which was not documented and did not work on most platforms. It will be brought back in a future release. This does not affect CZML, which uses a custom sensor to approximate a complex conic. -
Replaced
computeSunPosition
withSimon1994PlanetaryPosition
, which has functions to calculate the position of the sun and the moon more accurately. -
Removed
Context.createClearState
. These properties are now part ofClearCommand
. -
RenderState
objects returned fromContext.createRenderState
are now immutable. -
Removed
positionMC
fromczm_materialInput
. It is no longer used by any materials.
-
- Added wide polylines that work with and without ANGLE.
- Polylines now use materials to describe their surface appearance. See the Fabric wiki page for more details on how to create materials.
- Added new
PolylineOutline
,PolylineGlow
,PolylineArrow
, andFade
materials. - Added
czm_pixelSizeInMeters
automatic GLSL uniform. - Added
AnimationViewModel.snapToTicks
, which when set to true, causes the shuttle ring on the Animation widget to snap to the defined tick values, rather than interpolate between them. - Added
Color.toRgba
andColor.fromRgba
to convert to/from numeric unsigned 32-bit RGBA values. - Added
GridImageryProvider
for custom rendering effects and debugging. - Added new
Grid
material. - Made
EllipsoidPrimitive
double-sided. - Improved rendering performance by minimizing WebGL state calls.
- Fixed an error in Web Worker creation when loading Cesium.js from a different origin.
- Fixed
EllipsoidPrimitive
picking and picking objects with materials that have transparent parts. - Fixed imagery smearing artifacts on mobile devices and other devices without high-precision fragment shaders.
- Breaking changes:
Billboard.computeScreenSpacePosition
now takesContext
andFrameState
arguments instead of aUniformState
argument.- Removed
clampToPixel
property fromBillboardCollection
andLabelCollection
. This option is no longer needed due to overall LabelCollection visualization improvements. - Removed
Widgets/Dojo/CesiumWidget
and replaced it withWidgets/CesiumWidget
, which has no Dojo dependancies. destroyObject
no longer deletes properties from the object being destroyed.darker.css
files have been deleted and thedarker
theme is now the default style for widgets. The original theme is now known aslighter
and is in correspondinglighter.css
files.- CSS class names have been standardized to avoid potential collisions. All widgets now follow the same pattern,
cesium-<widget>-<className>
. - Removed
view2D
,view3D
, andviewColumbus
properties fromCesiumViewerWidget
. Use thesceneTransitioner
property instead.
- Added
BoundingSphere.fromCornerPoints
. - Added
fromArray
anddistance
functions toCartesian2
,Cartesian3
, andCartesian4
. - Added
DynamicPath.resolution
property for setting the maximum step size, in seconds, to take when sampling a position for path visualization. - Added
TileCoordinatesImageryProvider
that renders imagery with tile X, Y, Level coordinates on the surface of the globe. This is mostly useful for debugging. - Added
DynamicEllipse
andDynamicObject.ellipse
property to render CZML ellipses on the globe. - Added
sampleTerrain
function to sample the terrain height of a list ofCartographic
positions. - Added
DynamicObjectCollection.removeObject
and handling of the new CZMLdelete
property. - Imagery layers with an
alpha
of exactly 0.0 are no longer rendered. Previously these invisible layers were rendered normally, which was a waste of resources. Unlike theshow
property, imagery tiles in a layer with analpha
of 0.0 are still downloaded, so the layer will become visible more quickly when itsalpha
is increased. - Added
onTransitionStart
andonTransitionComplete
events toSceneModeTransitioner
. - Added
SceneModePicker
; a new widget for morphing between scene modes. - Added
BaseLayerPicker
; a new widget for switching among pre-configured base layer imagery providers.
- Breaking changes:
- Major refactoring of both animation and widgets systems as we move to an MVVM-like architecture for user interfaces.
- New
Animation
widget for controlling playback. - AnimationController.js has been deleted.
ClockStep.SYSTEM_CLOCK_DEPENDENT
was renamed toClockStep.SYSTEM_CLOCK_MULTIPLIER
.ClockStep.SYSTEM_CLOCK
was added to have the clock always match the system time.ClockRange.LOOP
was renamed toClockRange.LOOP_STOP
and now only loops in the forward direction.Clock.reverseTick
was removed, simply negateClock.multiplier
and pass it toClock.tick
.Clock.shouldAnimate
was added to indicate ifClock.tick
should actually advance time.- The Timeline widget was moved into the Widgets/Timeline subdirectory.
Dojo/TimelineWidget
was removed. You should use the non-toolkit specific Timeline widget directly.
- New
- Removed
CesiumViewerWidget.fullScreenElement
, instead use theCesiumViewerWidget.fullscreen.viewModel.fullScreenElement
observable property. IntersectionTests.rayPlane
now takes the newPlane
type instead of separateplaneNormal
andplaneD
arguments.- Renamed
ImageryProviderError
toTileProviderError
.
- Major refactoring of both animation and widgets systems as we move to an MVVM-like architecture for user interfaces.
- Added support for global terrain visualization via
CesiumTerrainProvider
,ArcGisImageServerTerrainProvider
, andVRTheWorldTerrainProvider
. See the Terrain Tutorial for more information. - Added
FullscreenWidget
which is a simple, single-button widget that toggles fullscreen mode of the specified element. - Added interactive extent drawing to the
Picking
Sandcastle example. - Added
HeightmapTessellator
to create a mesh from a heightmap. - Added
JulianDate.equals
. - Added
Plane
for representing the equation of a plane. - Added a line segment-plane intersection test to
IntersectionTests
. - Improved the lighting used in 2D and Columbus View modes. In general, the surface lighting in these modes should look just like it does in 3D.
- Fixed an issue where a
PolylineCollection
with a model matrix other than the identity would be incorrectly rendered in 2D and Columbus view. - Fixed an issue in the
ScreenSpaceCameraController
where disabled mouse events can cause the camera to be moved after being re-enabled.
- Breaking changes:
- The combined
Cesium.js
file and other required files are now created inBuild/Cesium
andBuild/CesiumUnminified
folders. - The Web Worker files needed when using the combined
Cesium.js
file are now in aWorkers
subdirectory. - Removed
erosion
property fromPolygon
,ComplexConicSensorVolume
,RectangularPyramidSensorVolume
, andComplexConicSensorVolume
. Use the newErosion
material. See the Sandbox Animation example. - Removed
setRectangle
andgetRectangle
methods fromViewportQuad
. Use the newrectangle
property. - Removed
time
parameter fromScene.initializeFrame
. Instead, pass the time toScene.render
.
- The combined
- Added new
RimLighting
andErosion
materials. See the Fabric wiki page. - Added
hue
andsaturation
properties toImageryLayer
. - Added
czm_hue
andczm_saturation
to adjust the hue and saturation of RGB colors. - Added
JulianDate.getDaysDifference
method. - Added
Transforms.computeIcrfToFixedMatrix
andcomputeFixedToIcrfMatrix
. - Added
EarthOrientationParameters
,EarthOrientationParametersSample
,Iau2006XysData
, andIau2006XysDataSample
classes toCore
. - CZML now supports the ability to specify positions in the International Celestial Reference Frame (ICRF), and inertial reference frame.
- Fixed globe rendering on the Nexus 4 running Google Chrome Beta.
ViewportQuad
now supports the material system. See the Fabric wiki page.- Fixed rendering artifacts in
EllipsoidPrimitive
. - Fixed an issue where streaming CZML would fail when changing material types.
- Updated Dojo from 1.7.2 to 1.8.4. Reminder: Cesium does not depend on Dojo but uses it for reference applications.
- Breaking changes:
-
Renamed the
server
property tourl
when constructing aBingMapsImageryProvider
. Likewise, renamedBingMapsImageryProvider.getServer
toBingMapsImageryProvider.getUrl
. Code that looked likevar bing = new BingMapsImageryProvider({ server : 'dev.virtualearth.net' });
should now look like:
var bing = new BingMapsImageryProvider({ url : 'http://dev.virtualearth.net' });
-
Renamed
toCSSColor
totoCssColorString
. -
Moved
minimumZoomDistance
andmaximumZoomDistance
from theCameraController
to theScreenSpaceCameraController
.
-
- Added
fromCssColorString
toColor
to create aColor
instance from any CSS value. - Added
fromHsl
toColor
to create aColor
instance from H, S, L values. - Added
Scene.backgroundColor
. - Added
textureRotationAngle
parameter toPolygon.setPositions
andPolygon.configureFromPolygonHierarchy
to rotate textures on polygons. - Added
Matrix3.fromRotationX
,Matrix3.fromRotationY
,Matrix3.fromRotationZ
, andMatrix2.fromRotation
. - Added
fromUniformScale
toMatrix2
,Matrix3
, andMatrix4
. - Added
fromScale
toMatrix2
. - Added
multiplyByUniformScale
toMatrix4
. - Added
flipY
property when callingContext.createTexture2D
andContext.createCubeMap
. - Added
MeshFilters.encodePosition
andEncodedCartesian3.encode
. - Fixed jitter artifacts with polygons.
- Fixed camera tilt close to the
minimumZoomDistance
. - Fixed a bug that could lead to blue tiles when zoomed in close to the North and South poles.
- Fixed a bug where removing labels would remove the wrong label and ultimately cause a crash.
- Worked around a bug in Firefox 18 preventing typed arrays from being transferred to or from Web Workers.
- Upgraded RequireJS to version 2.1.2, and Almond to 0.2.3.
- Updated the default Bing Maps API key.
- Breaking changes:
- Renamed
EventHandler
toScreenSpaceEventHandler
. - Renamed
MouseEventType
toScreenSpaceEventType
. - Renamed
MouseEventType.MOVE
toScreenSpaceEventType.MOUSE_MOVE
. - Renamed
CameraEventHandler
toCameraEventAggregator
. - Renamed all
*MouseAction
to*InputAction
(including get, set, remove, etc). - Removed
Camera2DController
,CameraCentralBodyController
,CameraColumbusViewController
,CameraFlightController
,CameraFreeLookController
,CameraSpindleController
, andCameraControllerCollection
. Common ways to modify the camera are through theCameraController
object of theCamera
and will work in all scene modes. The default camera handler is theScreenSpaceCameraController
object on theScene
. - Changed default Natural Earth imagery to a 2K version of Natural Earth II with Shaded Relief, Water, and Drainages. The previously used version did not include lakes and rivers. This replaced
Source/Assets/Textures/NE2_50M_SR_W_2048.jpg
withSource/Assets/Textures/NE2_LR_LC_SR_W_DR_2048.jpg
.
- Renamed
- Added pinch-zoom, pinch-twist, and pinch-tilt for touch-enabled browsers (particularly mobile browsers).
- Improved rendering support on Nexus 4 and Nexus 7 using Firefox.
- Improved camera flights.
- Added Sandbox example using NASA's new Black Marble night imagery.
- Added constrained z-axis by default to the Cesium widgets.
- Upgraded Jasmine from version 1.1.0 to 1.3.0.
- Added
JulianDate.toIso8601
, which creates an ISO8601 compliant representation of a JulianDate. - The
Timeline
widget now properly displays leap seconds.
- Breaking changes:
- Widget render loop now started by default. Startup code changed, see Sandcastle examples.
- Changed
Timeline.makeLabel
to take aJulianDate
instead of a JavaScript date parameter. - Default Earth imagery has been moved to a new package
Assets
. Images used bySandcastle
examples have been moved to the Sandcastle folder, and images used by the Dojo widgets are now self-contained in theWidgets
package. positionToEyeEC
inczm_materialInput
is no longer normalized by default.FullScreen
and related functions have been renamed toFullscreen
to match the W3C standard name.Fullscreen.isFullscreenEnabled
was incorrectly implemented in certain browsers.isFullscreenEnabled
now correctly determines whether the browser will allow an element to go fullscreen. A newisFullscreen
function is available to determine if the browser is currently in fullscreen mode.Fullscreen.getFullScreenChangeEventName
andFullscreen.getFullScreenChangeEventName
now return the proper event name, suitable for use with theaddEventListener
API, instead prefixing them with "on".- Removed
Scene.setSunPosition
andScene.getSunPosition
. The sun position used for lighting is automatically computed based on the scene's time. - Removed a number of rendering options from
CentralBody
, including the ground atmosphere, night texture, specular map, cloud map, cloud shadows, and bump map. These features weren't really production ready and had a disproportionate cost in terms of shader complexity and compilation time. They may return in a more polished form in a future release. - Removed
affectedByLighting
property fromPolygon
,EllipsoidPrimitive
,RectangularPyramidSensorVolume
,CustomSensorVolume
, andComplexConicSensorVolume
. - Removed
DistanceIntervalMaterial
. This was not documented. Matrix2.getElementIndex
,Matrix3.getElementIndex
, andMatrix4.getElementIndex
functions have had their parameters swapped and now take row first and column second. This is consistent with other class constants, such as Matrix2.COLUMN1ROW2.- Replaced
CentralBody.showSkyAtmosphere
withScene.skyAtmosphere
andSkyAtmosphere
. This has no impact for those using the Cesium widget.
- Improved lighting in Columbus view and on polygons, ellipsoids, and sensors.
- Fixed atmosphere rendering artifacts and improved Columbus view transition.
- Fixed jitter artifacts with billboards and polylines.
- Added
TileMapServiceImageryProvider
. See the Imagery LayersSandcastle
example. - Added
Water
material. See the MaterialsSandcastle
example. - Added
SkyBox
to draw stars. AddedCesiumWidget.showSkyBox
andCesiumViewerWidget.showSkyBox
. - Added new
Matrix4
functions:Matrix4.multiplyByTranslation
,multiplyByPoint
, andMatrix4.fromScale
. AddedMatrix3.fromScale
. - Added
EncodedCartesian3
, which is used to eliminate jitter when drawing primitives. - Added new automatic GLSL uniforms:
czm_frameNumber
,czm_temeToPseudoFixed
,czm_entireFrustum
,czm_inverseModel
,czm_modelViewRelativeToEye
,czm_modelViewProjectionRelativeToEye
,czm_encodedCameraPositionMCHigh
, andczm_encodedCameraPositionMCLow
. - Added
czm_translateRelativeToEye
andczm_luminance
GLSL functions. - Added
shininess
toczm_materialInput
. - Added
QuadraticRealPolynomial
,CubicRealPolynomial
, andQuarticRealPolynomial
for finding the roots of quadratic, cubic, and quartic polynomials. - Added
IntersectionTests.grazingAltitudeLocation
for finding a point on a ray nearest to an ellipsoid. - Added
mostOrthogonalAxis
function toCartesian2
,Cartesian3
, andCartesian4
. - Changed CesiumViewerWidget default behavior so that zooming to an object now requires a single left-click, rather than a double-click.
- Updated third-party Tween.js.
- Breaking changes:
- Renamed
Texture2DPool
toTexturePool
. - Renamed
BingMapsTileProvider
toBingMapsImageryProvider
. - Renamed
SingleTileProvider
toSingleTileImageryProvider
. - Renamed
ArcGISTileProvider
toArcGisMapServerImageryProvider
. - Renamed
EquidistantCylindrdicalProjection
toGeographicProjection
. - Renamed
MercatorProjection
toWebMercatorProjection
. CentralBody.dayTileProvider
has been removed. Instead, add one or more imagery providers to the collection returned byCentralBody.getImageryLayers()
.- The
description.generateTextureCoords
parameter passed toExtentTessellator.compute
is now calleddescription.generateTextureCoordinates
. - Renamed
bringForward
,sendBackward
,bringToFront
, andsendToBack
methods onCompositePrimitive
toraise
,lower
,raiseToTop
, andlowerToBottom
, respectively. Cache
andCachePolicy
are no longer used and have been removed.- Fixed problem with Dojo widget startup, and removed "postSetup" callback in the process. See Sandcastle examples and update your startup code.
- Renamed
CentralBody
now allows imagery from multiple sources to be layered and alpha blended on the globe. See the newImagery Layers
andMap Projections
Sandcastle examples.- Added
WebMapServiceImageryProvider
. - Improved middle mouse click behavior to always tilt in the same direction.
- Added
getElementIndex
toMatrix2
,Matrix3
, andMatrix4
.
- Breaking changes:
- Removed the
render
andrenderForPick
functions of primitives. The primitiveupdate
function updates a list of commands for the renderer. For more details, see the Data Driven Renderer. - Removed
Context.getViewport
andContext.setViewport
. The viewport defaults to the size of the canvas if a primitive does not override the viewport property in the render state. shallowEquals
has been removed.- Passing
undefined
to any of the set functions onBillboard
now throws an exception. - Passing
undefined
to any of the set functions onPolyline
now throws an exception. PolygonPipeline.scaleToGeodeticHeight
now takes ellipsoid as the last parameter, instead of the first. It also now defaults toEllipsoid.WGS84
if no parameter is provided.
- Removed the
- The new Sandcastle live editor and demo gallery replace the Sandbox and Skeleton examples.
- Improved picking performance and accuracy.
- Added EllipsoidPrimitive for visualizing ellipsoids and spheres. Currently, this is only supported in 3D, not 2D or Columbus view.
- Added
DynamicEllipsoid
andDynamicEllipsoidVisualizer
which use the newEllipsoidPrimitive
to implement ellipsoids in CZML. Extent
functions now take optional result parameters. Also addedgetCenter
,intersectWith
, andcontains
functions.- Add new utility class,
DynamicObjectView
for tracking a DynamicObject with the camera across scene modes; also hooked up CesiumViewerWidget to use it. - Added
enableTranslate
,enableZoom
, andenableRotate
properties toCamera2DController
to selectively toggle camera behavior. All values default totrue
. - Added
Camera2DController.setPositionCartographic
to simplify moving the camera programmatically when in 2D mode. - Improved near/far plane distances and eliminated z-fighting.
- Added
Matrix4.multiplyByTranslation
,Matrix4.fromScale
, andMatrix3.fromScale
.
-
Breaking changes:
-
Materials are now created through a centralized Material class using a JSON schema called Fabric. For example, change:
polygon.material = new BlobMaterial({repeat : 10.0});
to:
polygon.material = Material.fromType(context, 'Blob'); polygon.material.repeat = 10.0;
or:
polygon.material = new Material({ context : context, fabric : { type : 'Blob', uniforms : { repeat : 10.0 } } });
-
Label.computeScreenSpacePosition
now requires the current scene state as a parameter. -
Passing
undefined
to any of the set functions onLabel
now throws an exception. -
Renamed
agi_
prefix on GLSL identifiers toczm_
. -
Replaced
ViewportQuad
propertiesvertexShader
andfragmentShader
with optional constructor arguments. -
Changed the GLSL automatic uniform
czm_viewport
from anivec4
to avec4
to reduce casting. -
Billboard
now defaults to an image index of-1
indicating no texture, previously billboards defaulted to0
indicating the first texture in the atlas. For example, change:billboards.add({ position : { x : 1.0, y : 2.0, z : 3.0 }, });
to:
billboards.add({ position : { x : 1.0, y : 2.0, z : 3.0 }, imageIndex : 0 });
-
Renamed
SceneState
toFrameState
. -
SunPosition
was changed from a static object to a functioncomputeSunPosition
; which now returns aCartesian3
with the computed position. It was also optimized for performance and memory pressure. For example, change:var result = SunPosition.compute(date); var position = result.position; to: var position = computeSunPosition(date);
-
-
All
Quaternion
operations now have static versions that work with any objects exposingx
,y
,z
andw
properties. -
Added support for nested polygons with holes. See
Polygon.configureFromPolygonHierarchy
. -
Added support to the renderer for view frustum and central body occlusion culling. All built-in primitives, such as
BillboardCollection
,Polygon
,PolylineCollection
, etc., can be culled. See the advanced examples in the Sandbox for details. -
Added
writeTextToCanvas
function which handles sizing the resulting canvas to fit the desired text. -
Added support for CZML path visualization via the
DynamicPath
andDynamicPathVisualizer
objects. See the CZML wiki for more details. -
Added support for WEBGL_depth_texture. See
Framebuffer.setDepthTexture
. -
Added
CesiumMath.isPowerOfTwo
. -
Added
affectedByLighting
toComplexConicSensorVolume
,CustomSensorVolume
, andRectangularPyramidSensorVolume
to turn lighting on/off for these objects. -
CZML
Polygon
,Cone
, andPyramid
objects are no longer affected by lighting. -
Added
czm_viewRotation
andczm_viewInverseRotation
automatic GLSL uniforms. -
Added a
clampToPixel
property toBillboardCollection
andLabelCollection
. When true, it aligns all billboards and text to a pixel in screen space, providing a crisper image at the cost of jumpier motion. -
Ellipsoid
functions now take optional result parameters.
-
Breaking changes:
-
Removed keyboard input handling from
EventHandler
. -
TextureAtlas
takes an object literal in its constructor instead of separate parameters. Code that previously looked like:context.createTextureAtlas(images, pixelFormat, borderWidthInPixels);
should now look like:
context.createTextureAtlas({images : images, pixelFormat : pixelFormat, borderWidthInPixels : borderWidthInPixels});
-
Camera.pickEllipsoid
returns the picked position in world coordinates and the ellipsoid parameter is optional. Prefer the newScene.pickEllipsoid
method. For example, changevar position = camera.pickEllipsoid(ellipsoid, windowPosition);
to:
var position = scene.pickEllipsoid(windowPosition, ellipsoid);
-
Camera.getPickRay
now returns the newRay
type instead of an object with position and direction properties. -
Camera.viewExtent
now takes anExtent
argument instead of west, south, east and north arguments. PreferScene.viewExtent
overCamera.viewExtent
.Scene.viewExtent
will work in anySceneMode
. For example, changecamera.viewExtent(ellipsoid, west, south, east, north);
to:
scene.viewExtent(extent, ellipsoid);
-
CameraSpindleController.mouseConstrainedZAxis
has been removed. Instead, useCameraSpindleController.constrainedAxis
. Code that previously looked like:spindleController.mouseConstrainedZAxis = true;
should now look like:
spindleController.constrainedAxis = Cartesian3.UNIT_Z;
-
The
Camera2DController
constructor andCameraControllerCollection.add2D
now require a projection instead of an ellipsoid. -
Chain
has been removed.when
is now included as a more complete CommonJS Promises/A implementation. -
Jobs.downloadImage
was replaced withloadImage
to provide a promise that will asynchronously load an image. -
jsonp
now returns a promise for the requested data, removing the need for a callback parameter. -
JulianDate.getTimeStandard() has been removed, dates are now always stored internally as TAI.
-
LeapSeconds.setLeapSeconds now takes an array of LeapSecond instances instead of JSON.
-
TimeStandard.convertUtcToTai and TimeStandard.convertTaiToUtc have been removed as they are no longer needed.
-
Cartesian3.prototype.getXY()
was replaced withCartesian2.fromCartesian3
. Code that previously looked likecartesian3.getXY();
should now look likeCartesian2.fromCartesian3(cartesian3);
. -
Cartesian4.prototype.getXY()
was replaced withCartesian2.fromCartesian4
. Code that previously looked likecartesian4.getXY();
should now look likeCartesian2.fromCartesian4(cartesian4);
. -
Cartesian4.prototype.getXYZ()
was replaced withCartesian3.fromCartesian4
. Code that previously looked likecartesian4.getXYZ();
should now look likeCartesian3.fromCartesian4(cartesian4);
. -
Math.angleBetween
was removed because it was a duplicate ofCartesian3.angleBetween
. Simply replace calls of the former to the later. -
Cartographic3
was renamed toCartographic
. -
Cartographic2
was removed; useCartographic
instead. -
Ellipsoid.toCartesian
was renamed toEllipsoid.cartographicToCartesian
. -
Ellipsoid.toCartesians
was renamed toEllipsoid.cartographicArrayToCartesianArray
. -
Ellipsoid.toCartographic2
was renamed toEllipsoid.cartesianToCartographic
. -
Ellipsoid.toCartographic2s
was renamed toEllipsoid.cartesianArrayToCartographicArray
. -
Ellipsoid.toCartographic3
was renamed toEllipsoid.cartesianToCartographic
. -
Ellipsoid.toCartographic3s
was renamed toEllipsoid.cartesianArrayToCartographicArray
. -
Ellipsoid.cartographicDegreesToCartesian
was removed. Code that previously looked likeellipsoid.cartographicDegreesToCartesian(new Cartographic(45, 50, 10))
should now look likeellipsoid.cartographicToCartesian(Cartographic.fromDegrees(45, 50, 10))
. -
Math.cartographic3ToRadians
,Math.cartographic2ToRadians
,Math.cartographic2ToDegrees
, andMath.cartographic3ToDegrees
were removed. These functions are no longer needed because Cartographic instances are always represented in radians. -
All functions starting with
multiplyWith
now start withmultiplyBy
to be consistent with functions starting withdivideBy
. -
The
multiplyWithMatrix
function on eachMatrix
type was renamed tomultiply
. -
All three Matrix classes have been largely re-written for consistency and performance. The
values
property has been eliminated and Matrices are no longer immutable. Code that previously looked likematrix = matrix.setColumn0Row0(12);
now looks likematrix[Matrix2.COLUMN0ROW0] = 12;
. Code that previously looked likematrix.setColumn3(cartesian3);
now looked likematrix.setColumn(3, cartesian3, matrix)
. -
'Polyline' is no longer externally creatable. To create a 'Polyline' use the 'PolylineCollection.add' method.
Polyline polyline = new Polyline();
to
PolylineCollection polylineCollection = new PolylineCollection(); Polyline polyline = polylineCollection.add();
-
-
All
Cartesian2
operations now have static versions that work with any objects exposingx
andy
properties. -
All
Cartesian3
operations now have static versions that work with any objects exposingx
,y
, andz
properties. -
All
Cartesian4
operations now have static versions that work with any objects exposingx
,y
,z
andw
properties. -
All
Cartographic
operations now have static versions that work with any objects exposinglongitude
,latitude
, andheight
properties. -
All
Matrix
classes are now indexable like arrays. -
All
Matrix
operations now have static versions of all prototype functions and anywhere we take a Matrix instance as input can now also take an Array or TypedArray. -
All
Matrix
,Cartesian
, andCartographic
operations now take an optional result parameter for object re-use to reduce memory pressure. -
Added
Cartographic.fromDegrees
to make creating Cartographic instances from values in degrees easier. -
Added
addImage
toTextureAtlas
so images can be added to a texture atlas after it is constructed. -
Added
Scene.pickEllipsoid
, which picks either the ellipsoid or the map depending on the currentSceneMode
. -
Added
Event
, a new utility class which makes it easy for objects to expose event properties. -
Added
TextureAtlasBuilder
, a new utility class which makes it easy to build a TextureAtlas asynchronously. -
Added
Clock
, a simple clock for keeping track of simulated time. -
Added
LagrangePolynomialApproximation
,HermitePolynomialApproximation
, andLinearApproximation
interpolation algorithms. -
Added
CoordinateConversions
, a new static class where most coordinate conversion methods will be stored. -
Added
Spherical
coordinate type -
Added a new DynamicScene layer for time-dynamic, data-driven visualization. This include CZML processing. For more details see https://github.com/AnalyticalGraphicsInc/cesium/wiki/Architecture and https://github.com/AnalyticalGraphicsInc/cesium/wiki/CZML-in-Cesium.
-
Added a new application, Cesium Viewer, for viewing CZML files and otherwise exploring the globe.
-
Added a new Widgets directory, to contain common re-usable Cesium related controls.
-
Added a new Timeline widget to the Widgets directory.
-
Added a new Widgets/Dojo directory, to contain dojo-specific widgets.
-
Added new Timeline and Cesium dojo widgets.
-
Added
CameraCentralBodyController
as the new default controller to handle mouse input.- The left mouse button rotates around the central body.
- The right mouse button and mouse wheel zoom in and out.
- The middle mouse button rotates around the point clicked on the central body.
-
Added
computeTemeToPseudoFixedMatrix
function toTransforms
. -
Added 'PolylineCollection' to manage numerous polylines. 'PolylineCollection' dramatically improves rendering speed when using polylines.
- Breaking changes:
- Changed
Tipsify.tipsify
andTipsify.calculateACMR
to accept an object literal instead of three separate arguments. Supplying a maximum index and cache size is now optional. CentralBody
no longer requires a camera as the first parameter.
- Changed
- Added
CentralBody.northPoleColor
andCentralBody.southPoleColor
to fill in the poles if they are not covered by a texture. - Added
Polygon.configureExtent
to create a polygon defined by west, south, east, and north values. - Added functions to
Camera
to provide position and directions in world coordinates. - Added
showThroughEllipsoid
toCustomSensorVolume
andRectangularPyramidSensorVolume
to allow sensors to draw through Earth. - Added
affectedByLighting
toCentralBody
andPolygon
to turn lighting on/off for these objects.
-
Breaking changes:
-
Renamed Geoscope to Cesium. To update your code, change all
Geoscope.*
references toCesium.*
, and reference Cesium.js instead of Geoscope.js. -
CompositePrimitive.addGround
was removed; useCompositePrimitive.add
instead. For example, changeprimitives.addGround(polygon);
to:
primitives.add(polygon);
-
Moved
eastNorthUpToFixedFrame
andnorthEastDownToFixedFrame
functions fromEllipsoid
to a newTransforms
object. For example, changevar m = ellipsoid.eastNorthUpToFixedFrame(p);
to:
var m = Cesium.Transforms.eastNorthUpToFixedFrame(p, ellipsoid);
-
Label properties
fillStyle
andstrokeStyle
were renamed tofillColor
andoutlineColor
; they are also now color objects instead of strings. The labelColor
property has been removed.For example, change
label.setFillStyle("red"); label.setStrokeStyle("#FFFFFFFF");
to:
label.setFillColor({ red : 1.0, blue : 0.0, green : 0.0, alpha : 1.0 }); label.setOutlineColor({ red : 1.0, blue : 1.0, green : 1.0, alpha : 1.0 });
-
Renamed
Tipsify.Tipsify
toTipsify.tipsify
. -
Renamed
Tipsify.CalculateACMR
toTipsify.calculateACMR
. -
Renamed
LeapSecond.CompareLeapSecondDate
toLeapSecond.compareLeapSecondDate
. -
Geoscope.JSONP.get
is nowCesium.jsonp
.Cesium.jsonp
now takes a url, a callback function, and an options object. The previous 2nd and 4th parameters are now specified using the options object. -
TWEEN
is no longer globally defined, and is instead available asCesium.Tween
. -
Chain.js functions such as
run
are now moved toCesium.Chain.run
, etc. -
Geoscope.CollectionAlgorithms.binarySearch
is nowCesium.binarySearch
. -
Geoscope.ContainmentTests.pointInsideTriangle2D
is nowCesium.pointInsideTriangle2D
. -
Static constructor methods prefixed with "createFrom", now start with "from":
Matrix2.createfromColumnMajorArray
becomes
Matrix2.fromColumnMajorArray
-
The
JulianDate
constructor no longer takes aDate
object, use the new from methods instead:new JulianDate(new Date());
becomes
JulianDate.fromDate(new Date("January 1, 2011 12:00:00 EST")); JulianDate.fromIso8601("2012-04-24T18:08Z"); JulianDate.fromTotalDays(23452.23);
-
JulianDate.getDate
is nowJulianDate.toDate()
and returns a new instance each time. -
CentralBody.logoOffsetX
andlogoOffsetY
have been replaced withCentralBody.logoOffset
, aCartesian2
. -
TileProviders now take a proxy object instead of a string, to allow more control over how proxy URLs are built. Construct a DefaultProxy, passing the previous proxy URL, to get the previous behavior.
-
Ellipsoid.getScaledWgs84()
has been removed since it is not needed. -
getXXX()
methods which returned a new instance of what should really be a constant are now exposed as frozen properties instead. This should improve performance and memory pressure.Cartsian2/3/4.getUnitX()
->Cartsian2/3/4.UNIT_X
Cartsian2/3/4.getUnitY()
->Cartsian2/3/4.UNIT_Y
Cartsian2/3/4.getUnitZ()
->Cartsian3/4.UNIT_Z
Cartsian2/3/4.getUnitW()
->Cartsian4.UNIT_W
Matrix/2/3/4.getIdentity()
->Matrix/2/3/4.IDENTITY
Quaternion.getIdentity()
->Quaternion.IDENTITY
Ellipsoid.getWgs84()
->Ellipsoid.WGS84
Ellipsoid.getUnitSphere()
->Ellipsoid.UNIT_SPHERE
Cartesian2/3/4/Cartographic.getZero()
->Cartesian2/3/4/Cartographic.ZERO
-
-
Added
PerformanceDisplay
which can be added to a scene to display frames per second (FPS). -
Labels now correctly allow specifying fonts by non-pixel CSS units such as points, ems, etc.
-
Added
Shapes.computeEllipseBoundary
and updatedShapes.computeCircleBoundary
to compute boundaries using arc-distance. -
Added
fileExtension
andcredit
properties toOpenStreetMapTileProvider
construction. -
Night lights no longer disappear when
CentralBody.showGroundAtmosphere
istrue
.
-
Breaking changes:
-
Replaced
Geoscope.SkyFromSpace
object withCentralBody.showSkyAtmosphere
property. -
For mouse click and double click events, replaced
event.x
andevent.y
withevent.position
. -
For mouse move events, replaced
movement.startX
andstartY
withmovement.startPosition
. Replacedmovement.endX
andmovement.endY
withmovement.endPosition
. -
Scene.Pick
now takes aCartesian2
with the origin at the upper-left corner of the canvas. For example, code that looked like:scene.pick(movement.endX, scene.getCanvas().clientHeight - movement.endY);
becomes:
scene.pick(movement.endPosition);
-
-
Added
SceneTransitioner
to switch between 2D and 3D views. See the new Skeleton 2D example. -
Added
CentralBody.showGroundAtmosphere
to show an atmosphere on the ground. -
Added
Camera.pickEllipsoid
to get the point on the globe under the mouse cursor. -
Added
Polygon.height
to draw polygons at a constant altitude above the ellipsoid.
- Breaking changes:
- Replaced
Geoscope.Constants
andGeoscope.Trig
withGeoscope.Math
. Polygon
- Replaced
setColor
andgetColor
with amaterial.color
property. - Replaced
setEllipsoid
andgetEllipsoid
with anellipsoid
property. - Replaced
setGranularity
andgetGranularity
with agranularity
property.
- Replaced
Polyline
- Replaced
setColor
/getColor
andsetOutlineColor
/getOutlineColor
withcolor
andoutline
properties. - Replaced
setWidth
/getWidth
andsetOutlineWidth
/getOutlineWidth
withwidth
andoutlineWidth
properties.
- Replaced
- Removed
Geoscope.BillboardCollection.bufferUsage
. It is now automatically determined. - Removed
Geoscope.Label
set/get functions forshadowOffset
,shadowBlur
,shadowColor
. These are no longer supported. - Renamed
Scene.getTransitions
toScene.getAnimations
. - Renamed
SensorCollection
toSensorVolumeCollection
. - Replaced
ComplexConicSensorVolume.material
with separate materials for each surface:outerMaterial
,innerMaterial
, andcapMaterial
. - Material renames
TranslucentSensorVolumeMaterial
toColorMaterial
.DistanceIntervalSensorVolumeMaterial
toDistanceIntervalMaterial
.TieDyeSensorVolumeMaterial
toTieDyeMaterial
.CheckerboardSensorVolumeMaterial
toCheckerboardMaterial
.PolkaDotSensorVolumeMaterial
toDotMaterial
.FacetSensorVolumeMaterial
toFacetMaterial
.BlobSensorVolumeMaterial
toBlobMaterial
.
- Added new materials:
VerticalStripeMaterial
HorizontalStripeMaterial
DistanceIntervalMaterial
- Added polygon material support via the new
Polygon.material
property. - Added clock angle support to
ConicSensorVolume
via the newmaximumClockAngle
andminimumClockAngle
properties. - Added a rectangular sensor,
RectangularPyramidSensorVolume
. - Changed custom sensor to connect direction points using the sensor's radius; previously, points were connected with a line.
- Improved performance and memory usage of
BillboardCollection
andLabelCollection
. - Added more mouse events.
- Added Sandbox examples for new features.
- Replaced
- Added complex conic and custom sensor volumes, and various materials to change their appearance. See the new Sensor folder in the Sandbox.
- Added modelMatrix property to primitives to render them in a local reference frame. See the polyline example in the Sandbox.
- Added eastNorthUpToFixedFrame() and northEastDownToFixedFrame() to Ellipsoid to create local reference frames.
- Added CameraFlightController to zoom smoothly from one point to another. See the new camera examples in the Sandbox.
- Added row and column assessors to Matrix2, Matrix3, and Matrix4.
- Added Scene, which reduces the amount of code required to use Geoscope. See the Skeleton. We recommend using this instead of explicitly calling update() and render() for individual or composite primitives. Existing code will need minor changes:
- Calls to Context.pick() should be replaced with Scene.pick().
- Primitive constructors no longer require a context argument.
- Primitive update() and render() functions now require a context argument. However, when using the new Scene object, these functions do not need to be called directly.
- TextureAtlas should no longer be created directly; instead, call Scene.getContext().createTextureAtlas().
- Other breaking changes:
-
Camera get/set functions, e.g., getPosition/setPosition were replaced with properties, e.g., position.
-
Replaced CompositePrimitive, Polygon, and Polyline getShow/setShow functions with a show property.
-
Replaced Polyline, Polygon, BillboardCollection, and LabelCollection getBufferUsage/setBufferUsage functions with a bufferUsage property.
-
Changed colors used by billboards, labels, polylines, and polygons. Previously, components were named r, g, b, and a. They are now red, green, blue, and alpha. Previously, each component's range was [0, 255]. The range is now [0, 1] floating point. For example,
color : { r : 0, g : 255, b : 0, a : 255 }
becomes:
color : { red : 0.0, green : 1.0, blue : 0.0, alpha : 1.0 }
-
-
Added
Shapes.computeCircleBoundary
to compute circles. See the Sandbox. -
Changed the
EventHandler
constructor function to take the Geoscope canvas, which ensures the mouse position is correct regardless of the canvas' position on the page. Code that previously looked like:var handler = new Geoscope.EventHandler();
should now look like:
var handler = new Geoscope.EventHandler(canvas);
-
Context.Pick no longer requires clamping the x and y arguments. Code that previously looked like:
var pickedObject = context.pick(primitives, us, Math.max(x, 0.0), Math.max(context.getCanvas().clientHeight - y, 0.0));
can now look like:
var pickedObject = context.pick(primitives, us, x, context.getCanvas().clientHeight - y);
-
Changed Polyline.setWidth and Polyline.setOutlineWidth to clamp the width to the WebGL implementation limit instead of throwing an exception. Code that previously looked like:
var maxWidth = context.getMaximumAliasedLineWidth(); polyline.setWidth(Math.min(5, maxWidth)); polyline.setOutlineWidth(Math.min(10, maxWidth));
can now look like:
polyline.setWidth(5); polyline.setOutlineWidth(10);
-
Improved the Sandbox:
- Code in the editor is now evaluated as you type for quick prototyping.
- Highlighting a Geoscope type in the editor and clicking the doc button in the toolbar now brings up the reference help for that type.
-
BREAKING CHANGE: The
Context
constructor-function now takes an element instead of an ID. Code that previously looked like:var context = new Geoscope.Context("glCanvas"); var canvas = context.getCanvas();
should now look like:
var canvas = document.getElementById("glCanvas"); var context = new Geoscope.Context(canvas);
- Added new Sandbox and Skeleton examples. The sandbox contains example code for common tasks. The skeleton is a bare-bones application for building upon. Most sandbox code examples can be copy and pasted directly into the skeleton.
- Added
Geoscope.Polygon
for drawing polygons on the globe. - Added
Context.pick
to pick objects in one line of code. - Added
bringForward
,bringToFront
,sendBackward
, andsendToBack
functions toCompositePrimitive
to control the render-order for ground primitives. - Added
getShow
/setShow
functions toPolyline
andCompositePrimitive
. - Added new camera control and event types including
CameraFreeLookEventHandler
,CameraSpindleEventHandler
, andEventHandler
. - Replaced
Ellipsoid.toCartesian3
withEllipsoid.toCartesian
. - update and
updateForPick
functions no longer require aUniformState
argument.
- Added support for lines using
Geoscope.Polyline
. See the Sandbox example. - Made
CompositePrimitive
,LabelCollection
, andBillboardCollection
have consistent function names, including a newcontains()
function. - Improved reference documentation layout.
- Flushed out
CompositePrimitive
,TimeStandard
, andLeapSecond
types. - Improved support for browsers using ANGLE (Windows Only).
- Added
Geoscope.TimeStandard
for handling TAI and UTC time standards. - Added
Geoscope.Quaternion
, which is a foundation for future camera control. - Added initial version of
Geoscope.PrimitiveCollection
to simplify rendering. - Prevented billboards/labels near the surface from getting cut off by the globe.
- See the Sandbox for example code.
- Added more reference documentation for labels.
- Added
Geoscope.LabelCollection
for drawing text. - Added
Geoscope.JulianDate
andGeoscope.TimeConstants
for proper time handling. - See the Sandbox example for how to use the new labels and Julian date.
- Added
Geoscope.ViewportQuad
andGeoscope.Rectangle
(foundations for 2D map). - Improved the visual quality of cloud shadows.
- Added
SunPosition
type to compute the sun position for a julian date. - Simplified picking. See the mouse move event in the Sandbox example.
Cartographic2
andCartographic3
are now mutable types.- Added reference documentation for billboards.
- Initial Release.