Vision Pro 手势追踪 - ARKit 教程

419 阅读1分钟

📌 Video Here

🤖:本文是关于 Vision Pro 手势追踪技术 —— ARKit 的开发笔记。


在 visionOS 中,ARKit 可以实现手部追踪世界感应等增强现实功能,在 ARKit 中调用手部追踪的流程如下:

ARKit 追踪数据使用流程

ARKit 追踪数据使用流程

首先,需要向用户描述手势追踪数据的用途并取得用户授权。

Xcode Info 中填写 NSHandsTrackingUsageDescription

Xcode Info 中填写 NSHandsTrackingUsageDescription

为了确保用户隐私,要调用 ARKit 数据,必须进入 Full Space 模式,visionOS 不会向共享空间的 App 发送数据。这一安全策略导致所有自定义的手势交互方式,只能在当前应用中生效,而无法在系统层生效。

用户授权

用户授权

应用进入 ImmersiveSpace 状态(即 Full Space):

ImmersiveSpace

ImmersiveSpace

通过轮询 HandTrackingProvider.anchorUpdates 可以获得手部各关节点的追踪数据:

轮询 anchorUpdates

轮询 anchorUpdates

HandSkeleton 中保存了所有手部关节的名称和对应坐标,通过计算这些关节点的坐标和相对关系,即可自定义手势事件:

WWDC2023 - 正式 SDK 中已经去掉了所有 hand 字符

WWDC2023 - 正式 SDK 中已经去掉了所有 hand 字符

目前 Vision Pro 手部追踪的采样率只有 30FPS(网友提供,未验证),从测试效果上来看,虽然每个关节点的定位都比较准确,但是当手部移动速度较快时,就会出现比较明显的延迟、卡顿,这也是很多裸手交互游戏(比如水果忍者)效果较差的原因。此外只有进入 Full Space 才能获取手部追踪数据,这也极大限制了应用的适用范围。

📌 Video Here

👉 原文链接

参考

  1. Sample Code: Happy Beam
  2. Apple's WWDC 2023 - Meet ARKit for spatial computing.

本文使用 markdown.com.cn 排版