H3D API
2.4.1
|
ClutchedDevice is a wrapper for a H3DHapticsDevice which adds clutching functionality. More...
#include <H3D/ClutchedDevice.h>
Classes | |
class | EnableClutch |
Enables/Disbles the clutching. More... | |
class | ResetClutchOrientation |
If True, resets the orientation offset due to clutching. More... | |
class | ResetClutchPosition |
If True, resets the position offset due to clutching. More... | |
Public Member Functions | |
ClutchedDevice (Inst< SFVec3f > _devicePosition=0, Inst< SFRotation > _deviceOrientation=0, Inst< TrackerPosition > _trackerPosition=0, Inst< TrackerOrientation > _trackerOrientation=0, Inst< SFMatrix4f > _positionCalibration=0, Inst< SFRotation > _orientationCalibration=0, Inst< SFVec3f > _proxyPosition=0, Inst< WeightedProxy > _weightedProxyPosition=0, Inst< SFFloat > _proxyWeighting=0, Inst< SFBool > _mainButton=0, Inst< SFBool > _secondaryButton=0, Inst< SFInt32 > _buttons=0, Inst< SFVec3f > _force=0, Inst< SFVec3f > _torque=0, Inst< SFInt32 > _inputDOF=0, Inst< SFInt32 > _outputDOF=0, Inst< SFInt32 > _hapticsRate=0, Inst< SFInt32 > _desiredHapticsRate=0, Inst< SFNode > _stylus=0, Inst< SFHapticsDevice > _hapticsDevice=0, Inst< EnableClutch > _enableClutch=0, Inst< ResetClutchOrientation > _resetClutchOrientation=0, Inst< ResetClutchPosition > _resetClutchPosition=0, Inst< SFVec3f > _unclutchedPosition=0, Inst< SFRotation > _unclutchedOrientation=0) | |
Constructor. | |
virtual void | initialize () |
Initialize the node. | |
virtual ErrorCode | initDevice () |
Does all the initialization needed for the device before starting to use it. | |
virtual ErrorCode | releaseDevice () |
Perform cleanup and let go of all device resources that are allocated. More... | |
virtual void | renderShapes (const HapticShapeVector &shapes, unsigned int layer=0) |
Perform haptic rendering for the given HapticShape instances. More... | |
virtual void | updateDeviceValues () |
This function is used to transfer device values, such as position, button status etc from the realtime loop to the fields of H3DHapticsDevice, and possible vice versa. | |
![]() | |
H3DHapticsDevice (Inst< SFVec3f > _devicePosition=0, Inst< SFRotation > _deviceOrientation=0, Inst< TrackerPosition > _trackerPosition=0, Inst< TrackerOrientation > _trackerOrientation=0, Inst< SFMatrix4f > _positionCalibration=0, Inst< SFRotation > _orientationCalibration=0, Inst< SFVec3f > _proxyPosition=0, Inst< WeightedProxy > _weightedProxyPosition=0, Inst< SFFloat > _proxyWeighting=0, Inst< SFBool > _mainButton=0, Inst< SFBool > _secondaryButton=0, Inst< SFInt32 > _buttons=0, Inst< SFVec3f > _force=0, Inst< SFVec3f > _torque=0, Inst< SFInt32 > _inputDOF=0, Inst< SFInt32 > _outputDOF=0, Inst< SFInt32 > _hapticsRate=0, Inst< SFInt32 > _desiredHapticsRate=0, Inst< SFNode > _stylus=0, Inst< SFHapticsRendererNode > _hapticsRenderer=0, Inst< MFVec3f > _proxyPositions=0, Inst< SFBool > _followViewpoint=0, Inst< SFVec3f > _deviceVelocity=0, Inst< TrackerVelocity > _trackerVelocity=0, Inst< SFString > _profiledResult=0, Inst< SFVec3f > _deviceAngularVelocity=0, Inst< TrackerAngularVelocity > _trackerAngularVelocity=0) | |
Constructor. | |
virtual | ~H3DHapticsDevice () |
Destuctor. | |
Vec3f | getPreviousProxyPosition (unsigned int layer=0) |
Get the proxy position from the previous loop for a certain layer. More... | |
const vector< Vec3f > & | getPreviousProxyPositions () |
Get all previous proxy positions. | |
virtual string | defaultXMLContainerField () |
Returns the default xml containerField attribute value. More... | |
HAPI::HAPIHapticsDevice * | getHAPIDevice () |
Get the HAPIHapticsDevice that is encapsulated by this node. | |
virtual ErrorCode | enableDevice () |
Enable the device. Positions can be read and force can be sent. | |
virtual ErrorCode | disableDevice () |
Temporarily disable the device. More... | |
H3DUtil::PeriodicThreadBase * | getThread () |
Get the thread that is used to run this haptics device. | |
virtual void | postInit () |
This function is called for all devices in a DeviceInfo node for which the initDevice has been called. More... | |
virtual void | preRender () |
This function is called at the start of each scenegraph loop before any calls to other HapticDevice functions and can be used to perform any necessary operation that are needed for the other calls to function properly. | |
virtual void | postRender () |
This function is called at the end of each scenegraph loop after all calls to other HapticDevice functions and can be used to perform any necessary operation that are needed. | |
virtual void | renderStylus () |
Render the stylus of the device wint OpenGL. | |
virtual void | renderEffects (const HapticEffectVector &effects) |
Perform haptic rendering for the given HAPIForceEffect instances. 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< SFHapticsDevice > | hapticsDevice |
The wrapped haptics device to clutch. More... | |
H3DUniquePtr< EnableClutch > | enableClutch |
Enable and disable the clutch. More... | |
H3DUniquePtr< ResetClutchOrientation > | resetClutchOrientation |
Reset clutch orientation. More... | |
H3DUniquePtr< ResetClutchPosition > | resetClutchPosition |
Reset clutch position. More... | |
H3DUniquePtr< SFVec3f > | unclutchedPosition |
The position ignoring clutching. More... | |
H3DUniquePtr< SFRotation > | unclutchedOrientation |
The orientation ignoring clutching. More... | |
![]() | |
H3DUniquePtr< SFVec3f > | devicePosition |
The position of the device given in the coordinate system of the device. More... | |
H3DUniquePtr< SFRotation > | deviceOrientation |
The orientation of the device given in the coordinate system of the device. More... | |
H3DUniquePtr< TrackerPosition > | trackerPosition |
The position of the device in the world coordinates of the API. More... | |
H3DUniquePtr< TrackerOrientation > | trackerOrientation |
The orientation of the device in the world coordinates of the API. More... | |
H3DUniquePtr< SFMatrix4f > | positionCalibration |
The calibration matrix between devicePosition and trackerPosition. More... | |
H3DUniquePtr< SFMatrix4f > | adjustedPositionCalibration |
The calibration matrix between devicePosition and trackerPosition adjusted with the movement of the viewpoint. | |
H3DUniquePtr< SFRotation > | orientationCalibration |
The calibration rotation between deviceOrientation and trackerOrientation. More... | |
H3DUniquePtr< SFRotation > | adjustedOrnCalibration |
The calibration rotation between deviceOrientation and trackerOrientation adjusted with the movement of the viewpoint. | |
H3DUniquePtr< SFVec3f > | proxyPosition |
The position of the proxy used in the haptic rendering(layer 0). More... | |
H3DUniquePtr< WeightedProxy > | weightedProxyPosition |
A weighted position between proxyPosition and trackerPosition. More... | |
H3DUniquePtr< SFFloat > | proxyWeighting |
The weighting between proxyPosition and trackerPosition when calculating weightedProxyPosition. More... | |
H3DUniquePtr< SFBool > | mainButton |
The state of the main button(button 0). More... | |
H3DUniquePtr< SFBool > | secondaryButton |
The state of the secondary button (button 1). More... | |
H3DUniquePtr< SFInt32 > | buttons |
The state of all buttons. More... | |
H3DUniquePtr< SFVec3f > | force |
The approximation of the force that has been rendered during the last scenegraph loop. More... | |
H3DUniquePtr< SFVec3f > | torque |
The approximation of the torque that has been rendered during the last scenegraph loop. More... | |
H3DUniquePtr< SFInt32 > | inputDOF |
The degrees of freedom supported as input. More... | |
H3DUniquePtr< SFInt32 > | outputDOF |
The degrees of freedom supported as output, i.e. More... | |
H3DUniquePtr< SFInt32 > | hapticsRate |
The update rate of the servoloop of the H3DHapticsDevice. More... | |
H3DUniquePtr< SFInt32 > | desiredHapticsRate |
The desired update rate of the servoloop of the H3DHapticsDevice. More... | |
H3DUniquePtr< SFTime > | hapticsLoopTime |
The time spent in the last haptics loop(in seconds) A value of -1 means that no haptics loop has been completed yet. More... | |
H3DUniquePtr< SFNode > | stylus |
The Node used as the visual representation of the stylus. More... | |
H3DUniquePtr< SFBool > | initialized |
true if the device is initialized and ready for calls to updateDeviceValues() and renderObjects(). More... | |
H3DUniquePtr< SFHapticsRendererNode > | hapticsRenderer |
Specifies the haptics rendering algorithm to use to generate forces from geometric shapes. More... | |
H3DUniquePtr< MFVec3f > | proxyPositions |
The positions of the proxies for each layer used in haptic rendering(layer 0). More... | |
H3DUniquePtr< SetEnabled > | set_enabled |
Enable/disable the device. More... | |
H3DUniquePtr< SFBool > | enabled |
true if the device is enabled, e.g. More... | |
H3DUniquePtr< SFBool > | followViewpoint |
true if the device should follow the viewpoint. More... | |
H3DUniquePtr< SFVec3f > | deviceVelocity |
The velocity of the device in the coordinate system of the device. More... | |
H3DUniquePtr< TrackerVelocity > | trackerVelocity |
The velocity of the device in the world coordinates of the API. More... | |
H3DUniquePtr< SFFloat > | forceLimit |
The maximum force(in N) we want the device to render. More... | |
H3DUniquePtr< SFFloat > | forceScale |
Set the scaling of the output force. More... | |
H3DUniquePtr< SFBool > | deadmansSwitch |
This is an alternative operational safety mode. More... | |
H3DUniquePtr< SFFloat > | torqueLimit |
The maximum torque(in Nm) we want the device to render. More... | |
H3DUniquePtr< SFVec3f > | deviceAngularVelocity |
The angular velocity of the device in the coordinate system of the device. More... | |
H3DUniquePtr< TrackerAngularVelocity > | trackerAngularVelocity |
The angular velocity of the device in the world coordinates of the API. More... | |
Static Public Attributes | |
static H3DNodeDatabase | database |
Node database entry. | |
![]() | |
static H3DNodeDatabase | database |
Node database entry. | |
Additional Inherited Members | |
![]() | |
typedef SFMatrix4f | PosCalibration |
typedef SFRotation | OrnCalibration |
![]() | |
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... | |
![]() | |
TimeStamp | last_effect_change |
The time for the last call to the renderEffects function. | |
ClutchedDevice is a wrapper for a H3DHapticsDevice which adds clutching functionality.
The clutching can be useful when the workspace and calibration of the haptic device does not allow comfortable control.
Examples:
|
virtual |
Perform cleanup and let go of all device resources that are allocated.
After a call to this function no haptic rendering can be performed on the device until the initDevice() function has been called again.
Reimplemented from H3D::H3DHapticsDevice.
References hapticsDevice, and H3D::H3DHapticsDevice::releaseDevice().
|
virtual |
Perform haptic rendering for the given HapticShape instances.
HapticShape objects that are to be be rendered haptically must be rendered with this function each scenegraph loop. Used in PhantomDevice to determine when to start the scheduler for OpenHaptics in order to avoid random crashes when creating hlContext.
shapes | The haptic shapes to render. |
layer | The haptic layer to render them in. |
Reimplemented from H3D::H3DHapticsDevice.
References hapticsDevice, and H3D::H3DHapticsDevice::renderShapes().
H3DUniquePtr< EnableClutch > H3D::ClutchedDevice::enableClutch |
Enable and disable the clutch.
Access type: inputOutput
Default value: False
Referenced by ClutchedDevice().
H3DUniquePtr<SFHapticsDevice> H3D::ClutchedDevice::hapticsDevice |
The wrapped haptics device to clutch.
Access type: inputOutput
Referenced by initDevice(), initialize(), releaseDevice(), renderShapes(), and updateDeviceValues().
H3DUniquePtr< ResetClutchOrientation > H3D::ClutchedDevice::resetClutchOrientation |
Reset clutch orientation.
Access type: inputOutput
Default value: False
Referenced by ClutchedDevice().
H3DUniquePtr< ResetClutchPosition > H3D::ClutchedDevice::resetClutchPosition |
Reset clutch position.
Access type: inputOutput
Default value: False
Referenced by ClutchedDevice().
H3DUniquePtr< SFRotation > H3D::ClutchedDevice::unclutchedOrientation |
H3DUniquePtr< SFVec3f > H3D::ClutchedDevice::unclutchedPosition |