H3D API
2.4.1
|
Specifies parameters to use when rendering an object with haptics. More...
#include <H3D/HapticsOptions.h>
Public Member Functions | |
HapticsOptions (Inst< SFNode > _metadata=0, Inst< SFString > _touchableFace=0, Inst< SFFloat > _maxDistance=0, Inst< SFFloat > _lookAheadFactor=0, Inst< SFBool > _useBoundTree=0, Inst< SFBool > _interpolateForceEffects=0, Inst< SFString > _dynamicMode=0) | |
Constructor. | |
![]() | |
H3DOptionNode (Inst< SFNode > _metadata=0) | |
Constructor. | |
virtual string | defaultXMLContainerField () |
Returns the default xml containerField attribute value. More... | |
![]() | |
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 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... | |
Public Attributes | |
H3DUniquePtr< SFString > | touchableFace |
Specifies which sides of the shapes to render haptically. More... | |
H3DUniquePtr< SFFloat > | maxDistance |
The maximum distance in metres the proxy can be from a primitive in order for it to be rendered haptically. More... | |
H3DUniquePtr< SFFloat > | lookAheadFactor |
When determining if a primitive should be rendered haptically the primitive will be tested for intersection with a sphere with radius maxDistance moving along the line segment from the current proxy position to another position. More... | |
H3DUniquePtr< SFBool > | useBoundTree |
If true the boundTree field is used in the X3DGeometryNodes in order to extract which triangles are close enough to the proxy. More... | |
H3DUniquePtr< SFBool > | interpolateForceEffects |
If true force effects will be smoothed between graphical frames. More... | |
H3DUniquePtr< SFString > | dynamicMode |
Determines when geometries should be considered dynamic, i.e. More... | |
![]() | |
H3DUniquePtr< Field > | updateOption |
Field to collect update event from every option parameters, all inherited Option Node should route its option parameter fields to it. | |
![]() | |
H3DUniquePtr< SFNode > | metadata |
Meta data about the node. More... | |
Static Public Attributes | |
static H3DNodeDatabase | database |
The H3DNodeDatabase for this node. | |
![]() | |
static H3DNodeDatabase | database |
The H3DNodeDatabase for this node. | |
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... | |
Specifies parameters to use when rendering an object with haptics.
Examples:
H3DUniquePtr< SFString > H3D::HapticsOptions::dynamicMode |
Determines when geometries should be considered dynamic, i.e.
have movement in the global coordinate space. When a geometry is dynamic the haptics rendering will be a bit slower, but if a geometry is moving and the dynamic flag is not set there is a big possibility of fallthrough. Values:
Valid values: "ALWAYS", "NEVER" or "TRANSFORM_CHANGED" Default value: "TRANSFORM_CHANGED"
Access type: inputOutput
Referenced by HapticsOptions(), and H3D::Sphere::traverseSG().
H3DUniquePtr< SFBool > H3D::HapticsOptions::interpolateForceEffects |
If true force effects will be smoothed between graphical frames.
The force effects from the previous and current frame will contribute to the total force output. Early in the graphics frame the old force effects will be dominating and late in the graphics frame the new force effects will be dominating. This means that if a H3DForceEffect node use the same instance of a HAPIForceEffect when force effects are collected this HAPIForceEffect will be called twice each haptics loop when this variable it true. The HapticsOptionsNode should be put in a GlobalSettings node for this option to take effect.
Default value: true
Access type: inputOutput
Referenced by HapticsOptions(), and H3D::H3DHapticsDevice::renderEffects().
H3DUniquePtr< SFFloat > H3D::HapticsOptions::lookAheadFactor |
When determining if a primitive should be rendered haptically the primitive will be tested for intersection with a sphere with radius maxDistance moving along the line segment from the current proxy position to another position.
The other position is calculated as p = current_proxy_pos + (current_proxy_pos - previous_proxy_pos) * lookAheadFactor.
Default value: 3
Access type: inputOutput
Referenced by HapticsOptions(), and H3D::MagneticGeometryEffect::traverseSG().
H3DUniquePtr< SFFloat > H3D::HapticsOptions::maxDistance |
The maximum distance in metres the proxy can be from a primitive in order for it to be rendered haptically.
A negative value indicates that primitives should always be rendered.
Default value: 0.01
Access type: inputOutput
Referenced by HapticsOptions().
H3DUniquePtr< SFString > H3D::HapticsOptions::touchableFace |
Specifies which sides of the shapes to render haptically.
If "BACK" only the back side of can be felt, "FRONT" only front side and "FRONT_AND_BACK" both sides. "AS_GRAPHICS" will render the sides that are visible graphically.
Valid values: "AS_GRAPHICS", "BACK", "FRONT" or "FRONT_AND_BACK"
Default value: "AS_GRAPHICS"
Access type: inputOutput
Referenced by HapticsOptions(), and H3D::Sphere::traverseSG().
H3DUniquePtr< SFBool > H3D::HapticsOptions::useBoundTree |
If true the boundTree field is used in the X3DGeometryNodes in order to extract which triangles are close enough to the proxy.
However if it is unwanted that the boundTree is used(e.g. because the geometry changes all the time and the overhead for rebuilding the boundTree is too large, this field can be set to false and the closest triangles will be extracted with OpenGL instead.
Default value: true
Access type: inputOutput
Referenced by HapticsOptions().