public class SoCSGGroup extends SoGroup
An expression defines the operations between these solids. Possible operations are: intersection (indicated as "." in the expression), union ("+"), and subtraction ("-"). A solid is identified by a letter (or a group of letters) in the expression and corresponds to the child number as follows: 'A' corresponds to child 0, 'B' corresponds to child 1, "AA" corresponds to child 26, "AZ" corresponds to child 51, and so forth. The expression is not case sensitive. If you decide for example to use "AA", you must have previously created children 0-25 (A through Z).
A letter can be followed by a number to indicate the convexity of the solid. The convexity of a solid is defined as the maximum numbers of pairs of front and back surfaces. For instance, the convexity of a cube is 1 whereas the convexity of a torus is 2. The convexity of a solid is assumed to be 1 if no digit follows the corresponding letter in the expression. The maximum allowable convexity value is 128.
The more complex the expression, the slower the performance. The same holds true for the convexity of an object - greater convexity implies slower performance.
For best performance, the graphics accelerator should perform stencil buffer operations in hardware.
Example of CSG Tree:
In this example, "myShape1" is 'A', "Separator1" is B, and "Separator2" is C. A CSG expression could be: "A . B - C + A" and corresponds to the following CSG tree:
The CSG tree defined by expression
is assumed to be in normal form (normalized). A CSG tree is in normal form when all intersection and subtraction operators have a left subtree that contains no union operator and a right subtree that is simply a shape. For example, the tree shown above is in normal form.
A CSG tree can be converted to normal form by repeatedly applying the following set of production rules to the tree and then its subtrees:
A - ( B + C ) | => | ( A - B ) - C |
A . ( B + C ) | => | ( A . B ) + ( A . C ) |
A - ( B . C ) | => | ( A - B ) + ( A - C ) |
A . ( B . C ) | => | ( A . B ) . C |
A - ( B - C ) | => | ( A - B ) + ( A . C ) |
A . ( B - C ) | => | ( A . B ) - C |
( A - B ) . C | => | ( A . C ) - B |
( A + B ) - C | => | ( A - C ) + ( B - C ) |
( A + B ) . C | => | ( A . C ) + ( B . C ) |
Because there are two Buffer Region extensions, the value of this environment variable can be:
KTX_BUFFER_REGION: Uses the GL_KTX_buffer_region extension.
ARB_BUFFER_REGION: Uses the WGL_ARB_buffer_region extension.
File format/default:
CSGGroup {
expression | "" |
isShapesBefore | false |
isActive | true |
boundingBoxPruningEnabled | false |
See also:
SoSolidVizDeprecated since Open Inventor 9500
No longer supported.
Inventor.ConstructorCommand
Modifier and Type | Field and Description |
---|---|
SoSFBool |
boundingBoxPruningEnabled
Deprecated.
Indicates if the CSG tree is pruned by the following rules:
A.B = 0 if BoundingBox(A) does not intersect BoundingBox(B).
|
SoSFString |
expression
Deprecated.
Expression which defines the CSG tree.
|
SoSFBool |
isActive
Deprecated.
Indicates if CSG rendering should be done.
|
SoSFBool |
isShapesBefore
Deprecated.
This flag indicates if there are any shapes before the CSGGroup in the scene graph.
|
boundingBoxIgnoring
VERBOSE_LEVEL, ZeroHandle
Constructor and Description |
---|
SoCSGGroup()
Deprecated.
Constructor.
|
SoCSGGroup(int nChildren)
Deprecated.
Constructor.
|
Modifier and Type | Method and Description |
---|---|
SoNode |
getGeometry()
Deprecated.
|
addChild, findChild, getChild, getNumChildren, insertChild, removeAllChildren, removeChild, removeChild, replaceChild, replaceChild
affectsState, callback, copy, copy, distribute, doAction, getAlternateRep, getBoundingBox, getByName, getMatrix, getPrimitiveCount, getRenderUnitID, GLRender, GLRenderBelowPath, GLRenderInPath, GLRenderOffPath, grabEventsCleanup, grabEventsSetup, handleEvent, isBoundingBoxIgnoring, isOverride, pick, rayPick, search, setOverride, touch, write
copyFieldValues, copyFieldValues, enableNotify, fieldsAreEqual, get, getAllFields, getEventIn, getEventOut, getField, getFieldName, hasDefaultValues, isNotifyEnabled, set, setToDefaults
dispose, getEXTERNPROTO, getName, getPROTO, isDisposable, isSynchronizable, setName, setSynchronizable
getAddress, getNativeResourceHandle, startInternalThreads, stopInternalThreads
public final SoSFString expression
public final SoSFBool isShapesBefore
public final SoSFBool isActive
SoGroup
.public final SoSFBool boundingBoxPruningEnabled
These rules can potentially speed up the rendering in case of a complex CSG expression by simplifying the CSG tree.
public SoCSGGroup()
public SoCSGGroup(int nChildren)
public SoNode getGeometry()
Generated on January 23, 2025, Copyright © Thermo Fisher Scientific. All rights reserved. http://www.openinventor.com