ShapeHints


Purpose:

This node is another of the eleven geometry and appearance property Nodes. The ShapeHints node determines whether IndexedFaceSets are solid, contain ordered vertices, or contain convex faces.

Syntax
VERTEX ORDERING ENUMS
	UNKNOWN_ORDERING	Ordering of vertices is unknown
	CLOCKWISE		Face vertices are ordered clockwise
				(from the outside)
	COUNTERCLOCKWISE	Face vertices are ordered counterclockwise
				(from the outside)

SHAPE TYPE ENUMS
	UNKNOWN_SHAPE_TYPE	Nothing is known about the shape
	SOLID			The shape encloses a volume

FACE TYPE ENUMS
	UNKNOWN_FACE_TYPE	Nothing is known about faces
	CONVEX			All faces are convex

FILE FORMAT/DEFAULTS
ShapeHints {
	vertexOrdering	UNKNOWN_ORDERING	# SFEnum
	shapeType	UNKNOWN_SHAPE_TYPE	# SFEnum
	faceType	CONVEX			# SFEnum
	creaseAngle	0.5			# SFFloat
}
Explanation

The ShapeHints node provides information that allows VRML to optimize certain rendering features. These optimizations include enabling back-face culling and disabling two-sided lighting. For example, if an object is solid and has ordered vertices, this node may turn on backface culling and turn off two-sided lighting. On the other hand, if the object is not solid but has ordered vertices, the node may turn off backface culling and turn on two-sided lighting.

Another point, this node also affects how default normals are generated. When an IndexedFaceSet is required to generate default normals, it will use the creaseAngle field to determine which edges should be smooth- shaded and which ones should have a sharp crease. A crease angle is defined as the angle between surface normals on adjacent polygons. For example, a crease angle of 0.5 radians means that an edge between two adjacent polygonal faces will be smooth shaded if the normals to the two faces form an angle that is less than 0.5 radians. The default value for the crease angle is 0.5 radians or about thirty degrees. Otherwise, the edge between the two adjacent polygonal faces will be faceted.

Example Use

The following code fragment is from Allnodes.wrl.

ShapeHints {
	vertexOrdering	UNKNOWN_ORDERING
	shapeType	UNKNOWN_SHAPE_TYPE
	faceType	CONVEX
	creaseAngle	0.5
}
See Also

IndexedFaceSet, SFEnum, SFFloat