Class XRHandSkeletonDriver
Controls a hierarchy of Transforms driven by joints in an XRHand. This component subscribes to events from an XRHandTrackingEvents component to move and rotate the joints when the hand is updated.
Implements
Inherited Members
Namespace: UnityEngine.XR.Hands
Assembly: solution.dll
Syntax
[HelpURL("https://docs.unity.cn/Packages/com.unity.xr.hands@1.4/api/UnityEngine.XR.Hands.XRHandSkeletonDriver.html")]
public class XRHandSkeletonDriver : MonoBehaviour, ISerializationCallbackReceiver
Fields
| Name | Description |
|---|---|
| m_HasJointTransformMask | An array of booleans tracking which joint indexes have a valid transform to drive. This is calculated once when the references change to avoid a null check every time the joint is updated. |
| m_HasRootTransform | A boolean tracking whether the root transform is valid. This is calculated once when the root transform changes to avoid a null check every time the root is updated. |
| m_JointLocalPoses | The array of joint local poses indexed by the XRHandJointID which is updated by the method UpdateJointLocalPoses(XRHandJointsUpdatedEventArgs) and then applied to the joint transforms by the method ApplyUpdatedTransformPoses(). |
| m_JointTransformReferences | The list of joint to transform references |
| m_JointTransforms | The array of joint data indexed by the XRHandJointID which is accessible via ToIndex(XRHandJointID). |
Properties
| Name | Description |
|---|---|
| handTrackingEvents | The XRHandTrackingEvents component that will be the source of hand tracking events for this driver. |
| hasRootOffset | Bool tracking whether the root requires an offset to be applied to it. |
| jointTransformReferences | The serialized list of XRHandJointID with a reference to a transform to drive. After this list is finished being assigned or modified, use the method InitializeFromSerializedReferences() to update the runtime mapping of transforms to drive. |
| rootOffset | Offset translation applied to hand root position. |
| rootTransform | The Transform that will be driven by the hand's root position and rotation. |
Methods
| Name | Description |
|---|---|
| ApplyRootPoseOffset(Vector3) | Applies an offset to the root pose of the hand skeleton. This can be used to adjust the position of the hand in situations where you want the hand visual to stop moving when interacting with an object. The offset is applied in the local space of the hand's root transform. |
| ApplyUpdatedTransformPoses() | Applies the values in the m_JointLocalPoses array to the m_JointTransforms array. |
| FindJointsFromRoot(List<string>) | Finds the joint transform references from the root. |
| InitializeFromSerializedReferences() | Converts the serialized list jointTransformReferences to a mapping of Transforms to drive. This method is called automatically via OnAfterDeserialize. It can be called manually after the list of Transform references is modified at runtime to apply the changes. |
| OnDisable() | See MonoBehaviour. MonoBehaviour OnDisable method that unsubscribes from hand tracking events and disposes the joint local poses array. |
| OnEnable() | See MonoBehaviour. MonoBehaviour OnEnable method that subscribes to hand tracking events and allocates the joint local poses array. |
| OnJointsUpdated(XRHandJointsUpdatedEventArgs) | Updates all the joints of the hand. This method calls UpdateJointLocalPoses(XRHandJointsUpdatedEventArgs) to calculate the local poses of the joints and then immediately calls ApplyUpdatedTransformPoses() to apply the changes to the joint Transforms. |
| OnRootPoseUpdated(Pose) | Update the rootTransform's local position and rotation with the hand's root pose. |
| Reset() | See MonoBehaviour. |
| ResetRootPoseOffset() | Resets the offset of the root pose of the hand skeleton back to zero. This can be used to remove any previously applied offset, restoring the hand's root pose to its original position. |
| UpdateJointLocalPoses(XRHandJointsUpdatedEventArgs) | Calculates the local poses for all the joints in the hand using the standard parent hierarchy. Call this method to update the m_JointLocalPoses array with the latest joint data. |