2024-03-29 NO.2 Quest3 开发包基本原理和框架

1 输入数据

​ 现实世界中,头显和手柄的追踪数据会被传输给虚拟世界中的头部和手部,之后虚拟世界中的头和手就会同步现实中的位置和旋转。

上述概念适用于所有的 VR SDK。

​ 在 Oculus Integration v57 版本中,具体分为以下五个组件:

  1. From OVR Body Data Source

    记录身体的姿态数据,在 v57 版本中可以模拟上半身的一个运动姿态,SDK 中有提供相关的示例场景。

  2. From OVR Controller Data Source

    记录手柄相关数据(以手柄模型呈现)。

  3. From OVR Controller Hand Data Source

    记录手柄相关数据(以手部模型呈现)。

  4. From OVR Hand Data Source

    记录手势追踪中,手部关节的相关数据。

  5. From OVR Hmd Data Source

    记录头显的相关数据。

​ Quest 使用上述 5 个 From OVR … Source 组件来获取追踪的数据。获取追踪数据后,将使用相应的接口去处理对应类型的数据,这些接口分为:

  • IController
  • IHand
  • IHmd
  • IBody

​ 对追踪数据进行处理和包装后,才能适配 SDK 中的一些组件。

image-20240329133957148

2 手部数据处理流程

image-20240329134620380
  1. From OVR Hand Data Source 获取头显追踪到的手部数据。
  2. 实现了 IHand 接口的 HandFilter 组件对数据进行防抖处理。
  3. SynthethicHand 组件对手部关节数据进行进一步处理,在特定情况下覆写,也就是 override 手部关节的数据,从而限定虚拟手部的手势(例如防止手势穿模)。
  4. HandVisua 组件渲染虚拟手部的姿态。

3 交互基本概念

  • Interactor:发起交互的对象。
  • Interactable:可以被交互的对象。

​ Oculus Integration 中有不同的 Interactor 组件,通常被挂载到表示手部或者手柄的物体上。

​ 当 Oculus Integration 获取设备的追踪数据后,就知道虚拟世界中的手或者手柄的位置和旋转角度,此时手部或者手柄物体上的 Interactor 就会寻找对应的 Interactable。例如:

  • Grab:寻找周围有无可被抓取的对象。
  • Poke:寻找周围有无可被点击的对象。
image-20240329135428898

​ 当 Interactor 检测到 Interactable 对象时,会进入 hover 状态。判断是否检测到 Interactable 对象需要一定的条件,以手势追踪为例:

  1. 手要靠近 Interactable 对象。

  2. 确保当前手上没有其他的 Interactor 正在与对应的 Interactable 对象交互。

  3. 手要做出 Interactor 触发所需要的手势。

image-20240329135813481

​ hover 状态可以类比成鼠标悬停的操作,相当于准备进行交互。进入到 horror 状态后,完成交互则进入 select 状态。

​ 比如:点击 UI 的交互,

  1. 当伸出食指且靠近按钮时,会先进入 hover 状态,此时要准备开始点击的交互。
image-20240329140300347
  1. 用食指点击按钮时,会转变成 select 状态,表示点击的交互动作完成。
image-20240329140322179
  1. 取消点击动作后,即,将手远离按钮的过程中,交互状态先由 select 变成 however,再由 hover 变成 normal。
image-20240329140409503
  • 6
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

蔗理苦

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

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

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

打赏作者

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

抵扣说明:

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

余额充值