OpenXRHand
Entity supporting hand and finger tracking in OpenXR.
Entity supporting hand and finger tracking in OpenXR.
This node enables OpenXR's hand tracking functionality. The node should be a child node of an XROrigin3D node, tracking will update its position to the player's tracked hand Palm joint location (the center of the middle finger's metacarpal bone). This node also updates the skeleton of a properly skinned hand or avatar model.
If the skeleton is a hand (one of the hand bones is the root node of the skeleton), then the skeleton will be placed relative to the hand palm location and the hand mesh and skeleton should be children of the OpenXRHand node.
If the hand bones are part of a full skeleton, then the root of the hand will keep its location with the assumption that IK is used to position the hand and arm.
By default the skeleton hand bones are repositioned to match the size of the tracked hand. To preserve the modeled bone sizes change OpenXRHand.BoneUpdate to apply rotation only.
Declarations checked against C# SDK 1.0.0. Expand a name to see declarations and documentation.
Constructors1
OpenXRHandConstructor
public OpenXRHand();Properties5
BoneUpdateProperty
public OpenXRHand.BoneUpdateEnum BoneUpdate { get; set; }Specify the type of updates to perform on the bone.
HandProperty
public OpenXRHand.Hands Hand { get; set; }Specifies whether this node tracks the left or right hand of the player.
HandSkeletonProperty
public EntityPath HandSkeleton { get; set; }Set a Skeleton3D node for which the pose positions will be updated.
MotionRangeProperty
public OpenXRHand.MotionRangeEnum MotionRange { get; set; }Set the motion range (if supported) limiting the hand motion.
SkeletonRigProperty
public OpenXRHand.SkeletonRigEnum SkeletonRig { get; set; }Set the type of skeleton rig the OpenXRHand.HandSkeleton is compliant with.
Methods10
GetBoneUpdateOpenXRHand.BoneUpdateEnum
public OpenXRHand.BoneUpdateEnum GetBoneUpdate();OpenXRHand.BoneUpdateEnumGetHandOpenXRHand.Hands
public OpenXRHand.Hands GetHand();OpenXRHand.HandsGetHandSkeletonEntityPath
public EntityPath GetHandSkeleton();EntityPathGetMotionRangeOpenXRHand.MotionRangeEnum
public OpenXRHand.MotionRangeEnum GetMotionRange();OpenXRHand.MotionRangeEnumGetSkeletonRigOpenXRHand.SkeletonRigEnum
public OpenXRHand.SkeletonRigEnum GetSkeletonRig();OpenXRHand.SkeletonRigEnumSetBoneUpdatevoid
public void SetBoneUpdate(OpenXRHand.BoneUpdateEnum boneUpdate);| Name | Type | Default |
|---|---|---|
boneUpdate | OpenXRHand.BoneUpdateEnum | — |
SetHandvoid
public void SetHand(OpenXRHand.Hands hand);| Name | Type | Default |
|---|---|---|
hand | OpenXRHand.Hands | — |
SetHandSkeletonvoid
public void SetHandSkeleton(EntityPath handSkeleton);| Name | Type | Default |
|---|---|---|
handSkeleton | EntityPath | — |
SetMotionRangevoid
public void SetMotionRange(OpenXRHand.MotionRangeEnum motionRange);| Name | Type | Default |
|---|---|---|
motionRange | OpenXRHand.MotionRangeEnum | — |
SetSkeletonRigvoid
public void SetSkeletonRig(OpenXRHand.SkeletonRigEnum skeletonRig);| Name | Type | Default |
|---|---|---|
skeletonRig | OpenXRHand.SkeletonRigEnum | — |
OpenXRHand.BoneUpdateEnum
| Value | Description |
|---|---|
Full = 0 | The skeletons bones are fully updated (both position and rotation) to match the tracked bones. |
Max = 2 | Maximum supported bone update mode. |
RotationOnly = 1 | The skeletons bones are only rotated to align with the tracked bones, preserving bone length. |
OpenXRHand.Hands
OpenXRHand.MotionRangeEnum
| Value | Description |
|---|---|
ConformToController = 1 | When player grips, hand skeleton conforms to the controller the player is holding. |
Max = 2 | Maximum supported motion ranges. |
Unobstructed = 0 | When player grips, hand skeleton will form a full fist. |
OpenXRHand.SkeletonRigEnum
| Value | Description |
|---|---|
Humanoid = 1 | A |
Max = 2 | Maximum supported hands. |
Openxr = 0 | An OpenXR compliant skeleton. |