Man Linux: Main Page and Category List

NAME

       SoShapeHints -

       The SoShapeHints class is a node containing hints about how to render
       geometry.

       The SoShapeHints node is used to set up clues to the rendering
       subsystem about how particular aspects of the subsequent geometry in
       the scene graph should be drawn.

SYNOPSIS

       #include <Inventor/nodes/SoShapeHints.h>

       Inherits SoNode.

   Public Types
       enum VertexOrdering { UNKNOWN_ORDERING =
           SoShapeHintsElement::UNKNOWN_ORDERING, CLOCKWISE =
           SoShapeHintsElement::CLOCKWISE, COUNTERCLOCKWISE =
           SoShapeHintsElement::COUNTERCLOCKWISE }
       enum ShapeType { UNKNOWN_SHAPE_TYPE =
           SoShapeHintsElement::UNKNOWN_SHAPE_TYPE, SOLID =
           SoShapeHintsElement::SOLID }
       enum FaceType { UNKNOWN_FACE_TYPE =
           SoShapeHintsElement::UNKNOWN_FACE_TYPE, CONVEX =
           SoShapeHintsElement::CONVEX }
       enum WindingType { NO_WINDING_TYPE =  0 }

   Public Member Functions
       SoShapeHints (void)
       virtual void doAction (SoAction *action)
       virtual void GLRender (SoGLRenderAction *action)
       virtual void callback (SoCallbackAction *action)
       virtual void getBoundingBox (SoGetBoundingBoxAction *action)
       virtual void pick (SoPickAction *action)

   Static Public Member Functions
       static void initClass (void)

   Public Attributes
       SoSFEnum vertexOrdering
       SoSFEnum shapeType
       SoSFEnum faceType
       SoSFEnum windingType
       SoSFBool useVBO
       SoSFFloat creaseAngle

   Protected Member Functions
       virtual ~SoShapeHints ()

Detailed Description

       The SoShapeHints class is a node containing hints about how to render
       geometry.

       The SoShapeHints node is used to set up clues to the rendering
       subsystem about how particular aspects of the subsequent geometry in
       the scene graph should be drawn.

       The default settings of the rendering system is tuned towards
       programmer convenience. For instance, the default is to render both
       sides of all polygons to make sure we avoid any ’holes’ in the geometry
       if the vertex ordering should happen to differ for different polygons.

       If the programmer gives up some of this convenience and uses
       SoShapeHints nodes to more closely specify information about the scene
       graph geometry, the clues given by the SoShapeHints node(s) will then
       be used by the rendering subsystem to avoid certain costly operations.
       Significant gains in rendering speed could be seen as a result.

       Be aware that the way backface culling and two-sided lighting is
       decided by the rendering system is not at all intuitive. Here are the
       common rules of how primitive shapes will render themselves with regard
       to how the SoShapeHints::vertexOrdering and SoShapeHints::shapeType
       fields are set:

       · vertexOrdering == CLOCKWISE or COUNTERCLOCKWISE, shapeType == SOLID:
         causes primitives to be backface culled and rendered with one-sided
         lighting.

       · vertexOrdering == CLOCKWISE or COUNTERCLOCKWISE, shapeType ==
         UNKNOWN_SHAPE_TYPE: primitives are not backface culled, and they are
         rendered with two-sided lighting.

       · vertexOrdering == UNKNOWN_ORDERING, any shapeType: primitives are not
         backface culled, and they are rendered with one-sided lighting. The
         OpenGL vertex ordering will be set to counter clockwise ordering.
       The UNKNOWN_ORDERING enum has a special and non-intuitive meaning. The
       ordering is really set to counter clockwise -- in OpenGL and when
       generating normals. However, if you want to render your geometry with
       one-sided lighting and backface culling disabled, you have to use this
       enum value, and your polygons need to be in counter clockwise ordering.
       FILE FORMAT/DEFAULTS:
           ShapeHints {
               vertexOrdering UNKNOWN_ORDERING
               shapeType UNKNOWN_SHAPE_TYPE
               faceType CONVEX
               creaseAngle 0
           }

Member Enumeration Documentation

   enum SoShapeHints::VertexOrdering Enumeration of available ways to specify
       ordering of vertices for a polygon.
       Enumerator:
       UNKNOWN_ORDERING
              Ordering not known, render both sides of the polygon.
       CLOCKWISE
              Vertices are specified in a clockwise order.
       COUNTERCLOCKWISE
              Vertices are specified in a counter-clockwise order.
   enum SoShapeHints::ShapeType Enumeration of different shape types.
       Enumerator:
       UNKNOWN_SHAPE_TYPE
              Nothing known about the shape, be conservative when rendering.
       SOLID  The subsequent shapes in the graph are all known to be
              completely ’closed’, solid 3D shapes. Backface culling will be
              done if vertexOrdering is known.
   enum SoShapeHints::FaceType Enumeration of polygon face types.
       Enumerator:
       UNKNOWN_FACE_TYPE
              Signifies: nothing is known about subsequent polygon data, be
              conservative when rendering.
       All polygons in the scene will be analyzed to see if they needs to be
       tessellated (broken up) into triangles before passed on to the
       underlying immediate mode rendering system.
       The OpenGL rendering system handles most complex polygon types, but not
       all: it can for instance have problems with many-sided, concave
       polygons (concave polygons are ’hollow’, that is: rounded inwards).
       Coin’s internal tessellator will most often handle the cases that
       OpenGL fails on.
       So if you are seeing weird artifacts in how complex polygons are
       rendered, try to change the SoShapeHints::faceType field to this value
       and see if they are then rendered correctly.
       Beware that turning on this functionality might have the effect of
       making the rendering performance worse. If it has a noticable effect on
       your particular scenegraph, we advise that you investigate whether you
       could change how the polygons are generated for Coin rendering and then
       avoid using this flag.
       CONVEX Subsequent faces are all convex, so turn off the check for and
              tessellation of inconvex faces.
       Subsequent polygons from faceset-type nodes (like SoFaceSet and
       SoIndexedFaceSet) will be sent unmodified to OpenGL, thereby assuming
       that the polygons are in a form handled by OpenGL.

Constructor & Destructor Documentation

   SoShapeHints::SoShapeHints (void) Constructor.
   SoShapeHints::~SoShapeHints () [protected, virtual] Destructor.

Member Function Documentation

   void SoShapeHints::initClass (void) [static] Sets up initialization for
       data common to all instances of this class, like submitting necessary
       information to the Coin type system.
       Reimplemented from SoNode.
   void SoShapeHints::doAction (SoAction * action) [virtual] This function
       performs the typical operation of a node for any action.
       Reimplemented from SoNode.
   void SoShapeHints::GLRender (SoGLRenderAction * action) [virtual] Action
       method for the SoGLRenderAction.
       This is called during rendering traversals. Nodes influencing the
       rendering state in any way or who wants to throw geometry primitives at
       OpenGL overrides this method.
       Reimplemented from SoNode.
   void SoShapeHints::callback (SoCallbackAction * action) [virtual] Action
       method for SoCallbackAction.
       Simply updates the state according to how the node behaves for the
       render action, so the application programmer can use the
       SoCallbackAction for extracting information about the scene graph.
       Reimplemented from SoNode.
   void SoShapeHints::getBoundingBox (SoGetBoundingBoxAction * action)
       [virtual] Action method for the SoGetBoundingBoxAction.
       Calculates bounding box and center coordinates for node and modifies
       the values of the action to encompass the bounding box for this node
       and to shift the center point for the scene more towards the one for
       this node.
       Nodes influencing how geometry nodes calculates their bounding box also
       overrides this method to change the relevant state variables.
       Reimplemented from SoNode.
   void SoShapeHints::pick (SoPickAction * action) [virtual] Action method for
       SoPickAction.
       Does common processing for SoPickAction action instances.
       Reimplemented from SoNode.

Member Data Documentation

   SoSFEnum SoShapeHints::vertexOrdering Specifies how vertices are ordered
       for polygon faces.
       Set this field to SoShapeHints::CLOCKWISE or
       SoShapeHints::COUNTERCLOCKWISE if possible to turn on backface culling
       and thereby optimize rendering.
       Default value is SoShapeHints::UNKNOWN_ORDERING.
   SoSFEnum SoShapeHints::shapeType Hint about whether or not shapes are known
       to beclosed. Default value is SoShapeHints::UNKNOWN_SHAPE_TYPE.
   SoSFEnum SoShapeHints::faceType Hint about whether or not polygon faces are
       known to be convex. Default value is SoShapeHints::CONVEX.
   SoSFFloat SoShapeHints::creaseAngle When normals are automatically
       generated by Coin (i.e. SoNormal nodes are not used), this is the
       smallest angle between two faces where we would still calculate normals
       to do flatshading.
       If the angle between the normals of two neighboring faces is less than
       the value of this field, the faces will be smoothshaded around their
       common edge.
       The angle is specified in radians, and the default value is 0.0,
       meaning no smoothing will be done by default.

Author

       Generated automatically by Doxygen for Coin from the source code.