(Preview feature) [Medical] Class for computing the intersection of geometry with a plane. More...
#include <Medical/nodes/PlaneGeometryIntersection.h>
Public Member Functions  
virtual SoType  getTypeId () const 
Returns the type identifier for this specific instance.  
const SoShape *  getShape () const 
Get the shape node that contains the computed vertices and indices.  
int  recompute () 
Recompute the intersection.  
PlaneGeometryIntersection ()  
Constructor.  
Public Member Functions inherited from SoSeparator  
SoSeparator ()  
Creates a separator node with default settings.  
SoSeparator (int nChildren)  
Constructor that takes approximate number of children.  
Public Member Functions inherited from SoGroup  
SoGroup ()  
Creates an empty group node.  
SoGroup (int nChildren)  
Constructor that takes approximate number of children.  
virtual void  addChild (SoNode *child) 
Adds a child as last one in group.  
virtual void  insertChild (SoNode *child, int newChildIndex) 
Adds a child so that it becomes the one with the given index.  
virtual SoNode *  getChild (int index) const 
Returns pointer the child node with the given index.  
virtual int  findChild (const SoNode *child) const 
Finds index of given child within group.  
virtual int  getNumChildren () const 
Returns number of children.  
virtual void  removeChild (int index) 
Removes child with given index from group.  
virtual void  removeChild (SoNode *child) 
Removes first instance of given child from group.  
virtual void  removeAllChildren () 
Removes all children from group.  
virtual void  replaceChild (int index, SoNode *newChild) 
Replaces child with given index with new child.  
virtual void  replaceChild (SoNode *oldChild, SoNode *newChild) 
Replaces first instance of given child with new child.  
Public Member Functions inherited from SoNode  
virtual void  setOverride (const SbBool state) 
Turns the override flag on or off.  
virtual SbBool  isOverride () const 
Returns the state of the override flag.  
virtual SoNode *  copy (SbBool copyConnections=FALSE) const 
Creates and returns an exact copy of the node.  
virtual void  touch () 
Marks an instance as modified, simulating a change to it.  
Public Member Functions inherited from SoFieldContainer  
void  setToDefaults () 
Sets all fields in this object to their default values.  
SbBool  hasDefaultValues () const 
Returns TRUE if all of the object's fields have their default values.  
SbBool  fieldsAreEqual (const SoFieldContainer *fc) const 
Returns TRUE if this object's fields are exactly equal to fc's fields.  
void  copyFieldValues (const SoFieldContainer *fc, SbBool copyConnections=FALSE) 
Copies the contents of fc's fields into this object's fields.  
SoNONUNICODE SbBool  set (const char *fieldDataString) 
Sets one or more fields in this object to the values specified in the given string, which should be a string in the Open Inventor file format.  
SbBool  set (const SbString &fieldDataString) 
Sets one or more fields in this object to the values specified in the given string, which should be a string in the Open Inventor file format.  
void  get (SbString &fieldDataString) 
Returns the values of the fields of this object in the Open Inventor ASCII file format in the given string.  
virtual int  getFields (SoFieldList &list) const 
Appends references to all of this object's fields to resultList, and returns the number of fields appended.  
virtual int  getAllFields (SoFieldList &list) const 
Returns a list of fields, including the eventIn's and eventOut's.  
virtual SoField *  getField (const SbName &fieldName) const 
Returns a the field of this object whose name is fieldName.  
virtual SoField *  getEventIn (const SbName &fieldName) const 
Returns a the eventIn with the given name.  
virtual SoField *  getEventOut (const SbName &fieldName) const 
Returns the eventOut with the given name.  
SbBool  getFieldName (const SoField *field, SbName &fieldName) const 
Returns the name of the given field in the fieldName argument.  
SbBool  enableNotify (SbBool flag) 
Notification at this Field Container is enabled (if flag == TRUE) or disabled (if flag == FALSE).  
SbBool  isNotifyEnabled () const 
Notification is the process of telling interested objects that this object has changed.  
virtual void  setUserData (void *data) 
Sets application data.  
void *  getUserData (void) const 
Gets user application data.  
Public Member Functions inherited from SoBase  
virtual SbName  getName () const 
Returns the name of an instance.  
virtual void  setName (const SbName &name) 
Sets the name of an instance.  
void  setSynchronizable (const bool b) 
Sets this to be a ScaleViz synchronizable object.  
bool  isSynchronizable () const 
Gets the ScaleViz synchronizable state of this object.  
Public Member Functions inherited from SoRefCounter  
void  ref () const 
Adds a reference to an instance.  
void  unref () const 
Removes a reference from an instance.  
void  unrefNoDelete () const 
unrefNoDelete() should be called when it is desired to decrement the reference count, but not delete the instance if this brings the reference count to zero.  
int  getRefCount () const 
Returns current reference count.  
void  lock () const 
lock this instance.  
void  unlock () const 
unlock this instance.  
Public Member Functions inherited from SoTypedObject  
SbBool  isOfType (const SoType &type) const 
Returns TRUE if this object is of the type specified in type or is derived from that type.  
template<typename TypedObjectClass >  
SbBool  isOfType () const 
Returns TRUE if this object is of the type of class TypedObjectClass or is derived from that class.  
Static Public Member Functions  
static SoType  getClassTypeId () 
Returns the type identifier for this class.  
static void  initClass () 
Initialize class (called automatically by InventorMedical::init()).  
static void  exitClass () 
Finish using class (called automatically by InventorMedical::finish()).  
Static Public Member Functions inherited from SoSeparator  
static SoType  getClassTypeId () 
Returns the type identifier for this class.  
Static Public Member Functions inherited from SoGroup  
static SoType  getClassTypeId () 
Returns the type identifier for this class.  
Static Public Member Functions inherited from SoNode  
static SoType  getClassTypeId () 
Returns the type identifier for this class.  
static SoNode *  getByName (const SbName &name) 
A node's name can be set using SoBase::setName().  
static int  getByName (const SbName &name, SoNodeList &list) 
A node's name can be set using SoBase::setName().  
Static Public Member Functions inherited from SoFieldContainer  
static SoType  getClassTypeId () 
Returns the type of this class.  
Static Public Member Functions inherited from SoBase  
static SoType  getClassTypeId () 
Returns type identifier for this class.  
Static Public Member Functions inherited from SoTypedObject  
static SoType  getClassTypeId () 
Returns the type identifier for this class.  
Public Attributes  
SoSFNode  scene 
Scene to intersect with plane.  
SoSFPlane  plane 
Plane to intersect with.  
SoSFBool  polygon 
Specifies whether to compute a capping polygon (default false).  
SoSFBool  automatic 
Specifies whether to recompute the intersection automatically or not (default true).  
SoSFFloat  tolerance 
Tolerance for testing if vertices are equal.  
Public Attributes inherited from SoSeparator  
SoSFEnum  boundingBoxCaching 
Whether to cache during bounding box traversal.  
SoSFEnum  renderCulling 
Whether to cull during rendering traversal.  
SoSFEnum  pickCulling 
Whether to cull during picking traversal.  
SoSFEnum  fastEditing 
Specifies the fast edit mode of the separator node.  
SoSFInt32  renderUnitId 
Used during the ScaleViz depth compositing process, this field specifies which render unit (OIRU) will render the sub scene graph below this separator.  
SoDEPRECATED SoSFEnum  renderCaching 
Whether to cache during rendering traversal.  
Public Attributes inherited from SoGroup  
SoSFBool  boundingBoxIgnoring 
Whether to ignore this node during bounding box traversal.  
Additional Inherited Members  
Public Types inherited from SoSeparator  
enum  CacheEnabled { OFF , ON , AUTO } 
Possible values for caching. More...  
enum  FastEditing { DISABLE = 0x01 , KEEP_ZBUFFER = 0x02 , CLEAR_ZBUFFER = 0x03 } 
Fast editing policy enumeration values. More...  
Related Symbols inherited from SoSeparator  
#define  SO_RENDERUNITID_NONE (1) 
Don't traverse any children.  
#define  SO_RENDERUNITID_INHERIT (2) 
Inherit value from state.  
#define  SO_RENDERUNITID_ALL (3) 
Traverse all children.  
(Preview feature) [Medical] Class for computing the intersection of geometry with a plane.
This class computes and (optionally) renders the intersection of the geometry in the specified scene graph with the specified plane. In curve mode it computes a set of line segments corresponding to the intersection. In polygon mode it computes a set of polygon boundaries that can be used as a "cap" for clipped geometry. The intent is that the specified scene graph is one shape. In fact it can be any scene graph, but the result is always a single polygon with multiple boundaries (if necessary). The computed vertices (and indices in polygon mode) can be accessed using the getShape() method. The curve or polygon may be exported to a file like any other Open Inventor geometry using SoWriteAction, SoSTLWriteAction, etc.
Curve mode:
By default we compute and render the curve(s) defined by the intersection of the scene geometry and the plane. This is fast and works reliably for any Open Inventor geometry that produces triangles when an SoCallbackAction is applied (almost all Open Inventor geometry nodes). The appearance of the intersection curve can be controlled like any Open Inventor geometry using SoMaterial, SoDrawStyle, etc. nodes. The application may need to use an SoPolygonOffset node to "push" the scene geometry behind the intersection curve (polygon offset does not affect the intersection curve because it is a line set). Curve mode is useful to see where a clip plane intersects the geometry. Because it is much faster than polygon mode it is useful as a preview of where the polygons will be generated (if possible).
Polygon mode:
When the polygon field is set to true, the node converts the intersection curves to polygon boundaries. All the boundaries are stored in an SoIndexedFaceSet node and an SoShapeHints node is created with the 'windingType' field set to ODD_TYPE. All boundaries have counterclockwise vertex ordering and the face normal vector is the opposite of the current plane normal vector (because for a clip plane the plane normal points toward the unclipped half space which is effectively toward the interior of the shape). The appearance of the polygon can be controlled like any Open Inventor geometry using SoMaterial, etc. nodes. There are cases where polygons cannot be constructed, for example if the geometry is selfintersecting.
The coordinates of the intersection boundaries can be accessed using the getShape() method. This is an SoLineSet in curve mode and an SoIndexedFaceSet in polygon mode. In either case the coordinates are in the shape's attached SoVertexProperty node. Note that in curve mode the line segments are in random order and do not form a connected polyline. This allows the intersection geometry to be computed in minimum time and does not (visually) effect rendering. If you need the boundary(s) as a connected polyline for some purpose, use the polygon mode. Note that in polygon mode there are redundant vertices in the vertex list because it still contains all the line segments. To follow the boundaries in connection order use the coordinate indices in the SoIndexedFaceSet node.
Notes:
Limitations:
scene  NONE 
plane  1 0 0 0 
polygon  FALSE 
automatic  TRUE 
tolerance  1e6 
InventorMedical, SoClipPlane, SoClipPlaneManip, SoSTLWriteAction
Definition at line 142 of file PlaneGeometryIntersection.h.
PlaneGeometryIntersection::PlaneGeometryIntersection  (  ) 
Constructor.

static 
Finish using class (called automatically by InventorMedical::finish()).

static 
Returns the type identifier for this class.
const SoShape * PlaneGeometryIntersection::getShape  (  )  const 
Get the shape node that contains the computed vertices and indices.
Returns null if no shape has been computed yet. In curve mode this is an SoLineSet. In polygon mode this is an SoIndexedFaceSet. In both cases the vertices are in the shape node's attached SoVertexProperty node's 'vertex' field.
The application must not modify these nodes.

virtual 
Returns the type identifier for this specific instance.
Reimplemented from SoSeparator.

static 
Initialize class (called automatically by InventorMedical::init()).
int PlaneGeometryIntersection::recompute  (  ) 
Recompute the intersection.
Recomputes the intersection boundary(s) based on the current scene and plane. Normally used when the automatic field is set to false. Useful when the goal is simply to compute the intersection. Also useful if recomputation is too slow. For example, to defer recomputation until the user has finished moving the clip plane.
Returns 0 if successful. Any other value means that an error occured during the computation and the geometry may not be valid.
SoSFBool PlaneGeometryIntersection::automatic 
Specifies whether to recompute the intersection automatically or not (default true).
If true, the intersection (curve or polygon depending on the polygon field) will be recomputed automatically when the scene or the plane changes. If false, the intersection will only be recomputed when the recompute method is called.
Definition at line 167 of file PlaneGeometryIntersection.h.
SoSFPlane PlaneGeometryIntersection::plane 
Plane to intersect with.
Default is (1,0,0) at 0 (same as SoClipPlane). Typically this field is connected from the clipping node's 'plane' field.
Definition at line 155 of file PlaneGeometryIntersection.h.
SoSFBool PlaneGeometryIntersection::polygon 
Specifies whether to compute a capping polygon (default false).
If true, compute a capping polygon. If false, compute only the intersection curve.
Definition at line 160 of file PlaneGeometryIntersection.h.
SoSFNode PlaneGeometryIntersection::scene 
Scene to intersect with plane.
Default is none.
Definition at line 149 of file PlaneGeometryIntersection.h.
SoSFFloat PlaneGeometryIntersection::tolerance 
Tolerance for testing if vertices are equal.
Default is 1e6. This tolerance is used for calculation of triangle intersections with the plane.
Definition at line 173 of file PlaneGeometryIntersection.h.