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.
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:
-
DeveloperError : options.attributes is required.
-
DeveloperError : options.primitiveType is required.
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) });
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. 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 :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
-
<static> computeNumberOfVertices
-
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);