re0:从0开始学习oculcs vr开发(二) 在你的quest里创建第一个vr应用

943 阅读5分钟

本文主要参考自meta官方教程

本教程描述了以下基本步骤:

  1. 设置一个可以在 Meta Quest上构建和运行的 Unity 项目。
  2. 开发一个基本的“hello world”Unity 项目,其中包含单个场景以及在耳机上渲染的立方体游戏对象。 配置相机设置。
  3. 在 Meta Quest 耳机上构建、运行和测试项目。

@48SC1Q(TB}IF70SDT$V51I.png

本教程是快速开始 Meta Quest 开发的主要参考。

环境配置

在进一步阅读之前,请确保您已遵循设置开发环境和 Meta Quest 开发人员中心指南中的所有步骤。通过遵循这些指南,您的开发环境将为您在 Unity 中的第一个项目做好准备,并且您的 Meta Quest 将可以在 Meta Quest Develop Hub中访问。

  • 名词解释
    • Meta XR 一体化 SDK - 核心功能、组件、脚本和插件的一体化源,可简化应用程序开发过程。
    • OVRPlugin - 一个允许 Unity 与 Meta Quest 的 VR 运行时通信的插件。
    • Oculus XR 插件 - Unity VR 子系统的扩展,与 OVRPlugin 通信。

本文基于unity 2021.3.30和meta sdk v57运行,而原教程基于Unity Editor version 2021.3.20f1 and Meta XR All-in-One SDK v59.

第一步 通过usb连接头显

您必须将头显设置为开发者模式,并通过USB线缆将其连接到您的电脑。

戴上您的Meta Quest头显,并登录您想用于开发的账户。 在头显上,前往“设置”>“系统”>“开发者”,并打开“USB连接对话框”选项。 使用USB-C线缆将头显连接到您的电脑。 当提示允许访问数据时,选择“允许”。

SA0G@LB_Z((_(%I4H_9EECU.png

我使用的是quest3,不会弹系统弹窗,需要到通知中心找到访问文件的通知点击允许

第二步 在unity创建一个新工程

暂时将您的头显放在一边,然后按照以下流程操作:

  1. 打开Unity Hub。
  2. 在“项目”标签下,选择“新建项目”。如果您安装了多个Unity版本,请选择您想为这个项目使用的版本。
  3. 选择“3D Core”模板。
  4. 在“项目设置”下,输入HelloWorld作为项目名称,选择存储位置,并选择“创建项目”。

https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/baf8567a25024566a6cbeeed512d4f42~tplv-k3u1fbpfcp-jj-mark:0:0:0:0:q75.image#?w=574&h=359&s=43216&e=png&b=1b1b1b

第三步 创建一个cube并展示给用户

随便建一个cude就行

第四步 从unity 插件商店导入meta sdk

稍后,您将学习如何仅导入您需要的SDK,以减小您应用的大小,但现在,请导入全部内容。

导航到“窗口”>“包管理器”以打开Unity包管理器面板。

前往Unity资源商店页面,如有需要请登录。

点击“添加到我的资源”按钮。

选择“在Unity中打开”以开始与Unity中的包管理器的集成过程。如果有请求,允许Unity打开资源商店链接。

等待Unity包管理器窗口打开。

在“Meta XR SDK”面板上,点击“安装”。

当提示重新启动Unity时,点击“重启编辑器”。

这步如果v59安装不上可以下一个v57替代

第五步 设置安卓编译环境

File > Build Settings. platform选Android,然后点switch platform,然后在Run Device里选择你的vr头显,确保这时头显已经连上pc了 TMUZG6H`3CSA$@{ZAEU0LAT.png

第六步 运行meta插件的自检程序

Oculus > 工具 > 项目设置工具。Unity项目设置工具包含了在Unity中创建一个新的Meta Quest应用程序的规则。

在项目设置工具的Android图标标签下的检查列表中,选择“全部修复”。

AU~KQRI18R3XA7)(Z3Q_V`1.png

把所有tab下的fix all全点了就行

第七步 添加一个OVRCameraRig

上面的步骤其实和vr还没什么关系,从这步开始,我们才开始使用meta给我们提供的预制体 Meta XR Core SDK包含了OVRCameraRig预制件,它是Unity主摄像机的替代品。这意味着您可以安全地从层级(Hierarchy)标签中删除Unity的主摄像机。

使用OVRCameraRig的主要好处是它提供了OVRManager组件(OVRManager.cs脚本)。OVRManager提供了与VR硬件的主要接口。

按照这个过程操作:

在层级(Hierarchy)标签下,右键点击主摄像机(Main Camera),然后选择删除(Delete)。 在项目(Project)标签下,搜索Camera Rig,并将OVRCameraRig预制件拖动到您的场景中。或者,也可以直接在层级(Hierarchy)标签中拖动它。

添加OVRCameraRig

确保您项目的层级结构如下所示:

6`ED2P7K@VU@GZKNNXI2V%5.png

OVRCameraRig层级结构

1.png

在层级(Hierarchy)标签中选择OVRCameraRig。 在检查器(Inspector)中选中OVRCameraRig的情况下,在OVR Manager组件下,确保您的头显在目标设备(Target Devices)下被选中。

WW5_(X6[CH12((~6TVL])W1.png

第八步 运行工程

File > Build Settings ,  Scenes, 选择 Add Open Scenes. 这里不选择也没事,然和点Build And Run,如果前面的配置没问题,那等待之后应用就会安装到你的vr里了,在dev hub也能看到

1.png

1.png

一点优化

自此,官方教程结束了,我们可以稍微优化一下demo,也学习一下unity的一些操作

  • 换个天空盒
  1. 选择或创建天空盒材料:

    • 如果你已经有一个预制的天空盒材料(Skybox Material),可以直接使用它。否则,你可以创建一个新的天空盒材料。在Unity编辑器的Project视图中右键单击,选择 Create > Material
    • 在材料的检视面板中,将Shader从标准材料更改为Skybox。你可以选择不同类型的Skybox,例如 Skybox/6 SidedSkybox/CubemapSkybox/Panoramic 等,根据你的天空盒贴图类型选择合适的Shader。
  2. 配置天空盒材料:

    • 在材料的Shader属性中,你需要指定用于天空盒的纹理。例如,如果你选择了 Skybox/6 Sided,你需要为天空盒的每一面指定一个纹理。
  3. 将天空盒应用到场景:

    • 在Unity的菜单栏中,选择 Window > Rendering > Lighting Settings 打开光照设置。
    • 在出现的Lighting面板中,找到 Environment 部分,你会看到一个 Skybox Material 的选项。将你的天空盒材料拖放到这个字段中。
    • 如果你未能看到天空盒材料的字段,请确保你的场景中有一个主光源(Directional Light),并且在其光照设置中 Environment LightingSource 被设置为 Skybox
  4. 调整天空盒设置(可选):

    • 如果需要,你可以调整场景中的主光源方向,以便天空盒中的光源与场景中的实际光照方向匹配。
    • 你也可以调整天空盒的缩放和旋转,以获得最佳视觉效果。
  5. 保存并测试:

    • 保存你的场景,并在游戏模式中预览天空盒效果,确保一切看起来都像你预期的那样。

到这里aigc生成一个想要的天空盒然后加上去skybox.blockadelabs.com/

  • 给cube加个旋转动画
  1. 创建立方体:

    • 在Unity编辑器中,创建一个立方体(Cube)。你可以通过菜单 GameObject > 3D Object > Cube 来创建一个新的立方体。
  2. 添加脚本:

    • 右键点击项目视图(Project View)中的空白区域,选择 Create > C# Script。给脚本命名,例如 RotateCube
    • 将这个新创建的脚本拖拽到立方体对象上,或者在立方体被选中的情况下,直接在检视视图(Inspector View)中点击 Add Component 按钮,搜索并添加 RotateCube 脚本。
  3. 编写脚本:

    • 双击 RotateCube 脚本打开你的代码编辑器。

    • 在脚本中编写代码来实现旋转功能。以下是一个简单的例子:

      csharpCopy code
      using UnityEngine;
      
      public class RotateCube : MonoBehaviour
      {
          public float speed = 50f; // 旋转速度
      
          void Update()
          {
              // 每帧旋转立方体
              transform.Rotate(Vector3.up, speed * Time.deltaTime);
          }
      }
      

      这段代码会在每帧更新时,沿着立方体的Y轴(向上)旋转。speed 变量控制旋转的速度,你可以在Unity编辑器中调整这个值。

  4. 调整脚本参数:

    • 在Unity编辑器中,选择立方体,然后在检视视图中找到 RotateCube 脚本组件。
    • 调整 speed 参数来改变旋转速度。
  5. 运行并测试:

    • 点击Unity编辑器的播放按钮运行游戏,你的立方体应该会开始旋转。

通过这种方式,你可以轻松地让立方体在Unity中自行旋转,并且可以自定义旋转的速度和方向。

现在安装到头显里,如果一切顺利,你将看到立方体在场景内转动

IS9CK4`FI2A8VQTJ@345A.png