当前位置:   article > 正文

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

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
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/391812
推荐阅读
相关标签
  

闽ICP备14008679号