HVR toolkit is an extension of H3D API. The acronym can stand for "H3D Virtual Reality" or "Haptic Virtual Reality" and this is a package provides a few nodes required to set up a Virtual Reality environment (VR) with H3D API. It supports a range of tracking standards and viewpoints suitable for different types of VR systems.
For the successful deployment of VR with H3D API there are three types of components provided by this package: viewpoint nodes that implement Spatial Monitor VR and Head Mounted Display, respectively, depth camera wrappers, tracker nodes that use depth camera data or forwards other tracker information, tracker filters, and scripts that helps in the setup of the VR scene.
There are two different viewpoint types used in VR: Spatial Monitor and Head Mounted Display. These behaviours are implemented by the SMViewpoint and the HMDViewpoint, respectively.
A viewpoint is typically associated with a tracker that specifies the position and orientation of the user's head. There are several tracker nodes available in this package that can be used for this purpose, but also for other purposes, for example controlling objects or non-haptic interaction. New in HVR 2 is that tracker data is represented as lists of positions and orientations which means that one tracker can track several points and also change the number of tracked points over time, and the lists need to be reduced before applying to a viewpoint or other features that assumes a single point.
- HVR::DepthDataCircleTracker The depth data circle tracker uses depth data from a depth camera to track circles, such as holes in a calibration board or the gesture where the thumb and index finger meets to form a ring
- HVR::DepthDataExtremeTracker The depth data object tracker uses depth data from a depth camera to track a free floating object, such as the head of a person that a Kinect is filming from above
- HVR::DepthDataObjectTracker The depth data object tracker uses depth data from a depth camera to track a free floating object, such as the head of a person that a Kinect is filming from above
- HVR::DepthDataSilhouetteTracker The depth data silhouette tracker tracks the most extreme point of the silhouette of the specified camera's depth data
- HVR::GadgetTracker Tracker node that is using Gadgeteer to read off information from any supported tracker
- HVR::InterSenseTracker The intersense tracker
- HVR::MarkerTracker This is a simple node that represents the tracking of a ARToolkit marker
- HVR::VRPNTracker is the most powerful interface since it allows access to all tracker systems supported by VRPN.
Tracker filters follow the decorator pattern and can thus be used in place of any tracker and also be chained together to form a filter pipeline.
- HVR::AdaptiveSmoothingTrackerFilter The adaptive smoothing tracker filter reorders the tracker data and interpolates with the data previously provided to smooth out noise
- HVR::BoundTrackerFilter The bound tracker filter removes calibrated position and orientation data when they are located outside of a bound specified through the boundCenter and boundSize fields
- HVR::OffsetTrackerFilter The offset tracker filter uses the position and orientation data of a child tracker and offsets the position by a certain vector in the local space of the tracked point, i e using the tracked point's orientation as specified by the trackerOrientation field
- HVR::SinglePointTrackerFilter This filter filters away all data except the first point provided by the tracker being filtered
It is recommended that some specific settings are changed in H3D for the system to follow the principles of VR, for example not having haptic devices follow the viewpoint since devices, viewpoint and display in VR are all defined in the same coordinates system. These settings are automatically corrected by the script CorrectViewpoint.py
There are also several scripts for navigation and for interaction. Read more about these in the page about Candy.