Google Cardboard for Unity 快速入门

本指南介绍了如何使用适用于 Unity 的 Google Cardboard XR 插件来创建自己的虚拟现实 (VR) 体验。

您可以使用 Cardboard SDK 将手机变成 VR 平台。移动设备可以显示具有立体成像效果的 3D 场景、跟踪头部活动并作出相应反应,以及通过检测用户何时按下观看器按钮来与应用互动。

首先,您将使用 HelloCardboard,这是一个演示 Cardboard SDK 核心功能的演示游戏。在游戏中,用户会在虚拟世界中四处寻找并收集对象。本文将介绍如何执行以下操作:

  • 设置您的开发环境
  • 下载并构建演示版应用
  • 扫描 Cardboard 观看器的二维码以保存其参数
  • 跟踪用户的头部动作
  • 通过为每只眼睛设置正确的失真来渲染立体图像
  • 开启和关闭 VR 模式

设置您的开发环境

软件要求:

  • Unity 6000.0.23f1 或更高版本
    • 请务必在安装过程中包含 Android 和 iOS Build Support。
    • 请务必安装补丁版本 23f1 或更高版本。
  • 必须安装 Git,并且 git 可执行文件必须位于 PATH 环境变量中。如需了解详情,请参阅 Unity 的软件包管理器 Git 支持文档。

导入 SDK 并创建新项目

请按照以下步骤导入 Unity SDK 并创建新项目。

  1. 打开 Unity 并创建一个新的 3D 项目。
  2. 在 Unity 中,依次前往 Window > Package Manager。
  3. 点击 +,然后选择 Add package from git 网址。
  4. 将 https://github.com/googlevr/cardboard-xr-plugin.git 粘贴到文本输入字段中。
    该软件包应添加到已安装的软件包中。
  5. 前往 Google Cardboard XR Plugin for Unity 软件包。在示例部分中,选择导入到项目。
    示例资源应加载到 Assets/Samples/Google Cardboard/<version>/Hello Cardboard 中。

配置 HelloCardboard 场景

  1. 前往 Assets/Samples/Google Cardboard/<version>/Hello Cardboard/Scenes,选择 Add Open Scenes,然后选择 HelloCardboard 以打开示例场景。
  2. 打开图层菜单,然后选择修改图层…。
  3. 定义一个名为“互动”的新层。
  4. 点击 Treasure GameObject 以打开 Inspector 窗口。将其图层设置为“Interactive”。如果系统显示一个弹出式窗口,询问您是否要将所有子对象的层也设置为“互动”,请点击“是,更改子对象”。
  5. 点击 Player > Camera > CardboardReticlePointer GameObject 以打开 Inspector 窗口。在“Cardboard reticle pointer”脚本中,选择“Interactive”作为 Reticle Interaction Layer Mask。

配置 Android build 设置

依次选择 File > Build Settings。

  1. 选择 Android,然后选择 Switch Platform。
  2. 选择 Add Open Scenes,然后选择 HelloCardboard。

Player Settings

依次选择修改 > 项目设置...。

配置分辨率和演示设置

依次前往播放器 > 分辨率和演示。

  1. 将默认方向设置为横向(左)或横向(右)。
  2. 停用优化帧同步。

配置其他设置

依次前往 Player > Other Settings。

  1. 在图形 API 中选择 OpenGLES2、OpenGLES3 或 Vulkan,也可以选择它们的任意组合。
  2. 在 Minimum API Level 中选择 Android 8.0 'Oreo' (API level 26) 或更高级别。
  3. 在目标 API 级别中选择 API level 35 或更高级别。
  4. 在 Scripting Backend 中选择 IL2CPP。
  5. 在目标架构中选择 ARMv7、ARM64 或同时选择两者,以选择所需架构。
  6. 在互联网访问权限中选择 Require。
  7. 在 Active Input Handling 中选择 Input System Package (New)。
  8. 在 Package Name 下指定您的公司网域。
  9. 如果选择 Vulkan 作为图形 API:
    • 在 Vulkan 设置中,清除渲染时应用显示旋转复选框。
    • 在纹理压缩格式中选择 ETC2。
  10. 选择 Activity,然后在应用入口点中清除 GameActivity。

配置发布设置

依次前往 Player > Publishing Settings。

  1. 在build部分中,选择 Custom Main Gradle Template 和 Custom Gradle Properties Template。
  2. 将以下代码行添加到 Assets/Plugins/Android/mainTemplate.gradle 的依赖项部分:

      implementation 'androidx.appcompat:appcompat:1.6.1'
      implementation 'com.google.android.gms:play-services-vision:20.1.3'
      implementation 'com.google.android.material:material:1.12.0'
      implementation 'com.google.protobuf:protobuf-javalite:3.19.4'
    
  3. 将以下行添加到 Assets/Plugins/Android/gradleTemplate.properties:

      android.enableJetifier=true
      android.useAndroidX=true
    

配置 XR 插件管理设置

前往 XR Plug-in Management。

  1. 在插件提供方下选择 Cardboard XR Plugin。

构建您的项目

依次选择 File > Build Settings。

  1. 选择构建,或选择设备,然后选择构建并运行。

配置 iOS 项目设置

依次选择 File > Build Settings。

  1. 选择 iOS,然后选择 Switch Platform。
  2. 选择 Add Open Scenes,然后选择 HelloCardboard。

Player Settings

依次选择修改 > 项目设置...。

配置分辨率和演示设置

依次前往 Player > Resolution and Presentation。

  1. 将默认方向设置为横向(左)或横向(右)。

配置其他设置

依次前往 Player > Other Settings。

  1. 在相机使用情况说明中,输入 Cardboard SDK requires camera permission to read the QR code (required to get the encoded device parameters).。
  2. 在目标最低 iOS 版本中,写入 12.0。
  3. 在 Package Name 下指定您的公司网域。
  4. 在在边缘处延迟系统手势中,检查 Top Edge、Left Edge 和 Right Edge。

配置 XR 插件管理设置

前往 XR Plug-in Management。

  1. 在插件提供方下选择 Cardboard XR Plugin。

构建您的项目

依次选择 File > Build Settings。

  1. 选择 Build 或 Build and Run。

重新置中

借助 Cardboard SDK,您可以使用 Recenter() 重新居中头部跟踪器。

按照以下步骤操作,使用示例应用试用该功能:

  1. 将设备移动到您想要重新居中的位置(用作新的向前看头部姿势)。
  2. 将 Cardboard 设备的触发器保持在有效状态至少三秒。
  3. 释放触发器。
  4. 初始姿势现在位于相机所指的方向。

开启和关闭 VR 模式

借助 Unity XR 插件管理 API,您可以为 Google Cardboard XR 插件(适用于 Unity)开启或关闭 VR 模式。如需查看最终用户文档和使用示例,请参阅 Unity 的最终用户文档。

HelloCardboard 示例中的 VrMode 场景展示了上述 API 的基本用法。在此场景中,点按退出图标 “X”按钮 即可关闭 VR 模式,再次点按屏幕上的任意位置即可重新开启 VR 模式。如需详细了解如何执行此操作,请查看 VrModeController.cs。

后续步骤