手部追踪示例
Spaces 手部管理器
Spaces 手部管理器组件属于 ARTrackableManager 类型,其编程方式类似于 AR Foundation 的其他管理器——通过提供回调函数来获取添加、更新和删除的项的变化。
该组件还提供了一个检查器字段,用于定义在检测到手部时应生成的默认预制体。示例中的 Default Spaces Hand 预制体包含两个额外的组件,如下图所示。这些组件将在接下来的部分中详细描述。
Spaces 手部组件
该组件是获取所有手部相关数据的通用接口。它属于 ARTrackable 类型,因此具有类似 TrackableID、TrackingState 和 Pose 等常见属性,这些属性由被追踪手部的腕关节定义。
此外,它还提供了以下三个额外属性:
● IsLeft: 布尔值。如果被追踪的手是左手,则返回 true;否则返回 false。
● Joints: Qualcomm.Snapdragon.Spaces.SpacesHand.Joint 类型的数组,该类型具有以下属性:
○ Pose: Unity Pose 类型,返回手部关节的姿态。
○ Type: Qualcomm.Snapdragon.Spaces.SpacesHand.JointType 类型,返回枚举值,表示手部关节的类型。
● Gesture:Qualcomm.Snapdragon.Spaces.SpacesHand.Gesture 类型,具有以下属性:
○ Type:Qualcomm.Snapdragon.Spaces.SpacesHand.GestureType 类型,返回枚举值,表示检测到的手势。
○ GestureRatio: 介于 0 和 1 之间的浮点值,表示手势的应用程度。
○ FlipRatio: 介于 -1 和 1 之间的浮点值,表示手势是从手的背面(-1)、正面(1)还是介于两者之间检测到的。
有关手势的更多信息,请参见交互手势文档。
Spaces 手部关节可视化组件
该组件提供了一些属性,用于修改关节可视化的外观,例如:
● JointMesh: 应用于每个关节的网格。
● JointMaterial: 应用于网格的材质。
● JointMeshScale: 一个介于 0.005 和 0.05 之间的浮点值,定义了网格的缩放比例。
● UseNormalizedColors: 布尔值。如果设置为 true,则应用的材质的 _Color 属性将由组件着色。
在示例中,UnityEngine 中的简单球体网格被设置为 JointMesh,而 Default-Material 被设置为 JointMaterial。