H3D API
2.4.1
|
SpringEffect is a localized haptic effect where the haptics device is pulled towards to a point in space in a spring like manner, i.e. More...
#include <H3D/SpringEffect.h>
Public Member Functions | |
SpringEffect (Inst< SFVec3f > _position=0, Inst< MFVec3f > _force=0, Inst< SFFloat > _springConstant=0, Inst< SFFloat > _startDistance=0, Inst< SFFloat > _escapeDistance=0, Inst< SFBool > _active=0, Inst< MFInt32 > _deviceIndex=0, Inst< SFNode > _metadata=0, Inst< SFFloat > _damping=0, Inst< SFFloat > _positionInterpolation=0, Inst< SFVec3f > _interpolatedPosition=0) | |
Constructor. | |
virtual void | traverseSG (TraverseInfo &ti) |
Adds the effect if within startDistance and removes it when going outside escapeDistance. More... | |
![]() | |
H3DForceEffect (Inst< SFNode > _metadata=0, Inst< MFInt32 > _deviceIndex=0) | |
Constructor. | |
![]() | |
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 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... | |
Public Attributes | |
H3DUniquePtr< SFVec3f > | position |
The position of the spring. More... | |
H3DUniquePtr< MFVec3f > | force |
The force applied by the spring to the haptics device since the last scenegraph update. More... | |
H3DUniquePtr< SFFloat > | springConstant |
The spring constant of the spring. More... | |
H3DUniquePtr< SFFloat > | startDistance |
When the haptics device comes within this distance the spring effect is activated. More... | |
H3DUniquePtr< SFFloat > | escapeDistance |
If the effect is active, the effect will be deactivated if the haptics device moves outside this distance. More... | |
H3DUniquePtr< SFBool > | active |
Active is true when the spring effect is active. More... | |
H3DUniquePtr< SFFloat > | damping |
The damping constant to use in the force calculation. More... | |
H3DUniquePtr< SFFloat > | positionInterpolation |
The positionInterpolation is used to force the haptics loop to not move all the way from the last position to the new position if the position field, or any of the transform nodes this SpringEffect resides in, changes frequently. More... | |
H3DUniquePtr< SFVec3f > | interpolatedPosition |
The interpolated position of the spring. More... | |
AutoRefVector< HAPI::HapticSpring > | haptic_spring |
Internal haptic spring instance. | |
![]() | |
H3DUniquePtr< MFInt32 > | deviceIndex |
A list of indices that tells which haptics devices to render the force on. More... | |
![]() | |
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. | |
![]() | |
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... | |
SpringEffect is a localized haptic effect where the haptics device is pulled towards to a point in space in a spring like manner, i.e.
the force is proportional to the the distance of the haptics device from the spring position. The effect will not start until the haptics device is within startDistance from the spring position. The effect will stop when the haptics device is further away than escapeDistance from the spring position. deviceIndex decides on which haptics device this effect should be on. The force generated will be force = (position - device_position) * springConstant - damping * device_velocity
Examples:
|
virtual |
Adds the effect if within startDistance and removes it when going outside escapeDistance.
ti | The TraverseInfo object containing information about the traversal. |
Reimplemented from H3D::Node.
References active, H3D::TraverseInfo::addForceEffect(), damping, H3D::H3DForceEffect::deviceIndex, escapeDistance, force, H3D::TraverseInfo::getAccForwardMatrix(), H3D::TraverseInfo::getAccInverseMatrix(), H3D::TraverseInfo::getHapticsDevices(), H3D::X3D::Convert::getValue(), haptic_spring, H3D::TraverseInfo::hapticsEnabled(), interpolatedPosition, length(), position, positionInterpolation, H3DUtil::AutoRefVector< class >::resize(), H3DUtil::AutoRefVector< class >::set(), H3DUtil::AutoRefVector< class >::size(), springConstant, and H3D::H3DHapticsDevice::trackerPosition.
H3DUniquePtr< SFBool > H3D::SpringEffect::active |
Active is true when the spring effect is active.
Access type: outputOnly
Default value: FALSE
Referenced by SpringEffect(), and traverseSG().
H3DUniquePtr< SFFloat > H3D::SpringEffect::damping |
The damping constant to use in the force calculation.
force = (position - device_position) * springConstant - damping * device_velocity
Access type: inputOutput
Default value: 0
Referenced by SpringEffect(), and traverseSG().
H3DUniquePtr< SFFloat > H3D::SpringEffect::escapeDistance |
If the effect is active, the effect will be deactivated if the haptics device moves outside this distance.
Access type: inputOutput
Default value: 0.01
Referenced by SpringEffect(), and traverseSG().
H3DUniquePtr< MFVec3f > H3D::SpringEffect::force |
The force applied by the spring to the haptics device since the last scenegraph update.
Access type: outputOnly
Default value: Vec3f( 0, 0, 0 )
Referenced by traverseSG().
H3DUniquePtr< SFVec3f > H3D::SpringEffect::interpolatedPosition |
The interpolated position of the spring.
See positionInterpolation.
Access type: outputOnly
Referenced by traverseSG().
H3DUniquePtr< SFVec3f > H3D::SpringEffect::position |
The position of the spring.
Access type: inputOutput
Default value: Vec3f( 0, 0, 0 )
Referenced by SpringEffect(), and traverseSG().
H3DUniquePtr< SFFloat > H3D::SpringEffect::positionInterpolation |
The positionInterpolation is used to force the haptics loop to not move all the way from the last position to the new position if the position field, or any of the transform nodes this SpringEffect resides in, changes frequently.
This can be used to not get big changes in force magnitude between graphics frames. Default value of 1 means that no position smoothing is introduced.
Access type: inputOutput
Default value: 1
Allowed values: [0,1]
Referenced by SpringEffect(), and traverseSG().
H3DUniquePtr< SFFloat > H3D::SpringEffect::springConstant |
The spring constant of the spring.
force = (position - device_position) * springConstant - damping * device_velocity
Access type: inputOutput
Default value: 100
Referenced by SpringEffect(), and traverseSG().
H3DUniquePtr< SFFloat > H3D::SpringEffect::startDistance |
When the haptics device comes within this distance the spring effect is activated.
Access type: inputOutput
Default value: 0.01
Referenced by SpringEffect().