Tracked Device | This node can be configured to provide tracking information for connected HMD's, Controller and References | |
Tracked HMD | This node provides the tracking information of a connected Head Mounted Display | |
Tracked Vive Controller | This node provides the tracking information and button presses of a connected HTC Vive Controller or Samsung Odyssey Controller | |
Tracked Oculus Controller | This node provides the tracking information and button presses of a connected Oculus Rift Controller | |
Tracked Reference | This node provides the tracking information for reference elements e.g. HTC Vive Base Stations, Vive Tracker or Oculus Rift Sensors | |
Draw Tracked Device | This node can be configured to provide the meshes for connected HMD's, Controller and References | |
Draw HMD | This node provides the meshes of the connected Head Mounted Display | |
Draw Vive Controller | This node provides the meshes of the connected HTC Vive Controller. | |
Draw Oculus Controller | This node provides the meshes of the connected Oculus Rift Controller | |
Draw Odyssey Controller | This node provides the meshes of the connected Samsung Odyssey Controller | |
Draw Reference | This node provides the meshes of the connected references e.g. HTC Vive Base Stations, Vive Tracker or Oculus Rift Sensors | |
Draw Touch Ray | This node draws the ray of the referenced controller regarding its Touch Method. |
Ventuz has introduced built-in support for certain VR devices and offers a range of Nodes to use the Head Mounted Display inside a Ventuz Scene.
A detailed description how to work with VR in Ventuz can be found here and the Nodes to implement VR in your scene are described in the following sections.
The Tracked Device provides you with the tracking and touch information of the device that is selected in the Device Property Group. It behaves similar to an Axis Node and allows you to position children objects with the tracked device position. Beside that it draws a simple mesh of the device that can be enabled/disabled with the Draw Property. Every Tracked Device provides the World matrix that allows you to connect objects to the position even if they are not part of the subtree with the use of a Set World Node and the Deactivated Property.
The Tracked Device has four Aliases in the Toolbox that are already preset for the right device.
The Tracked HMD Node provides the tracking information of the connected Head Mounted Display and provides its status with the Deactivated Property at the output.
A typical use case for the Tracked HMD Node is to position Elements in front of the HMD i.e a Heads Up Display that should always be in front of the viewer.
Note that the HMD can also be used for interaction. It casts an infinite ray and has the TouchTriggered property to simulate a Single Tab (click) on the object.
The Tracked Vive Controller Node provides the tracking information and button presses of the connected Vive Controller. In the Device section you can change the Id to get information from one of the three supported controllers.
1 | Menu button |
2 | Trackpad |
3 | System button |
4 | Status light |
5 | Micro-USB port |
6 | Tracking sensor |
7 | Trigger |
8 | Grip button |
The Tracked Vive Controller Node is designed to be used in conjunction with our Touch System and therefore all of our Interaction Nodes can be used with it except the Touch Ripple node since it is designed for 2D Touch only.
To modify the behavior we provide a couple of options at the Node (see below). Additionaly you can pass a haptic feedback with the Vibration method using the given Vibration Strength.
An Odyssey Controller is handled by the Tracked Vive Controller Node as well. In the Device section you can change the Id to get information from one of the three supported controllers.
1 | Trigger |
2 | Grip |
3 | Trackpad |
4 | Joystick |
5 | Button |
The Windows Button is reserved by the Mixed Reality for Windows software.
Currently the Joystick is not supported by Ventuz due to the handling of Windows Mixed Reality Controllers by the OpenVR library.
The Tracked Oculus Controller Node provides the tracking information and button presses of the connected Oculus Controller. In the Device section you can change the Id to get information from one of the three supported controllers.
1 | Pad XY Joystick |
2 | A/X Button |
3 | B/Y Button |
4 | Trigger |
5 | Grip |
The Tracked Oculus Controller Node is also designed to be used in conjunction with our Touch System and therefore all of our Interaction Nodes can be used with it except the Touch Ripple node since it is designed for 2D Touch only.
To modify the behavior we provide a couple of options at the Node (See below).
The TouchMethod defines which part of the controller interacts with the Interaction Nodes.
Touch Method | Behavior |
None | The interaction of the controller is disabled |
Volume | The controller itself has to intersect with the volume of the touchable object |
Infinite Ray | An infinitely long, straight ray |
Limited Ray | A straight ray that can be limited in world space with the TouchRange property |
Parabolic Ray | A ray that can be limited in world space with the TouchRange property and that is affected by Gravity - changeable with TouchGravity |
The same applies to the Touch Trigger Property. It allows you to change the button on the controller that is used to trigger the Single Tap (click) Event on the Interaction Nodes whenever an interactive object is hovered by the controller.
Touch Trigger | Behavior |
None | The SingleTap Event is never fired |
Trigger | The SingleTap event is triggered with the button on the back of the controller (7) |
Trackpad | The SingleTap event is triggered with the Pad on the front side of the controller (2) |
(Menu) Button | The SingleTap event is triggered with the Button above the Trackpad (1) |
The RayOnlyOnTouched makes the ray only visible if Trigger or TouchPad is touched in the according modes! Also, the Touch Enter, Touch Leave and Single Tap Events will not be triggered by the Controller. With the Button and None modes this option will be ignored and the ray is always shown.
If the controller is set to Limited Ray or Parabolic Ray the TouchRange Property allows you to adjust the interactive range of the controller within the world space.
If the RayOnlyOnTouch is disabled, the Ray is always drawn and the ray works with a standard hover function. This is for example useful to highlight Buttons
At the output of the Node, you receive all the available information of the controller such as PosX, PosY values, PadX/Y, Button triggers/booleans and so on. For the Vive Controller you receive the Battery status as well.
You can adjust and change the position and the orientation of the Ray with the RayMatrix properties. You should adjust the Ray Matrix for the Oculus Rift controllers, or else the Ray will point directly upwards. Use the RotateAzimut and RotateElevation to adjust the Ray orientation till it feels comfortable.
The Tracked Reference Node provides the tracking information of the connected reference sensors like the Vive Base Stations, Vive Tracker or Oculus Sensors. In the Device section you can change the Id to get information from one of the sixteen supported reference points.
Even though the Tracked Device itself provides a simple mesh of the different devices, in most cases this is not enough. Therefore, you can use the Draw Tracked Device Node behind a Tracked Device to have access to more options to influence the device's appearance. The type of the drawn device can be changed with the Model property group.
A Draw Tracked Device Node always has to be behind a Tracked Device Node!
Whenever a Draw Node is used switch off the Draw Property on the Tracked Device. Otherwise the mesh is drawn twice.
With the ID property you can change which device of this type to draw. You can Enable the drawing and choose to use the provided textures with UseTexture.
Make sure to use the same ID as the preceding Tracked Device!
The Draw Tracked Device Nodes are using the meshes provided by the respective libraries of the VR Equipment. If you want to use custom Meshes for this, just place a Mesh Loader node instead of the Draw Tracked Device Node!
This will draw the mesh used to represent the Head Mounted Display.
This will draw the mesh used to represent the reference sensors.
The Draw Vive Controller Node provides all subsets of the Vive Controller.
Therefore you can use multiple Controller Nodes with different subsets enabled/disabled to apply different Materials to the different parts of the mesh.
The Draw Odyssey Controller Node provides all subsets of the Odyssey Controller.
Therefore you can use multiple Controller Nodes with different subsets enabled/disabled to apply different Materials to the different parts of the mesh.
The Draw Oculus Controller Node provides all subsets of the Oculus Controller.
Therefore you can use multiple Controller Nodes with different subsets enabled/disabled to apply different Materials to the different parts of the mesh.
The Draw Touch Node is used to draw the used touch ray of a Tracked Controller. Use the same ID as the used Controller. The Ray will only be cast if you have the TouchMethod set to InfiniteRay, LimitedRay or Parabolic on the Tracked Controller Node. When set to None or Volume this node will not draw anything. Also, it will automatically draw the right type of ray, depending on the used Controller ID and scale the length of the ray accordingly.
In the DrawTouch property group you can change how the ray should be drawn. You can turn it off completely, draw a Cylinder or a Billboarded Rectangle. When drawing a Billboard you can change its width in world space with the Diameter Property. When drawing a Cylinder you can change its Diameter, its Tessellation with the Segments property and choose to Draw the Body and Caps instead.
To visualize the touch ray of a Tracked HMD you should use a texture - mapped on a rectangle placed right before the HMD. The reason for that is a cylinder or billboard will not look good when placed directly in front of your eyes.