- Breaking changes:
-
Renamed the
server
property tourl
when constructing aBingMapsImageryProvider
. Likewise, renamedBingMapsImageryProvider.getServer
toBingMapsImageryProvider.getUrl
. Code that looked likevar bing = new BingMapsImageryProvider({ server : 'dev.virtualearth.net' });
should now look like:
var bing = new BingMapsImageryProvider({ url : 'http://dev.virtualearth.net' });
-
Renamed
toCSSColor
totoCssColorString
. -
Moved
minimumZoomDistance
andmaximumZoomDistance
from theCameraController
to theScreenSpaceCameraController
.
-
- Added
fromCssColorString
toColor
to create aColor
instance from any CSS value. - Added
fromHsl
toColor
to create aColor
instance from H, S, L values. - Added
Scene.backgroundColor
. - Added
textureRotationAngle
parameter toPolygon.setPositions
andPolygon.configureFromPolygonHierarchy
to rotate textures on polygons. - Added
Matrix3.fromRotationX
,Matrix3.fromRotationY
,Matrix3.fromRotationZ
, andMatrix2.fromRotation
. - Added
fromUniformScale
toMatrix2
,Matrix3
, andMatrix4
. - Added
fromScale
toMatrix2
. - Added
multiplyByUniformScale
toMatrix4
. - Added
flipY
property when callingContext.createTexture2D
andContext.createCubeMap
. - Added
MeshFilters.encodePosition
andEncodedCartesian3.encode
. - Fixed jitter artifacts with polygons.
- Fixed camera tilt close to the
minimumZoomDistance
. - Fixed a bug that could lead to blue tiles when zoomed in close to the North and South poles.
- Fixed a bug where removing labels would remove the wrong label and ultimately cause a crash.
- Worked around a bug in Firefox 18 preventing typed arrays from being transferred to or from Web Workers.
- Upgraded RequireJS to version 2.1.2, and Almond to 0.2.3.
- Updated the default Bing Maps API key.
- Breaking changes:
- Renamed
EventHandler
toScreenSpaceEventHandler
. - Renamed
MouseEventType
toScreenSpaceEventType
. - Renamed
MouseEventType.MOVE
toScreenSpaceEventType.MOUSE_MOVE
. - Renamed
CameraEventHandler
toCameraEventAggregator
. - Renamed all
*MouseAction
to*InputAction
(including get, set, remove, etc). - Removed
Camera2DController
,CameraCentralBodyController
,CameraColumbusViewController
,CameraFlightController
,CameraFreeLookController
,CameraSpindleController
, andCameraControllerCollection
. Common ways to modify the camera are through theCameraController
object of theCamera
and will work in all scene modes. The default camera handler is theScreenSpaceCameraController
object on theScene
. - Changed default Natural Earth imagery to a 2K version of Natural Earth II with Shaded Relief, Water, and Drainages. The previously used version did not include lakes and rivers. This replaced
Source/Assets/Textures/NE2_50M_SR_W_2048.jpg
withSource/Assets/Textures/NE2_LR_LC_SR_W_DR_2048.jpg
.
- Renamed
- Added pinch-zoom, pinch-twist, and pinch-tilt for touch-enabled browsers (particularly mobile browsers).
- Improved rendering support on Nexus 4 and Nexus 7 using Firefox.
- Improved camera flights.
- Added Sandbox example using NASA's new Black Marble night imagery.
- Added constrained z-axis by default to the Cesium widgets.
- Upgraded Jasmine from version 1.1.0 to 1.3.0.
- Added
JulianDate.toIso8601
, which creates an ISO8601 compliant representation of a JulianDate. - The
Timeline
widget now properly displays leap seconds.
- Breaking changes:
- Widget render loop now started by default. Startup code changed, see Sandcastle examples.
- Changed
Timeline.makeLabel
to take aJulianDate
instead of a JavaScript date parameter. - Default Earth imagery has been moved to a new package
Assets
. Images used bySandcastle
examples have been moved to the Sandcastle folder, and images used by the Dojo widgets are now self-contained in theWidgets
package. positionToEyeEC
inczm_materialInput
is no longer normalized by default.FullScreen
and related functions have been renamed toFullscreen
to match the W3C standard name.Fullscreen.isFullscreenEnabled
was incorrectly implemented in certain browsers.isFullscreenEnabled
now correctly determines whether the browser will allow an element to go fullscreen. A newisFullscreen
function is available to determine if the browser is currently in fullscreen mode.Fullscreen.getFullScreenChangeEventName
andFullscreen.getFullScreenChangeEventName
now return the proper event name, suitable for use with theaddEventListener
API, instead prefixing them with "on".- Removed
Scene.setSunPosition
andScene.getSunPosition
. The sun position used for lighting is automatically computed based on the scene's time. - Removed a number of rendering options from
CentralBody
, including the ground atmosphere, night texture, specular map, cloud map, cloud shadows, and bump map. These features weren't really production ready and had a disproportionate cost in terms of shader complexity and compilation time. They may return in a more polished form in a future release. - Removed
affectedByLighting
property fromPolygon
,EllipsoidPrimitive
,RectangularPyramidSensorVolume
,CustomSensorVolume
, andComplexConicSensorVolume
. - Removed
DistanceIntervalMaterial
. This was not documented. Matrix2.getElementIndex
,Matrix3.getElementIndex
, andMatrix4.getElementIndex
functions have had their parameters swapped and now take row first and column second. This is consistent with other class constants, such as Matrix2.COLUMN1ROW2.- Replaced
CentralBody.showSkyAtmosphere
withScene.skyAtmosphere
andSkyAtmosphere
. This has no impact for those using the Cesium widget.
- Improved lighting in Columbus view and on polygons, ellipsoids, and sensors.
- Fixed atmosphere rendering artifacts and improved Columbus view transition.
- Fixed jitter artifacts with billboards and polylines.
- Added
TileMapServiceImageryProvider
. See the Imagery LayersSandcastle
example. - Added
Water
material. See the MaterialsSandcastle
example. - Added
SkyBox
to draw stars. AddedCesiumWidget.showSkyBox
andCesiumViewerWidget.showSkyBox
. - Added new
Matrix4
functions:Matrix4.multiplyByTranslation
,multiplyByPoint
, andMatrix4.fromScale
. AddedMatrix3.fromScale
. - Added
EncodedCartesian3
, which is used to eliminate jitter when drawing primitives. - Added new automatic GLSL uniforms:
czm_frameNumber
,czm_temeToPseudoFixed
,czm_entireFrustum
,czm_inverseModel
,czm_modelViewRelativeToEye
,czm_modelViewProjectionRelativeToEye
,czm_encodedCameraPositionMCHigh
, andczm_encodedCameraPositionMCLow
. - Added
czm_translateRelativeToEye
andczm_luminance
GLSL functions. - Added
shininess
toczm_materialInput
. - Added
QuadraticRealPolynomial
,CubicRealPolynomial
, andQuarticRealPolynomial
for finding the roots of quadratic, cubic, and quartic polynomials. - Added
IntersectionTests.grazingAltitudeLocation
for finding a point on a ray nearest to an ellipsoid. - Added
mostOrthogonalAxis
function toCartesian2
,Cartesian3
, andCartesian4
. - Changed CesiumViewerWidget default behavior so that zooming to an object now requires a single left-click, rather than a double-click.
- Updated third-party Tween.js.
- Breaking changes:
- Renamed
Texture2DPool
toTexturePool
. - Renamed
BingMapsTileProvider
toBingMapsImageryProvider
. - Renamed
SingleTileProvider
toSingleTileImageryProvider
. - Renamed
ArcGISTileProvider
toArcGisMapServerImageryProvider
. - Renamed
EquidistantCylindrdicalProjection
toGeographicProjection
. - Renamed
MercatorProjection
toWebMercatorProjection
. CentralBody.dayTileProvider
has been removed. Instead, add one or more imagery providers to the collection returned byCentralBody.getImageryLayers()
.- The
description.generateTextureCoords
parameter passed toExtentTessellator.compute
is now calleddescription.generateTextureCoordinates
. - Renamed
bringForward
,sendBackward
,bringToFront
, andsendToBack
methods onCompositePrimitive
toraise
,lower
,raiseToTop
, andlowerToBottom
, respectively. Cache
andCachePolicy
are no longer used and have been removed.- Fixed problem with Dojo widget startup, and removed "postSetup" callback in the process. See Sandcastle examples and update your startup code.
- Renamed
CentralBody
now allows imagery from multiple sources to be layered and alpha blended on the globe. See the newImagery Layers
andMap Projections
Sandcastle examples.- Added
WebMapServiceImageryProvider
. - Improved middle mouse click behavior to always tilt in the same direction.
- Added
getElementIndex
toMatrix2
,Matrix3
, andMatrix4
.
- Breaking changes:
- Removed the
render
andrenderForPick
functions of primitives. The primitiveupdate
function updates a list of commands for the renderer. For more details, see the Data Driven Renderer. - Removed
Context.getViewport
andContext.setViewport
. The viewport defaults to the size of the canvas if a primitive does not override the viewport property in the render state. shallowEquals
has been removed.- Passing
undefined
to any of the set functions onBillboard
now throws an exception. - Passing
undefined
to any of the set functions onPolyline
now throws an exception. PolygonPipeline.scaleToGeodeticHeight
now takes ellipsoid as the last parameter, instead of the first. It also now defaults toEllipsoid.WGS84
if no parameter is provided.
- Removed the
- The new Sandcastle live editor and demo gallery replace the Sandbox and Skeleton examples.
- Improved picking performance and accuracy.
- Added EllipsoidPrimitive for visualizing ellipsoids and spheres. Currently, this is only supported in 3D, not 2D or Columbus view.
- Added
DynamicEllipsoid
andDynamicEllipsoidVisualizer
which use the newEllipsoidPrimitive
to implement ellipsoids in CZML. Extent
functions now take optional result parameters. Also addedgetCenter
,intersectWith
, andcontains
functions.- Add new utility class,
DynamicObjectView
for tracking a DynamicObject with the camera across scene modes; also hooked up CesiumViewerWidget to use it. - Added
enableTranslate
,enableZoom
, andenableRotate
properties toCamera2DController
to selectively toggle camera behavior. All values default totrue
. - Added
Camera2DController.setPositionCartographic
to simplify moving the camera programmatically when in 2D mode. - Improved near/far plane distances and eliminated z-fighting.
- Added
Matrix4.multiplyByTranslation
,Matrix4.fromScale
, andMatrix3.fromScale
.
-
Breaking changes:
-
Materials are now created through a centralized Material class using a JSON schema called Fabric. For example, change:
polygon.material = new BlobMaterial({repeat : 10.0});
to:
polygon.material = Material.fromType(context, 'Blob'); polygon.material.repeat = 10.0;
or:
polygon.material = new Material({ context : context, fabric : { type : 'Blob', uniforms : { repeat : 10.0 } } });
-
Label.computeScreenSpacePosition
now requires the current scene state as a parameter. -
Passing
undefined
to any of the set functions onLabel
now throws an exception. -
Renamed
agi_
prefix on GLSL identifiers toczm_
. -
Replaced
ViewportQuad
propertiesvertexShader
andfragmentShader
with optional constructor arguments. -
Changed the GLSL automatic uniform
czm_viewport
from anivec4
to avec4
to reduce casting. -
Billboard
now defaults to an image index of-1
indicating no texture, previously billboards defaulted to0
indicating the first texture in the atlas. For example, change:billboards.add({ position : { x : 1.0, y : 2.0, z : 3.0 }, });
to:
billboards.add({ position : { x : 1.0, y : 2.0, z : 3.0 }, imageIndex : 0 });
-
Renamed
SceneState
toFrameState
. -
SunPosition
was changed from a static object to a functioncomputeSunPosition
; which now returns aCartesian3
with the computed position. It was also optimized for performance and memory pressure. For example, change:var result = SunPosition.compute(date); var position = result.position; to: var position = computeSunPosition(date);
-
-
All
Quaternion
operations now have static versions that work with any objects exposingx
,y
,z
andw
properties. -
Added support for nested polygons with holes. See
Polygon.configureFromPolygonHierarchy
. -
Added support to the renderer for view frustum and central body occlusion culling. All built-in primitives, such as
BillboardCollection
,Polygon
,PolylineCollection
, etc., can be culled. See the advanced examples in the Sandbox for details. -
Added
writeTextToCanvas
function which handles sizing the resulting canvas to fit the desired text. -
Added support for CZML path visualization via the
DynamicPath
andDynamicPathVisualizer
objects. See the CZML wiki for more details. -
Added support for WEBGL_depth_texture. See
Framebuffer.setDepthTexture
. -
Added
CesiumMath.isPowerOfTwo
. -
Added
affectedByLighting
toComplexConicSensorVolume
,CustomSensorVolume
, andRectangularPyramidSensorVolume
to turn lighting on/off for these objects. -
CZML
Polygon
,Cone
, andPyramid
objects are no longer affected by lighting. -
Added
czm_viewRotation
andczm_viewInverseRotation
automatic GLSL uniforms. -
Added a
clampToPixel
property toBillboardCollection
andLabelCollection
. When true, it aligns all billboards and text to a pixel in screen space, providing a crisper image at the cost of jumpier motion. -
Ellipsoid
functions now take optional result parameters.
-
Breaking changes:
-
Removed keyboard input handling from
EventHandler
. -
TextureAtlas
takes an object literal in its constructor instead of separate parameters. Code that previously looked like:context.createTextureAtlas(images, pixelFormat, borderWidthInPixels);
should now look like:
context.createTextureAtlas({images : images, pixelFormat : pixelFormat, borderWidthInPixels : borderWidthInPixels});
-
Camera.pickEllipsoid
returns the picked position in world coordinates and the ellipsoid parameter is optional. Prefer the newScene.pickEllipsoid
method. For example, changevar position = camera.pickEllipsoid(ellipsoid, windowPosition);
to:
var position = scene.pickEllipsoid(windowPosition, ellipsoid);
-
Camera.getPickRay
now returns the newRay
type instead of an object with position and direction properties. -
Camera.viewExtent
now takes anExtent
argument instead of west, south, east and north arguments. PreferScene.viewExtent
overCamera.viewExtent
.Scene.viewExtent
will work in anySceneMode
. For example, changecamera.viewExtent(ellipsoid, west, south, east, north);
to:
scene.viewExtent(extent, ellipsoid);
-
CameraSpindleController.mouseConstrainedZAxis
has been removed. Instead, useCameraSpindleController.constrainedAxis
. Code that previously looked like:spindleController.mouseConstrainedZAxis = true;
should now look like:
spindleController.constrainedAxis = Cartesian3.UNIT_Z;
-
The
Camera2DController
constructor andCameraControllerCollection.add2D
now require a projection instead of an ellipsoid. -
Chain
has been removed.when
is now included as a more complete CommonJS Promises/A implementation. -
Jobs.downloadImage
was replaced withloadImage
to provide a promise that will asynchronously load an image. -
jsonp
now returns a promise for the requested data, removing the need for a callback parameter. -
JulianDate.getTimeStandard() has been removed, dates are now always stored internally as TAI.
-
LeapSeconds.setLeapSeconds now takes an array of LeapSecond instances instead of JSON.
-
TimeStandard.convertUtcToTai and TimeStandard.convertTaiToUtc have been removed as they are no longer needed.
-
Cartesian3.prototype.getXY()
was replaced withCartesian2.fromCartesian3
. Code that previously looked likecartesian3.getXY();
should now look likeCartesian2.fromCartesian3(cartesian3);
. -
Cartesian4.prototype.getXY()
was replaced withCartesian2.fromCartesian4
. Code that previously looked likecartesian4.getXY();
should now look likeCartesian2.fromCartesian4(cartesian4);
. -
Cartesian4.prototype.getXYZ()
was replaced withCartesian3.fromCartesian4
. Code that previously looked likecartesian4.getXYZ();
should now look likeCartesian3.fromCartesian4(cartesian4);
. -
Math.angleBetween
was removed because it was a duplicate ofCartesian3.angleBetween
. Simply replace calls of the former to the later. -
Cartographic3
was renamed toCartographic
. -
Cartographic2
was removed; useCartographic
instead. -
Ellipsoid.toCartesian
was renamed toEllipsoid.cartographicToCartesian
. -
Ellipsoid.toCartesians
was renamed toEllipsoid.cartographicArrayToCartesianArray
. -
Ellipsoid.toCartographic2
was renamed toEllipsoid.cartesianToCartographic
. -
Ellipsoid.toCartographic2s
was renamed toEllipsoid.cartesianArrayToCartographicArray
. -
Ellipsoid.toCartographic3
was renamed toEllipsoid.cartesianToCartographic
. -
Ellipsoid.toCartographic3s
was renamed toEllipsoid.cartesianArrayToCartographicArray
. -
Ellipsoid.cartographicDegreesToCartesian
was removed. Code that previously looked likeellipsoid.cartographicDegreesToCartesian(new Cartographic(45, 50, 10))
should now look likeellipsoid.cartographicToCartesian(Cartographic.fromDegrees(45, 50, 10))
. -
Math.cartographic3ToRadians
,Math.cartographic2ToRadians
,Math.cartographic2ToDegrees
, andMath.cartographic3ToDegrees
were removed. These functions are no longer needed because Cartographic instances are always represented in radians. -
All functions starting with
multiplyWith
now start withmultiplyBy
to be consistent with functions starting withdivideBy
. -
The
multiplyWithMatrix
function on eachMatrix
type was renamed tomultiply
. -
All three Matrix classes have been largely re-written for consistency and performance. The
values
property has been eliminated and Matrices are no longer immutable. Code that previously looked likematrix = matrix.setColumn0Row0(12);
now looks likematrix[Matrix2.COLUMN0ROW0] = 12;
. Code that previously looked likematrix.setColumn3(cartesian3);
now looked likematrix.setColumn(3, cartesian3, matrix)
. -
'Polyline' is no longer externally creatable. To create a 'Polyline' use the 'PolylineCollection.add' method.
Polyline polyline = new Polyline();
to
PolylineCollection polylineCollection = new PolylineCollection(); Polyline polyline = polylineCollection.add();
-
-
All
Cartesian2
operations now have static versions that work with any objects exposingx
andy
properties. -
All
Cartesian3
operations now have static versions that work with any objects exposingx
,y
, andz
properties. -
All
Cartesian4
operations now have static versions that work with any objects exposingx
,y
,z
andw
properties. -
All
Cartographic
operations now have static versions that work with any objects exposinglongitude
,latitude
, andheight
properties. -
All
Matrix
classes are now indexable like arrays. -
All
Matrix
operations now have static versions of all prototype functions and anywhere we take a Matrix instance as input can now also take an Array or TypedArray. -
All
Matrix
,Cartesian
, andCartographic
operations now take an optional result parameter for object re-use to reduce memory pressure. -
Added
Cartographic.fromDegrees
to make creating Cartographic instances from values in degrees easier. -
Added
addImage
toTextureAtlas
so images can be added to a texture atlas after it is constructed. -
Added
Scene.pickEllipsoid
, which picks either the ellipsoid or the map depending on the currentSceneMode
. -
Added
Event
, a new utility class which makes it easy for objects to expose event properties. -
Added
TextureAtlasBuilder
, a new utility class which makes it easy to build a TextureAtlas asynchronously. -
Added
Clock
, a simple clock for keeping track of simulated time. -
Added
LagrangePolynomialApproximation
,HermitePolynomialApproximation
, andLinearApproximation
interpolation algorithms. -
Added
CoordinateConversions
, a new static class where most coordinate conversion methods will be stored. -
Added
Spherical
coordinate type -
Added a new DynamicScene layer for time-dynamic, data-driven visualization. This include CZML processing. For more details see https://github.com/AnalyticalGraphicsInc/cesium/wiki/Architecture and https://github.com/AnalyticalGraphicsInc/cesium/wiki/CZML-in-Cesium.
-
Added a new application, Cesium Viewer, for viewing CZML files and otherwise exploring the globe.
-
Added a new Widgets directory, to contain common re-usable Cesium related controls.
-
Added a new Timeline widget to the Widgets directory.
-
Added a new Widgets/Dojo directory, to contain dojo-specific widgets.
-
Added new Timeline and Cesium dojo widgets.
-
Added
CameraCentralBodyController
as the new default controller to handle mouse input.- The left mouse button rotates around the central body.
- The right mouse button and mouse wheel zoom in and out.
- The middle mouse button rotates around the point clicked on the central body.
-
Added
computeTemeToPseudoFixedMatrix
function toTransforms
. -
Added 'PolylineCollection' to manage numerous polylines. 'PolylineCollection' dramatically improves rendering speed when using polylines.
- Breaking changes:
- Changed
Tipsify.tipsify
andTipsify.calculateACMR
to accept an object literal instead of three separate arguments. Supplying a maximum index and cache size is now optional. CentralBody
no longer requires a camera as the first parameter.
- Changed
- Added
CentralBody.northPoleColor
andCentralBody.southPoleColor
to fill in the poles if they are not covered by a texture. - Added
Polygon.configureExtent
to create a polygon defined by west, south, east, and north values. - Added functions to
Camera
to provide position and directions in world coordinates. - Added
showThroughEllipsoid
toCustomSensorVolume
andRectangularPyramidSensorVolume
to allow sensors to draw through Earth. - Added
affectedByLighting
toCentralBody
andPolygon
to turn lighting on/off for these objects.
-
Breaking changes:
-
Renamed Geoscope to Cesium. To update your code, change all
Geoscope.*
references toCesium.*
, and reference Cesium.js instead of Geoscope.js. -
CompositePrimitive.addGround
was removed; useCompositePrimitive.add
instead. For example, changeprimitives.addGround(polygon);
to:
primitives.add(polygon);
-
Moved
eastNorthUpToFixedFrame
andnorthEastDownToFixedFrame
functions fromEllipsoid
to a newTransforms
object. For example, changevar m = ellipsoid.eastNorthUpToFixedFrame(p);
to:
var m = Cesium.Transforms.eastNorthUpToFixedFrame(p, ellipsoid);
-
Label properties
fillStyle
andstrokeStyle
were renamed tofillColor
andoutlineColor
; they are also now color objects instead of strings. The labelColor
property has been removed.For example, change
label.setFillStyle("red"); label.setStrokeStyle("#FFFFFFFF");
to:
label.setFillColor({ red : 1.0, blue : 0.0, green : 0.0, alpha : 1.0 }); label.setOutlineColor({ red : 1.0, blue : 1.0, green : 1.0, alpha : 1.0 });
-
Renamed
Tipsify.Tipsify
toTipsify.tipsify
. -
Renamed
Tipsify.CalculateACMR
toTipsify.calculateACMR
. -
Renamed
LeapSecond.CompareLeapSecondDate
toLeapSecond.compareLeapSecondDate
. -
Geoscope.JSONP.get
is nowCesium.jsonp
.Cesium.jsonp
now takes a url, a callback function, and an options object. The previous 2nd and 4th parameters are now specified using the options object. -
TWEEN
is no longer globally defined, and is instead available asCesium.Tween
. -
Chain.js functions such as
run
are now moved toCesium.Chain.run
, etc. -
Geoscope.CollectionAlgorithms.binarySearch
is nowCesium.binarySearch
. -
Geoscope.ContainmentTests.pointInsideTriangle2D
is nowCesium.pointInsideTriangle2D
. -
Static constructor methods prefixed with "createFrom", now start with "from":
Matrix2.createfromColumnMajorArray
becomes
Matrix2.fromColumnMajorArray
-
The
JulianDate
constructor no longer takes aDate
object, use the new from methods instead:new JulianDate(new Date());
becomes
JulianDate.fromDate(new Date("January 1, 2011 12:00:00 EST")); JulianDate.fromIso8601("2012-04-24T18:08Z"); JulianDate.fromTotalDays(23452.23);
-
JulianDate.getDate
is nowJulianDate.toDate()
and returns a new instance each time. -
CentralBody.logoOffsetX
andlogoOffsetY
have been replaced withCentralBody.logoOffset
, aCartesian2
. -
TileProviders now take a proxy object instead of a string, to allow more control over how proxy URLs are built. Construct a DefaultProxy, passing the previous proxy URL, to get the previous behavior.
-
Ellipsoid.getScaledWgs84()
has been removed since it is not needed. -
getXXX()
methods which returned a new instance of what should really be a constant are now exposed as frozen properties instead. This should improve performance and memory pressure.Cartsian2/3/4.getUnitX()
->Cartsian2/3/4.UNIT_X
Cartsian2/3/4.getUnitY()
->Cartsian2/3/4.UNIT_Y
Cartsian2/3/4.getUnitZ()
->Cartsian3/4.UNIT_Z
Cartsian2/3/4.getUnitW()
->Cartsian4.UNIT_W
Matrix/2/3/4.getIdentity()
->Matrix/2/3/4.IDENTITY
Quaternion.getIdentity()
->Quaternion.IDENTITY
Ellipsoid.getWgs84()
->Ellipsoid.WGS84
Ellipsoid.getUnitSphere()
->Ellipsoid.UNIT_SPHERE
Cartesian2/3/4/Cartographic.getZero()
->Cartesian2/3/4/Cartographic.ZERO
-
-
Added
PerformanceDisplay
which can be added to a scene to display frames per second (FPS). -
Labels now correctly allow specifying fonts by non-pixel CSS units such as points, ems, etc.
-
Added
Shapes.computeEllipseBoundary
and updatedShapes.computeCircleBoundary
to compute boundaries using arc-distance. -
Added
fileExtension
andcredit
properties toOpenStreetMapTileProvider
construction. -
Night lights no longer disappear when
CentralBody.showGroundAtmosphere
istrue
.
-
Breaking changes:
-
Replaced
Geoscope.SkyFromSpace
object withCentralBody.showSkyAtmosphere
property. -
For mouse click and double click events, replaced
event.x
andevent.y
withevent.position
. -
For mouse move events, replaced
movement.startX
andstartY
withmovement.startPosition
. Replacedmovement.endX
andmovement.endY
withmovement.endPosition
. -
Scene.Pick
now takes aCartesian2
with the origin at the upper-left corner of the canvas. For example, code that looked like:scene.pick(movement.endX, scene.getCanvas().clientHeight - movement.endY);
becomes:
scene.pick(movement.endPosition);
-
-
Added
SceneTransitioner
to switch between 2D and 3D views. See the new Skeleton 2D example. -
Added
CentralBody.showGroundAtmosphere
to show an atmosphere on the ground. -
Added
Camera.pickEllipsoid
to get the point on the globe under the mouse cursor. -
Added
Polygon.height
to draw polygons at a constant altitude above the ellipsoid.
- Breaking changes:
- Replaced
Geoscope.Constants
andGeoscope.Trig
withGeoscope.Math
. Polygon
- Replaced
setColor
andgetColor
with amaterial.color
property. - Replaced
setEllipsoid
andgetEllipsoid
with anellipsoid
property. - Replaced
setGranularity
andgetGranularity
with agranularity
property.
- Replaced
Polyline
- Replaced
setColor
/getColor
andsetOutlineColor
/getOutlineColor
withcolor
andoutline
properties. - Replaced
setWidth
/getWidth
andsetOutlineWidth
/getOutlineWidth
withwidth
andoutlineWidth
properties.
- Replaced
- Removed
Geoscope.BillboardCollection.bufferUsage
. It is now automatically determined. - Removed
Geoscope.Label
set/get functions forshadowOffset
,shadowBlur
,shadowColor
. These are no longer supported. - Renamed
Scene.getTransitions
toScene.getAnimations
. - Renamed
SensorCollection
toSensorVolumeCollection
. - Replaced
ComplexConicSensorVolume.material
with separate materials for each surface:outerMaterial
,innerMaterial
, andcapMaterial
. - Material renames
TranslucentSensorVolumeMaterial
toColorMaterial
.DistanceIntervalSensorVolumeMaterial
toDistanceIntervalMaterial
.TieDyeSensorVolumeMaterial
toTieDyeMaterial
.CheckerboardSensorVolumeMaterial
toCheckerboardMaterial
.PolkaDotSensorVolumeMaterial
toDotMaterial
.FacetSensorVolumeMaterial
toFacetMaterial
.BlobSensorVolumeMaterial
toBlobMaterial
.
- Added new materials:
VerticalStripeMaterial
HorizontalStripeMaterial
DistanceIntervalMaterial
- Added polygon material support via the new
Polygon.material
property. - Added clock angle support to
ConicSensorVolume
via the newmaximumClockAngle
andminimumClockAngle
properties. - Added a rectangular sensor,
RectangularPyramidSensorVolume
. - Changed custom sensor to connect direction points using the sensor's radius; previously, points were connected with a line.
- Improved performance and memory usage of
BillboardCollection
andLabelCollection
. - Added more mouse events.
- Added Sandbox examples for new features.
- Replaced
- Added complex conic and custom sensor volumes, and various materials to change their appearance. See the new Sensor folder in the Sandbox.
- Added modelMatrix property to primitives to render them in a local reference frame. See the polyline example in the Sandbox.
- Added eastNorthUpToFixedFrame() and northEastDownToFixedFrame() to Ellipsoid to create local reference frames.
- Added CameraFlightController to zoom smoothly from one point to another. See the new camera examples in the Sandbox.
- Added row and column assessors to Matrix2, Matrix3, and Matrix4.
- Added Scene, which reduces the amount of code required to use Geoscope. See the Skeleton. We recommend using this instead of explicitly calling update() and render() for individual or composite primitives. Existing code will need minor changes:
- Calls to Context.pick() should be replaced with Scene.pick().
- Primitive constructors no longer require a context argument.
- Primitive update() and render() functions now require a context argument. However, when using the new Scene object, these functions do not need to be called directly.
- TextureAtlas should no longer be created directly; instead, call Scene.getContext().createTextureAtlas().
- Other breaking changes:
-
Camera get/set functions, e.g., getPosition/setPosition were replaced with properties, e.g., position.
-
Replaced CompositePrimitive, Polygon, and Polyline getShow/setShow functions with a show property.
-
Replaced Polyline, Polygon, BillboardCollection, and LabelCollection getBufferUsage/setBufferUsage functions with a bufferUsage property.
-
Changed colors used by billboards, labels, polylines, and polygons. Previously, components were named r, g, b, and a. They are now red, green, blue, and alpha. Previously, each component's range was [0, 255]. The range is now [0, 1] floating point. For example,
color : { r : 0, g : 255, b : 0, a : 255 }
becomes:
color : { red : 0.0, green : 1.0, blue : 0.0, alpha : 1.0 }
-
-
Added
Shapes.computeCircleBoundary
to compute circles. See the Sandbox. -
Changed the
EventHandler
constructor function to take the Geoscope canvas, which ensures the mouse position is correct regardless of the canvas' position on the page. Code that previously looked like:var handler = new Geoscope.EventHandler();
should now look like:
var handler = new Geoscope.EventHandler(canvas);
-
Context.Pick no longer requires clamping the x and y arguments. Code that previously looked like:
var pickedObject = context.pick(primitives, us, Math.max(x, 0.0), Math.max(context.getCanvas().clientHeight - y, 0.0));
can now look like:
var pickedObject = context.pick(primitives, us, x, context.getCanvas().clientHeight - y);
-
Changed Polyline.setWidth and Polyline.setOutlineWidth to clamp the width to the WebGL implementation limit instead of throwing an exception. Code that previously looked like:
var maxWidth = context.getMaximumAliasedLineWidth(); polyline.setWidth(Math.min(5, maxWidth)); polyline.setOutlineWidth(Math.min(10, maxWidth));
can now look like:
polyline.setWidth(5); polyline.setOutlineWidth(10);
-
Improved the Sandbox:
- Code in the editor is now evaluated as you type for quick prototyping.
- Highlighting a Geoscope type in the editor and clicking the doc button in the toolbar now brings up the reference help for that type.
-
BREAKING CHANGE: The
Context
constructor-function now takes an element instead of an ID. Code that previously looked like:var context = new Geoscope.Context("glCanvas"); var canvas = context.getCanvas();
should now look like:
var canvas = document.getElementById("glCanvas"); var context = new Geoscope.Context(canvas);
- Added new Sandbox and Skeleton examples. The sandbox contains example code for common tasks. The skeleton is a bare-bones application for building upon. Most sandbox code examples can be copy and pasted directly into the skeleton.
- Added
Geoscope.Polygon
for drawing polygons on the globe. - Added
Context.pick
to pick objects in one line of code. - Added
bringForward
,bringToFront
,sendBackward
, andsendToBack
functions toCompositePrimitive
to control the render-order for ground primitives. - Added
getShow
/setShow
functions toPolyline
andCompositePrimitive
. - Added new camera control and event types including
CameraFreeLookEventHandler
,CameraSpindleEventHandler
, andEventHandler
. - Replaced
Ellipsoid.toCartesian3
withEllipsoid.toCartesian
. - update and
updateForPick
functions no longer require aUniformState
argument.
- Added support for lines using
Geoscope.Polyline
. See the Sandbox example. - Made
CompositePrimitive
,LabelCollection
, andBillboardCollection
have consistent function names, including a newcontains()
function. - Improved reference documentation layout.
- Flushed out
CompositePrimitive
,TimeStandard
, andLeapSecond
types. - Improved support for browsers using ANGLE (Windows Only).
- Added
Geoscope.TimeStandard
for handling TAI and UTC time standards. - Added
Geoscope.Quaternion
, which is a foundation for future camera control. - Added initial version of
Geoscope.PrimitiveCollection
to simplify rendering. - Prevented billboards/labels near the surface from getting cut off by the globe.
- See the Sandbox for example code.
- Added more reference documentation for labels.
- Added
Geoscope.LabelCollection
for drawing text. - Added
Geoscope.JulianDate
andGeoscope.TimeConstants
for proper time handling. - See the Sandbox example for how to use the new labels and Julian date.
- Added
Geoscope.ViewportQuad
andGeoscope.Rectangle
(foundations for 2D map). - Improved the visual quality of cloud shadows.
- Added
SunPosition
type to compute the sun position for a julian date. - Simplified picking. See the mouse move event in the Sandbox example.
Cartographic2
andCartographic3
are now mutable types.- Added reference documentation for billboards.
- Initial Release.