123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291 |
- :github_url: hide
- .. DO NOT EDIT THIS FILE!!!
- .. Generated automatically from Godot engine sources.
- .. Generator: https://github.com/godotengine/godot/tree/master/doc/tools/make_rst.py.
- .. XML source: https://github.com/godotengine/godot/tree/master/modules/openxr/doc_classes/OpenXRHand.xml.
- .. _class_OpenXRHand:
- OpenXRHand
- ==========
- **Deprecated:** Use :ref:`XRHandModifier3D<class_XRHandModifier3D>` instead.
- **Inherits:** :ref:`Node3D<class_Node3D>` **<** :ref:`Node<class_Node>` **<** :ref:`Object<class_Object>`
- Node supporting hand and finger tracking in OpenXR.
- .. rst-class:: classref-introduction-group
- Description
- -----------
- This node enables OpenXR's hand tracking functionality. The node should be a child node of an :ref:`XROrigin3D<class_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 :ref:`bone_update<class_OpenXRHand_property_bone_update>` to apply rotation only.
- .. rst-class:: classref-reftable-group
- Properties
- ----------
- .. table::
- :widths: auto
- +-------------------------------------------------+---------------------------------------------------------------+------------------+
- | :ref:`BoneUpdate<enum_OpenXRHand_BoneUpdate>` | :ref:`bone_update<class_OpenXRHand_property_bone_update>` | ``0`` |
- +-------------------------------------------------+---------------------------------------------------------------+------------------+
- | :ref:`Hands<enum_OpenXRHand_Hands>` | :ref:`hand<class_OpenXRHand_property_hand>` | ``0`` |
- +-------------------------------------------------+---------------------------------------------------------------+------------------+
- | :ref:`NodePath<class_NodePath>` | :ref:`hand_skeleton<class_OpenXRHand_property_hand_skeleton>` | ``NodePath("")`` |
- +-------------------------------------------------+---------------------------------------------------------------+------------------+
- | :ref:`MotionRange<enum_OpenXRHand_MotionRange>` | :ref:`motion_range<class_OpenXRHand_property_motion_range>` | ``0`` |
- +-------------------------------------------------+---------------------------------------------------------------+------------------+
- | :ref:`SkeletonRig<enum_OpenXRHand_SkeletonRig>` | :ref:`skeleton_rig<class_OpenXRHand_property_skeleton_rig>` | ``0`` |
- +-------------------------------------------------+---------------------------------------------------------------+------------------+
- .. rst-class:: classref-section-separator
- ----
- .. rst-class:: classref-descriptions-group
- Enumerations
- ------------
- .. _enum_OpenXRHand_Hands:
- .. rst-class:: classref-enumeration
- enum **Hands**: :ref:`🔗<enum_OpenXRHand_Hands>`
- .. _class_OpenXRHand_constant_HAND_LEFT:
- .. rst-class:: classref-enumeration-constant
- :ref:`Hands<enum_OpenXRHand_Hands>` **HAND_LEFT** = ``0``
- Tracking the player's left hand.
- .. _class_OpenXRHand_constant_HAND_RIGHT:
- .. rst-class:: classref-enumeration-constant
- :ref:`Hands<enum_OpenXRHand_Hands>` **HAND_RIGHT** = ``1``
- Tracking the player's right hand.
- .. _class_OpenXRHand_constant_HAND_MAX:
- .. rst-class:: classref-enumeration-constant
- :ref:`Hands<enum_OpenXRHand_Hands>` **HAND_MAX** = ``2``
- Maximum supported hands.
- .. rst-class:: classref-item-separator
- ----
- .. _enum_OpenXRHand_MotionRange:
- .. rst-class:: classref-enumeration
- enum **MotionRange**: :ref:`🔗<enum_OpenXRHand_MotionRange>`
- .. _class_OpenXRHand_constant_MOTION_RANGE_UNOBSTRUCTED:
- .. rst-class:: classref-enumeration-constant
- :ref:`MotionRange<enum_OpenXRHand_MotionRange>` **MOTION_RANGE_UNOBSTRUCTED** = ``0``
- When player grips, hand skeleton will form a full fist.
- .. _class_OpenXRHand_constant_MOTION_RANGE_CONFORM_TO_CONTROLLER:
- .. rst-class:: classref-enumeration-constant
- :ref:`MotionRange<enum_OpenXRHand_MotionRange>` **MOTION_RANGE_CONFORM_TO_CONTROLLER** = ``1``
- When player grips, hand skeleton conforms to the controller the player is holding.
- .. _class_OpenXRHand_constant_MOTION_RANGE_MAX:
- .. rst-class:: classref-enumeration-constant
- :ref:`MotionRange<enum_OpenXRHand_MotionRange>` **MOTION_RANGE_MAX** = ``2``
- Maximum supported motion ranges.
- .. rst-class:: classref-item-separator
- ----
- .. _enum_OpenXRHand_SkeletonRig:
- .. rst-class:: classref-enumeration
- enum **SkeletonRig**: :ref:`🔗<enum_OpenXRHand_SkeletonRig>`
- .. _class_OpenXRHand_constant_SKELETON_RIG_OPENXR:
- .. rst-class:: classref-enumeration-constant
- :ref:`SkeletonRig<enum_OpenXRHand_SkeletonRig>` **SKELETON_RIG_OPENXR** = ``0``
- An OpenXR compliant skeleton.
- .. _class_OpenXRHand_constant_SKELETON_RIG_HUMANOID:
- .. rst-class:: classref-enumeration-constant
- :ref:`SkeletonRig<enum_OpenXRHand_SkeletonRig>` **SKELETON_RIG_HUMANOID** = ``1``
- A :ref:`SkeletonProfileHumanoid<class_SkeletonProfileHumanoid>` compliant skeleton.
- .. _class_OpenXRHand_constant_SKELETON_RIG_MAX:
- .. rst-class:: classref-enumeration-constant
- :ref:`SkeletonRig<enum_OpenXRHand_SkeletonRig>` **SKELETON_RIG_MAX** = ``2``
- Maximum supported hands.
- .. rst-class:: classref-item-separator
- ----
- .. _enum_OpenXRHand_BoneUpdate:
- .. rst-class:: classref-enumeration
- enum **BoneUpdate**: :ref:`🔗<enum_OpenXRHand_BoneUpdate>`
- .. _class_OpenXRHand_constant_BONE_UPDATE_FULL:
- .. rst-class:: classref-enumeration-constant
- :ref:`BoneUpdate<enum_OpenXRHand_BoneUpdate>` **BONE_UPDATE_FULL** = ``0``
- The skeletons bones are fully updated (both position and rotation) to match the tracked bones.
- .. _class_OpenXRHand_constant_BONE_UPDATE_ROTATION_ONLY:
- .. rst-class:: classref-enumeration-constant
- :ref:`BoneUpdate<enum_OpenXRHand_BoneUpdate>` **BONE_UPDATE_ROTATION_ONLY** = ``1``
- The skeletons bones are only rotated to align with the tracked bones, preserving bone length.
- .. _class_OpenXRHand_constant_BONE_UPDATE_MAX:
- .. rst-class:: classref-enumeration-constant
- :ref:`BoneUpdate<enum_OpenXRHand_BoneUpdate>` **BONE_UPDATE_MAX** = ``2``
- Maximum supported bone update mode.
- .. rst-class:: classref-section-separator
- ----
- .. rst-class:: classref-descriptions-group
- Property Descriptions
- ---------------------
- .. _class_OpenXRHand_property_bone_update:
- .. rst-class:: classref-property
- :ref:`BoneUpdate<enum_OpenXRHand_BoneUpdate>` **bone_update** = ``0`` :ref:`🔗<class_OpenXRHand_property_bone_update>`
- .. rst-class:: classref-property-setget
- - |void| **set_bone_update**\ (\ value\: :ref:`BoneUpdate<enum_OpenXRHand_BoneUpdate>`\ )
- - :ref:`BoneUpdate<enum_OpenXRHand_BoneUpdate>` **get_bone_update**\ (\ )
- Specify the type of updates to perform on the bone.
- .. rst-class:: classref-item-separator
- ----
- .. _class_OpenXRHand_property_hand:
- .. rst-class:: classref-property
- :ref:`Hands<enum_OpenXRHand_Hands>` **hand** = ``0`` :ref:`🔗<class_OpenXRHand_property_hand>`
- .. rst-class:: classref-property-setget
- - |void| **set_hand**\ (\ value\: :ref:`Hands<enum_OpenXRHand_Hands>`\ )
- - :ref:`Hands<enum_OpenXRHand_Hands>` **get_hand**\ (\ )
- Specifies whether this node tracks the left or right hand of the player.
- .. rst-class:: classref-item-separator
- ----
- .. _class_OpenXRHand_property_hand_skeleton:
- .. rst-class:: classref-property
- :ref:`NodePath<class_NodePath>` **hand_skeleton** = ``NodePath("")`` :ref:`🔗<class_OpenXRHand_property_hand_skeleton>`
- .. rst-class:: classref-property-setget
- - |void| **set_hand_skeleton**\ (\ value\: :ref:`NodePath<class_NodePath>`\ )
- - :ref:`NodePath<class_NodePath>` **get_hand_skeleton**\ (\ )
- Set a :ref:`Skeleton3D<class_Skeleton3D>` node for which the pose positions will be updated.
- .. rst-class:: classref-item-separator
- ----
- .. _class_OpenXRHand_property_motion_range:
- .. rst-class:: classref-property
- :ref:`MotionRange<enum_OpenXRHand_MotionRange>` **motion_range** = ``0`` :ref:`🔗<class_OpenXRHand_property_motion_range>`
- .. rst-class:: classref-property-setget
- - |void| **set_motion_range**\ (\ value\: :ref:`MotionRange<enum_OpenXRHand_MotionRange>`\ )
- - :ref:`MotionRange<enum_OpenXRHand_MotionRange>` **get_motion_range**\ (\ )
- Set the motion range (if supported) limiting the hand motion.
- .. rst-class:: classref-item-separator
- ----
- .. _class_OpenXRHand_property_skeleton_rig:
- .. rst-class:: classref-property
- :ref:`SkeletonRig<enum_OpenXRHand_SkeletonRig>` **skeleton_rig** = ``0`` :ref:`🔗<class_OpenXRHand_property_skeleton_rig>`
- .. rst-class:: classref-property-setget
- - |void| **set_skeleton_rig**\ (\ value\: :ref:`SkeletonRig<enum_OpenXRHand_SkeletonRig>`\ )
- - :ref:`SkeletonRig<enum_OpenXRHand_SkeletonRig>` **get_skeleton_rig**\ (\ )
- Set the type of skeleton rig the :ref:`hand_skeleton<class_OpenXRHand_property_hand_skeleton>` is compliant with.
- .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
- .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
- .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
- .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`
- .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)`
- .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)`
- .. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)`
- .. |void| replace:: :abbr:`void (No return value.)`
|