SoSplitGeometryAction Class |
Split large geometry into smaller objects to improve culling for multi-pipe rendering.
Namespace: OIV.Inventor.Actions
The SoSplitGeometryAction type exposes the following members.
Name | Description | |
---|---|---|
SoSplitGeometryAction(Int32, Int32) | Constructor for splitting geometry along 2 dimensions. | |
SoSplitGeometryAction(Int32, Int32, Int32) | Constructor for splitting geometry along 3 dimensions. |
Name | Description | |
---|---|---|
Apply(SoNode) | Initiates an action on the graph defined by a node. | |
Apply(SoPath) | Initiates an action on the graph defined by a path. | |
Apply(SoPathList) | Calls Apply(pathList, false). | |
Apply(SoPathList, Boolean) | Initiates an action on the graph defined by a list of paths. | |
ClearApplyResult | When applied, an action may reference nodes or create objects (e.g. | |
EnableElement | ||
EnableElements | (Overrides SoActionEnableElements.) | |
Equals | Determines whether the specified Object is equal to the current Object. (Inherited from Object.) | |
ForwardTraversal(SoNode) | Traverse a node that is not part of the current scenegraph. | |
ForwardTraversal(SoPath) | Traverse a path that is not part of the current scenegraph. | |
GetContinueActionInBranchFlag | This function indicates if the action must stop in the current branch. | |
GetCurPath | Returns the path accumulated during traversal, i.e., the chain of nodes from the root of the traversed graph to the current node being traversed. | |
GetDistribMode | Returns the distribution mode of this action across a cluster (ScaleViz-Cluster only). | |
GetHashCode |
Overrides GetHashCode().
(Inherited from SoNetBase.) | |
GetNodeAppliedTo | Returns the node the action is being applied to. | |
GetNumDivisions(Int32, Int32) | Returns the current division values to split an object in 2D. | |
GetNumDivisions(Int32, Int32, Int32) | Returns the current division values to split an object in 3D. | |
GetNumObjFound | Returns how many objects the action has split. | |
GetOriginalPathListAppliedTo | Returns the original path list the action is being applied to. | |
GetPathAppliedTo | Returns the path the action is being applied to. | |
GetPathCode | 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. | |
GetPathListAppliedTo | Returns the path list the action is being applied to. | |
GetPipeId | Gets pipe identifier in the range [1..N] associated to this render action while running a ScaleViz Multipipe configuration. | |
GetSceneManager | Return the OIV.Inventor.SoSceneManager associated with this action. | |
GetState | Gets the state from the action. | |
GetType | Gets the Type of the current instance. (Inherited from Object.) | |
GetWhatAppliedTo | Returns code indicating what action is being applied to. | |
HasTerminated | Returns true if the traversal has reached a termination condition. | |
InvalidateState | Invalidates the current traversal state in the action, forcing it to be recreated when the action is next applied. | |
IsBeingApplied | Returns true if this action is currently being applied. | |
IsDistinguishSplitParts | Returns true if distinguish split parts is enabled. | |
IsKeepOriginalGeometry | Returns true if keep original geometry is enabled. | |
IsLastPathListAppliedTo | Returns true if the current list is the last one from the original. | |
IsMaintainVertexOrdering | Returns true if the option to maintain initial vertex ordering is on. | |
IsSmartSplitting | Returns true if smart splitting is enabled. | |
IsTraverseAllSoSwitchChildren | Returns true if traverse all OIV.Inventor.Nodes.SoSwitch children is enabled. | |
IsUsingAlternateRep | Returns true if current action is using alternate representations. | |
PostDelayedTraversal | Method called by SoMultiPassManager after delayed pass traversals. | |
PreDelayedTraversal | Method called by SoMultiPassManager before delayed pass traversals. | |
ResetContinueActionInBranchFlag | This function resets the continue action flag. | |
SetDistinguishSplitParts | Calling this method before applying the action allows you to see how the action has split the objects. | |
SetKeepOriginalGeometry | 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. | |
SetMaintainVertexOrdering | If the initial geometry is composed of OIV.Inventor.Nodes.SoIndexedTriangleStripSet and uses an OIV.Inventor.Nodes.SoShapeHints with a known vertex ordering (OIV.Inventor.Nodes.SoShapeHints.VertexOrderings.CLOCKWISE or OIV.Inventor.Nodes.SoShapeHints.VertexOrderings.COUNTERCLOCKWISE), the action has to maintain the initial vertex ordering or problems with normals will appear. | |
SetMaximumDivisionWarning | 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. | |
SetNumDivisions(Int32, Int32) | Specifies the number of divisions for splitting an object in 2D. | |
SetNumDivisions(Int32, Int32, Int32) | Specifies the number of divisions for splitting an object in 3D. | |
SetPipeId | Sets pipe identifier in the range [1..N] associated to this render action while running a ScaleViz Multipipe configuration. | |
SetSceneManager | Set the scene manager associated with this action (if any ). | |
SetSmartSplitting | 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. | |
SetTraverseAllSoSwitchChildren | By default the action will only traverse the active child of OIV.Inventor.Nodes.SoSwitch nodes. | |
SetUpState | Creates state if it is NULL or it is no longer valid because new elements have been enabled since it was created. | |
StopActionInBranch | This function stops the action in the current Scene Graph branch. | |
ToString | Returns a string that represents the current object. (Inherited from Object.) | |
Traverse | Does traversal of a graph rooted by a node. | |
UseAlternateRep | Tell the action to use alternate representations during traversal when available. |
Name | Description | |
---|---|---|
PreTraversal | These add a callback function to call when a node of the given type is encountered during traversal. |
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 OIV.Inventor.Nodes.SoIndexedFaceSet and OIV.Inventor.Nodes.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.