SoComplexity(3IV)

NAME
SoComplexity — shape complexity node

INHERITS FROM
SoBase > SoFieldContainer > SoNode > SoComplexity

SYNOPSIS
#include <Inventor/nodes/SoComplexity.h>

enum Type {
SoComplexity::SCREEN_SPACE
Set complexity based on screen size
SoComplexity::OBJECT_SPACE
Set complexity independent of screen size
SoComplexity::BOUNDING_BOX
Draw all shapes as bounding boxes
}

Fields from class SoComplexity:

SoSFEnum
type
SoSFFloat
value
SoSFFloat
textureQuality

Methods from class SoComplexity:

SoComplexity()
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 = FALSE)
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

DESCRIPTION
This node sets the current shape complexity value. This is a heuristic value which provides a hint at what geometric complexity to render shape nodes. Values range from 0 to 1, where 0 means minimum complexity and 1 means maximum complexity. Each shape node interprets complexity in its own way.

Shape complexity always affects rendering and primitive generation for the SoCallbackAction. For some shapes, it also affects picking.

There are three ways to interpret shape complexity, depending on the type field. BOUNDING_BOX complexity ignores the value field and renders all shapes as bounding boxes, using the current material, drawing style, etc. The other two types use the value field to determine the tessellation of shapes into polygons. OBJECT_SPACE complexity uses value directly to determine the tessellation. SCREEN_SPACE complexity depends on value and the projected size of the shape on the screen; a value of 0 produces the minimum tessellation for a shape, and a value of 1 produces a tessellation that is fine enough that each edge of a polygon is about 1 or two pixels in length. Since the projected size depends on the camera position, objects may be tessellated differently every frame if the camera is moving; note that this may have adverse effects on render caching in SoSeparator nodes.

The SoComplexity node also sets a hint for the quality of textures applied to shapes, based on the value of the textureQuality field. The texture quality will take effect at the next Texture2 node; Texture2 nodes previously traversed will not be affected.

FIELDS
SoSFEnum
type
How shape complexity is interpreted.

SoSFFloat
value
Complexity value.

SoSFFloat
textureQuality
Hint about texture quality. A value of 0 indicates that the fastest texturing should be used, while a value of 1 indicates that the best quality texturing should be used.

METHODS

SoComplexity()
Creates a complexity node with default settings.

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

ACTION BEHAVIOR
SoGLRenderAction, SoCallbackAction, SoGetBoundingBoxAction, SoRayPickAction
Sets the current complexity in the state.

FILE FORMAT/DEFAULTS
Complexity {
type	OBJECT_SPACE
value	0.5
textureQuality	0.5
}

SEE ALSO
SoShape, SoShapeHints, SoTexture2