2024-04-01 NO.3 Quest3 手势追踪与玩家角色配置

本文详细介绍了如何在Unity中配置OVRCameraRig以实现VR交互,包括添加OVRInteraction、替换OVRHandSynthetic以限制手势,以及讲解了TrackingOriginType的三种选择及其在实际应用中的区别。
摘要由CSDN通过智能技术生成

1 创建 OVRCameraRig

(1)新建 3D 项目,将场景中的 Camera 删除,并从 Project 窗口中的 Packages 找到 OVRCameraRig,拖拽进场景中。

image-20240401140901521

​ 此时该物体即为角色物体。此时运行项目,只有追踪功能,没有手部模型,也没有交互功能。

(2)将 OVRCameraRig 上的 OVRManager 脚本中的 Tracking Origin Type 更改为 “Floor Level”。

image-20240401141545700

2 添加交互

(1)在 Project 窗口中的 Packages 找到 OVRInteraction,将其拖拽为 OVRCameraRig 的子物体。

image-20240401142054909

​ 其子对象 OVRHmdDataSource 被挂载 “From OVR Hmd Data Source” 脚本,表示其可以获取到头显的追踪数据。

image-20240401142243978

(2)在 Project 窗口中的 Packages 找到 OVRHandPrefab,将其拖拽到 OVRCameraRig 的子物体 LeftHandAnchor 下。同时,失活其 “OVR Mesh” 和 “OVR Mesh Renderer” 脚本,并勾选 “OVR Skeleton” 脚本的 “Enable Physics Capsules” 选项。

image-20240401142718875

(3)同样的设置应用于 OVRCameraRig 的子物体 RightHandAnchor,但是需要将 “OVR Skeleton” 脚本的 “Skeleton” 选项改为 “Hand Right”。

image-20240401142918303

(4)在 Project 窗口中的 Packages 找到 OVRHands,将其拖拽为 OVRInteraction 的子物体。

image-20240401143114528

​ 运行程序,伸出双手,可以看到显示出对应的虚拟手,其数据来源对应于 OVRHands > LeftHand > OVRHandDataSource 上的 “From OVR Hand Data Source” 脚本。到此,配置大致完成。

image-20240401143420624

3 更换 OVRHandSynthetic

​ 更换 OVRHandSynthetic 是为了添加 “Synthetic Hand” 脚本,从而限定虚拟手部的手势(例如防止手势穿模)。

(1)在 Project 窗口中的 Packages 找到 OVRLeftHandSynthetic 和 OVRRightHandSynthetic,分别替换 OVRHands 下的 HandVisualsLeft 和 HandVisualsRight(可将其失活)。

image-20240401144113320

(2)对 OVRLeftHandSynthetic 设置对应的 I Modify Data From Source Mono。OVRRightHandSynthetic 同理设置。

image-20240401144406658

​ 可以看到,相比于原来的 HandVisualsLeft,OVRLeftHandSynthetic 仅多挂载了一个 “Synthetic Hand” 脚本。而二者子对象均为 OVRLeftHandVisual,没有差异。

补充:Tracking Origin Type 三个选项的差异

​ 官网解释:

image-20240401150803546

​ Tracking Origin Type:追踪的参考系。

​ 头显的位置和旋转数据用三维坐标表示。只有确立坐标系的原点后,才能给出三维坐标的值。

​ 可以粗略地认为,Tracking Origin Type 相当于虚拟世界中头部的初始高度。

① Floor Level

​ 以安全区地面(打开 VR 设备一般会先设置地面高度,然后划安全区)作为参考系,运行程序后头部高度以地面作为参考点,高度相当于摆放在场景中的玩家物体的高度加上现实中玩家头显到安全区地面的距离。

image-20240401151427990

② Stage

​ 和 Floor Level 一样,以地面作为参考系。

③ Eye Level

​ 以头显设备本身作为参考系,头部高度相当于摆放在场景中的玩家物体的高度加上头显相对于设备自身坐标系的高度(每次设备定位成功后会建立设备自身的坐标系),不会额外加上现实中头显到地面的高度。

image-20240401151449693

Stage 和 Floor Level 的导出区别

(1)重新定位

​ 以 Quest3 为例,在 Unity 中运行项目时,长按右手柄的 Meta 键,会进行重新定位,即根据玩家当前的位置重新建立坐标系。

image-20240401151807026

(2)区别

  • Stage:Unity 导出程序后,长按右手柄的 Meta 键,不会进行重定位。
  • Floor Level:Unity 导出程序后,长按右手柄的 Meta 键,不会进行重定位。
  • 10
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蔗理苦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值