Provided by: inventor-doc_2.1.5-10-18_all bug


       SoShapeHints — node that provides hints about shapes


       SoBase > SoFieldContainer > SoNode > SoShapeHints


       #include <Inventor/nodes/SoShapeHints.h>

     enum VertexOrdering {
                                   Ordering of vertices is unknown
          SoShapeHints::CLOCKWISE  Face vertices are ordered clockwise (from the outside)
                                   Face vertices are ordered counterclockwise (from the outside)

     enum ShapeType {
                               Nothing is known about the shape
          SoShapeHints::SOLID  The shape encloses a volume

     enum FaceType {
                                Nothing is known about faces
          SoShapeHints::CONVEX  All faces are convex

          Fields from class SoShapeHints:

     SoSFEnum            vertexOrdering
     SoSFEnum            shapeType
     SoSFEnum            faceType
     SoSFFloat           creaseAngle

          Methods from class SoShapeHints:

     static SoType       getClassTypeId()

          Methods from class SoNode:

     void                setOverride(SbBool state)
     SbBool              isOverride() const
     SoNode *            copy(SbBool copyConnections = FALSE) const
     virtual SbBool      affectsState() const
     static SoNode *     getByName(const SbName &name)
     static int          getByName(const SbName &name, SoNodeList &list)

          Methods from class SoFieldContainer:

     void                setToDefaults()
     SbBool              hasDefaultValues() const
     SbBool              fieldsAreEqual(const SoFieldContainer *fc) const
     void                copyFieldValues(const  SoFieldContainer  *fc,  SbBool  copyConnections =
     SbBool              set(const char *fieldDataString)
     void                get(SbString &fieldDataString)
     virtual int         getFields(SoFieldList &resultList) const
     virtual SoField *   getField(const SbName &fieldName) const
     SbBool              getFieldName(const SoField *field, SbName &fieldName) const
     SbBool              isNotifyEnabled() const
     SbBool              enableNotify(SbBool flag)

          Methods from class SoBase:

     void                ref()
     void                unref() const
     void                unrefNoDelete() const
     void                touch()
     virtual SoType      getTypeId() const
     SbBool              isOfType(SoType type) const
     virtual void        setName(const SbName &name)
     virtual SbName      getName() const


       By default, Inventor assumes very little about the shapes it  renders.  You  can  use  the
       SoShapeHints  node to indicate that vertex-based shapes (those derived from SoVertexShape)
       are solid, contain ordered vertices, or  contain  convex  faces.  For  fastest  rendering,
       specify SOLID, COUNTERCLOCKWISE, CONVEX shapes.

       These  hints allow Inventor to optimize certain rendering features. Optimizations that may
       be performed include enabling back-face culling  and  disabling  two-sided  lighting.  For
       example,  if  an  object  is  solid  and  has ordered vertices, Inventor turns on backface
       culling and turns off two-sided lighting. If the object  is  not  solid  but  has  ordered
       vertices,  it  turns  off  backface  culling and turns on two-sided lighting. In all other
       cases, both backface culling and two-sided lighting are off.

       The SoShapeHints node also affects how default normals are generated. When a node  derived
       from  SoVertexShape  has  to  generate  default  normals, it uses the creaseAngle field to
       determine which edges should be smooth-shaded and which ones should have a  sharp  crease.
       The crease angle is the angle between surface normals on adjacent polygons. For example, a
       crease angle of .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 .5 radians
       (about 30 degrees). Otherwise, it will be faceted. Normal generation is fastest  when  the
       creaseAngle  is  0  (the  default),  producing  one normal per facet.  A creaseAngle of pi
       produces one averaged normal per vertex.


     SoSFEnum            vertexOrdering
          Indicates how the vertices of faces are ordered.  CLOCKWISE  ordering  means  that  the
          vertices  of  each  face  form  a  clockwise loop around the face, when viewed from the
          outside (the side toward which the normal points).

     SoSFEnum            shapeType
          Indicates whether the shape is known to enclose a volume (SOLID) or not. If the  inside
          (the  side away from the surface normal) of any part of the shape is visible, the shape
          is not solid.

     SoSFEnum            faceType
          Indicates whether each face is convex. Because the penalty for non-convex faces is very
          steep  (faces  must  be  triangulated  expensively),  the default assumes all faces are
          convex. Therefore, shapes with concave faces may not be displayed correctly unless this
          hint is set to UNKNOWN_FACE_TYPE.

     SoSFFloat           creaseAngle
          Indicates  the minimum angle (in radians) between two adjacent face normals required to
          form a sharp crease at the edge when default normals are computed and used.


          Creates a shape hints node with default settings.

     static SoType       getClassTypeId()
          Returns type identifier for this class.


       SoGLRenderAction, SoCallbackAction, SoRayPickAction, SoGetBoundingBoxAction
          Sets the state to contain the hints; sets up optimizations based on the hints.


       ShapeHints {
          vertexOrdering  UNKNOWN_ORDERING
          shapeType       UNKNOWN_SHAPE_TYPE
          faceType        CONVEX
          creaseAngle     0