Quest 运行第一个Unity程序(2)

199 阅读4分钟

1.引言

在上文中,主要讲述了,给Unity搭建android开发环境,并且最后能把unity程序运行在Quest中。但是仅仅有这些还不够,像手势,空间定位,相机等都是需要用到Meta开源的Sdk的。本文的主要内容应用Meta提供的Sdk,做一些简单的配置。

2.正题

2.1 将 OVRCameraRig 添加到场景

image.png

OVRCameraRig 预制件附带了两个主要脚本:OVRCameraRig.cs 和 OVRManager.csOVRCameraRig.cs 脚本使用来自头戴式设备的输入来更改摄像机在场景中的位置和旋转。OVRManager.cs 使您能够进一步配置相机、跟踪和显示设置以获得最佳性能。

image.png

ps:需要将OVRCameraRig 设置成主Camera,否则视线无法随头而动

2.2 OVRCameraRig.cs 配置

OVRCameraRig.cs 可配置属性:

    1. Use Per Eye Cameras(每眼单独使用摄像头)
  • 含义:当启用该选项时,Unity 会为 VR 设备的左右眼分别创建单独的摄像头。这样每个眼睛会有自己的视角,而不是通过一个单一的摄像头来渲染两个眼睛的图像。

  • 理解

    • 每眼摄像头方式可以更精确地控制左右眼的渲染,特别是在需要特定的镜头效果或者定制每只眼睛的渲染时。
    • 然而,这种方式通常会带来额外的计算开销,因为需要渲染两次场景(一次给每只眼睛)。
    • 典型应用场景:需要对每只眼睛的图像进行特殊处理的应用,或者需要为每个眼睛设置不同的渲染参数的场景。
    1. Use Fixed Update For Tracking(使用固定更新来跟踪)
  • 含义:启用此选项后,头部和控制器的跟踪更新会在 Unity 的 FixedUpdate() 函数中进行,而不是在 Update() 函数中。

  • 理解

    • Update() 在每一帧调用,帧率可能会变化;而 FixedUpdate() 通常是用来处理物理模拟,执行频率是固定的(比如每秒 50 次)。
    • 如果启用 Use Fixed Update For Tracking,可以确保跟踪数据的更新频率更加一致,避免因帧率波动带来的跟踪不稳定。
    • 典型应用场景:需要精确和稳定的物理交互或者需要严格控制更新频率的应用。
    1. Disable Eye Anchor Cameras(禁用眼睛锚点摄像头)
  • 含义:启用此选项后,Unity 将禁用每只眼睛的锚点摄像头。这些摄像头通常是用于渲染 VR 头盔中每只眼睛的视图。

  • 理解

    • Oculus SDK 中每只眼睛通常会有一个锚点(Anchor),用于确定相机的渲染位置。当你禁用这些锚点时,眼睛视图的渲染将会被关闭,通常不会使用这种设置,除非你有特殊需求。
    • 典型应用场景:需要完全自定义眼睛渲染逻辑的场景,或者不需要为每只眼睛单独创建摄像头的应用。

2.3 OVRManager 脚本设置

这里我主要说下几个我认为重要的配置选项:

  • Target devices 目标设备

  • Hand Tracking Support:

    • 从列表中选择应用程序的输入方式类型。有关设置手势跟踪的更多信息,请转到设置手势跟踪主题。
  • Hand Tracking Freq

    • 从列表中选择手势跟踪频率。更高的频率可以实现更好的手势检测和更低的延迟,但会从应用程序的预算中预留一些性能空间
  • Tracking Origin Type

    • Eye Level 跟踪相对于设备位置的位置和方向
    • Floor Level 跟踪相对于地板的位置和方向,地板的高度是通过边界设置决定的。
    • Stage 还会跟踪相对于地板的位置和方向。在 Quest 上,阶段跟踪原点不会直接响应用户重新居中。
  • Requires System Keyboard:

    • 需要系统键盘:选择此选项可允许用户与系统键盘交互。有关更多信息,请转到在 Unity 中启用键盘覆盖主题。
  • System Splash Screen

    • 系统启动画面:单击 Select 打开 2D 纹理列表,然后选择要设置为启动画面的图像。
  • Mixed Reality Capture (MRC) 是一种将虚拟世界和现实世界的场景进行混合的技术,允许用户和观众同时看到 VR/AR 用户在虚拟世界中的互动