# ElevationGrid

## Overview

ElevationGrid is a geometry node defining a rectangular height field, with default values for a 1m by 1m square at height 0. Vertices corresponding to ElevationGrid height values define quadrilaterals, which are placed above or below a flat surface.

The ElevationGrid node belongs to the **Geometry3D** component and requires at least level **3,** its default container field is *geometry.* It is available since VRML 2.0 and from X3D version 3.0 or higher.

## Hierarchy

1
2
3

+ X3DNode
+ X3DGeometryNode
+ ElevationGrid

## Fields

### SFNode [in, out] **metadata** NULL [X3DMetadataObject]

Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node.

#### Hint

### MFFloat [in] **set_height** (-∞,∞)

Grid array of *height* vertices with upward direction along +Y axis, with xDimension rows and zDimension columns.

#### Hints

*height*array values are given in row-major order from left to right along X axis, then back to front along Z axis.- This field is not accessType inputOutput since X3D browsers might use different underlying geometric representations for high-performance rendering, and so output events are not appropriate.

#### Warning

- It is an error to define this transient inputOnly field in an X3D file, instead only use it a destination for ROUTE events.

### SFInt32 [ ] **xDimension** 0 [0,∞)

Number of elements in the height array along X direction.

#### Hint

- Total horizontal x-axis distance equals (
*xDimension*-1) * xSpacing.

#### Warning

*xDimension*< 2 means that ElevationGrid contains no quadrilaterals.

### SFInt32 [ ] **zDimension** 0 [0,∞)

Number of elements in the height array along Z direction.

#### Hint

- Total horizontal z-axis distance equals (
*zDimension*-1) * zSpacing.

#### Warning

*zDimension*< 2 means that ElevationGrid contains no quadrilaterals.

### SFFloat [ ] **xSpacing** 1 (0,∞)

Meters distance between grid-array vertices along X direction.

#### Hint

- Total horizontal x-axis distance equals (xDimension-1) *
*xSpacing*.

### SFFloat [ ] **zSpacing** 1 (0,∞)

Meters distance between grid-array vertices along Z direction.

#### Hint

- Total lateral z-axis distance equals (zDimension-1) *
*zSpacing*.

### SFBool [ ] **solid** TRUE

Setting *solid* true means draw only one side of polygons (backface culling on), setting *solid* false means draw both sides of polygons (backface culling off).

#### Hints

- Mnemonic “this geometry is
*solid*like a brick” (you don’t render the inside of a brick). - If in doubt, use
*solid*=’false’ for maximum visibility. - AccessType relaxed to inputOutput in order to support animation and visualization.

#### Warning

- Default value true can completely hide geometry if viewed from wrong side!

### SFBool [ ] **ccw** TRUE

*ccw* defines clockwise/counterclockwise ordering of vertex coordinates, which in turn defines front/back orientation of polygon normals according to Right-Hand Rule (RHR).

#### Hints

- A good debugging technique for problematic polygons is to try changing the value of
*ccw*, which can reverse solid effects (single-sided backface culling) and normal-vector direction. - Clockwise

#### Warning

- Consistent and correct ordering of left-handed or right-handed point sequences is important throughout the coord array of point values.

### SFFloat [ ] **creaseAngle** 0 [0,∞)

*creaseAngle* defines angle (in radians) for determining whether adjacent polygons are drawn with sharp edges or smooth shading. If angle between normals of two adjacent polygons is less than *creaseAngle*, smooth shading is rendered across the shared line segment.

#### Hints

*creaseAngle*=0 means render all edges sharply,*creaseAngle*=3.14159 means render all edges smoothly.- Radian units for angular measure

### SFBool [ ] **colorPerVertex** TRUE

Whether Color node color values are applied to each point vertex (true) or per quadrilateral (false).

#### Hint

### SFBool [ ] **normalPerVertex** TRUE

Whether Normal node vector values are applied to each point vertex (true) or per quadrilateral (false).

#### Hint

- If no child Normal node is provided, the X3D browser shall automatically generate normals, using creaseAngle to determine smoothed shading across shared vertices.

### MFNode [in, out] **attrib** [ ] [X3DVertexAttributeNode]

Single contained FloatVertexAttribute node that can specify list of per-vertex attribute information for programmable shaders.

#### Hint

### SFNode [in, out] **fogCoord** NULL [FogCoordinate]

Single contained FogCoordinate node that can specify depth parameters for fog in corresponding geometry.

### SFNode [in, out] **color** NULL [X3DColorNode]

Single contained Color or ColorRGBA node that can specify *color* values applied to corresponding vertices according to colorPerVertex field.

### SFNode [in, out] **texCoord** NULL [X3DTextureCoordinateNode]

Single contained TextureCoordinate, TextureCoordinateGenerator or MultiTextureCoordinate node that can specify coordinates for texture mapping onto corresponding geometry.

### SFNode [in, out] **normal** NULL [X3DNormalNode]

Single contained Normal node that can specify perpendicular vectors for corresponding vertices to support rendering computations, applied according to the normalPerVertex field.

#### Hint

- Useful for special effects. Normal vector computation by 3D graphics hardware is quite fast so adding normals to a scene is typically unnecessary.

#### Warning

*normal*vectors increase file size, typically doubling geometry definitions.

### MFFloat [ ] **height** [ ] (-∞,∞)

Grid array of *height* vertices with upward direction along +Y axis, with xDimension rows and zDimension columns.

#### Hints

*height*array values are given in row-major order from left to right along X axis, then back to front along Z axis.- This field is not accessType inputOutput since X3D browsers might use different underlying geometric representations for high-performance rendering, and so output events are not appropriate.

#### Warning

*height*array values are not retained or available at run time since a browser is permitted to condense geometry.

## Advice

### Hints

- The height array defines (xDimension-1)*(zDimension-1) quadrilaterals.
- Positive direction for normal of each triangle is on same side of the quadrilateral. Triangles are defined either counterclockwise or clockwise depending on value of ccw field.
- ElevationGrid can contain Color or ColorRGBA, Normal and TextureCoordinate nodes.
- Insert a Shape node before adding geometry or Appearance.
- For advanced extensibility, authors can substitute a type-matched ProtoInstance node (with correct containerField value) for contained node content.

### Warning

- Generated quadrilaterals can be nonplanar. Tessellation splits quadrilaterals into triangles along seam starting at initial vertex of the quadrilateral and proceeding to opposite vertex.