Geometry

new Geometry()

A geometry representation with attributes forming vertices and optional index data defining primitives. Geometries and an Appearance, which describes the shading, can be assigned to a Primitive for visualization. A Primitive can be created from many heterogeneous - in many cases - geometries for performance.

Geometries can be transformed and optimized using functions in GeometryPipeline.

Name Type Description
options.attributes GeometryAttributes Attributes, which make up the geometry's vertices.
options.primitiveType PrimitiveType The type of primitives in the geometry.
options.indices Uint16Array | Uint32Array optional Optional index data that determines the primitives in the geometry.
options.boundingSphere BoundingSphere optional An optional bounding sphere that fully enclosed the geometry.
Example:
// Create geometry with a position attribute and indexed lines.
var positions = new Float64Array([
  0.0, 0.0, 0.0,
  7500000.0, 0.0, 0.0,
  0.0, 7500000.0, 0.0
]);

var geometry = new Cesium.Geometry({
  attributes : {
    position : new Cesium.GeometryAttribute({
      componentDatatype : Cesium.ComponentDatatype.DOUBLE,
      componentsPerAttribute : 3,
      values : positions
    })
  },
  indices : new Uint16Array([0, 1, 1, 2, 2, 0]),
  primitiveType : Cesium.PrimitiveType.LINES,
  boundingSphere : Cesium.BoundingSphere.fromVertices(positions)
});
Demo:
See:

Members

attributes :GeometryAttributes

Attributes, which make up the geometry's vertices. Each property in this object corresponds to a GeometryAttribute containing the attribute's data.

Attributes are always stored non-interleaved in a Geometry.

There are reserved attribute names with well-known semantics. The following attributes are created by a Geometry (depending on the provided VertexFormat.

  • position - 3D vertex position. 64-bit floating-point (for precision). 3 components per attribute. See VertexFormat#position.
  • normal - Normal (normalized), commonly used for lighting. 32-bit floating-point. 3 components per attribute. See VertexFormat#normal.
  • st - 2D texture coordinate. 32-bit floating-point. 2 components per attribute. See VertexFormat#st.
  • binormal - Binormal (normalized), used for tangent-space effects like bump mapping. 32-bit floating-point. 3 components per attribute. See VertexFormat#binormal.
  • tangent - Tangent (normalized), used for tangent-space effects like bump mapping. 32-bit floating-point. 3 components per attribute. See VertexFormat#tangent.

The following attribute names are generally not created by a Geometry, but are added to a Geometry by a Primitive or GeometryPipeline functions to prepare the geometry for rendering.

  • position3DHigh - High 32 bits for encoded 64-bit position computed with GeometryPipeline.encodeAttribute. 32-bit floating-point. 4 components per attribute.
  • position3DLow - Low 32 bits for encoded 64-bit position computed with GeometryPipeline.encodeAttribute. 32-bit floating-point. 4 components per attribute.
  • position3DHigh - High 32 bits for encoded 64-bit 2D (Columbus view) position computed with GeometryPipeline.encodeAttribute. 32-bit floating-point. 4 components per attribute.
  • position2DLow - Low 32 bits for encoded 64-bit 2D (Columbus view) position computed with GeometryPipeline.encodeAttribute. 32-bit floating-point. 4 components per attribute.
  • color - RGBA color (normalized) usually from GeometryInstance#color. 32-bit floating-point. 4 components per attribute.
  • pickColor - RGBA color used for picking. 32-bit floating-point. 4 components per attribute.

Default Value: undefined
Example:
geometry.attributes.position = new Cesium.GeometryAttribute({
  componentDatatype : Cesium.ComponentDatatype.FLOAT,
  componentsPerAttribute : 3,
  values : new Float32Array()
});
See:

boundingSphere :BoundingSphere

An optional bounding sphere that fully encloses the geometry. This is commonly used for culling.
Default Value: undefined

indices :Array

Optional index data that - along with Geometry#primitiveType - determines the primitives in the geometry.
Default Value: undefined

primitiveType :PrimitiveType

The type of primitives in the geometry. This is most often PrimitiveType.TRIANGLES, but can varying based on the specific geometry.
Default Value: undefined

Methods

staticGeometry.computeNumberOfVertices(geometry)Number

Computes the number of vertices in a geometry. The runtime is linear with respect to the number of attributes in a vertex, not the number of vertices.
Name Type Description
geometry Cartesian3 The geometry.
Returns:
The number of vertices in the geometry.
Example:
var numVertices = Cesium.Geometry.computeNumberOfVertices(geometry);