Click or drag to resize
SoSplitGeometryAction Class

Split large geometry into smaller objects to improve culling for multi-pipe rendering.

Inheritance Hierarchy

Namespace: OIV.Inventor.Actions
Assembly: OIV.Inventor (in OIV.Inventor.dll) Version: 9.9.13.0 (9.9.13.0)
Syntax
public class SoSplitGeometryAction : SoAction

The SoSplitGeometryAction type exposes the following members.

Constructors
  NameDescription
Public methodSoSplitGeometryAction(Int32, Int32)

Constructor for splitting geometry along 2 dimensions.

Public methodSoSplitGeometryAction(Int32, Int32, Int32)

Constructor for splitting geometry along 3 dimensions.

Top
Methods
  NameDescription
Public methodApply(SoNode)

Initiates an action on the graph defined by a node.

(Overrides SoActionApply(SoNode).)
Public methodApply(SoPath)

Initiates an action on the graph defined by a path.

(Overrides SoActionApply(SoPath).)
Public methodApply(SoPathList)
Calls Apply(pathList, false).
Public methodApply(SoPathList, Boolean)

Initiates an action on the graph defined by a list of paths.

(Overrides SoActionApply(SoPathList, Boolean).)
Public methodClearApplyResult

When applied, an action may reference nodes or create objects (e.g.

(Inherited from SoAction.)
Public methodStatic memberEnableElement
Public methodEnableElements

(Overrides SoActionEnableElements.)
Public methodEquals
Determines whether the specified Object is equal to the current Object.
(Inherited from Object.)
Public methodForwardTraversal

Traverse a node that is not part of the current scenegraph.

(Inherited from SoAction.)
Public methodGetContinueActionInBranchFlag

This function indicates if the action must stop in the current branch.

(Inherited from SoAction.)
Public methodGetCurPath
(Inherited from SoAction.)
Public methodGetHashCode
Overrides GetHashCode().
(Inherited from SoNetBase.)
Public methodGetNodeAppliedTo
(Inherited from SoAction.)
Public methodGetNumDivisions(Int32, Int32)

Returns the current division values to split an object in 2D.

Public methodGetNumDivisions(Int32, Int32, Int32)

Returns the current division values to split an object in 3D.

Public methodGetNumObjFound

Returns how many objects the action has split.

Public methodGetOriginalPathListAppliedTo
(Inherited from SoAction.)
Public methodGetPathAppliedTo
(Inherited from SoAction.)
Public methodGetPathCode(SbNativeArrayInt32)

Returns path code based on where current node (the node at the end of the current path) lies with respect to the path(s) the action is being applied to.

(Inherited from SoAction.)
Public methodGetPathCode(SbNativeInt32Array) Obsolete.

Returns path code based on where current node (the node at the end of the current path) lies with respect to the path(s) the action is being applied to.

(Inherited from SoAction.)
Public methodGetPathListAppliedTo
(Inherited from SoAction.)
Public methodGetPipeId

Gets pipe identifier in the range [1..N] associated to this render action while running a ScaleViz Multipipe configuration.

(Inherited from SoAction.)
Public methodGetSceneManager

Return the SoSceneManager associated with this action.

(Inherited from SoAction.)
Public methodGetState
(Inherited from SoAction.)
Public methodGetType
Gets the Type of the current instance.
(Inherited from Object.)
Public methodGetWhatAppliedTo
(Inherited from SoAction.)
Public methodHasTerminated
(Inherited from SoAction.)
Public methodInvalidateState

Invalidates the current traversal state in the action, forcing it to be recreated when the action is next applied.

(Inherited from SoAction.)
Public methodIsBeingApplied

Returns true if this action is currently being applied.

(Inherited from SoAction.)
Public methodIsDistinguishSplitParts

Returns true if distinguish split parts is enabled.

Public methodIsKeepOriginalGeometry

Returns true if keep original geometry is enabled.

Public methodIsLastPathListAppliedTo
(Inherited from SoAction.)
Public methodIsMaintainVertexOrdering

Returns true if the option to maintain initial vertex ordering is on.

Public methodIsSmartSplitting

Returns true if smart splitting is enabled.

Public methodIsTraverseAllSoSwitchChildren

Returns true if traverse all SoSwitch children is enabled.

Public methodIsUsingAlternateRep

Returns true if current action is using alternate representations.

(Inherited from SoAction.)
Public methodPostDelayedTraversal

Method called by SoMultiPassManager after delayed pass traversals.

(Inherited from SoAction.)
Public methodPreDelayedTraversal

Method called by SoMultiPassManager before delayed pass traversals.

(Inherited from SoAction.)
Public methodResetContinueActionInBranchFlag

This function resets the continue action flag.

(Inherited from SoAction.)
Public methodSetDistinguishSplitParts

Calling this method before applying the action allows you to see how the action has split the objects.

Public methodSetKeepOriginalGeometry

By default, the action modifies the scene graph by replacing the original node it has split with a new separator containing all the new nodes.

Public methodSetMaintainVertexOrdering

If the initial geometry is composed of SoIndexedTriangleStripSet and uses an SoShapeHints with a known vertex ordering (SoShapeHints.CLOCKWISE or SoShapeHints.COUNTERCLOCKWISE), the action has to maintain the initial vertex ordering or problems with normals will appear.

Public methodSetMaximumDivisionWarning

There is a maximum number of division to divide an object because this object is composed by some primitives (triangles) that cannot be split without changing the geometry.

Public methodSetNumDivisions(Int32, Int32)

Specifies the number of divisions for splitting an object in 2D.

Public methodSetNumDivisions(Int32, Int32, Int32)

Specifies the number of divisions for splitting an object in 3D.

Public methodSetPipeId

Sets pipe identifier in the range [1..N] associated to this render action while running a ScaleViz Multipipe configuration.

(Inherited from SoAction.)
Public methodStatic memberSetPreCallback(SoSplitGeometryActionPreCallback) Obsolete.
Use PreTraversal property instead. These add a delegate to invoke when a node of the given type is encountered during traversal. The PreCallback is called just before the node is traversed. For each node to split, you can "customize" how to split it by enabling, or disabling options, changing the division values, etc.
Public methodStatic memberSetPreCallback(SoSplitGeometryActionPreUserDataCallback, Object) Obsolete.
Use PreTraversal property instead.
Public methodSetSceneManager

Set the scene manager associated with this action (if any ).

(Inherited from SoAction.)
Public methodSetSmartSplitting

If this option is set before the action is applied, objects will be split by dividing the greatest bounding box side into the largest number of divisions, the next largest side by the next largest number of divisions, and so on.

Public methodSetTraverseAllSoSwitchChildren

By default the action will only traverse the active child of SoSwitch nodes.

Public methodSetUpState
(Inherited from SoAction.)
Public methodStopActionInBranch

This function stops the action in the current Scene Graph branch.

(Inherited from SoAction.)
Public methodToString
Returns a string that represents the current object.
(Inherited from Object.)
Public methodTraverse
(Inherited from SoAction.)
Public methodUseAlternateRep

Tell the action to use alternate representations during traversal when available.

(Inherited from SoAction.)
Top
Properties
  NameDescription
Public propertyStatic memberPreTraversal

These add a callback function to call when a node of the given type is encountered during traversal.

Top
Remarks

View frustum culling, for example using the SoOctreeOrdering node, is an important optimization, especially for multi-pipe rendering. However, a large object implemented as a single geometry node cannot be effectively culled. For each pipe where the object is partially visible, the entire object must be rendered.

This action splits a large object into multiple geometry nodes, without changing the appearance of the object. Culling can then applied to the new nodes individually.

The scene does not need to be subdivided into a large number of parts. Usually, 5 by 5 is enough to reasonably divide work between the threads. The new objects use the same vertex coordinates (and normals, materials,... if specified) as the original geometry. No triangles are added, removed, or split. A small amount of additional memory is required for the coordinate indices in the new objects.

Note: Currently this action applies only to SoIndexedFaceSet and SoIndexedTriangleStripSet nodes. The new object is the same type of node as the original.

Texture Mapping: If the original geometry has explicit texture coordinates, the result will be correct. If texture coordinates are computed by Open Inventor, the texture will be applied separately to each new object.

See Also