# IndexedTriangleSet

## Overview

IndexedTriangleSet is a geometry node containing a Coordinate or CoordinateDouble node, and can also contain Color or ColorRGBA, Normal and TextureCoordinate nodes.

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

## Hierarchy

1
2
3
4

+ X3DNode
+ X3DGeometryNode
+ X3DComposedGeometryNode
+ IndexedTriangleSet

## 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* list specifies triangles by connecting Coordinate vertices.

#### 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 IndexedTriangleSet
*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* list specifies triangles by connecting Coordinate vertices.

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

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