Geometry

Geometry

new

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.

In low-level rendering code, a vertex array can be created from a geometry using Context#createVertexArrayFromGeometry.

Geometries can be transformed and optimized using functions in GeometryPipeline.

Parameters:
Name Type Argument Description
options.attributes GeometryAttributes Attributes, which make up the geometry's vertices.
options.primitiveType PrimitiveType The type of primitives in the geometry.
options.indices Array <optional>
Optional index data that determines the primitives in the geometry.
options.boundingSphere BoundingSphere <optional>
An optional bounding sphere that fully enclosed the geometry.
Throws:
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 Geometry({
  attributes : {
    position : new GeometryAttribute({
      componentDatatype : ComponentDatatype.DOUBLE,
      componentsPerAttribute : 3,
      values : positions
    })
  },
  indices : new Uint16Array([0, 1, 1, 2, 2, 0]),
  primitiveType : PrimitiveType.LINES,
  boundingSphere : BoundingSphere.fromVertices(positions)
});
Demo:
See:
Source:

Members

: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. When geometry is prepared for rendering with Context#createVertexArrayFromGeometry, attributes are generally written interleaved into the vertex buffer for better rendering performance.

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, created from Context#createPickId. 32-bit floating-point. 4 components per attribute.

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

:BoundingSphere

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

:Array

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

: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

<static>

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.

Parameters:
Name Type Description
geometry Cartesian3 The geometry.
Throws:
DeveloperError : geometries is required.
Returns:
Number The number of vertices in the geometry.
Example
var numVertices = Geometry.computeNumberOfVertices(geometry);