Skip to content
pjcozzi edited this page Sep 18, 2012 · 21 revisions

Cesium is a JavaScript virtual globe and map library written in JavaScript using WebGL. It provides hardware-accelerated graphics in a browser without a plugin.

Cesium is built with care; code is peer-reviewed, unit tested, statically analysed, and documented.

One API - Three Views

3D 2D Columbus view
Population in Columbus view Population in Columbus view

Cesium supports a 3D globe, 2D map, and Columbus view (2.5D) with the same API. Transition between views with one line of code.

Dynamic Geospatial Data Visualization

Nashville World Cities
  • Draw dynamic scenes from CZML.
  • Draw imagery from Bing, Esri, OpenStreetMap, and WMS.
  • Draw vector data from KML (partial support), ESRI Shapefiles, and WebGL Globe JSON.
  • Draw polylines, polygons, polygons with holes, circles, ellipses, extents, billboards, labels, ellipsoids, and sensors.
  • Batching, culling, and JavaScript and GPU optimizations for performance.
  • Individual object picking.

Apps and Widgets

  • Cesium Viewer app for visualizing CZML files.
  • Sandbox app for live coding.
  • Timeline widget for scrubbing through time.
  • Cesium and timeline widget for use with Dojo.

Checkout all the demos.

Cameras

Flight camera Panning with the spindle camera

Cameras respond to input and control the view.

  • Spindle - spin, zoom, and pan the globe with inertia.
  • Flight - flies to a destination.
  • Free look - look in any direction.

Materials

Checkerboard Vertical stripe Dot
Brick Wood Facet

Materials describe the surface appearance of objects in the scene.

  • Procedural textures - checkerboard, stripes, dots, brick, cement, asphalt, wood, grass, distance intervals, tie dye, ...
  • Classic: diffuse map, specular map, alpha map, normal map, bump map, emission map, reflection, refraction, and Fresnel.
  • Fabric - a JSON schema for describing and combing materials.

Low-Level Rendering

For those needing custom drawing, Cesium contains a thin abstraction over WebGL that provides:

  • Built-in GLSL uniforms for common transformations.
  • Built-in GLSL functions for ellipsoids, rays, noise, lighting, Constructive Solid Geometry (experimental), ...
  • Shader programs and caching.
  • Textures and cube maps.
  • Dynamic texture atlas packing.
  • Buffers, vertex arrays, and vertex layout.
  • Render states.
  • Framebuffers and renderbuffers.

Geometric Routines

Ellipsoid tessellation Extent tessellation
  • View frustum and occlusion culling (horizon culling).
  • Vertex cache optimization.
  • Polygon triangulation and subdivision.
  • Tessellation of ellipsoids, extents, boxes, and planes.
  • Bounding spheres and axis-aligned bounding boxes.

Math

Ellipsoid tangent plane
  • Types for Cartesian, spherical, and cartographic positions.
  • Types for matrices and quaternions.
  • Catmull-Rom splines.
  • Lagrange, Hermite, spherical linear, and linear interpolation.
  • Sun position.
  • Equidistant Cylindrical and Mercator 2D map projections.
  • Computations on ellipsoids such as computing computing surface normals, circles, ellipses, and tangent planes.
  • Transformations such as cartographic to Cartesian, east-north-up to fixed frame, and TEME to pseudo-fixed frame.

Time

  • Julian dates, leap seconds, time intervals, and UTC and TAI time standards.

Infrastructure

  • JSONP.
  • Generic event handling.

Deployment

  • Use a Cesium as a single js file or with Asynchronous Module Definition (AMD) to include only what you use.

Next Steps

Use the Quick Start to get up and running with Cesium, or read the Architecture Overview to learn about the code.

More questions? See the FAQ.