2022-04-17 12:58:09 +10:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								<?xml version="1.0" encoding="UTF-8" ?>  
						 
					
						
							
								
									
										
										
										
											2024-04-16 10:32:21 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								<class  name= "OpenXRHand"  inherits= "Node3D"  deprecated= "Use [XRHandModifier3D] instead."  xmlns:xsi= "http://www.w3.org/2001/XMLSchema-instance"  xsi:noNamespaceSchemaLocation= "../../../doc/class.xsd" >  
						 
					
						
							
								
									
										
										
										
											2022-04-17 12:58:09 +10:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									<brief_description > 
							 
						 
					
						
							
								
									
										
										
										
											2024-01-06 18:32:15 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										Node supporting hand and finger tracking in OpenXR.
							 
						 
					
						
							
								
									
										
										
										
											2022-04-17 12:58:09 +10:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									</brief_description> 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									<description > 
							 
						 
					
						
							
								
									
										
										
										
											2024-01-06 18:32:15 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										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.
							 
						 
					
						
							
								
									
										
										
										
											2024-01-15 23:35:51 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										By default the skeleton hand bones are repositioned to match the size of the tracked hand. To preserve the modeled bone sizes change [member bone_update] to apply rotation only.
							 
						 
					
						
							
								
									
										
										
										
											2022-04-17 12:58:09 +10:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									</description> 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									<tutorials > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									</tutorials> 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									<members > 
							 
						 
					
						
							
								
									
										
										
										
											2024-01-15 23:35:51 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										<member  name= "bone_update"  type= "int"  setter= "set_bone_update"  getter= "get_bone_update"  enum= "OpenXRHand.BoneUpdate"  default= "0" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											Specify the type of updates to perform on the bone.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										</member> 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-17 12:58:09 +10:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										<member  name= "hand"  type= "int"  setter= "set_hand"  getter= "get_hand"  enum= "OpenXRHand.Hands"  default= "0" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											Specifies whether this node tracks the left or right hand of the player.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										</member> 
							 
						 
					
						
							
								
									
										
										
										
											2024-04-16 10:32:21 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										<member  name= "hand_skeleton"  type= "NodePath"  setter= "set_hand_skeleton"  getter= "get_hand_skeleton"  default= "NodePath("")" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											Set a [Skeleton3D] node for which the pose positions will be updated.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										</member> 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-17 12:58:09 +10:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										<member  name= "motion_range"  type= "int"  setter= "set_motion_range"  getter= "get_motion_range"  enum= "OpenXRHand.MotionRange"  default= "0" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											Set the motion range (if supported) limiting the hand motion.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										</member> 
							 
						 
					
						
							
								
									
										
										
										
											2024-01-06 18:32:15 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										<member  name= "skeleton_rig"  type= "int"  setter= "set_skeleton_rig"  getter= "get_skeleton_rig"  enum= "OpenXRHand.SkeletonRig"  default= "0" > 
							 
						 
					
						
							
								
									
										
										
										
											2024-04-16 10:32:21 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											Set the type of skeleton rig the [member hand_skeleton] is compliant with.
							 
						 
					
						
							
								
									
										
										
										
											2024-01-06 18:32:15 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										</member> 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-17 12:58:09 +10:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									</members> 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									<constants > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										<constant  name= "HAND_LEFT"  value= "0"  enum= "Hands" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											Tracking the player's left hand.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										</constant> 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										<constant  name= "HAND_RIGHT"  value= "1"  enum= "Hands" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											Tracking the player's right hand.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										</constant> 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										<constant  name= "HAND_MAX"  value= "2"  enum= "Hands" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											Maximum supported hands.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										</constant> 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										<constant  name= "MOTION_RANGE_UNOBSTRUCTED"  value= "0"  enum= "MotionRange" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											When player grips, hand skeleton will form a full fist.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										</constant> 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										<constant  name= "MOTION_RANGE_CONFORM_TO_CONTROLLER"  value= "1"  enum= "MotionRange" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											When player grips, hand skeleton conforms to the controller the player is holding.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										</constant> 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										<constant  name= "MOTION_RANGE_MAX"  value= "2"  enum= "MotionRange" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											Maximum supported motion ranges.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										</constant> 
							 
						 
					
						
							
								
									
										
										
										
											2024-01-06 18:32:15 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										<constant  name= "SKELETON_RIG_OPENXR"  value= "0"  enum= "SkeletonRig" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											An OpenXR compliant skeleton.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										</constant> 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										<constant  name= "SKELETON_RIG_HUMANOID"  value= "1"  enum= "SkeletonRig" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											A [SkeletonProfileHumanoid] compliant skeleton.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										</constant> 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										<constant  name= "SKELETON_RIG_MAX"  value= "2"  enum= "SkeletonRig" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											Maximum supported hands.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										</constant> 
							 
						 
					
						
							
								
									
										
										
										
											2024-01-15 23:35:51 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										<constant  name= "BONE_UPDATE_FULL"  value= "0"  enum= "BoneUpdate" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											The skeletons bones are fully updated (both position and rotation) to match the tracked bones.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										</constant> 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										<constant  name= "BONE_UPDATE_ROTATION_ONLY"  value= "1"  enum= "BoneUpdate" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											The skeletons bones are only rotated to align with the tracked bones, preserving bone length.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										</constant> 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										<constant  name= "BONE_UPDATE_MAX"  value= "2"  enum= "BoneUpdate" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											Maximum supported bone update mode.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										</constant> 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-17 12:58:09 +10:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									</constants> 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								</class>