Group node derived from SoRenderList that alters the decimation of shapes below it depending on their rendering value as approximated by their size on the screen. More...
#include <Inventor/nodes/SoValueOrdering.h>
Public Member Functions | |
virtual SoType | getTypeId () const |
SoValueOrdering () | |
SoValueOrdering (int numChildren) | |
Static Public Member Functions | |
static SoType | getClassTypeId () |
Public Attributes | |
SoSFBool | dropCulling |
SoSFUInt32 | dropScreenArea |
SoSFBool | adjustDecimation |
SoSFBool | boundingBoxSubstitutes |
SoSFBool | decimateSubstitutes |
SoSFBool | lowValueCulling |
This makes it possible to render scenes with large numbers of shapes without needing LOD nodes.
The SoValueOrdering node uses the functionality from SoRenderList to create a list of paths to the shapes beneath it. It then traverses the linear list and determines the rendering value and cost of each shape. The rendering value is based on the object's approximate screen size and its cost is based on a count of the number of primitives the shape contains.
NOTE: This class does not exist in Open Inventor 10.0 and later.During each render traversal, the ValueOrdering node determines how many primitives a shape deserves based on its rendering value. If the shape contains multiple levels of detail, then the ValueOrdering node will choose the correct level of detail. However, this node also has two techniques that allow it to handle scenes that do not contain levels of detail: bounding box substitutes and drop culling.
With drop culling enabled, a user can specify a size in pixels such that when the shape is less than this size, the shape is not rendered.
If bounding box substitutes are enabled and the ValueOrdering node calculates that the number of triangles that the object deserves is closer to 12 (the number of triangles in a bounding box) than to the minimum number of triangles the shape can draw, then the ValueOrdering node will draw a bounding box instead of the shape.
If decimate substitutes are enabled, then the ValueOrdering will apply an SoGlobalSimpifyAction to shapes that it determines need simplification. Sometimes a shape has so many triangles that neither the bounding box nor the shape is a satisfactory choice given the shape's calculated value. In this case, the ValueOrdering will create and use a simplified version. The simplification is done when Inventor has been idle for over a second.
If low value culling is enabled, then the shape will not be rendered if the ValueOrdering node decides that its value in triangles is not even worth rendering a bounding box. This will happen if the decimation percentage value is set very low.
The typical scenario where this node is useful is in CAD model assembly viewing, where all or most of the scene is visible, but lots of details may be so small that there is no point in drawing them until the user zooms in on them. Replacing such detail with its bounding box is adequate in many cases and does not have the disk and memory costs, along with the preprocessing time, associated with maintaining multiple levels of detail.
dropCulling | TRUE |
dropScreenArea | 5 |
boundingBoxSubstitutes | TRUE |
decimateSubstitutes | TRUE |
lowValueCulling | TRUE |
adjustDecimation | TRUE |
isHead | TRUE |
renderCaching | AUTO |
boundingBoxCaching | AUTO |
renderCulling | AUTO |
pickCulling | AUTO |
fastEditing | DISABLE |
SoGetPrimitiveCountAction, SoLevelOfSimplification, SoOctreeOrdering, SoRenderList
SoValueOrdering::SoValueOrdering | ( | ) |
Default constructor.
Note: Do not modify an instance of this node or any of its children unless this node has a ref count greater than zero. If the node is itself the child of a grouping node then the ref count is automatically greater than zero, otherwise you must explicitly increment the ref count by calling the ref() method.
SoValueOrdering::SoValueOrdering | ( | int | numChildren | ) |
Constructor that takes approximate number of children as a hint.
Note: Do not modify an instance of this node or any of its children unless this node has a ref count greater than zero. If the node is itself the child of a grouping node then the ref count is automatically greater than zero, otherwise you must explicitly increment the ref count by calling the ref() method.
static SoType SoValueOrdering::getClassTypeId | ( | ) | [static] |
Returns the type identifier for this class.
Reimplemented from SoRenderList.
virtual SoType SoValueOrdering::getTypeId | ( | ) | const [virtual] |
Returns the type identifier for this specific instance.
Reimplemented from SoRenderList.
Allows ValueOrdering node to adjust decimation percentage value depending on the shape's rendering value.
Enables use of bounding boxes for shapes whose rendering value is too low to render the shape itself.
If true, then this node will automatically decide when a decimated version of a shape needs to be created.
It will apply an SoGlobalSimplifyAction, and use the results instead of the shape when needed.
Enables culling of shapes that are too small on the screen.
Sets threshold in pixels for drop culling.
Enables culling of shapes whose rendering value is too low.