H3D API  2.4.1
Public Member Functions | Public Attributes | Static Public Attributes | List of all members
H3D::HapticsOptions Class Reference

Specifies parameters to use when rendering an object with haptics. More...

#include <H3D/HapticsOptions.h>

Inheritance diagram for H3D::HapticsOptions:
Inheritance graph

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.
 
- Public Member Functions inherited from H3D::H3DOptionNode
 H3DOptionNode (Inst< SFNode > _metadata=0)
 Constructor.
 
virtual string defaultXMLContainerField ()
 Returns the default xml containerField attribute value. More...
 
- Public Member Functions inherited from H3D::X3DNode
 X3DNode (Inst< SFNode > _metadata=0)
 Constructor.
 
X3DMetadataObjectgetMetadataByName (const string &_name)
 Given a name, the first X3DMetadataObject in the metadata field that matches that name is returned. More...
 
- Public Member Functions inherited from H3D::Node
 Node ()
 Constructor.
 
virtual Nodeclone (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.
 
X3DPrototypeInstancegetProtoInstanceParent ()
 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 FieldgetField (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< SFStringtouchableFace
 Specifies which sides of the shapes to render haptically. More...
 
H3DUniquePtr< SFFloatmaxDistance
 The maximum distance in metres the proxy can be from a primitive in order for it to be rendered haptically. More...
 
H3DUniquePtr< SFFloatlookAheadFactor
 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< SFBooluseBoundTree
 If true the boundTree field is used in the X3DGeometryNodes in order to extract which triangles are close enough to the proxy. More...
 
H3DUniquePtr< SFBoolinterpolateForceEffects
 If true force effects will be smoothed between graphical frames. More...
 
H3DUniquePtr< SFStringdynamicMode
 Determines when geometries should be considered dynamic, i.e. More...
 
- Public Attributes inherited from H3D::H3DOptionNode
H3DUniquePtr< FieldupdateOption
 Field to collect update event from every option parameters, all inherited Option Node should route its option parameter fields to it.
 
- Public Attributes inherited from H3D::X3DNode
H3DUniquePtr< SFNodemetadata
 Meta data about the node. More...
 

Static Public Attributes

static H3DNodeDatabase database
 The H3DNodeDatabase for this node.
 
- Static Public Attributes inherited from H3D::X3DNode
static H3DNodeDatabase database
 The H3DNodeDatabase for this node.
 

Additional Inherited Members

- Public Types inherited from H3D::Node
typedef std::map< Node *, Node * > DeepCopyMap
 A map type used during a deep copy clone() to map from original nodes to cloned nodes.
 
- Static Public Member Functions inherited from H3D::Node
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.
 
- Protected Member Functions inherited from H3D::Node
void cloneFieldValue (Field &_from, Field &_to, bool deepCopy, DeepCopyMap &deepCopyMap)
 A helper function for the clone() method. More...
 
- Static Protected Member Functions inherited from H3D::Node
static NodegetClonedInstance (Node *original, bool deepCopy, DeepCopyMap &deepCopyMap)
 A helper function for nodes that implement clone() More...
 

Detailed Description

Specifies parameters to use when rendering an object with haptics.

Examples:

Member Data Documentation

◆ dynamicMode

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:

  • "ALWAYS" Geometry is always considered dynamic
  • "NEVER" Geometry is never considered dynamic
  • "TRANSFORM_CHANGED" Geometry is considered dynamic if it has moved between two scenegraph loops.

Valid values: "ALWAYS", "NEVER" or "TRANSFORM_CHANGED" Default value: "TRANSFORM_CHANGED"
Access type: inputOutput

Referenced by HapticsOptions(), and H3D::Sphere::traverseSG().

◆ interpolateForceEffects

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().

◆ lookAheadFactor

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().

◆ maxDistance

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().

◆ touchableFace

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().

◆ useBoundTree

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().


The documentation for this class was generated from the following files: