This page has been translated automatically.
Video Tutorials
Interface
Essentials
Advanced
How To
Basics
Rendering
Professional (SIM)
UnigineEditor
Interface Overview
Assets Workflow
Version Control
Settings and Preferences
Working With Projects
Adjusting Node Parameters
Setting Up Materials
Setting Up Properties
Lighting
Sandworm
Using Editor Tools for Specific Tasks
Extending Editor Functionality
Built-in Node Types
Nodes
Objects
Effects
Decals
Light Sources
Geodetics
World Nodes
Sound Objects
Pathfinding Objects
Players
Programming
Fundamentals
Setting Up Development Environment
Usage Examples
C++
C#
UnigineScript
UUSL (Unified UNIGINE Shader Language)
Plugins
File Formats
Materials and Shaders
Rebuilding the Engine Tools
GUI
Double Precision Coordinates
API
Animations-Related Classes
Containers
Common Functionality
Engine-Related Classes
Filesystem Functionality
GUI-Related Classes
Math Functionality
Node-Related Classes
Objects-Related Classes
Networking Functionality
Pathfinding-Related Classes
Physics-Related Classes
Plugins-Related Classes
IG Plugin
CIGIConnector Plugin
Rendering-Related Classes
VR-Related Classes
Content Creation
Content Optimization
Materials
Material Nodes Library
Miscellaneous
Input
Math
Matrix
Textures
Art Samples
Tutorials

Unigine::InputVRDevice Class

Header: #include <UnigineInput.h>

The base class for VR devices. It provides access to properties and settings that all VR devices have. For example, you can get a device name, check if it has a battery, or whether it will drift in a specific direction, and so on.

Also, the class functionality allows getting the model of the VR device. For example, you can use it for controller rendering:

  1. Get the controller to render by using the corresponding methods of the Input class. For example, to get the left controller, call getVRControllerLeft().
  2. Check it exists.
  3. Get the number of its models via getNumModels().
  4. Load its meshes and textures individually, one by one, or get the entire mesh at once. Note that there may be a delay during the loading process.
  5. Render the loaded meshes with textures.

InputVRDevice Class

Enums

TYPE#

NameDescription
INPUT_VR_UNKNOWN = 0Unknown VR device.
INPUT_VR_DEVICE = 1VR device.
INPUT_VR_HEAD = 2Head-mounted display.
INPUT_VR_CONTROLLER = 3Controller.
INPUT_VR_TRACKER = 4Tracker.
INPUT_VR_BASE_STATION = 5Base station.
NUM_TYPES = 6Total number of types of the VR devices.

TRANSFORM_TYPE#

NameDescription
TRANSFORM_TYPE_BEGIN = 0Beginning of the transform type range.
TRANSFORM_TYPE_GRIP = 0A pose that allows applications to reliably render a virtual object held in the user’s hand, whether it is tracked directly or by a motion controller. The grip pose is defined as follows:
  • The grip position:

    • For tracked hands: The user’s palm centroid when closing the fist, at the surface of the palm.
    • For handheld motion controllers: A fixed position within the controller that generally lines up with the palm centroid when held by a hand in a neutral position. This position should be adjusted left or right to center the position within the controller’s grip.
  • The grip orientation’s +X axis: When you completely open your hand to form a flat 5-finger pose, the ray that is normal to the user’s palm (away from the palm in the left hand, into the palm in the right hand).
  • The grip orientation’s -Z axis: When you close your hand partially (as if holding the controller), the ray that goes through the center of the tube formed by your non-thumb fingers, in the direction of little finger to thumb.
  • The grip orientation’s +Y axis: orthogonal to +Z and +X using the right-hand rule.
TRANSFORM_TYPE_GRIP_SURFACE = 1(OpenXR 1.1+ only) A pose that allows applications to reliably anchor visual content relative to the user’s physical hand, whether the user’s hand is tracked directly or its position and orientation is inferred by a physical controller. The grip_surface pose is defined as follows:
  • The grip_surface position: The user’s physical palm centroid, at the surface of the palm. For the avoidance of doubt, the palm does not include fingers.
  • The grip_surface orientation’s +X axis: When a user is holding the controller and straightens their index fingers pointing forward, the ray that is normal (perpendicular) to the user’s palm (away from the palm in the left hand, into the palm in the right hand).
  • The grip_surface orientation’s -Z axis: When a user is holding the controller and straightens their index finger, the ray that is parallel to their finger’s pointing direction.
  • The grip_surface orientation’s +Y axis: orthogonal to +Z and +X using the right-hand rule.
TRANSFORM_TYPE_AIM = 2(OpenXR only) A pose that allows applications to point in the world using the input source, according to the platform’s conventions for aiming with that kind of source. The aim pose is defined as follows:
  • For tracked hands: The ray that follows platform conventions for how the user aims at objects in the world with their entire hand, with +Y up, +X to the right, and -Z forward. The ray chosen will be runtime-dependent, often a ray emerging from the hand at a target pointed by moving the forearm.
  • For handheld motion controllers: The ray that follows platform conventions for how the user targets objects in the world with the motion controller, with +Y up, +X to the right, and -Z forward. This is usually for applications that are rendering a model matching the physical controller, as an application rendering a virtual object in the user’s hand likely prefers to point based on the geometry of that virtual object. The ray chosen will be runtime-dependent, although this will often emerge from the frontmost tip of a motion controller.
TRANSFORM_TYPE_END = 2End of the transform type range.
NUM_TRANSFORM_TYPES = 2Total number of transformation types.

Members


bool isAvailable ( ) const#

Returns a value indicating if the VR device is available.

Return value

true if the device is available; otherwise, false.

int getNumber ( ) const#

Returns the index of the VR device.

Return value

Device index.

const char * getName ( ) const#

Returns the name of the VR device.

Return value

Device name.

Input::DEVICE getDeviceType ( ) const#

Returns the type of the input device (wheel, throttle, etc.).

Return value

Input device type.

InputVRDevice::TYPE getType ( ) const#

Returns the type of the VR device (HMD, controller, base station, etc.).

Return value

VR device type.

const char * getDeviceModelName ( ) const#

Returns the name of the model of the VR device.

Return value

Model name.

bool hasYawDrift ( ) const#

Returns a value indicating if the VR device will drift in a specific direction.

Return value

true if the device has yaw drift; otherwise, false.

bool isCharging ( ) const#

Returns a value indicating if the VR device is charging.

Return value

true if the device is charging; otherwise, false.

bool hasBattery ( ) const#

Returns a value indicating if the VR device has a battery.

Return value

true if the device has the battery; otherwise, false.

bool canReportBatteryValue ( ) const#

Returns a value indicating if the VR device provides the battery status.

Return value

true if the battery status is provided; otherwise, false.

float getBatteryValue ( ) const#

Returns the current battery level.

Return value

Battery level, in percents.

String getModelNumber ( ) const#

Returns the model number for the VR device.

Return value

Model number.

String getSerialNumber ( ) const#

Returns the serial number of the VR device.

Return value

Seril number.

String getManufacturerName ( ) const#

Returns the name of the VR device's vendor.

Return value

Vendor name.

unsigned long long getHardwareRevision ( ) const#

Returns the hardware revision of the VR device.

Return value

Hardware revision.

unsigned long long getFirmwareVersion ( ) const#

Returns the firmware version of the VR device.

Return value

Firmware version

Math::Mat4 getWorldTransform ( InputVRDevice::TRANSFORM_TYPE type = Enum.InputVRDevice.TRANSFORM_TYPE.GRIP ) const#

Retuns the world transformation of the VR device for the specified transformation type.

Arguments

Return value

World transformation matrix.

Math::mat4 getTransform ( InputVRDevice::TRANSFORM_TYPE type = Enum.InputVRDevice.TRANSFORM_TYPE.GRIP ) const#

Returns the local transformation of the VR device for the specified transformation type.

Arguments

Return value

Local transformation matrix.

Math::vec3 getLinearVelocity ( InputVRDevice::TRANSFORM_TYPE type = Enum.InputVRDevice.TRANSFORM_TYPE.GRIP ) const#

Returns the linear velocity of the VR device for the specified transformation type.

Arguments

Return value

Linear velocity.

Math::vec3 getAngularVelocity ( InputVRDevice::TRANSFORM_TYPE type = Enum.InputVRDevice.TRANSFORM_TYPE.GRIP ) const#

Returns the angular velocity of the VR device for the specified transformation type.

Arguments

Return value

Angular velocity.

Math::vec3 getAngularAcceleration ( InputVRDevice::TRANSFORM_TYPE type = Enum.InputVRDevice.TRANSFORM_TYPE.GRIP ) const#

Returns the angular acceleration of the VR device for the specified transformation type.

Arguments

Return value

Angular acceleration.

bool isTransformValid ( InputVRDevice::TRANSFORM_TYPE type = Enum.InputVRDevice.TRANSFORM_TYPE.GRIP ) const#

Returns a value indicating if transformation of the VR device for the specified transformation type is valid.

Arguments

Return value

true if transformation is valid; otherwise, false.

bool isVelocityValid ( InputVRDevice::TRANSFORM_TYPE type = Enum.InputVRDevice.TRANSFORM_TYPE.GRIP ) const#

Returns a value indicating if the velocity of the VR device for the specified transformation type is valid.

Arguments

Return value

true if velocity is valid; otherwise, false.

bool isTransformTypeSupported ( InputVRDevice::TRANSFORM_TYPE type = Enum.InputVRDevice.TRANSFORM_TYPE.GRIP ) const#

Returns a value indicating if the VR device supports the specified transformation type.

Arguments

Return value

true if transformation type is supported; otherwise, false.

int getNumModels ( ) const#

Returns the number of VR device's models.

Return value

Number of models.

Math::mat4 getModelTransform ( int num ) const#

Returns the local transformation of the given model.

Arguments

  • int num - Model index.

Return value

Local transformation matrix of the model.

Math::Mat4 getModelWorldTransform ( int num ) const#

Returns the world transformation of the given model.

Arguments

  • int num - Model index.

Return value

World transformation matrix of the model.

Ptr<Mesh> getModelMesh ( int num ) #

Returns the mesh of the given model.

Arguments

  • int num - Model index.

Return value

Model mesh.

Ptr<Texture> getModelTexture ( int num ) #

Returns the texture of the given model.

Arguments

  • int num - Model index.

Return value

Model texture.

const char * getModelName ( int num ) #

Returns the name of the given model.

Arguments

  • int num - Model index.

Return value

Model name.

Ptr<Mesh> getCombinedModelMesh ( ) const#

Returns the entire mesh of the combined model of the VR device.
Notice
You cannot animate this mesh. However, if you get a mesh of each model individually, it will be automatically animated.

Return value

Mesh of the combined model.

Ptr<Texture> getCombinedModelTexture ( ) const#

Returns the texture of the combined model of the VR device.

Return value

Texure of the combined model.

const char * getCombinedModelName ( ) const#

Returns the name of the combined model of the VR device.

Return value

Name of the combined model.
Last update: 2024-07-12
Build: ()