H3D API
2.4.1
|
This node defines a single plane equation that will be used to clip the geometry, i.e. More...
#include <H3D/ClipPlane.h>
Public Member Functions | |
ClipPlane (Inst< SFNode > _metadata=0, Inst< SFBool > _enabled=0, Inst< SFVec4d > _plane=0, Inst< SFBool > _clipHaptics=0, Inst< SFBool > _clipGraphics=0, Inst< MFBool > _clipHapticsDevice=0) | |
Constructor. | |
virtual void | enableGraphicsState () |
Turn the clip plane on. | |
virtual void | disableGraphicsState () |
Turn the clip plane off. | |
virtual void | enableHapticsState (TraverseInfo &ti) |
Disable haptics if device position is on the clipped side of the clip plane. More... | |
virtual void | disableHapticsState (TraverseInfo &ti) |
Reenable haptics. More... | |
bool | truncateLine (const Vec3f &from, const Vec3f &to, Vec3f &result_from, Vec3f &result_to) |
Changes the line defined by [ from, to ] so that only the part of the. More... | |
![]() | |
X3DChildNode (Inst< SFNode > _metadata=0) | |
Constructor. | |
![]() | |
X3DNode (Inst< SFNode > _metadata=0) | |
Constructor. | |
X3DMetadataObject * | getMetadataByName (const string &_name) |
Given a name, the first X3DMetadataObject in the metadata field that matches that name is returned. More... | |
![]() | |
Node () | |
Constructor. | |
virtual Node * | clone (bool deepCopy=true, DeepCopyMap *deepCopyMap=NULL) |
Returns a new instance of this node type with the same state as this one. More... | |
virtual | ~Node () |
Destructor. | |
X3DPrototypeInstance * | getProtoInstanceParent () |
If this node is the root node in the proto body of a X3DPrototypeInstance then this will return that node. More... | |
void | setProtoInstanceParent (X3DPrototypeInstance *p) |
Set the X3DPrototypeInstance this node is the the root node if applicaple. | |
virtual void | render () |
the render() function is used for the depth-first rendering traversal of the scene-graph. More... | |
virtual void | traverseSG (TraverseInfo &ti) |
traverseSG is called once per scenegraph loop on the scene in order to traverse the scenegraph. More... | |
virtual bool | lineIntersect (const Vec3f &from, const Vec3f &to, LineIntersectResult &result) |
Detect intersection between a line segment and the Node. More... | |
virtual void | closestPoint (const Vec3f &p, NodeIntersectResult &result) |
Find closest point on Node to p. More... | |
virtual bool | movingSphereIntersect (H3DFloat radius, const Vec3f &from, const Vec3f &to, NodeIntersectResult &result) |
Detect collision between a moving sphere and the Node. More... | |
virtual string | defaultXMLContainerField () |
Returns the default xml containerField attribute value. More... | |
virtual Field * | getField (const string &_name) const |
return a pointer to the field specified by name within this instance | |
int | addDestructCallback (void(*func)(Node *, void *), void *args) |
Add a callback function to be run on destruction of node. More... | |
int | removeDestructCallback (void(*func)(Node *, void *), void *args) |
Add a callback function to be run on destruction of node. More... | |
![]() | |
H3DDisplayListObject (Inst< DisplayList > _displayList=0) | |
Constructor. | |
![]() | |
virtual | ~H3DRenderStateObject () |
Destructor. | |
Public Attributes | |
H3DUniquePtr< SFBool > | enabled |
Specifies if the clipping plane should be enabled or not. More... | |
H3DUniquePtr< SFVec4d > | plane |
The plane equation that will be used to clip the geometry. More... | |
H3DUniquePtr< SFBool > | clipHaptics |
Specifies if the clipping plane should clip the haptics if enabled, i.e. More... | |
H3DUniquePtr< MFBool > | clipHapticsDevice |
The clipHapticsDevice field provides per haptics device control for clipping. More... | |
H3DUniquePtr< SFBool > | clipGraphics |
Specifies if the clipping plane should clip the graphics if enabled. More... | |
![]() | |
H3DUniquePtr< SFNode > | metadata |
Meta data about the node. More... | |
![]() | |
H3DUniquePtr< DisplayList > | displayList |
The DisplayList instance handling the OpenGL caching of this object. | |
Static Public Attributes | |
static H3DNodeDatabase | database |
The H3DNodeDatabase for this node. | |
static int | nr_active_clip_planes = 0 |
The number of clip planes that are currently rendered. | |
![]() | |
static H3DNodeDatabase | database |
The H3DNodeDatabase for this node. | |
Protected Attributes | |
int | plane_index |
The index of the plane when rendered by OpenGL. More... | |
vector< bool > | haptics_enabled |
Was haptics enabled in the last call to enableHapticsState()? | |
Static Protected Attributes | |
static GLint | max_nr_clip_planes = -1 |
The maximum number of clip planes the graphics hardware supports. More... | |
Additional Inherited Members | |
![]() | |
typedef std::map< Node *, Node * > | DeepCopyMap |
A map type used during a deep copy clone() to map from original nodes to cloned nodes. | |
![]() | |
static unsigned int | nrNodesAlive () |
Returns the nr of nodes currently alive, i.e. nodes created but not destructed. | |
static int | nrNodesCreated () |
Returns the number of nodes created in total since the start of the program. | |
![]() | |
void | cloneFieldValue (Field &_from, Field &_to, bool deepCopy, DeepCopyMap &deepCopyMap) |
A helper function for the clone() method. More... | |
![]() | |
static Node * | getClonedInstance (Node *original, bool deepCopy, DeepCopyMap &deepCopyMap) |
A helper function for nodes that implement clone() More... | |
This node defines a single plane equation that will be used to clip the geometry, i.e.
remove parts of it from rendering.
The plane field defines a plane equation that will be used to clip the geometry. The points that are drawn are the points that satisfy the inequation: plane.x*x+plane.y*y+plane.z*z+plane.w >= 0
Clipping only occurs of the enabled field is 'true'.
The clipHaptics field specifies if the clipping plane should clip the haptics if enabled, i.e. if the haptics device is in a position that is clipped by the plane no haptics will be rendered for the device. This applies to all haptics devices. For per device control use the clipHapticsDevice field instead. If the clipHapticsDevice field is non-empty the clipHaptics field is ignored. This allows you to specify the, for each device, if it should be clipped or not. Each entry matches agains the the device with the same device index as the index in the field. If a device with a higher device index than values available is specified, the last value is used.
The clipGraphics field specifies if the graphics should be clipped when the ClipPlane is enabled.
Examples:
|
virtual |
Reenable haptics.
ti | The TraverseInfo object containing information about the traversal. |
Reimplemented from H3D::H3DRenderStateObject.
References haptics_enabled, and H3D::TraverseInfo::setHapticsEnabled().
|
virtual |
Disable haptics if device position is on the clipped side of the clip plane.
ti | The TraverseInfo object containing information about the traversal. |
Reimplemented from H3D::H3DRenderStateObject.
References clipHaptics, clipHapticsDevice, H3D::TraverseInfo::disableHaptics(), H3D::TraverseInfo::getAccInverseMatrix(), H3D::TraverseInfo::getHapticsDevices(), H3D::TraverseInfo::getHapticsEnabled(), haptics_enabled, plane, and H3D::H3DHapticsDevice::trackerPosition.
bool ClipPlane::truncateLine | ( | const Vec3f & | from, |
const Vec3f & | to, | ||
Vec3f & | result_from, | ||
Vec3f & | result_to | ||
) |
Changes the line defined by [ from, to ] so that only the part of the.
is above the plane ) is returned.
from | The start point of the the line segment. |
to | The end point of the line segment. |
result_from | The start point of the the truncated line segment. |
result_to | The end point of the truncated line segment. |
H3DUniquePtr< SFBool > H3D::ClipPlane::clipGraphics |
Specifies if the clipping plane should clip the graphics if enabled.
Access type: inputOutput
Default value: true
Referenced by ClipPlane(), disableGraphicsState(), and enableGraphicsState().
H3DUniquePtr< SFBool > H3D::ClipPlane::clipHaptics |
Specifies if the clipping plane should clip the haptics if enabled, i.e.
if the haptics device is in a position that is clipped by the plane no haptics will be rendered for the device. This field only has effect if clipHapticsDevice field is empty.
Access type: inputOutput
Default value: true
Referenced by ClipPlane(), and enableHapticsState().
H3DUniquePtr< MFBool > H3D::ClipPlane::clipHapticsDevice |
The clipHapticsDevice field provides per haptics device control for clipping.
This allows you to specify, for each device, if it should be clipped or not. Each entry matches agains the the device with the same device index as the index in the field. If a device with a higher device index than values available is specified, the last value is used. When the clipHapticsDevice is empty the clipHaptics field is used to determine clipping for all devices.
Access type: inputOutput
Referenced by enableHapticsState().
H3DUniquePtr< SFBool > H3D::ClipPlane::enabled |
Specifies if the clipping plane should be enabled or not.
Access type: inputOutput
Default value: true
Referenced by ClipPlane(), disableGraphicsState(), enableGraphicsState(), and truncateLine().
|
staticprotected |
The maximum number of clip planes the graphics hardware supports.
Set in the first call to enable().
Referenced by disableGraphicsState().
H3DUniquePtr< SFVec4d > H3D::ClipPlane::plane |
The plane equation that will be used to clip the geometry.
The points that are drawn are the points that satisfy the inequation: plane.x*x+plane.y*y+plane.z*z+plane.w >= 0
Access type: inputOutput
Default value: Vec4d( 0, 1, 0, 0 )
Referenced by ClipPlane(), enableGraphicsState(), enableHapticsState(), H3D::PointNormalClipPlane::PointNormalClipPlane(), and truncateLine().
|
protected |
The index of the plane when rendered by OpenGL.
-1 if currently not rendered.
Referenced by ClipPlane(), disableGraphicsState(), and enableGraphicsState().