OpenXRHand¶
已弃用: 改用 XRHandRevamp。
OpenXR 中支持手和手指跟踪的节点。
描述¶
该节点用于启用 OpenXR 的手部跟踪功能。此节点应作为 XROrigin 节点的子节点,其位置会追踪到用户手部的 Palm 关节位置(中指掌骨的中心点)。同时,该节点还会更新已正确蒙皮的手部或角色模型的骨骼。
若骨骼为独立手部模型(手部骨骼之一作为骨骼的根节点),则骨骼会相对于手掌位置进行定位,此时手部网格和骨骼应作为 OpenXRHand 节点的子节点。
若手部骨骼属于完整角色骨骼,则手部根骨骼将保持原有位置,此时需通过逆向动力学(IK)来调整手臂和手部的位置。
默认情况下,骨骼手部会根据追踪到的手部尺寸重新调整位置。若需保留建模时的骨骼尺寸,请将 bone_update 改为仅应用旋转模式。
属性¶
|
||
|
||
|
||
|
||
|
枚举¶
enum Hands: 🔗
Hands HAND_LEFT = 0
追踪用户的左手。
Hands HAND_RIGHT = 1
追踪用户的右手。
Hands HAND_MAX = 2
最大支持的手数。
enum MotionRange: 🔗
MotionRange MOTION_RANGE_UNOBSTRUCTED = 0
用户抓握时,手部骨架呈握拳状。
MotionRange MOTION_RANGE_CONFORM_TO_CONTROLLER = 1
用户抓握时,手部骨架遵循用户所持的控制器。
MotionRange MOTION_RANGE_MAX = 2
最大支持的运动范围。
enum SkeletonRig: 🔗
SkeletonRig SKELETON_RIG_OPENXR = 0
符合 OpenXR 标准的骨架。
SkeletonRig SKELETON_RIG_HUMANOID = 1
符合 SkeletonProfileHumanoid 标准的骨架。
SkeletonRig SKELETON_RIG_MAX = 2
最大支持的手数。
enum BoneUpdate: 🔗
BoneUpdate BONE_UPDATE_FULL = 0
骨架骨骼已完全更新(位置和旋转)以匹配跟踪的骨骼。
BoneUpdate BONE_UPDATE_ROTATION_ONLY = 1
骨架骨骼仅旋转以与跟踪的骨骼对齐,从而保留骨骼长度。
BoneUpdate BONE_UPDATE_MAX = 2
最大支持的骨骼更新模式。
属性说明¶
BoneUpdate bone_update = 0 🔗
void set_bone_update(value: BoneUpdate)
BoneUpdate get_bone_update()
指定要在骨骼上执行的更新类型。
指定该节点是追踪用户的左手还是右手。
ItemPath hand_skeleton = ItemPath("") 🔗
设置一个SkeletonMesh节点,该节点的姿势位置将被更新。
MotionRange motion_range = 0 🔗
void set_motion_range(value: MotionRange)
MotionRange get_motion_range()
设置限制手部运动的运动范围(前提是支持)。
SkeletonRig skeleton_rig = 0 🔗
void set_skeleton_rig(value: SkeletonRig)
SkeletonRig get_skeleton_rig()
设置 hand_skeleton 所兼容的骨架绑定类型。