Change Log
1.9 - 2015-05-01
- Breaking changes
- Removed
ColorMaterialProperty.fromColor, previously deprecated in 1.6. Pass aColordirectly to theColorMaterialPropertyconstructor instead. - Removed
CompositeEntityCollection.entitiesandEntityCollection.entities, both previously deprecated in 1.6. UseCompositeEntityCollection.valuesandEntityCollection.valuesinstead. - Removed
DataSourceDisplay.getSceneandDataSourceDisplay.getDataSources, both previously deprecated in 1.6. UseDataSourceDisplay.sceneandDataSourceDisplay.dataSourcesinstead. Entityno longer takes a string id as its constructor argument. Pass an options object withidproperty instead. This was previously deprecated in 1.6.- Removed
Model.readyToRender, previously deprecated in 1.6. UseModel.readyPromiseinstead.
- Removed
- Entity
materialproperties andMaterialuniform values can now take acanvaselement in addition to an image or url. #2667 - Fixed a bug which caused
Entity.viewFromto be ignored when flying to, zooming to, or tracking an Entity. #2628 - Fixed a bug that caused
CorridorandPolylineVolumegeometry 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
Geocoderstyling issue in Safari. #2658. - Fixed a crash that would occur when the
ViewerorCesiumWidgetwas resized to 0 while the camera was in motion. #2662 - Fixed a bug that prevented the
InfoBoxtitle from updating if the name ofviewer.selectedEntitychanged. #2644 - Added an optional
resultparameter tocomputeScreenSpacePositionon bothBillboardandLabel. - Added number of cached shaders to the
CesiumInspectordebugging widget. - An exception is now thrown if
Primitive.modelMatrixis not the identity matrix when in in 2D or Columbus View.
1.8 - 2015-04-01
- Breaking changes
- Removed the
eye,target, andupparameters toCamera.lookAtwhich were deprecated in Cesium 1.6. Use thetargetandoffset. - 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
directionandupoptions toCamera.flyTo, which were deprecated in Cesium 1.6. Use theorientationoption. - Removed
Camera.flyToRectangle, which was deprecated in Cesium 1.6. UseCamera.flyTo.
- Removed the
- Deprecated
- Deprecated the
smallterraintileset. 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
visibilityelement. - Added
PolylineArrowMaterialPropertyto allow entities materials to use polyline arrows. - Added
VelocityOrientationPropertyto 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
VelocityOrientationPropertyto orient an aircraft in flight. - Improved
viewer.zoomToandviewer.flyToso they are now "best effort" and work even if some entities being zoomed to are not currently in the scene. - Fixed
PointerEventdetection 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 WindowsWebBrowsercontrol. - Fixed an issue with transparency. #2572
- Fixed improper handling of null values when loading
GeoJSONdata. - 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
ArcGisMapServerImagerProviderconstructor. - Added the ability to access dynamic ArcGIS MapServer layers by specifying the
layersparameter to theArcGisMapServerImagerProviderconstructor. - Fixed a bug that could cause incorrect rendering of an
ArcGisMapServerImageProviderwith a "singleFusedMapCache" in the geographic projection (EPSG:4326). - Added new construction options to
CesiumWidgetandViewer, 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.
1.7.1 - 2015-03-06
- Fixed a crash in
InfoBoxthat would occur when attempting to display plain text. - Fixed a crash when loading KML features that have no description and an empty
ExtendedDatanode. - Fixed a bug
in Color.fromCssColorStringwhere undefined would be returned for the CSS colortransparent. - Added
Color.TRANSPARENT. - Added support for KML
TimeStampnodes. - 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
errorEventand rejecting their load promise.
1.7 - 2015-03-02
- Breaking changes
- Removed
viewerEntityMixin, which was deprecated in Cesium 1.5. Its functionality is now directly part of theViewerwidget. - Removed
Camera.tilt, which was deprecated in Cesium 1.6. UseCamera.pitch. - Removed
Camera.headingandCamera.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.descriptioninstead. - Deprecated
GeoJsonDataSource.fromUrl, it will be removed in 1.10. UseGeoJsonDataSource.loadinstead. 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
sourceUriparameter to allCzmlDataSourceload and process functions. Support will be removed in 1.10. Instead pass anoptionsobject withsourceUriproperty.
- Deprecated
- Added initial support for KML 2.2 via
KmlDataSource. Check out the new Sandcastle Demo and the reference documentation for more details. InfoBoxsanitization now relies on iframe sandboxing. This allows for much more content to be displayed in the InfoBox (and still be secure).- Added
InfoBox.framewhich is the instance of the iframe that is used to host description content. Sanitization can be controlled via the frame'ssandboxattribute. 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
ElipseOutlineGeometryandCircleOutlineGeometryto 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
PolylineGeometryandSimplePolylineGeometrywhen used asynchronously. #2516 - Fixed a bug that would caused duplicate graphics if non-time-dynamic
Entityobjects were modified in quick succession. #2514. - Fixed a bug where
camera.flyToBoundingSpherewould ignore range if the bounding sphere radius was 0. #2519 - Fixed some styling issues with
InfoBoxandBaseLayerPickercaused by using Bootstrap with Cesium. #2487 - Added support for rendering a water effect on Quantized-Mesh terrain tiles.
- Added
packandunpackfunctions toMatrix2andMatrix3. - Added camera-terrain collision detection/response when the camera reference frame is set.
- Added
ScreenSpaceCameraController.enableCollisionDetectionto enable/disable camera collision detection with terrain. - Added
CzmlDataSource.loadandGeoJsonDataSource.loadto make it easy to create and load data in a single line. - Added the ability to pass a
Promiseto aDataSourcetoDataSourceCollection.add. TheDataSourcewill not actually be added until the promise resolves. - Added the ability to pass a
Promiseto a target toviewer.zoomToandviewer.flyTo. - All
CzmlDataSourceandGeoJsonDataSourceloading functions now returnPromiseinstances that resolve to the instances after data is loaded. - Error handling in all
CzmlDataSourceandGeoJsonDataSourceloading functions is now more consistent. Rather than a mix of exceptions andPromiserejections, all errors are raised viaPromiserejections. - In addition to addresses, the
Geocoderwidget now allows input of longitude, latitude, and an optional height in degrees and meters. Example:-75.596, 40.038, 1000or-75.596 40.038.
1.6 - 2015-02-02
- Breaking changes
Rectangle.intersectWithwas deprecated in Cesium 1.5. UseRectangle.intersection, which is the same but returnsundefinedwhen two rectangles do not intersect.Rectangle.isEmptywas deprecated in Cesium 1.5.- The
sourceUriparameter toGeoJsonDatasource.loadwas deprecated in Cesium 1.4 and has been removed. Use options.sourceUri instead. PolygonGraphics.positionscreated byGeoJSONDataSourcenow evaluate to aPolygonHierarchyobject instead of an array of positions.
- Deprecated
Camera.tiltwas deprecated in Cesium 1.6. It will be removed in Cesium 1.7. UseCamera.pitch.Camera.headingandCamera.tiltwere deprecated in Cesium 1.6. They will become read-only in Cesium 1.7. UseCamera.setView.Camera.setPositionCartographicwas deprecated in Cesium 1.6. It will be removed in Cesium 1.7. UseCamera.setView.- The
directionandupoptions toCamera.flyTohave been deprecated in Cesium 1.6. They will be removed in Cesium 1.8. Use theorientationoption. Camera.flyToRectanglehas been deprecated in Cesium 1.6. They will be removed in Cesium 1.8. UseCamera.flyTo.Camera.setTransformwas deprecated in Cesium 1.6. It will be removed in Cesium 1.8. UseCamera.lookAtTransform.Camera.transformwas deprecated in Cesium 1.6. It will be removed in Cesium 1.8. UseCamera.lookAtTransform.- The
eye,target, andupparameters toCamera.lookAtwere deprecated in Cesium 1.6. It will be removed in Cesium 1.8. Use thetargetandoffset. PolygonGraphics.positionswas deprecated and replaced withPolygonGraphics.hierarchy, whose value is aPolygonHierarchyinstead of an array of positions.PolygonGraphics.positionswill be removed in Cesium 1.8.- The
Model.readyToRenderevent was deprecated and will be removed in Cesium 1.9. Use the newModel.readyPromiseinstead. 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).DataSourceDisplaymethodsgetSceneandgetDataSourceshave been deprecated and replaced withsceneanddataSourcesproperties. They will be removed in Cesium 1.9.- The
Entityconstructor 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 allEntityrelated properties at construction time. Support for the deprecated behavior will be removed in Cesium 1.9. - The
EntityCollection.entitiesandCompositeEntityCollect.entitiesproperties 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.
GeoJsonDataSourcenow 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
Primitivewill 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.entitieswhich allows you to easily create and manageEntityinstances without a correspondingDataSource. This is just a shortcut toviewer.dataSourceDisplay.defaultDataSource.entities - Added
viewer.zoomToandviewer.flyTowhich takes an entity, array of entities,EntityCollection, orDataSourceas a parameter and zooms or flies to the corresponding visualization. - Setting
viewer.trackedEntitytoundefinedwill 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.fromHeadingPitchRollto create a rotation from heading, pitch, and roll angles. - Added
Transforms.headingPitchRollToFixedFrameto create a local frame from a position and heading/pitch/roll angles. - Added
Transforms.headingPitchRollQuaternionwhich is the quaternion rotation fromTransforms.headingPitchRollToFixedFrame. - Added
Color.fromAlphaandColor.withAlphato make it easy to create translucent colors from constants, i.e.var translucentRed = Color.RED.withAlpha(0.95). - Added
PolylineVolumeGraphicsandEntity.polylineVolume - Added
Camera.lookAtTransformwhich 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.flyTothat can be either direction and up unit vectors or heading, pitch and roll angles. - Added
BillboardGraphics.imageSubRegion, to enable custom texture atlas use forEntityinstances. - Added
CheckerboardMaterialPropertyto enable use of the checkerboard material with the entity API. - Added
PolygonHierarchyto make defining polygons with holes clearer. - Added
PolygonGraphics.hierarchyfor supporting polygons with holes via data sources. - Added
BoundingSphere.fromBoundingSpheres, which creates aBoundingSpherethat encloses the specified array of BoundingSpheres. - Added
Model.readyPromiseandPrimitive.readyPromisewhich are promises that resolve when the primitives are ready. ConstantPropertycan now hold any value; previously it was limited to values that implementedequalsandclonesfunctions, as well as a few special cases.- Fixed a bug in
EllipsoidGeodesicthat caused it to modify theheightof the positions passed to the constructor or to tosetEndPoints. WebMapTileServiceImageryProvidernow supports RESTful requests (by accepting a tile-URL template).- Fixed a bug that caused
Camera.rollto be around 180 degrees, indicating the camera was upside-down, when in the Southern hemisphere. - The object returned by
Primitive.getGeometryInstanceAttributesnow 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
SelectionIndicatorwidget 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
CustomDataSourcewhich 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.defaultDataSourcewhich is an instance ofCustomDataSourceand allows you to easily add custom entities to the display. - Added
Camera.viewBoundingSphereandCamera.flyToBoundingSphere, which as the names imply, sets or flies to a view that encloses the providedBoundingSphere - For constant
Propertyvalues, there is no longer a need to create an instance ofConstantPropertyorConstantPositionProperty, 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.
1.5 - 2015-01-05
- Breaking changes
- Removed
GeometryPipeline.wrapLongitude, which was deprecated in 1.4. UseGeometryPipeline.splitLongitudeinstead. - Removed
GeometryPipeline.combine, which was deprecated in 1.4. UseGeometryPipeline.combineInstancesinstead.
- Removed
- Deprecated
viewerEntityMixinwas deprecated. It will be removed in Cesium 1.6. Its functionality is now directly part of theViewerwidget.Rectangle.intersectWithwas deprecated. It will be removed in Cesium 1.6. UseRectangle.intersection, which is the same but returnsundefinedwhen two rectangles do not intersect.Rectangle.isEmptywas deprecated. It will be removed in Cesium 1.6.
- Improved GeoJSON, TopoJSON, and general polygon loading performance.
- Added caching to
Modelto save memory and improve loading speed when several models with the same url are created. - Added
ModelNode.showfor per-node show/hide. - Added the following properties to
ViewerandCesiumWidget:imageryLayers,terrainProvider, andcamera. This avoids the need to accessviewer.scenein some cases. - Dramatically improved the quality of font outlines.
- Added
BoxGraphicsandEntity.box. - Added
CorridorGraphicsandEntity.corridor. - Added
CylinderGraphicsandEntity.cylinder. - Fixed imagery providers whose rectangle crosses the IDL. Added
Rectangle.computeWidth,Rectangle.computeHeight,Rectangle.width, andRectangle.height. #2195 ConstantPropertynow acceptsHTMLElementinstances as valid values.BillboardGraphics.imageandImageMaterialProperty.imagenow acceptPropertyinstances that represent anImageorCanvasin addition to a url.- Fixed a bug in
PolylineGeometrythat would cause gaps in the line. #2136 - Fixed
upsampleQuantizedTerrainMeshrounding errors that had occasionally led to missing terrain skirt geometry in upsampled tiles. - Added
Math.modwhich computesm % nbut also works whenmis negative.
1.4 - 2014-12-01
- Breaking changes
- Types implementing
TerrainProviderare now required to implement thegetTileDataAvailablefunction. Backwards compatibility for this was deprecated in Cesium 1.2.
- Types implementing
- Deprecated
- The
sourceUriparameter toGeoJsonDatasource.loadwas deprecated and will be removed in Cesium 1.6 on February 3, 2015 (#2257). Useoptions.sourceUriinstead. GeometryPipeline.wrapLongitudewas deprecated. It will be removed in Cesium 1.5 on January 2, 2015. UseGeometryPipeline.splitLongitude. (#2272)GeometryPipeline.combinewas 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
DataSourcelayer. This is exposed via the newoutlineWidthproperty onEllipseGraphics,EllipsoidGraphics,PolygonGraphics,RectangleGraphics, andWallGraphics. - Added
outlineWidthsupport to CZML geometry packets. - Added
stroke-widthsupport to the GeoJSON simple-style implementation. - Added the ability to specify global GeoJSON default styling. See the documentation for details.
- Added
CallbackPropertyto support lazy property evaluation as well as make custom properties easier to create. - Added an options parameter to
GeoJsonDataSource.load,GeoJsonDataSource.loadUrl, andGeoJsonDataSource.fromUrlto 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
tileMatrixLabelsoption toWebMapTileServiceImageryProvider. - Fixed a bug in
PolylineGeometrythat would cause the geometry to be split across the IDL for 3D only scenes. #1197 - Added
modelMatrixandculloptions toPrimitiveconstructor. - The
translationparameter toMatrix4.fromRotationTranslationnow defaults toCartesian3.ZERO. - Fixed
ModelNode.matrixwhen a node is targeted for animation. Camera.tiltnow 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
distanceSquaredtoCartesian2,Cartesian3, andCartesian4. - Added
Matrix4.multiplyByMatrix3. - Fixed a bug in
Modelwhere the WebGL shader optimizer in Linux was causing mesh loading to fail.
1.3 - 2014-11-03
- 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
CesiumTerrainProviderfor 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
cultureoption toBingMapsImageryProviderconstructor. - Reduced the amount of GPU memory used by billboards and labels.
- Fixed a bug that caused non-base imagery layers with a limited
rectangleto be stretched to the edges of imagery tiles. #416 - Fixed rendering polylines with duplicate positions. #898
- Fixed a bug in
Globe.pickthat 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
sampleTerrainthat could cause it to produce undefined heights when sampling for a position very near the edge of a tile. ReferencePropertyinstances 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.
1.2 - 2014-10-01
- Deprecated
- Types implementing the
TerrainProviderinterface should now include the newgetTileDataAvailablefunction. 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
Modelwhere 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
GeoJsonDataSourcewhich 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.fromUrlto make it easy to add a data source in less code. - Added
PinBuilderclass for easy creation of map pins. (Sandcastle example) - Added
Color.brightenandColor.darkento make it easy to brighten or darker a color instance. - Added a constructor option to
Scene,CesiumWidget, andViewerto disable order independent translucency. - Added support for WKID 102113 (equivalent to 102100) to
ArcGisMapServerImageryProvider. - Added
TerrainProvider.getTileDataAvailableto improve tile loading performance when camera starts near globe. - Added
Globe.showWaterEffectto enable/disable the water effect for supported terrain providers. - Added
Globe.baseColorto set the color of the globe when no imagery is available. - Changed default
GeoJSONPoint feature graphics to useBillboardGraphicswith a blue map pin instead of colorPointGraphics. - Cesium now ships with a version of the maki icon set for use with
PinBuilderand GeoJSON simplestyle support. - Cesium now ships with a default web.config file to simplify IIS deployment.
1.1 - 2014-09-02
- Added a new imagery provider,
WebMapTileServiceImageryProvider, for accessing tiles on a WMTS 1.0.0 server. - Added an optional
pickFeaturesfunction to theImageryProviderinterface. 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, andtilingSchemeparameters to theWebMapServiceImageryProviderconstructor. - Added
idproperty toScenewhich is a readonly unique identifier associated with each instance. - Added
FeatureDetection.supportsWebWorkers. - Greatly improved the performance of time-varying polylines when using DataSources.
viewerEntityMixinnow automatically queries for imagery layer features on click and shows their properties in theInfoBoxpanel.- 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.wgs84ToWindowCoordinatesto incorrectly returnundefinedwhen in 2D. - Fixed a bug in
ImageryLayerthat caused layer images to be rendered twice for each terrain tile that existed prior to adding the imagery layer. - Fixed a bug in
Camera.pickEllipsoidthat caused it to return the back side of the ellipsoid when near the surface. - Fixed a bug which prevented
loadWithXhrfrom working with older browsers, such as Internet Explorer 9.
1.0 - 2014-08-01
Breaking changes (why so many?)
- All
Matrix2,Matrix3,Matrix4andQuaternionfunctions that take aresultparameter now require the parameter, except functions starting withfrom. - Removed
Billboard.imageIndexandBillboardCollection.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
Modelto support glTF 0.8. See the forum post for full details.Modelprimitives are now rotated to beZ-up to match Cesium convention; glTF stores models withYup.SimplePolylineGeometryandPolylineGeometrynow curve to follow the ellipsoid surface by default. To disable this behavior, set the optionfollowSurfacetofalse.Renamed
DynamicScenelayer toDataSources. The following types were also renamed:DynamicBillboard->BillboardGraphicsDynamicBillboardVisualizer->BillboardVisualizerCompositeDynamicObjectCollection->CompositeEntityCollectionDynamicClock->DataSourceClockDynamicEllipse->EllipseGraphicsDynamicEllipsoid->EllipsoidGraphicsDynamicObject->EntityDynamicObjectCollection->EntityCollectionDynamicObjectView->EntityViewDynamicLabel->LabelGraphicsDynamicLabelVisualizer->LabelVisualizerDynamicModel->ModelGraphicsDynamicModelVisualizer->ModelVisualizerDynamicPath->PathGraphicsDynamicPathVisualizer->PathVisualizerDynamicPoint->PointGraphicsDynamicPointVisualizer->PointVisualizerDynamicPolygon->PolygonGraphicsDynamicPolyline->PolylineGraphicsDynamicRectangle->RectangleGraphicsDynamicWall->WallGraphicsviewerDynamicObjectMixin->viewerEntityMixinRemoved
DynamicVectorandDynamicVectorVisualizer.Renamed
DataSource.dynamicObjectstoDataSource.entities.EntityCollection.getObjects()andCompositeEntityCollection.getObjects()are now properties namedEntityCollection.entitiesandCompositeEntityCollection.entities.Renamed
Viewer.trackedObjectandViewer.selectedObjecttoViewer.trackedEntityandViewer.selectedEntitywhen using theviewerEntityMixin.Renamed functions for consistency:
BoundingSphere.getPlaneDistances->BoundingSphere.computePlaneDistancesCartesian[2,3,4].getMaximumComponent->Cartesian[2,3,4].maximumComponentCartesian[2,3,4].getMinimumComponent->Cartesian[2,3,4].minimumComponentCartesian[2,3,4].getMaximumByComponent->Cartesian[2,3,4].maximumByComponentCartesian[2,3,4].getMinimumByComponent->Cartesian[2,3,4].minimumByComponentCubicRealPolynomial.realRoots->CubicRealPolynomial.computeRealRootsCubicRealPolynomial.discriminant->CubicRealPolynomial.computeDiscriminantJulianDate.getTotalDays->JulianDate.totalDyasJulianDate.getSecondsDifference->JulianDate.secondsDifferenceJulianDate.getDaysDifference->JulianDate.daysDifferenceJulianDate.getTaiMinusUtc->JulianDate.computeTaiMinusUtcMatrix3.getEigenDecompostion->Matrix3.computeEigenDecompositionOccluder.getVisibility->Occluder.computeVisibilityOccluder.getOccludeePoint->Occluder.computerOccludeePointQuadraticRealPolynomial.discriminant->QuadraticRealPolynomial.computeDiscriminantQuadraticRealPolynomial.realRoots->QuadraticRealPolynomial.computeRealRootsQuarticRealPolynomial.discriminant->QuarticRealPolynomial.computeDiscriminantQuarticRealPolynomial.realRoots->QuarticRealPolynomial.computeRealRootsQuaternion.getAxis->Quaternion.computeAxisQuaternion.getAngle->Quaternion.computeAngleQuaternion.innerQuadrangle->Quaternion.computeInnerQuadrangleRectangle.getSouthwest->Rectangle.southwestRectangle.getNorthwest->Rectangle.northwestRectangle.getSoutheast->Rectangle.southeastRectangle.getNortheast->Rectangle.northeastRectangle.getCenter->Rectangle.centerCullingVolume.getVisibility->CullingVolume.computeVisibilityReplaced
PerspectiveFrustum.fovywithPerspectiveFrustum.fovwhich will change the field of view angle in either theXorYdirection 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.positionsinstead.Removed
defaultPoint,defaultLine, anddefaultPolygonfromGeoJsonDataSource.Removed
Primitive.allow3DOnly. Set theSceneconstructor optionscene3DOnlyinstead.SampledPropertyandSampledPositionPropertyno longer extrapolate outside of their sample data time range by default.Changed the following functions to properties:
TerrainProvider.hasWaterMaskCesiumTerrainProvider.hasWaterMaskArcGisImageServerTerrainProvider.hasWaterMaskEllipsoidTerrainProvider.hasWaterMaskVRTheWorldTerrainProvider.hasWaterMaskRemoved
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,DynamicPyramidandDynamicPyramidVisualizer. This will be moved to a plugin in early August. #1887If
Primitive.modelMatrixis changed after creation, it only affects primitives with one instance and only in 3D mode.ImageryLayerpropertiesalpha,brightness,contrast,hue,saturation, andgammamay no longer be functions. If you need to change these values each frame, consider moving your logic to an event handler forScene.preRender.Removed
closeTopandcloseBottomoptions 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 thedocumentpacket was optional; it is now mandatory. The simplest document packet is:{ "id":"document", "version":"1.0" }The
vertexPositionsproperty has been removed. There is now apositionsproperty directly on objects that use it, currentlypolyline,polygon, andwall.cone,pyramid, andvectorhave 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_vectorrespectively.The
orientationproperty has been changed to match Cesium convention. To update existing CZML documents, conjugate the quaternion values.pixelOffsetnow uses the top-left of the screen as the origin; previously it was the bottom-left. To update existing documents, negate theyvalue.Removed
color,outlineColor, andoutlineWidthproperties frompolylineandpath. There is a newmaterialproperty that allows you to specify a variety of materials, such assolidColor,polylineOutlineandpolylineGlow.See the CZML Schema for more details. We plan on greatly improving this document in the coming weeks.
- All
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.requestVertexNormalsto request per vertex normals. AddedhasVertexNormalsproperty to all terrain providers to indicate whether or not vertex normals are included in the requested terrain tiles.Added
Globe.getHeightandGlobe.pickfor finding the terrain height at a given Cartographic coordinate and picking the terrain with a ray.Added
scene3DOnlyoptions toViewer,CesiumWidget, andSceneconstructors. 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, andbackwardExtrapolationDurationtoSampledPropertyandSampledPositionPropertywhich 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
addandsubtractfunctions.Matrix3type now has afromCrossProductfunction.Added
CesiumMath.signNotZero,CesiumMath.toSNormandCesiumMath.fromSNormfunctions.DataSource & CZML models now default to North-East-Down orientation if none is provided.
TileMapServiceImageryProvidernow works with tilesets created by tools that better conform to the TMS specification. In particular, a profile ofglobal-geodeticorglobal-mercatoris now supported (in addition to the previousgeodeticandmercator) and in these profiles it is assumed that the X coordinates of the bounding box correspond to the longitude direction.EntityCollectionandCompositeEntityCollectionnow include the array of modified entities as the last parameter to theironCollectionChangedevent.RectangleGeometry,RectangleOutlineGeometryandRectanglePrimitivecan cross the international date line.
Beta Releases
b30 - 2014-07-01
Breaking changes (why so many?)
- CZML property references now use a
#symbol to separate identifier from property path.objectId.positionshould now beobjectId#position. - All
Cartesian2,Cartesian3,Cartesian4,TimeInterval, andJulianDatefunctions that take aresultparameter now require the parameter (except for functions starting withfrom). - Modified
Transforms.pointToWindowCoordinatesandSceneTransforms.wgs84ToWindowCoordinatesto return window coordinates with origin at the top left corner. Billboard.pixelOffsetandLabel.pixelOffsetnow have their origin at the top left corner.Replaced
CameraFlightPath.createAnimationwithCamera.flyToand replacedCameraFlightPath.createAnimationRectanglewithCamera.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.flyToandCamera.flyToRectangle: options.durationis now in seconds, not milliseconds.- Renamed
options.endReferenceFrametooptions.endTransform. - Renamed
options.onCompletetooptions.complete. - Renamed
options.onCanceltooptions.cancel. - The following are now in seconds, not milliseconds.
Scene.morphToColumbusView,Scene.morphTo2D, andScene.morphTo3Dparameterduration.HomeButtonconstructor parameteroptions.duration,HomeButtonViewModelconstructor parameterduration, andHomeButtonViewModel.duration.SceneModePickerconstructor parameterduration,SceneModePickerViewModelconstructor parameterduration, andSceneModePickerViewModel.duration.GeocoderandGeocoderViewModelconstructor parameteroptions.flightDurationandGeocoderViewModel.flightDuration.ScreenSpaceCameraController.bounceAnimationTime.FrameRateMonitorconstructor parameteroptions.samplingWindow,options.quietPeriod, andoptions.warmupPeriod.- Refactored
JulianDateto 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.getJulianTimeFractionandJulianDate.compareTo new JulianDate()->JulianDate.now()date.getJulianDayNumber()->date.dayNumberdate.getSecondsOfDay()->secondsOfDaydate.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
TimeIntervalto 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.fromIso8601now 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.findIntervalnow 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.emptywas renamed toTimeIntervalCollection.isEmpty- Removed
Scene.animationsandAnimationCollectionfrom the public Cesium API. - Replaced
color,outlineColor, andoutlineWidthinDynamicPathwith amaterialproperty. ModelAnimationCollection.addandModelAnimationCollection.addAllrenamedoptions.startOffsettooptions.delay. Also renamedModelAnimation.startOffsettoModelAnimation.delay.- Replaced
Scene.scene2D.projectionproperty with read-onlyScene.mapProjection. Set this with themapProjectionoption for theViewer,CesiumWidget, orSceneconstructors. - Moved Fresnel, Reflection, and Refraction materials to the Materials Pack Plugin.
- Renamed
Simon1994PlanetaryPositionsfunctionsComputeSunPositionInEarthInertialFrameandComputeMoonPositionInEarthInertialFrametocomputeSunPositionInEarthInertialFrameandcomputeMoonPositionInEarthInertialFrame, respectively. Sceneconstructor function now takes anoptionsparameter instead of individual parameters.CesiumWidget.showErrorPanelnow takes amessageparameter in between the previoustitleanderrorparameters.- Removed
Camera.createCorrectPositionAnimation. - Moved
LeapSecond.leapSecondstoJulianDate.leapSeconds. Event.removeEventListenerno longer throwsDeveloperErrorif thelistenerdoes not exist; it now returnsfalse.- Enumeration values of
SceneModehave better correspondence with mode names to help with debugging. - The build process now requires Node.js to be installed on the system.
- CZML property references now use a
Cesium now supports Internet Explorer 11.0.9 on desktops. For the best results, use the new IE Developer Channel for development.
ReferencePropertycan now handle sub-properties, for example,myObject#billboard.scale.DynamicObject.idcan now include period characters.Added
PolylineGlowMaterialPropertywhich enables data sources to use the PolylineGlow material.Fixed support for embedded resources in glTF models.
Added
HermitePolynomialApproximation.interpolatefor performing interpolation when derivative information is available.SampledPropertyandSampledPositionPropertycan now store derivative information for each sample value. This allows for more accurate interpolation when usingHermitePolynomialApproximation.Added
FrameRateMonitorto monitor the frame rate achieved by aSceneand to raise alowFrameRateevent when it falls below a configurable threshold.Added
PerformanceWatchdogwidget andviewerPerformanceWatchdogMixin.ViewerandCesiumWidgetnow provide more user-friendly error messages when an initialization or rendering error occurs.ViewerandCesiumWidgetnow take a new optional parameter,creditContainer.Viewercan now optionally be constructed with aDataSourceCollection. Previously, it always created one itself internally.Fixed a problem that could rarely lead to the camera's
tiltproperty beingNaN.GeoJsonDataSourceno longer uses thenameortitleproperty of the feature as the dynamic object's name if the value of the property is null.Added
TimeIntervalCollection.isStartIncludedandTimeIntervalCollection.isStopIncluded.Added
Cesium.VERSIONto the combinedCesium.jsfile.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.
b29 - 2014-06-02
Breaking changes (why so many?)
- Replaced
Scene.createTextureAtlaswithnew 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.onRenderLoopErrorandViewer.renderLoopError. They have been replaced byScene.renderError. - Renamed
CompositePrimitivetoPrimitiveCollectionand added anoptionsparameter to the constructor function. - Removed
Shapes.compute2DCircle,Shapes.computeCircleBoundaryandShapes.computeEllipseBoundary. Instead, useCircleOutlineGeometryandEllipseOutlineGeometry. See the tutorial. - Removed
PolylinePipeline,PolygonPipeline,Tipsify,FrustumCommands, and allRenderertypes (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.Renderertypes in particular are likely to change. - For AMD users only:
- Moved
PixelFormatfromRenderertoCore. - Moved the following from
RenderertoScene:TextureAtlas,TextureAtlasBuilder,BlendEquation,BlendFunction,BlendingState,CullFace,DepthFunction,StencilFunction, andStencilOperation. - Moved the following from
ScenetoCore:TerrainProvider,ArcGisImageServerTerrainProvider,CesiumTerrainProvider,EllipsoidTerrainProvider,VRTheWorldTerrainProvider,TerrainData,HeightmapTerrainData,QuantizedMeshTerrainData,TerrainMesh,TilingScheme,GeographicTilingScheme,WebMercatorTilingScheme,sampleTerrain,TileProviderError,Credit. - Removed
TilingScheme.createRectangleOfLevelZeroTiles,GeographicTilingScheme.createLevelZeroTilesandWebMercatorTilingScheme.createLevelZeroTiles. - Removed
CameraColumbusViewMode. - Removed
Enumeration.
- Replaced
Added new functions to
Cartesian3:fromDegrees,fromRadians,fromDegreesArray,fromRadiansArray,fromDegreesArray3DandfromRadiansArray3D. AddedfromRadianstoCartographic.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
preRenderandpostRenderevents toScene.Added
Viewer.targetFrameRateandCesiumWidget.targetFrameRateto allow for throttling of the requestAnimationFrame rate.Added
Viewer.resolutionScaleandCesiumWidget.resolutionScaleto allow the scene to be rendered at a resolution other than the canvas size.Camera.transformnow works consistently across scene modes.Fixed a bug that prevented
sampleTerrainfrom working with STK World Terrain in Firefox.sampleTerrainno longer fails when used with aTerrainProviderthat is not yet ready.Fixed problems that could occur when using
ArcGisMapServerImageryProviderto access a tiled MapServer of non-global extent.Added
interleaveoption toPrimitiveconstructor.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.
b28 - 2014-05-01
- Breaking changes (why so many?):
- Renamed and moved
Scene.primitives.centralBodymoved toScene.globe. - Removed
CesiumWidget.centralBodyandViewer.centralBody. UseCesiumWidget.scene.globeandViewer.scene.globe. - Renamed
CentralBodytoGlobe. - Replaced
Model.computeWorldBoundingSpherewithModel.boundingSphere. - Refactored visualizers, removing
setDynamicObjectCollection,getDynamicObjectCollection,getScene, andremoveAllPrimitiveswhich are all superfluous after the introduction ofDataSourceDisplay. The affected classes are: DynamicBillboardVisualizerDynamicConeVisualizerUsingCustomSensorDynamicLabelVisualizerDynamicModelVisualizerDynamicPathVisualizerDynamicPointVisualizerDynamicPyramidVisualizerDynamicVectorVisualizerGeometryVisualizer- Renamed Extent to Rectangle
Extent->RectangleExtentGeometry->RectangleGeomtryExtentGeometryOutline->RectangleGeometryOutlineExtentPrimitive->RectanglePrimitiveBoundingRectangle.fromExtent->BoundingRectangle.fromRectangleBoundingSphere.fromExtent2D->BoundingSphere.fromRectangle2DBoundingSphere.fromExtentWithHeights2D->BoundingSphere.fromRectangleWithHeights2DBoundingSphere.fromExtent3D->BoundingSphere.fromRectangle3DEllipsoidalOccluder.computeHorizonCullingPointFromExtent->EllipsoidalOccluder.computeHorizonCullingPointFromRectangleOccluder.computeOccludeePointFromExtent->Occluder.computeOccludeePointFromRectangleCamera.getExtentCameraCoordinates->Camera.getRectangleCameraCoordinatesCamera.viewExtent->Camera.viewRectangleCameraFlightPath.createAnimationExtent->CameraFlightPath.createAnimationRectangleTilingScheme.extentToNativeRectangle->TilingScheme.rectangleToNativeRectangleTilingScheme.tileXYToNativeExtent->TilingScheme.tileXYToNativeRectangleTilingScheme.tileXYToExtent->TilingScheme.tileXYToRectangle- Converted
DataSourceget methods into properties. getName->namegetClock->clockgetChangedEvent->changedEventgetDynamicObjectCollection->dynamicObjectsgetErrorEvent->errorEventBaseLayerPickerhas been extended to support terrain selection (#1607).- The
BaseLayerPickerconstructor function now takes the container element and an options object instead of a CentralBody and ImageryLayerCollection. - The
BaseLayerPickerViewModelconstructor function now takes an options object instead of aCentralBodyandImageryLayerCollection. ImageryProviderViewModel->ProviderViewModelBaseLayerPickerViewModel.selectedName->BaseLayerPickerViewModel.buttonTooltipBaseLayerPickerViewModel.selectedIconUrl->BaseLayerPickerViewModel.buttonImageUrlBaseLayerPickerViewModel.selectedItem->BaseLayerPickerViewModel.selectedImageryBaseLayerPickerViewModel.imageryLayershas been removed and replaced withBaseLayerPickerViewModel.centralBody- Renamed
TimeIntervalCollection.cleartoTimeIntervalColection.removeAll Contextis now private.- Removed
Scene.context. Instead, useScene.drawingBufferWidth,Scene.drawingBufferHeight,Scene.maximumAliasedLineWidth, andScene.createTextureAtlas. Billboard.computeScreenSpacePosition,Label.computeScreenSpacePosition,SceneTransforms.clipToWindowCoordinatesandSceneTransforms.clipToDrawingBufferCoordinatestake aSceneparameter instead of aContext.Cameraconstructor takesSceneas parameter instead ofContext- Types implementing the
ImageryProviderinterface arenow require ahasAlphaChannelproperty. - Removed
checkForChromeFramesince Chrome Frame is no longer supported by Google. See Google’s official announcement. - Types implementing
DataSourceno longer need to implementgetIsTimeVarying.
- Renamed and moved
- Added a
NavigationHelpButtonwidget that, when clicked, displays information about how to navigate around the globe with the mouse. The new button is enabled by default in theViewerwidget. - Added
Model.minimumPixelSizeproperty so models remain visible when the viewer zooms out. - Added
DynamicRectangleto support DataSource providedRectangleGeometry. - Added
DynamicWallto support DataSource providedWallGeometry. - Improved texture upload performance and reduced memory usage when using
BingMapsImageryProviderand other imagery providers that return false fromhasAlphaChannel. - Added the ability to offset the grid in the
GridMaterial. GeometryVisualizernow creates geometry asynchronously to prevent locking up the browser.- Add
Clock.canAnimateto prevent time from advancing, even while the clock is animating. Viewernow prevents time from advancing if asynchronous geometry is being processed in order to avoid showing an incomplete picture. This can be disabled via theViewer.allowDataSourcesToSuspendAnimationsettings.- Added ability to modify glTF material parameters using
Model.getMaterial,ModelMaterial, andModelMesh.material. - Added
asynchronousandreadyproperties toModel. - Added
Cartesian4.fromColorandColor.fromCartesian4. - Added
getScaleandgetMaximumScaletoMatrix2,Matrix3, andMatrix4. - Upgraded Knockout from version 3.0.0 to 3.1.0.
- Upgraded TopoJSON from version 1.1.4 to 1.6.8.
b27 - 2014-04-01
Breaking changes:
All
CameraControllerfunctions 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:
ImageryLayergetImageryProvider->imageryProvidergetExtent->extent
Billboard,LabelgetShow,setShow->showgetPosition,setPosition->positiongetPixelOffset,setPixelOffset->pixelOffsetgetTranslucencyByDistance,setTranslucencyByDistance->translucencyByDistancegetPixelOffsetScaleByDistance,setPixelOffsetScaleByDistance->pixelOffsetScaleByDistancegetEyeOffset,setEyeOffset->eyeOffsetgetHorizontalOrigin,setHorizontalOrigin->horizontalOrigingetVerticalOrigin,setVerticalOrigin->verticalOrigingetScale,setScale->scalegetId->id
BillboardgetScaleByDistance,setScaleByDistance->scaleByDistancegetImageIndex,setImageIndex->imageIndexgetColor,setColor->colorgetRotation,setRotation->rotationgetAlignedAxis,setAlignedAxis->alignedAxisgetWidth,setWidth->widthgetHeightsetHeight->height
LabelgetText,setText->textgetFont,setFont->fontgetFillColor,setFillColor->fillColorgetOutlineColor,setOutlineColor->outlineColorgetOutlineWidth,setOutlineWidth->outlineWidthgetStyle,setStyle->style
PolygongetPositions,setPositions->positions
PolylinegetShow,setShow->showgetPositions,setPositions->positionsgetMaterial,setMeterial->materialgetWidth,setWidth->widthgetLoop,setLoop->loopgetId->id
OccludergetPosition->positiongetRadius->radiussetCameraPosition->cameraPosition
LeapSecondgetLeapSeconds,setLeapSeconds->leapSeconds
FullscreengetFullscreenElement->elementgetFullscreenChangeEventName->changeEventNamegetFullscreenErrorEventName->errorEventNameisFullscreenEnabled->enabledisFullscreen->fullscreen
EventgetNumberOfListeners->numberOfListeners
EllipsoidGeodesicgetSurfaceDistance->surfaceDistancegetStart->startgetEnd->endgetStartHeading->startHeadinggetEndHeading->endHeading
AnimationCollectiongetAll->all
CentralBodySurfacegetTerrainProvider,setTerrainProvider->terrainProvider
CreditgetText->textgetImageUrl->imageUrlgetLink->link
TerrainData,HightmapTerrainData,QuanitzedMeshTerrainDatagetWaterMask->waterMask
TilegetChildren->children
BuffergetSizeInBytes->sizeInBytesgetUsage->usagegetVertexArrayDestroyable,setVertexArrayDestroyable->vertexArrayDestroyable
CubeMapgetPositiveX->positiveXgetNegativeX->negativeXgetPositiveY->positiveYgetNegativeY->negativeYgetPositiveZ->positiveZgetNegativeZ->negativeZ
CubeMap,TexturegetSampler,setSampler->samplergetPixelFormat->pixelFormatgetPixelDatatype->pixelDatatypegetPreMultiplyAlpha->preMultiplyAlphagetFlipY->flipYgetWidth->widthgetHeight->height
CubeMapFacegetPixelFormat->pixelFormatgetPixelDatatype->pixelDatatype
FramebuffergetNumberOfColorAttachments->numberOfColorAttachmentsgetDepthTexture->depthTexturegetDepthRenderbuffer->depthRenderbuffergetStencilRenderbuffer->stencilRenderbuffergetDepthStencilTexture->depthStencilTexturegetDepthStencilRenderbuffer->depthStencilRenderbufferhasDepthAttachment->hasdepthAttachment
RenderbuffergetFormat->formatgetWidth->widthgetHeight->height
ShaderProgramgetVertexAttributes->vertexAttributesgetNumberOfVertexAttributes->numberOfVertexAttributesgetAllUniforms->allUniformsgetManualUniforms->manualUniforms
TexturegetDimensions->dimensions
TextureAtlasgetBorderWidthInPixels->borderWidthInPixelsgetTextureCoordinates->textureCoordinatesgetTexture->texturegetNumberOfImages->numberOfImagesgetGUID->guid
VertexArraygetNumberOfAttributes->numberOfAttributesgetIndexBuffer->indexBuffer
- Finished removing prototype functions. (Use 'static' versions of these functions instead):
BoundingRectangleunion,expand
BoundingSphereunion,expand,getPlaneDistances,projectTo2D
PlanegetPointDistance
RaygetPoint
Sphericalnormalize
Extentvalidate,getSouthwest,getNorthwest,getNortheast,getSoutheast,getCenter,intersectWith,contains,isEmpty,subsample
DataSourcenow has additional required properties,isLoadingandloadingEventas well as a new optionalupdatemethod which will be called each frame.- Renamed
Stripematerial uniformslightColoranddarkColortoevenColorandoddColor. - Replaced
SceneTransitionerwith 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
StripeMaterialPropertyfor supporting theStripematerial in DynamicScene.loadArrayBuffer,loadBlob,loadJson,loadText, andloadXMLnow support loading data from data URIs.The
debugShowBoundingVolumeproperty 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.
b26 - 2014-03-03
- Breaking changes:
- Replaced getter/setter functions with properties:
ScenegetCanvas->canvasgetContext->contextgetPrimitives->primitivesgetCamera->cameragetScreenSpaceCameraController->screenSpaceCameraControllergetFrameState->frameStategetAnimations->animations
CompositePrimitivegetCentralBody,setCentralBody->centralBodygetLength->length
EllipsoidgetRadii->radiigetRadiiSquared->radiiSquaredgetRadiiToTheFourth->radiiToTheFourthgetOneOverRadii->oneOverRadiigetOneOverRadiiSquared->oneOverRadiiSquaredgetMinimumRadius->minimumRadiusgetMaximumRadius->maximumRadius
CentralBodygetEllipsoid->ellipsoidgetImageryLayers->imageryLayers
EllipsoidalOccludergetEllipsoid->ellipsoidgetCameraPosition,setCameraPosition->cameraPosition
EllipsoidTangentPlanegetEllipsoid->ellipsoidgetOrigin->origin
GeographicProjectiongetEllipsoid->ellipsoid
WebMercatorProjectiongetEllipsoid->ellipsoid
SceneTransitionergetScene->scenegetEllipsoid->ellipsoid
ScreenSpaceCameraControllergetEllipsoid,setEllipsoid->ellipsoid
SkyAtmospheregetEllipsoid->ellipsoid
TilingScheme,GeographicTilingScheme,WebMercatorTilingShemegetEllipsoid->ellipsoidgetExtent->extentgetProjection->projection
ArcGisMapServerImageryProvider,BingMapsImageryProvider,GoogleEarthImageryProvider,GridImageryProvider,OpenStreetMapImageryProvider,SingleTileImageryProvider,TileCoordinatesImageryProvider,TileMapServiceImageryProvider,WebMapServiceImageryProvidergetProxy->proxygetTileWidth->tileWidthgetTileHeight->tileHeightgetMaximumLevel->maximumLevelgetMinimumLevel->minimumLevelgetTilingScheme->tilingSchemegetExtent->extentgetTileDiscardPolicy->tileDiscardPolicygetErrorEvent->errorEventisReady->readygetCredit->credit
ArcGisMapServerImageryProvider,BingMapsImageryProvider,GoogleEarthImageryProvider,OpenStreetMapImageryProvider,SingleTileImageryProvider,TileMapServiceImageryProvider,WebMapServiceImageryProvidergetUrl->url
ArcGisMapServerImageryProviderisUsingPrecachedTiles- >usingPrecachedTiles
BingMapsImageryProvidergetKey->keygetMapStyle->mapStyle
GoogleEarthImageryProvidergetPath->pathgetChannel->channelgetVersion->versiongetRequestType->requestType
WebMapServiceImageryProvidergetLayers->layers
CesiumTerrainProvider,EllipsoidTerrainProvider,ArcGisImageServerTerrainProvider,VRTheWorldTerrainProvidergetErrorEvent->errorEventgetCredit->creditgetTilingScheme->tilingSchemeisReady->ready
TimeIntervalCollectiongetChangedEvent->changedEventgetStart->startgetStop->stopgetLength->lengthisEmpty->empty
DataSourceCollection,ImageryLayerCollection,LabelCollection,PolylineCollection,SensorVolumeCollectiongetLength->length
BillboardCollectiongetLength->lengthgetTextureAtlas,setTextureAtlas->textureAtlasgetDestroyTextureAtlas,setDestroyTextureAtlas->destroyTextureAtlas
- Removed
Scene.getUniformState(). Usescene.context.getUniformState(). - Visualizers no longer create a
dynamicObjectproperty on the primitives they create. Instead, they set theidproperty that is standard for all primitives. - The
propertyChangedon 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
visualizerTypesparameter to theDataSouceDisplayhas been changed to a callback function that creates an array of visualizer instances. DynamicDirectionsPropertyandDynamicVertexPositionsPropertywere both removed, they have been superseded byPropertyArrayandPropertyPositionArray, which make it easy for DataSource implementations to create time-dynamic arrays.VisualizerCollectionhas been removed. It is superseded byDataSourceDisplay.DynamicEllipsoidVisualizer,DynamicPolygonVisualizer, andDynamicPolylineVisualizerhave been removed. They are superseded byGeometryVisualizerand correspondingGeometryUpdaterimplementations;EllipsoidGeometryUpdater,PolygonGeometryUpdater,PolylineGeometryUpdater.- Modified
CameraFlightPathfunctions 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. PixelDatatypeproperties are now JavaScript numbers, notEnumerationinstances.combinenow takes two objects instead of an array, and defaults to copying shallow references. TheallowDuplicatesparameter 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.
- Added
Modelfor 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
SelectionIndicatorandInfoBoxwidgets toViewer, activated byviewerDynamicObjectMixin. CesiumTerrainProvidernow supports mesh-based terrain like the tiles created by STK Terrain Server.- Fixed rendering artifact on translucent objects when zooming in or out.
- Added
CesiumInspectorwidget 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, andDynamicEllipsoidnow have properties matching their geometry counterpart, i.e.EllipseGeometry,EllipseOutlineGeometry, etc. These properties are also available in CZML.- Added a
definitionChangedevent to thePropertyinterface as well as mostDynamicSceneobjects. This makes it easy for a client to observe when new data is loaded into a property or object. - Added an
isConstantproperty to thePropertyinterface. Constant properties do not change in regards to simulation time, i.e.Property.getValuewill always return the same result for all times. ConstantPropertyis 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. OpenStreetMapImageryProvidernow supports imagery with a minimum level.BingMapsImageryProvidernow 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
CreditDisplayby 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
WallGeometrybug that failed by removing positions that were less close together by less than 6 decimal places. #1483 - Fixed
EllipsoidGeometrytexture coordinates. #1454 - Added a loop property to
Polylines 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. RequestErrorEventnow 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.getChangedEventwhich returns an event that will be raised whenever intervals are updated. - Added a second parameter to
Material.fromTypeto override default uniforms. #1522 - Added
Intersections2Dclass containing operations on 2D triangles. - Added
czm_inverseViewProjectionandczm_inverseModelViewProjectionautomatic GLSL uniform.
b25 - 2014-02-03
- Breaking changes:
- The
Viewerconstructor argumentoptions.fullscreenElementnow matches theFullscreenButtondefault ofdocument.body, it was previously theViewercontainer itself. - Removed
Viewer.objectTrackedevent;Viewer.trackedObjectis now an ES5 Knockout observable that can be subscribed to directly. - Replaced
PerformanceDisplaywithScene.debugShowFramesPerSecond. Asphalt,Blob,Brick,Cement,Erosion,Facet,Grass,TieDye, andWoodmaterials were moved to the Materials Pack Plugin.- Renamed
GeometryPipeline.createAttributeIndicestoGeometryPipeline.createAttributeLocations. - Renamed
attributeIndicesproperty toattributeLocationswhen callingContext.createVertexArrayFromGeometry. PerformanceDisplayrequires a DOM element as a parameter.
- The
- Fixed globe rendering in the current Canary version of Google Chrome.
Viewernow monitors the clock settings of the first addedDataSourcefor changes, and also now has a constructor optionautomaticallyTrackFirstDataSourceClockwhich will turn off this behavior.- The
DynamicObjectCollectioncreated byCzmlDataSourcenow sends a singlecollectionChangedevent after CZML is loaded; previously it was sending an event every time an object was created or removed during the load process. - Added
ScreenSpaceCameraController.enableInputsto fix issue with inputs not being restored after overlapping camera flights. - Fixed picking in 2D with rotated map. #1337
TileMapServiceImageryProvidercan now handle casing differences in tilemapresource.xml.OpenStreetMapImageryProvidernow supports imagery with a minimum level.- Added
Quaternion.fastSlerpandQuaternion.fastSquad. - Upgraded Tween.js to version r12.
b24 - 2014-01-06
Breaking changes:
Added
allowTextureFilterAnisotropic(default:true) andfailIfMajorPerformanceCaveat(default:true) properties to thecontextOptionsproperty passed toViewer,CesiumWidget, andSceneconstructors and moved the existing properties to a newwebglsub-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
Cartesian3objects 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). SvgPathhas been replaced by a Knockout binding:cesiumSvgPath.DynamicObject.availabilityis now aTimeIntervalCollectioninstead of aTimeInterval.- Removed prototype version of
BoundingSphere.transform. Matrix4.multiplyByPointnow returns aCartesian3instead of aCartesian4.
The minified, combined
Cesium.jsfile now omits certainDeveloperErrorchecks, 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
Geocoderflights when following an object.The
Viewerwidget now clearsGeocoderinput when the user clicks the home button.The
Geocoderinput 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, andlookEventTypesproperties toScreenSpaceCameraControllerto change the default mouse inputs.Added
Billboard.setPixelOffsetScaleByDistance,Label.setPixelOffsetScaleByDistance,DynamicBillboard.pixelOffsetScaleByDistance, andDynamicLabel.pixelOffsetScaleByDistanceto control minimum/maximum pixelOffset scaling based on camera distance.Added
BoundingSphere.transformsWithoutScale.Added
fromArrayfunction toMatrix2,Matrix3andMatrix4.Added
Matrix4.multiplyTransformation,Matrix4.multiplyByPointAsVector.
b23 - 2013-12-02
Breaking changes:
Changed the
CatmulRomSplineandHermiteSplineconstructors 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) ] });loadWithXhrnow takes an options object, and allows specifying HTTP method and data to send with the request.- Renamed
SceneTransitioner.onTransitionStarttoSceneTransitioner.transitionStart. - Renamed
SceneTransitioner.onTransitionCompletetoSceneTransitioner.transitionComplete. - Renamed
CesiumWidget.onRenderLoopErrortoCesiumWidget.renderLoopError. - Renamed
SceneModePickerViewModel.onTransitionStarttoSceneModePickerViewModel.transitionStart. - Renamed
Viewer.onRenderLoopErrortoViewer.renderLoopError. - Renamed
Viewer.onDropErrortoViewer.dropError. - Renamed
CesiumViewer.onDropErrortoCesiumViewer.dropError. - Renamed
viewerDragDropMixin.onDropErrortoviewerDragDropMixin.dropError. - Renamed
viewerDynamicObjectMixin.onObjectTrackedtoviewerDynamicObjectMixin.objectTracked. PixelFormat,PrimitiveType,IndexDatatype,TextureWrap,TextureMinificationFilter, andTextureMagnificationFilterproperties are now JavaScript numbers, notEnumerationinstances.- Replaced
sizeInBytesproperties onIndexDatatypewithIndexDatatype.getSizeInBytes.
Added
perPositionHeightoption toPolygonGeometryandPolygonOutlineGeometry.Added
QuaternionSplineandLinearSpline.Added
Quaternion.log,Quaternion.exp,Quaternion.innerQuadrangle, andQuaternion.squad.Added
Matrix3.inverseandMatrix3.determinant.Added
ObjectOrientedBoundingBox.Added
Ellipsoid.transformPositionFromScaledSpace.Added
Math.nextPowerOfTwo.Renamed our main website from cesium.agi.com to cesiumjs.org.
b22 - 2013-11-01
- Breaking changes:
- Reversed the rotation direction of
Matrix3.fromQuaternionto 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);. - Replaced
DynamicPolylinecolor,outlineColor, andoutlineWidthproperties with a singlematerialproperty. - Renamed
DynamicBillboard.nearFarScalartoDynamicBillboard.scaleByDistance. - All data sources must now implement
DataSource.getName, which returns a user-readable name for the data source. - CZML
documentobjects are no longer added to theDynamicObjectCollectioncreated byCzmlDataSource. Use theCzmlDataSourceinterface to access the data instead. TimeInterval.equals, andTimeInterval.equalsEpsilonnow compare interval data as well.- All SVG files were deleted from
Widgets/Imagesand replaced by a newSvgPathclass. - The toolbar widgets (Home, SceneMode, BaseLayerPicker) and the fullscreen button now depend on
CesiumWidget.cssfor global Cesium button styles. - The toolbar widgets expect their
containerto be the toolbar itself now, no need for separate containers for each widget on the bar. Propertyimplementations are now required to implement a prototypeequalsfunction.ConstantPropertyandTimeIntervalCollectionPropertyno longer take aclonefunction and instead require objects to implement prototypecloneandequalsfunctions.- The
SkyBoxconstructor now takes anoptionsargument with asourcesproperty, instead of directly takingsources. - Replaced
SkyBox.getSourceswithSkyBox.sources. - The
bearingproperty ofDynamicEllipseis now calledrotation. - CZML
ellipse.bearingproperty is nowellipse.rotation.
- Reversed the rotation direction of
- Added a
Geocoderwidget 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 theViewerwidget. - Added
GoogleEarthImageryProvider. - Added
Moonfor drawing the moon, andIauOrientationAxesfor computing the Moon's orientation. - Added
Material.translucentproperty. Set this property orAppearance.translucentfor correct rendering order. Translucent geometries are rendered after opaque geometries. - Added
enableLighting,lightingFadeOutDistance, andlightingFadeInDistanceproperties toCentralBodyto configure lighting. - Added
Billboard.setTranslucencyByDistance,Label.setTranslucencyByDistance,DynamicBillboard.translucencyByDistance, andDynamicLabel.translucencyByDistanceto control minimum/maximum translucency based on camera distance. - Added
PolylineVolumeGeometryandPolylineVolumeGeometryOutline. - Added
Shapes.compute2DCircle. - Added
Appearancestab to Sandcastle with an example for each geometry appearance. - Added
Scene.drillPickto return list of objects each containing 1 primitive at a screen space position. - Added
PolylineOutlineMaterialPropertyfor use withDynamicPolyline.material. - Added the ability to use
ArrayandJulianDateobjects as custom CZML properties. - Added
DynamicObject.nameand corresponding CZML support. This is a non-unique, user-readable name for the object. - Added
DynamicObject.parentand corresponding CZML support. This allows forDataSourceobjects to present data hierarchically. - Added
DynamicPoint.scaleByDistanceto 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
skyBoxto theCesiumWidgetandViewerconstructors for changing the default stars. - Added
Matrix4.fromTranslationQuaternionRotationScaleandMatrix4.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
equalsandequalsEpsilonmethod back toCartesian2,Cartesian3,Cartesian4, andQuaternion. - Added prototype equals function to
NearFarScalar, andTimeIntervalCollection. - Added
FrameState.events. - Added
Primitive.allowPickingto save memory when picking is not needed. - Added
debugShowBoundingVolume, for debugging primitive rendering, toPrimitive,Polygon,ExtentPrimitive,EllipsoidPrimitive,BillboardCollection,LabelCollection, andPolylineCollection. - Added
DebugModelMatrixPrimitivefor debugging primitive'smodelMatrix. - Added
optionsargument to theEllipsoidPrimitiveconstructor. - 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
idto 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 }
b21 - 2013-10-01
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.defaultKeyproperty to the value of your application's key before constructing theCesiumWidgetor any other types that use the Bing Maps API.BingMapsApi.defaultKey = 'my-key-generated-with-bingmapsportal.com';Scene.picknow returns an object with aprimitiveproperty, 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,getUpWCandgetRightWCfromCamera. Instead, use theviewMatrix,inverseViewMatrix,inverseTransform,positionWC,directionWC,upWC, andrightWCproperties. - Removed
getProjectionMatrixandgetInfiniteProjectionMatrixfromPerspectiveFrustum,PerspectiveOffCenterFrustumandOrthographicFrustum. Instead, use theprojectionMatrixandinfiniteProjectionMatrixproperties. - 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
- From
Code that previously looked like
quaternion.magnitude();should now look likeQuaternion.magnitude(quaternion);.DynamicObjectCollectionandCompositeDynamicObjectCollectionhave been largely re-written, see the documentation for complete details. Highlights include:getObjecthas been renamedgetById.removeObjecthas been renamedremoveById.collectionChangedevent added for notification of objects being added or removed.
DynamicScenegraphics object (DynamicBillboard, etc...) have had their staticmergePropertiesandcleanfunctions removed.UniformState.updatenow takes a context as its first parameter.Cameraconstructor now takes a context instead of a canvas.SceneTransforms.clipToWindowCoordinatesnow takes a context instead of a canvas.- Removed
canvasDimensionsfromFrameState. - Removed
contextoption fromMaterialconstructor and parameter fromMaterial.fromType. - Renamed
TextureWrap.CLAMPtoTextureWrap.CLAMP_TO_EDGE.
Added
Geometriestab to Sandcastle with an example for each geometry type.Added
CorridorOutlineGeometry.Added
PolylineGeometry,PolylineColorAppearance, andPolylineMaterialAppearance.Added
colorsoption toSimplePolylineGeometryfor per vertex or per segment colors.Added proper support for browser zoom.
Added
propertyChangedevent toDynamicScenegraphics objects for receiving change notifications.Added prototype
cloneandmergefunctions toDynamicScenegraphics objects.Added
width,height, andnearFarScalarproperties toDynamicBillboardfor controlling the image size.Added
headingandtiltproperties toCameraController.Added
Scene.sunBloomto enable/disable the bloom filter on the sun. The bloom filter should be disabled for better frame rates on mobile devices.Added
getDrawingBufferWidthandgetDrawingBufferHeighttoContext.Added new built-in GLSL functions
czm_getLambertDiffuseandczm_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.projectPointOntoPlanefor tangent planes on an ellipsoid other than the unit sphere.CompositePrimitive.addnow 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(/* ... */));
b20 - 2013-09-03
This releases fixes 2D and other issues with Chrome 29.0.1547.57 (#1002 and #1047).
Breaking changes:
- The
CameraFlightPathfunctionscreateAnimation,createAnimationCartographic, andcreateAnimationExtentnow takesceneas their first parameter instead offrameState. - Completely refactored the
DynamicSceneproperty 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, andCzmlVerticalOriginsince 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- aCompositePropertyfor 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- aCompositePropertyfor positions.ConstantPositionProperty- aPositionPropertywhose value does not change in respect to theReferenceFramein which is it defined.SampledPositionProperty- aSampledPropertyfor positions.TimeIntervalCollectionPositionProperty- ATimeIntervalCollectionPropertyfor positions.
- Removed
- Removed
processCzml, useCzmlDataSourceinstead. Source/Widgets/Viewer/lighter.csswas deleted, useSource/Widgets/lighter.cssinstead.- Replaced
ExtentGeometryparameters for extruded extent to make them consistent with other geometries.options.extrudedOptions.height->options.extrudedHeightoptions.extrudedOptions.closeTop->options.closeBottomoptions.extrudedOptions.closeBottom->options.closeTop
Geometry constructors no longer compute vertices or indices. Use the type's
createGeometrymethod. 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
createTypedArrayandcreateArrayBufferViewfrom each of theComponentDatatypeenumerations. Instead, useComponentDatatype.createTypedArrayandComponentDatatype.createArrayBufferView. DataSourceDisplaynow requires aDataSourceCollectionto be passed into its constructor.DeveloperErrorandRuntimeErrorno longer contain anerrorproperty. CalltoString, or check thestackproperty directly instead.- Replaced
createPickFragmentShaderSourcewithcreateShaderSource. - Renamed
PolygonPipeline.earClip2DtoPolygonPipeline.triangulate.
- The
Added outline geometries. #1021.
Added
CorridorGeometry.Added
Billboard.scaleByDistanceandNearFarScalarto control billboard minimum/maximum scale based on camera distance.Added
EllipsoidGeodesic.Added
PolylinePipeline.scaleToSurface.Added
PolylinePipeline.scaleToGeodeticHeight.Added the ability to specify a
minimumTerrainLevelandmaximumTerrainLevelwhen constructing anImageryLayer. The layer will only be shown for terrain tiles within the specified range.Added
Math.setRandomNumberSeedandMath.nextRandomNumberfor generating repeatable random numbers.Added
Color.fromRandomto generate random and partially random colors.Added an
onCancelcallback toCameraFlightPathfunctions that will be executed if the flight is canceled.Added
Scene.debugShowFrustumsandScene.debugFrustumStatisticsfor rendering debugging.Added
PackableandPackableForInterpolationinterfaces to aid interpolation and in-memory data storage. Also made most core Cesium types implement them.Added
InterpolationAlgorithminterface 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
WallGeometryto follow the curvature of the earth.Improved visual quality of closed translucent geometries.
Optimized polyline bounding spheres.
Viewernow 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.CesiumWidgetandViewernow display an HTML error panel if an error occurs while rendering, which can be disabled with a constructor option.CameraFlightPathnow 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
EllipsoidPrimitiverendering 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.
b19 - 2013-08-01
- Breaking changes:
- Replaced tessellators and meshes with geometry. In particular:
- Replaced
CubeMapEllipsoidTessellatorwithEllipsoidGeometry. - Replaced
BoxTessellatorwithBoxGeometry. - Replaced
ExtentTessletaorwithExtentGeometry. - Removed
PlaneTessellator. It was incomplete and not used. - Renamed
MeshFilterstoGeometryPipeline. - Renamed
MeshFilters.toWireframeInPlacetoGeometryPipeline.toWireframe. - Removed
MeshFilters.mapAttributeIndices. It was not used. - Renamed
Context.createVertexArrayFromMeshtoContext.createVertexArrayFromGeometry. Likewise, renamedmeshconstructor property togeometry.
- Replaced
- Renamed
ComponentDatatype.*.toTypedArraytoComponentDatatype.*.createTypedArray. - Removed
Polygon.configureExtent. UseExtentPrimitiveinstead. - Removed
Polygon.bufferUsage. It is no longer needed. - Removed
heightandtextureRotationAnglearguments fromPolygonsetPositionsandconfigureFromPolygonHierarchyfunctions. UsePolygonheightandtextureRotationAngleproperties. - Renamed
PolygonPipeline.cleanUptoPolygonPipeline.removeDuplicates. - Removed
PolygonPipeline.wrapLongitude. UseGeometryPipeline.wrapLongitudeinstead. - Added
surfaceHeightparameter toBoundingSphere.fromExtent3D. - Added
surfaceHeightparameter toExtent.subsample. - Renamed
pointInsideTriangle2DtopointInsideTriangle. - Renamed
getLogotogetCreditforImageryProviderandTerrainProvider.
- Replaced tessellators and meshes with geometry. In particular:
- Added Geometry and Appearances #911.
- Added property
intersectionWidthtoDynamicCone,DynamicPyramid,CustomSensorVolume, andRectangularPyramidSensorVolume. - Added
ExtentPrimitive. - Added
PolylinePipeline.removeDuplicates. - Added
barycentricCoordinatesto compute the barycentric coordinates of a point in a triangle. - Added
BoundingSphere.fromEllipsoid. - Added
BoundingSphere.projectTo2D. - Added
Extent.fromDegrees. - Added
czm_tangentToEyeSpaceMatrixbuilt-in GLSL function. - Added debugging aids for low-level rendering:
DrawCommand.debugShowBoundingVolumeandScene.debugCommandFilter. - Added extrusion to
ExtentGeometry. - Added
CreditandCreditDisplayfor displaying credits on the screen. - Improved performance and visual quality of
CustomSensorVolumeandRectangularPyramidSensorVolume. - Improved the performance of drawing polygons created with
configureFromPolygonHierarchy.
b18 - 2013-07-01
- Breaking changes:
- Removed
CesiumViewerWidgetand replaced it with a newViewerwidget 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.shouldAnimateclockViewModel.shouldAnimate(true);->clockViewModel.shouldAnimate = true;
ImageryProviderViewModel.fromConstantshas been removed. Use theImageryProviderViewModelconstructor directly.- Renamed the
transitionerproperty onCesiumWidget,HomeButton, andScreenModePickertosceneTrasitionerto be consistent with property naming convention. ImageryProvider.loadImagenow requires that the calling imagery provider instance be passed as its first parameter.- Removed the Dojo-based
checkForChromeFramefunction, 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 usingTileMapServiceImageryProviderwith a URL ofAssets/Textures/NaturalEarthII. - The
Client CZMLSandCastle demo has been removed, largely because it is redundant with the Simple CZML demo. - The
Two Viewer WidgetsSandCastle demo has been removed. We will add back a multi-scene example when we have a good architecture for it in place. - Changed static
clonefunctions 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
Billboards. - 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.
TileMapServiceImageryProvidernow 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
BaseLayerPickerwhere destroy wasn't properly cleaning everything up. - Added the ability to unsubscribe to
Timelineupdate event. - Added a
screenSpaceEventHandlerproperty toCesiumWidget. Also added asceneModeoption to the constructor to set the initial scene mode. - Added
useDefaultRenderLoopproperty toCesiumWidgetthat allows the default render loop to be disabled so that a custom render loop can be used. - Added
CesiumWidget.onRenderLoopErrorwhich is anEventthat is raised if an exception is generated inside of the default render loop. ImageryProviderViewModel.creationCommandcan now return an array of ImageryProvider instances, which allows adding multiple layers when a single item is selected in theBaseLayerPickerwidget.
b17 - 2013-06-03
- Breaking changes:
- Replaced
Uniform.getFrameNumberandUniform.getTimewithUniform.getFrameState, which returns the full frame state. - Renamed
Widgets/Fullscreenfolder toWidgets/FullscreenButtonalong with associated objects/files.FullscreenWidget->FullscreenButtonFullscreenViewModel->FullscreenButtonViewModel
- Removed
addAttribute,removeAttribute, andsetIndexBufferfromVertexArray. They were not used.
- Replaced
- Added support for approximating local vertical, local horizontal (LVLH) reference frames when using
DynamicObjectViewin 3D. The object automatically selects LVLH or EastNorthUp based on the object's velocity. - Added support for CZML defined vectors via new
CzmlDirection,DynamicVector, andDynamicVectorVisualizerobjects. - Added
SceneTransforms.wgs84ToWindowCoordinates. #746. - Added
fromElementstoCartesian2,Cartesian3, andCartesian4. - Added
DrawCommand.cullto avoid redundant visibility checks. - Added
czm_morphTimeautomatic 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, andcomputeHorizonCullingPointFromExtentmethods toEllipsoidalOccluderand used them to build a more accurate horizon occlusion test for terrain rendering. - Added sun visualization. See
SunandScene.sun. - Added a new
HomeButtonwidget for returning to the default view of the current scene mode. - Added
Command.beforeExecuteandCommand.afterExecuteevents to enable additional processing when a command is executed. - Added rotation parameter to
Polygon.configureExtent. - Added camera flight to extents. See new methods
CameraController.getExtentCameraCoordinatesandCameraFlightPath.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.
b16 - 2013-05-01
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 });CzmlCartographichas 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
computeSunPositionwithSimon1994PlanetaryPosition, which has functions to calculate the position of the sun and the moon more accurately. - Removed
Context.createClearState. These properties are now part ofClearCommand. RenderStateobjects returned fromContext.createRenderStateare now immutable.- Removed
positionMCfromczm_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, andFadematerials.Added
czm_pixelSizeInMetersautomatic 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.toRgbaandColor.fromRgbato convert to/from numeric unsigned 32-bit RGBA values.Added
GridImageryProviderfor custom rendering effects and debugging.Added new
Gridmaterial.Made
EllipsoidPrimitivedouble-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
EllipsoidPrimitivepicking and picking objects with materials that have transparent parts.Fixed imagery smearing artifacts on mobile devices and other devices without high-precision fragment shaders.
b15 - 2013-04-01
- Breaking changes:
Billboard.computeScreenSpacePositionnow takesContextandFrameStatearguments instead of aUniformStateargument.- Removed
clampToPixelproperty fromBillboardCollectionandLabelCollection. This option is no longer needed due to overall LabelCollection visualization improvements. - Removed
Widgets/Dojo/CesiumWidgetand replaced it withWidgets/CesiumWidget, which has no Dojo dependancies. destroyObjectno longer deletes properties from the object being destroyed.darker.cssfiles have been deleted and thedarkertheme is now the default style for widgets. The original theme is now known aslighterand is in correspondinglighter.cssfiles.- CSS class names have been standardized to avoid potential collisions. All widgets now follow the same pattern,
cesium-<widget>-<className>. - Removed
view2D,view3D, andviewColumbusproperties fromCesiumViewerWidget. Use thesceneTransitionerproperty instead.
- Added
BoundingSphere.fromCornerPoints. - Added
fromArrayanddistancefunctions toCartesian2,Cartesian3, andCartesian4. - Added
DynamicPath.resolutionproperty for setting the maximum step size, in seconds, to take when sampling a position for path visualization. - Added
TileCoordinatesImageryProviderthat renders imagery with tile X, Y, Level coordinates on the surface of the globe. This is mostly useful for debugging. - Added
DynamicEllipseandDynamicObject.ellipseproperty to render CZML ellipses on the globe. - Added
sampleTerrainfunction to sample the terrain height of a list ofCartographicpositions. - Added
DynamicObjectCollection.removeObjectand handling of the new CZMLdeleteproperty. - Imagery layers with an
alphaof exactly 0.0 are no longer rendered. Previously these invisible layers were rendered normally, which was a waste of resources. Unlike theshowproperty, imagery tiles in a layer with analphaof 0.0 are still downloaded, so the layer will become visible more quickly when itsalphais increased. - Added
onTransitionStartandonTransitionCompleteevents 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.
b14 - 2013-03-01
- Breaking changes:
- Major refactoring of both animation and widgets systems as we move to an MVVM-like architecture for user interfaces.
- New
Animationwidget for controlling playback. - AnimationController.js has been deleted.
ClockStep.SYSTEM_CLOCK_DEPENDENTwas renamed toClockStep.SYSTEM_CLOCK_MULTIPLIER.ClockStep.SYSTEM_CLOCKwas added to have the clock always match the system time.ClockRange.LOOPwas renamed toClockRange.LOOP_STOPand now only loops in the forward direction.Clock.reverseTickwas removed, simply negateClock.multiplierand pass it toClock.tick.Clock.shouldAnimatewas added to indicate ifClock.tickshould actually advance time.- The Timeline widget was moved into the Widgets/Timeline subdirectory.
Dojo/TimelineWidgetwas removed. You should use the non-toolkit specific Timeline widget directly.
- New
- Removed
CesiumViewerWidget.fullScreenElement, instead use theCesiumViewerWidget.fullscreen.viewModel.fullScreenElementobservable property. IntersectionTests.rayPlanenow takes the newPlanetype instead of separateplaneNormalandplaneDarguments.- Renamed
ImageryProviderErrortoTileProviderError.
- 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
FullscreenWidgetwhich is a simple, single-button widget that toggles fullscreen mode of the specified element. - Added interactive extent drawing to the
PickingSandcastle example. - Added
HeightmapTessellatorto create a mesh from a heightmap. - Added
JulianDate.equals. - Added
Planefor 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
PolylineCollectionwith a model matrix other than the identity would be incorrectly rendered in 2D and Columbus view. - Fixed an issue in the
ScreenSpaceCameraControllerwhere disabled mouse events can cause the camera to be moved after being re-enabled.
b13 - 2013-02-01
- Breaking changes:
- The combined
Cesium.jsfile and other required files are now created inBuild/CesiumandBuild/CesiumUnminifiedfolders. - The Web Worker files needed when using the combined
Cesium.jsfile are now in aWorkerssubdirectory. - Removed
erosionproperty fromPolygon,ComplexConicSensorVolume,RectangularPyramidSensorVolume, andComplexConicSensorVolume. Use the newErosionmaterial. See the Sandbox Animation example. - Removed
setRectangleandgetRectanglemethods fromViewportQuad. Use the newrectangleproperty. - Removed
timeparameter fromScene.initializeFrame. Instead, pass the time toScene.render.
- The combined
- Added new
RimLightingandErosionmaterials. See the Fabric wiki page. - Added
hueandsaturationproperties toImageryLayer. - Added
czm_hueandczm_saturationto adjust the hue and saturation of RGB colors. - Added
JulianDate.getDaysDifferencemethod. - Added
Transforms.computeIcrfToFixedMatrixandcomputeFixedToIcrfMatrix. - Added
EarthOrientationParameters,EarthOrientationParametersSample,Iau2006XysData, andIau2006XysDataSampleclasses 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.
ViewportQuadnow 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.
b12a - 2013-01-18
Breaking changes:
Renamed the
serverproperty tourlwhen constructing aBingMapsImageryProvider. Likewise, renamedBingMapsImageryProvider.getServertoBingMapsImageryProvider.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
toCSSColortotoCssColorString.Moved
minimumZoomDistanceandmaximumZoomDistancefrom theCameraControllerto theScreenSpaceCameraController.
Added
fromCssColorStringtoColorto create aColorinstance from any CSS value.Added
fromHsltoColorto create aColorinstance from H, S, L values.Added
Scene.backgroundColor.Added
textureRotationAngleparameter toPolygon.setPositionsandPolygon.configureFromPolygonHierarchyto rotate textures on polygons.Added
Matrix3.fromRotationX,Matrix3.fromRotationY,Matrix3.fromRotationZ, andMatrix2.fromRotation.Added
fromUniformScaletoMatrix2,Matrix3, andMatrix4.Added
fromScaletoMatrix2.Added
multiplyByUniformScaletoMatrix4.Added
flipYproperty when callingContext.createTexture2DandContext.createCubeMap.Added
MeshFilters.encodePositionandEncodedCartesian3.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.
b12 - 2013-01-03
- Breaking changes:
- Renamed
EventHandlertoScreenSpaceEventHandler. - Renamed
MouseEventTypetoScreenSpaceEventType. - Renamed
MouseEventType.MOVEtoScreenSpaceEventType.MOUSE_MOVE. - Renamed
CameraEventHandlertoCameraEventAggregator. - Renamed all
*MouseActionto*InputAction(including get, set, remove, etc). - Removed
Camera2DController,CameraCentralBodyController,CameraColumbusViewController,CameraFlightController,CameraFreeLookController,CameraSpindleController, andCameraControllerCollection. Common ways to modify the camera are through theCameraControllerobject of theCameraand will work in all scene modes. The default camera handler is theScreenSpaceCameraControllerobject 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.jpgwithSource/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
Timelinewidget now properly displays leap seconds.
b11 - 2012-12-03
- Breaking changes:
- Widget render loop now started by default. Startup code changed, see Sandcastle examples.
- Changed
Timeline.makeLabelto take aJulianDateinstead of a JavaScript date parameter. - Default Earth imagery has been moved to a new package
Assets. Images used bySandcastleexamples have been moved to the Sandcastle folder, and images used by the Dojo widgets are now self-contained in theWidgetspackage. positionToEyeECinczm_materialInputis no longer normalized by default.FullScreenand related functions have been renamed toFullscreento match the W3C standard name.Fullscreen.isFullscreenEnabledwas incorrectly implemented in certain browsers.isFullscreenEnablednow correctly determines whether the browser will allow an element to go fullscreen. A newisFullscreenfunction is available to determine if the browser is currently in fullscreen mode.Fullscreen.getFullScreenChangeEventNameandFullscreen.getFullScreenChangeEventNamenow return the proper event name, suitable for use with theaddEventListenerAPI, instead prefixing them with "on".- Removed
Scene.setSunPositionandScene.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
affectedByLightingproperty fromPolygon,EllipsoidPrimitive,RectangularPyramidSensorVolume,CustomSensorVolume, andComplexConicSensorVolume. - Removed
DistanceIntervalMaterial. This was not documented. Matrix2.getElementIndex,Matrix3.getElementIndex, andMatrix4.getElementIndexfunctions 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.showSkyAtmospherewithScene.skyAtmosphereandSkyAtmosphere. 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 LayersSandcastleexample. - Added
Watermaterial. See the MaterialsSandcastleexample. - Added
SkyBoxto draw stars. AddedCesiumWidget.showSkyBoxandCesiumViewerWidget.showSkyBox. - Added new
Matrix4functions: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_translateRelativeToEyeandczm_luminanceGLSL functions. - Added
shininesstoczm_materialInput. - Added
QuadraticRealPolynomial,CubicRealPolynomial, andQuarticRealPolynomialfor finding the roots of quadratic, cubic, and quartic polynomials. - Added
IntersectionTests.grazingAltitudeLocationfor finding a point on a ray nearest to an ellipsoid. - Added
mostOrthogonalAxisfunction 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.
b10 - 2012-11-02
- Breaking changes:
- Renamed
Texture2DPooltoTexturePool. - Renamed
BingMapsTileProvidertoBingMapsImageryProvider. - Renamed
SingleTileProvidertoSingleTileImageryProvider. - Renamed
ArcGISTileProvidertoArcGisMapServerImageryProvider. - Renamed
EquidistantCylindrdicalProjectiontoGeographicProjection. - Renamed
MercatorProjectiontoWebMercatorProjection. CentralBody.dayTileProviderhas been removed. Instead, add one or more imagery providers to the collection returned byCentralBody.getImageryLayers().- The
description.generateTextureCoordsparameter passed toExtentTessellator.computeis now calleddescription.generateTextureCoordinates. - Renamed
bringForward,sendBackward,bringToFront, andsendToBackmethods onCompositePrimitivetoraise,lower,raiseToTop, andlowerToBottom, respectively. CacheandCachePolicyare 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
CentralBodynow allows imagery from multiple sources to be layered and alpha blended on the globe. See the newImagery LayersandMap ProjectionsSandcastle examples.- Added
WebMapServiceImageryProvider. - Improved middle mouse click behavior to always tilt in the same direction.
- Added
getElementIndextoMatrix2,Matrix3, andMatrix4.
b9 - 2012-10-01
- Breaking changes:
- Removed the
renderandrenderForPickfunctions of primitives. The primitiveupdatefunction updates a list of commands for the renderer. For more details, see the Data Driven Renderer. - Removed
Context.getViewportandContext.setViewport. The viewport defaults to the size of the canvas if a primitive does not override the viewport property in the render state. shallowEqualshas been removed.- Passing
undefinedto any of the set functions onBillboardnow throws an exception. - Passing
undefinedto any of the set functions onPolylinenow throws an exception. PolygonPipeline.scaleToGeodeticHeightnow takes ellipsoid as the last parameter, instead of the first. It also now defaults toEllipsoid.WGS84if 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
DynamicEllipsoidandDynamicEllipsoidVisualizerwhich use the newEllipsoidPrimitiveto implement ellipsoids in CZML. Extentfunctions now take optional result parameters. Also addedgetCenter,intersectWith, andcontainsfunctions.- Add new utility class,
DynamicObjectViewfor tracking a DynamicObject with the camera across scene modes; also hooked up CesiumViewerWidget to use it. - Added
enableTranslate,enableZoom, andenableRotateproperties toCamera2DControllerto selectively toggle camera behavior. All values default totrue. - Added
Camera2DController.setPositionCartographicto 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.
b8 - 2012-09-05
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.computeScreenSpacePositionnow requires the current scene state as a parameter.Passing
undefinedto any of the set functions onLabelnow throws an exception.Renamed
agi_prefix on GLSL identifiers toczm_.Replaced
ViewportQuadpropertiesvertexShaderandfragmentShaderwith optional constructor arguments.Changed the GLSL automatic uniform
czm_viewportfrom anivec4to avec4to reduce casting.Billboardnow defaults to an image index of-1indicating no texture, previously billboards defaulted to0indicating 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
SceneStatetoFrameState.SunPositionwas changed from a static object to a functioncomputeSunPosition; which now returns aCartesian3with 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
Quaternionoperations now have static versions that work with any objects exposingx,y,zandwproperties.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
writeTextToCanvasfunction which handles sizing the resulting canvas to fit the desired text.Added support for CZML path visualization via the
DynamicPathandDynamicPathVisualizerobjects. See the CZML wiki for more details.Added support for WEBGL_depth_texture. See
Framebuffer.setDepthTexture.Added
CesiumMath.isPowerOfTwo.Added
affectedByLightingtoComplexConicSensorVolume,CustomSensorVolume, andRectangularPyramidSensorVolumeto turn lighting on/off for these objects.CZML
Polygon,Cone, andPyramidobjects are no longer affected by lighting.Added
czm_viewRotationandczm_viewInverseRotationautomatic GLSL uniforms.Added a
clampToPixelproperty toBillboardCollectionandLabelCollection. When true, it aligns all billboards and text to a pixel in screen space, providing a crisper image at the cost of jumpier motion.Ellipsoidfunctions now take optional result parameters.
b7 - 2012-08-01
Breaking changes:
- Removed keyboard input handling from
EventHandler. TextureAtlastakes 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.pickEllipsoidreturns the picked position in world coordinates and the ellipsoid parameter is optional. Prefer the newScene.pickEllipsoidmethod. For example, changevar position = camera.pickEllipsoid(ellipsoid, windowPosition);to:
var position = scene.pickEllipsoid(windowPosition, ellipsoid);Camera.getPickRaynow returns the newRaytype instead of an object with position and direction properties.Camera.viewExtentnow takes anExtentargument instead of west, south, east and north arguments. PreferScene.viewExtentoverCamera.viewExtent.Scene.viewExtentwill work in anySceneMode. For example, changecamera.viewExtent(ellipsoid, west, south, east, north);to:
scene.viewExtent(extent, ellipsoid);CameraSpindleController.mouseConstrainedZAxishas been removed. Instead, useCameraSpindleController.constrainedAxis. Code that previously looked like:spindleController.mouseConstrainedZAxis = true;should now look like:
spindleController.constrainedAxis = Cartesian3.UNIT_Z;The
Camera2DControllerconstructor andCameraControllerCollection.add2Dnow require a projection instead of an ellipsoid.Chainhas been removed.whenis now included as a more complete CommonJS Promises/A implementation.Jobs.downloadImagewas replaced withloadImageto provide a promise that will asynchronously load an image.jsonpnow 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.angleBetweenwas removed because it was a duplicate ofCartesian3.angleBetween. Simply replace calls of the former to the later.Cartographic3was renamed toCartographic.Cartographic2was removed; useCartographicinstead.Ellipsoid.toCartesianwas renamed toEllipsoid.cartographicToCartesian.Ellipsoid.toCartesianswas renamed toEllipsoid.cartographicArrayToCartesianArray.Ellipsoid.toCartographic2was renamed toEllipsoid.cartesianToCartographic.Ellipsoid.toCartographic2swas renamed toEllipsoid.cartesianArrayToCartographicArray.Ellipsoid.toCartographic3was renamed toEllipsoid.cartesianToCartographic.Ellipsoid.toCartographic3swas renamed toEllipsoid.cartesianArrayToCartographicArray.Ellipsoid.cartographicDegreesToCartesianwas 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.cartographic3ToDegreeswere removed. These functions are no longer needed because Cartographic instances are always represented in radians.All functions starting with
multiplyWithnow start withmultiplyByto be consistent with functions starting withdivideBy.The
multiplyWithMatrixfunction on eachMatrixtype was renamed tomultiply.All three Matrix classes have been largely re-written for consistency and performance. The
valuesproperty 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();
- Removed keyboard input handling from
All
Cartesian2operations now have static versions that work with any objects exposingxandyproperties.All
Cartesian3operations now have static versions that work with any objects exposingx,y, andzproperties.All
Cartesian4operations now have static versions that work with any objects exposingx,y,zandwproperties.All
Cartographicoperations now have static versions that work with any objects exposinglongitude,latitude, andheightproperties.All
Matrixclasses are now indexable like arrays.All
Matrixoperations 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, andCartographicoperations now take an optional result parameter for object re-use to reduce memory pressure.Added
Cartographic.fromDegreesto make creating Cartographic instances from values in degrees easier.Added
addImagetoTextureAtlasso 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, andLinearApproximationinterpolation algorithms.Added
CoordinateConversions, a new static class where most coordinate conversion methods will be stored.Added
Sphericalcoordinate typeAdded 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
CameraCentralBodyControlleras 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
computeTemeToPseudoFixedMatrixfunction toTransforms.Added 'PolylineCollection' to manage numerous polylines. 'PolylineCollection' dramatically improves rendering speed when using polylines.
b6a - 2012-06-20
- Breaking changes:
- Changed
Tipsify.tipsifyandTipsify.calculateACMRto accept an object literal instead of three separate arguments. Supplying a maximum index and cache size is now optional. CentralBodyno longer requires a camera as the first parameter.
- Changed
- Added
CentralBody.northPoleColorandCentralBody.southPoleColorto fill in the poles if they are not covered by a texture. - Added
Polygon.configureExtentto create a polygon defined by west, south, east, and north values. - Added functions to
Camerato provide position and directions in world coordinates. - Added
showThroughEllipsoidtoCustomSensorVolumeandRectangularPyramidSensorVolumeto allow sensors to draw through Earth. - Added
affectedByLightingtoCentralBodyandPolygonto turn lighting on/off for these objects.
b5 - 2012-05-15
Breaking changes:
- Renamed Geoscope to Cesium. To update your code, change all
Geoscope.*references toCesium.*, and reference Cesium.js instead of Geoscope.js. CompositePrimitive.addGroundwas removed; useCompositePrimitive.addinstead. For example, changeprimitives.addGround(polygon);to:
primitives.add(polygon);Moved
eastNorthUpToFixedFrameandnorthEastDownToFixedFramefunctions fromEllipsoidto a newTransformsobject. For example, changevar m = ellipsoid.eastNorthUpToFixedFrame(p);to:
var m = Cesium.Transforms.eastNorthUpToFixedFrame(p, ellipsoid);Label properties
fillStyleandstrokeStylewere renamed tofillColorandoutlineColor; they are also now color objects instead of strings. The labelColorproperty 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.TipsifytoTipsify.tipsify.Renamed
Tipsify.CalculateACMRtoTipsify.calculateACMR.Renamed
LeapSecond.CompareLeapSecondDatetoLeapSecond.compareLeapSecondDate.Geoscope.JSONP.getis nowCesium.jsonp.Cesium.jsonpnow takes a url, a callback function, and an options object. The previous 2nd and 4th parameters are now specified using the options object.TWEENis no longer globally defined, and is instead available asCesium.Tween.Chain.js functions such as
runare now moved toCesium.Chain.run, etc.Geoscope.CollectionAlgorithms.binarySearchis nowCesium.binarySearch.Geoscope.ContainmentTests.pointInsideTriangle2Dis nowCesium.pointInsideTriangle2D.Static constructor methods prefixed with "createFrom", now start with "from":
Matrix2.createfromColumnMajorArraybecomes
Matrix2.fromColumnMajorArrayThe
JulianDateconstructor no longer takes aDateobject, 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.getDateis nowJulianDate.toDate()and returns a new instance each time.CentralBody.logoOffsetXandlogoOffsetYhave 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_XCartsian2/3/4.getUnitY()->Cartsian2/3/4.UNIT_YCartsian2/3/4.getUnitZ()->Cartsian3/4.UNIT_ZCartsian2/3/4.getUnitW()->Cartsian4.UNIT_WMatrix/2/3/4.getIdentity()->Matrix/2/3/4.IDENTITYQuaternion.getIdentity()->Quaternion.IDENTITYEllipsoid.getWgs84()->Ellipsoid.WGS84Ellipsoid.getUnitSphere()->Ellipsoid.UNIT_SPHERECartesian2/3/4/Cartographic.getZero()->Cartesian2/3/4/Cartographic.ZERO
- Renamed Geoscope to Cesium. To update your code, change all
Added
PerformanceDisplaywhich 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.computeEllipseBoundaryand updatedShapes.computeCircleBoundaryto compute boundaries using arc-distance.Added
fileExtensionandcreditproperties toOpenStreetMapTileProviderconstruction.Night lights no longer disappear when
CentralBody.showGroundAtmosphereistrue.
b4 - 2012-03-01
Breaking changes:
- Replaced
Geoscope.SkyFromSpaceobject withCentralBody.showSkyAtmosphereproperty. - For mouse click and double click events, replaced
event.xandevent.ywithevent.position. - For mouse move events, replaced
movement.startXandstartYwithmovement.startPosition. Replacedmovement.endXandmovement.endYwithmovement.endPosition. Scene.Picknow takes aCartesian2with 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);
- Replaced
Added
SceneTransitionerto switch between 2D and 3D views. See the new Skeleton 2D example.Added
CentralBody.showGroundAtmosphereto show an atmosphere on the ground.Added
Camera.pickEllipsoidto get the point on the globe under the mouse cursor.Added
Polygon.heightto draw polygons at a constant altitude above the ellipsoid.
b3 - 2012-02-06
- Breaking changes:
- Replaced
Geoscope.ConstantsandGeoscope.TrigwithGeoscope.Math. Polygon- Replaced
setColorandgetColorwith amaterial.colorproperty. - Replaced
setEllipsoidandgetEllipsoidwith anellipsoidproperty. - Replaced
setGranularityandgetGranularitywith agranularityproperty.
- Replaced
Polyline- Replaced
setColor/getColorandsetOutlineColor/getOutlineColorwithcolorandoutlineproperties. - Replaced
setWidth/getWidthandsetOutlineWidth/getOutlineWidthwithwidthandoutlineWidthproperties.
- Replaced
- Removed
Geoscope.BillboardCollection.bufferUsage. It is now automatically determined. - Removed
Geoscope.Labelset/get functions forshadowOffset,shadowBlur,shadowColor. These are no longer supported. - Renamed
Scene.getTransitionstoScene.getAnimations. - Renamed
SensorCollectiontoSensorVolumeCollection. - Replaced
ComplexConicSensorVolume.materialwith separate materials for each surface:outerMaterial,innerMaterial, andcapMaterial. - Material renames
TranslucentSensorVolumeMaterialtoColorMaterial.DistanceIntervalSensorVolumeMaterialtoDistanceIntervalMaterial.TieDyeSensorVolumeMaterialtoTieDyeMaterial.CheckerboardSensorVolumeMaterialtoCheckerboardMaterial.PolkaDotSensorVolumeMaterialtoDotMaterial.FacetSensorVolumeMaterialtoFacetMaterial.BlobSensorVolumeMaterialtoBlobMaterial.
- Added new materials:
VerticalStripeMaterialHorizontalStripeMaterialDistanceIntervalMaterial
- Added polygon material support via the new
Polygon.materialproperty. - Added clock angle support to
ConicSensorVolumevia the newmaximumClockAngleandminimumClockAngleproperties. - 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
BillboardCollectionandLabelCollection. - Added more mouse events.
- Added Sandbox examples for new features.
- Replaced
b2 - 2011-12-01
- 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 }
b1 - 2011-09-19
- Added
Shapes.computeCircleBoundaryto compute circles. See the Sandbox. Changed the
EventHandlerconstructor 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
Contextconstructor-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);
b0 - 2011-08-31
- 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.Polygonfor drawing polygons on the globe. - Added
Context.pickto pick objects in one line of code. - Added
bringForward,bringToFront,sendBackward, andsendToBackfunctions toCompositePrimitiveto control the render-order for ground primitives. - Added
getShow/setShowfunctions toPolylineandCompositePrimitive. - Added new camera control and event types including
CameraFreeLookEventHandler,CameraSpindleEventHandler, andEventHandler. - Replaced
Ellipsoid.toCartesian3withEllipsoid.toCartesian. - update and
updateForPickfunctions no longer require aUniformStateargument.
Alpha Releases
a6 - 2011-08-05
- Added support for lines using
Geoscope.Polyline. See the Sandbox example. - Made
CompositePrimitive,LabelCollection, andBillboardCollectionhave consistent function names, including a newcontains()function. - Improved reference documentation layout.
a5 - 2011-07-22
- Flushed out
CompositePrimitive,TimeStandard, andLeapSecondtypes. - Improved support for browsers using ANGLE (Windows Only).
a4 - 2011-07-15
- Added
Geoscope.TimeStandardfor handling TAI and UTC time standards. - Added
Geoscope.Quaternion, which is a foundation for future camera control. - Added initial version of
Geoscope.PrimitiveCollectionto 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.
a3 - 2011-07-08
- Added
Geoscope.LabelCollectionfor drawing text. - Added
Geoscope.JulianDateandGeoscope.TimeConstantsfor proper time handling. - See the Sandbox example for how to use the new labels and Julian date.
a2 - 2011-07-01
- Added
Geoscope.ViewportQuadandGeoscope.Rectangle(foundations for 2D map). - Improved the visual quality of cloud shadows.
a1 - 2011-06-24
- Added
SunPositiontype to compute the sun position for a julian date. - Simplified picking. See the mouse move event in the Sandbox example.
Cartographic2andCartographic3are now mutable types.- Added reference documentation for billboards.
a0 - 2011-06-17
- Initial Release.