# IndexedQuadSet

## Overview

IndexedQuadSet is a geometry node that defines planar quadrilaterals. IndexedQuadSet contains a Coordinate or CoordinateDouble node, and can also contain Color or ColorRGBA, Normal and TextureCoordinate nodes.

The IndexedQuadSet node belongs to the **CADGeometry** component and requires at least level **1,** its default container field is *geometry.* It is available from X3D version 3.1 or higher.

## Hierarchy

1
2
3
4

+ X3DNode
+ X3DGeometryNode
+ X3DComposedGeometryNode
+ IndexedQuadSet

## 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

### MFInt32 [in] **set_index** [0,∞)

*index* values provide order in which coordinates are applied. Order starts at *index* 0, commas are optional between sets. Four unique indices are defined for each quadrilateral.

#### Hint

- 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

- -1 sentinel values are not allowed.

### 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.

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

Whether Color or ColorRGBA values are applied to each point vertex (true) or to each polygon face (false).

#### Hint

#### Warnings

- The provided value of IndexedQuadSet
*colorPerVertex*field is ignored and always treated as true. - If child Color or ColorRGBA node is not provided, then geometry is rendered using corresponding Appearance and material/texture values.

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

Whether Normal node vector values are applied to each point vertex (true) or to each polygon face (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.

### MFInt32 [ ] **index** [ ] [0,∞)

*index* values provide order in which coordinates are applied. Order starts at *index* 0, commas are optional between sets. Four unique indices are defined for each quadrilateral.

#### Warning

- -1 sentinel values are not allowed.

### 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 colorIndex and colorPerVertex fields.

### 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.

### SFNode [in, out] **coord** NULL [X3DCoordinateNode]

Single contained Coordinate or CoordinateDouble node that can specify a list of vertex values.

## Advice

### Hints

- Quadrilateral
- Quadrilateral
- Color, normal and texCoord values are applied in the same order as coord values.
- 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.
- X3D for Advanced Modeling (X3D4AM) slideset

### Warnings

- Requires X3D
`profile='Full'`

or else include`<component name='CADGeometry' level='1'/>`

- Rendering characteristics are undefined if polygons are not planar.
- Avoid self-intersecting polygon line segments, otherwise defined geometry is irregular and rendering results are undefined.