category
AI summary
tags
password
summary
date
icon
status
字数统计
type
slug
orgsrc
URL
Video Here
本文是关于 Vision Pro 手势追踪技术 —— ARKit 的开发笔记。
在 visionOS 中,ARKit 可以实现手部追踪和世界感应等增强现实功能,在 ARKit 中调用手部追踪的流程如下:
![ARKit 追踪数据使用流程](https://www.notion.so/image/https%3A%2F%2Fprod-files-secure.s3.us-west-2.amazonaws.com%2F3c35714a-89c3-4d33-ad58-389eb4cfea25%2Fa787d6d2-6fd0-46ea-b5fe-e73fe53adb14%2FUntitled.png?table=block&id=07642117-fb67-43c0-979c-751d093d5d4a)
首先,需要向用户描述手势追踪数据的用途并取得用户授权。
![Xcode Info 中填写 NSHandsTrackingUsageDescription](https://www.notion.so/image/https%3A%2F%2Fprod-files-secure.s3.us-west-2.amazonaws.com%2F3c35714a-89c3-4d33-ad58-389eb4cfea25%2F4d55d891-4f87-4316-8677-d842f1e6cb68%2FUntitled.png?table=block&id=45c60139-80d7-40d4-8795-573c72f6b17d)
为了确保用户隐私,要调用 ARKit 数据,必须进入 Full Space 模式,visionOS 不会向共享空间的 App 发送数据。这一安全策略导致所有自定义的手势交互方式,只能在当前应用中生效,而无法在系统层生效。
![notion image](https://www.notion.so/image/https%3A%2F%2Fprod-files-secure.s3.us-west-2.amazonaws.com%2F3c35714a-89c3-4d33-ad58-389eb4cfea25%2Faf556932-b271-4b43-81c9-08dd3d4f37c3%2FUntitled.png?table=block&id=b967d242-0708-4bc4-ba15-2d0d917f1be0)
![用户授权](https://www.notion.so/image/https%3A%2F%2Fprod-files-secure.s3.us-west-2.amazonaws.com%2F3c35714a-89c3-4d33-ad58-389eb4cfea25%2F5f31debb-d807-4554-9fa1-4c0f31cd08db%2FUntitled.png?table=block&id=31b53972-4547-4bba-96fb-0353e1a25e59)
应用进入 ImmersiveSpace 状态(即 Full Space),可以选择不同的 immersionStyle(.mixed / .progressive / .full):
![ImmersiveSpace](https://www.notion.so/image/https%3A%2F%2Fprod-files-secure.s3.us-west-2.amazonaws.com%2F3c35714a-89c3-4d33-ad58-389eb4cfea25%2F019c13a9-803e-4b5a-886a-f1b355afb86c%2FUntitled.png?table=block&id=5467d4a6-e8b3-4411-932e-664c4aa279db)
通过轮询 HandTrackingProvider.anchorUpdates 可以获得手部各关节点的追踪数据:
![轮询 anchorUpdates](https://www.notion.so/image/https%3A%2F%2Fprod-files-secure.s3.us-west-2.amazonaws.com%2F3c35714a-89c3-4d33-ad58-389eb4cfea25%2F2959bc61-e581-40fa-ba99-37c2797de328%2FUntitled.png?table=block&id=5845a04f-3f9f-45ca-962f-0f080390f6fb)
HandSkeleton 中保存了所有手部关节的名称和对应坐标,通过计算这些关节点的坐标和相对关系,即可自定义手势事件:
![WWDC2023 - 正式 SDK 中已经去掉了所有 hand 字符](https://www.notion.so/image/https%3A%2F%2Fprod-files-secure.s3.us-west-2.amazonaws.com%2F3c35714a-89c3-4d33-ad58-389eb4cfea25%2Faeba2145-b56d-4186-bcc7-bd74c6791404%2FUntitled.png?table=block&id=8d6a2444-b048-4161-b009-cf6a23d3d59d)
目前 Vision Pro 手部追踪的采样率只有 30FPS(网友提供,未验证),从测试效果上来看,虽然每个关节点的定位都比较准确,但是当手部移动速度较快时,就会出现比较明显的延迟、卡顿,这也是很多裸手交互游戏(比如水果忍者)效果较差的原因。此外只有进入 Full Space 才能获取手部追踪数据,这也极大限制了应用的适用范围。
Video Here
参考
![notion image](https://www.notion.so/image/https%3A%2F%2Fwww.notion.so%2Fimage%2Fhttps%3A%2F%2Fprod-files-secure.s3.us-west-2.amazonaws.com%2F3c35714a-89c3-4d33-ad58-389eb4cfea25%2F58127fb7-d7da-4c2e-a51e-383548489e77%2FUntitled.png%3Ftable%3Dblock%26id%3D5267ae2e-8651-4dbd-95e8-f7b7e4a31946%26spaceId%3D3c35714a-89c3-4d33-ad58-389eb4cfea25%26width%3D2000%26userId%3D90111aec-f110-4b00-ac17-9cd7193cec22%26cache%3Dv2?table=block&id=814b1144-0808-4c89-8e23-3e2bac66f9f5)
- Sample Code: Happy Beam
- Apple's WWDC 2023 - Meet ARKit for spatial computing.
- 作者:V2XR
- 链接:https://hackvision.pro/post/ARKit-HandTracking-in-visionOS
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。