UxrHandTracking Class
Base class for hand tracking. Includes base functionality to update the avatar and calibrate the skeleton based on a well-known pose.
Inheritance Hierarchy
System.Object
Object
Component
Behaviour
MonoBehaviour
UltimateXR.Core.Components.UxrComponent
UltimateXR.Core.Components.UxrComponent(UxrTrackingDevice)
UltimateXR.Core.Components.Composite.UxrAvatarComponent(UxrTrackingDevice)
UltimateXR.Devices.UxrTrackingDevice
UltimateXR.Devices.UxrHandTracking
UltimateXR.Devices.Integrations.Meta.UxrMetaHandTracking
Namespace: UltimateXR.Devices
Assembly: UltimateXR (in UltimateXR.dll) Version: 0.0.0.0
Syntax
C#
public abstract class UxrHandTracking : UxrTrackingDevice
The UxrHandTracking type exposes the following members.
Constructors
Name | Description | |
---|---|---|
UxrHandTracking |
Properties
Name | Description | |
---|---|---|
HasCalibrationData | Gets whether the component contains calibration data collected by using the inspector. | |
IsAvailable | Gets whether tracking data is currently available for any hand. | |
IsLeftHandAvailable | Gets whether there is tracking data currently available for the left hand. | |
IsRightHandAvailable | Gets whether there is tracking data currently available for the right hand. | |
TrackingUpdateOrder | There are cases where more than one tracking device might be active. We use TrackingUpdateOrder for cases where there is one that should be applied after the other(s). For example an Oculus Rift together with a Leap Motion setup has one tracking component for each. But Leap Motion should override the tracking values of the rift controllers if the Leap Motion component is active. In this case Oculus, like most tracking devices, has a value of OrderStandard while Leap Motion has a value of OrderPostprocess so that the tracking devices update the avatar in the correct order. (Overrides UxrTrackingDevice.TrackingUpdateOrder.) | |
UseCalibration | Gets or sets whether to use calibration data to minimize the mismatches between the particular hand rig used and the tracking values. |
Methods
Name | Description | |
---|---|---|
ApplyBoneCalibration | Applies the calibration data collected by CollectCalibrationData(UxrHandSide) so that the hands look as close to the tracking data as possible. The goal is to remove the slight differences between a random rigged hand and the tracked skeleton data. | |
Awake | Subscribes to events so that the component can be enabled or disabled based on the presence of hand tracking. (Overrides UxrAvatarComponent<T>.Awake().) | |
BuildCalibrationCache | Creates the calibration cache to be able to get calibration of a given transform using a dictionary. | |
ClearCalibrationData | Clears the calibration data for a given hand. | |
CollectCalibrationData | Collects the calibration data for a given hand. | |
OnDestroy | Unsubscribes from events. (Overrides UxrTrackingDevice.OnDestroy().) | |
SetCalibrationPose | Adopts the calibration pose. |
Extension Methods
Name | Description | |
---|---|---|
CheckSetEnabled | Enables/disabled the component if it isn’t enabled already. (Defined by MonoBehaviourExt.) | |
GetOrAddComponent<T> | Gets the Component of a given type. If it doesn’t exist, it is added to the GameObject. (Defined by ComponentExt.) | |
GetPathUnderScene | Gets the full path under current scene, including all parents, but scene name, for the given component. (Defined by ComponentExt.) | |
GetSceneUid | Gets an unique identifier string for the given component. (Defined by ComponentExt.) | |
GetUniqueScenePath | Gets an unique path in the scene for the given component. It will include scene name, sibling and component indices to make it unique. (Defined by ComponentExt.) | |
LoopCoroutine | Creates a coroutine that simplifies executing a loop during a certain amount of time. (Defined by MonoBehaviourExt.) | |
SafeGetComponentInParent<T> | Gets the Component of a given type in the GameObject or any of its parents. It also works on prefabs, where regular GetComponentInParent(Type, Boolean) will not work: https://issuetracker.unity3d.com/issues/getcomponentinparent-is-returning-null-when-the-gameobject-is-a-prefab (Defined by ComponentExt.) | |
ShowInInspector(Boolean) | Overloaded. Controls whether to show the current object in the inspector. (Defined by ObjectExt.) | |
ShowInInspector(Boolean, Boolean) | Overloaded. Controls whether to show the current object in the inspector and whether it is editable. (Defined by ObjectExt.) | |
ThrowIfNull | Throws an exception if the object is null. (Defined by ObjectExt.) |