Version: 2017.2
XR SDK
Vuforia SDK overview

Google VR SDK 概述

Google VR 是 Google DaydreamGoogle Cardboard VR 平台背后的技术。Google VR 包括对智能手机、头戴式查看器和控制器、独立头戴式显示器和应用程序的支持。Google VR 为 Unity 提供了一个 SDK,便于您为这套丰富的设备生态系统构建 VR 内容。

Google VR 技术包括 Daydream(高质量的移动 VR 平台)和 Cardboard(专为入门级 VR 体验和 360 度视频而打造)。Daydream 由兼容 Daydream 的手机、头盔、控制器和体验组成,并通过 Daydream 支持高端 Android 移动设备。请参阅 Google VR 网站上的 Daydream 设备完整列表。Cardboard 几乎适用于 iOS 和 Android 平台上的任何智能手机。

Google Cardboard 是最易于访问的移动 VR 解决方案,允许任何拥有 iOS 或 Android 智能手机的用户体验 VR 应用。Cardboard 实际上有最低和建议的使用要求,但这些要求在硬件上比 Daydream 要少得多,主要集中在操作系统和基本控制系统(如陀螺仪)方面。用户可以使用官方 Google Cardboard 查看设备或支持 Google VR 内容的第三方 VR 查看设备来查看 VR 应用(请参阅“硬件和软件要求”部分)。Cardboard 还支持一系列第三方手持控制器,这些设备适用于需要更复杂交互的应用。

Daydream 比 Cardboard 提供更多功能丰富的体验,但仅支持与 Daydream 兼容的设备,例如专为 VR 设计的与 Daydream 兼容的手机(具有高分辨率显示屏、流畅的图形性能以及用于精确跟踪头部的高精度传感器)。您可以使用一部与 Daydream 兼容的手机并通过 Daydream View(用于体验高品质 VR 的 Google 头盔和运动控制器)来访问 Daydream 手机应用程序。Daydream 还将支持由原始设计制造商制造的 Daydream Standalone HMD(头戴式显示器)。Daydream Standalone 是一款使用 Android 操作系统运行的无线头戴式显示器,可提供更丰富的控制器输入和运动跟踪。

请参阅 Google 的 VR 文档了解有关 Cardboard 和 Daydream 要求和功能的更多信息。

硬件和软件要求

本部分将概述使用 Google VR SDK 的最低以及建议的硬件和软件要求。

以下是支持 Google VR SDK 的设备的最低平台要求,以及一些重要注意事项:

  • 必须安装 Android API SDK 版本 21(也称为“Lollipop”)。

  • 要开发 Google VR 应用程序,必须拥有支持 Cardboard 或 Daydream 的手机。

  • 请参阅 Google 关于 Daydream 硬件的文档,了解如何设置 Android 手机来进行 Daydream 开发。

最低硬件和软件要求

本部分将概述使用 Google VR SDK 进行开发的最低硬件和软件要求。

设备 硬件 软件
Cardboard - 运行 Android 4.1 或更高版本并配备陀螺仪的设备。
- 运行 iOS 8 或更高版本并配备陀螺仪的设备。
- 与 Cardboard 兼容的查看设备。
- Unity Cardboard 集成需要 Android Lollipop 或更高版本。
- 装有 Google Cardboard 应用程序的 iOS 设备。
Daydream - 与 Daydream 兼容的设备。请参阅 Google Daydream 硬件 (Google Daydream Hardware) 页面查看与 Daydream 兼容的设备列表。

建议硬件和软件要求

本部分将概述使用 Google VR SDK 进行开发的建议硬件和软件要求。

设备 硬件 软件
Cardboard - 对于 Android,请参阅 Cardboard 查看器随附的文档以获取兼容设备的完整列表。
- 对于 iOS,任何 iPhone 5 系列或更高版本的手机。
- 与 Cardboard 兼容的查看设备。
- Android 5.0 或更高版本。
- iOS 8 或更高版本,并装有 Google Cardboard 应用程序。
Daydream - 任何与 Daydream 规范兼容的设备。请参阅 Google Daydream 硬件 (Google Daydream Hardware) 页面查看与 Daydream 兼容的设备列表。 Android 7 或更高版本。

有关 Google VR 开发的详细信息,请参阅主要的关于 VR 的 Google 开发者站点。该站点包含大量链接,通过链接即可访问 SDK、教学资料以及有关 API 和应用商店发布操作的文档。

快速入门指南

本部分将帮助您快速开始使用 Unity 开发 Google VR 应用程序。有关开发 Google VR 内容的大量其他说明,请访问 Google VR 开发者网站

要安装 Unity 并使用外部链接获取 Google VR SDK 的平台特定设置说明,请执行以下操作:

1.参考关于安装 Unity 的手册指南来安装 Unity Editor。

i ) 目标平台为 Android 时,请确保通过 __Unity 安装程序__安装 Unity Android 支持包。

ii ) 目标平台为 iOS 时,请确保通过 __Unity 安装程序__安装 Unity iOS 支持包,并有一台 macOS 机器可编译应用程序并将其部署到设备。

2.根据目标平台,遵循关于 VR 的 Google 开发者站点上提供的说明进行操作。

Google 提供了使用 Unity 开发适用于 Android 和 iOS 平台的 Google VR 应用程序的入门指南。具体指南的链接如下:

平台配置设置

本部分将提供配置 Unity 项目以构建 Google VR 应用程序的分步操作指南。

请按照后续部分中的步骤操作,确保 Unity 项目能针对目标 Google VR 设备实现成功构建。

面向 Cardboard(Android 和 iOS)

Unity 提供了许多特定于平台的构建选项,确保能将应用程序构建到 Cardboard 支持的设备。

To access these settings, open the Player Settings (menu: Edit > Project Settings > Player) and navigate to either the Android or iOS section__ (click either on the iPhone or Android icon) depending on which device you want to build to. Navigate to XR Settings__ and make sure the Virtual Reality Supported checkbox is ticked. Next, navigate to the Virtual Reality SDKs list and click the plus__ (+)__ button. Select Cardboard to add it to the list.

Finding Cardboard-specific settings for iOS/Android (Edit > Project Settings > Player > XR Settings)
Finding Cardboard-specific settings for iOS/Android (Edit > Project Settings > Player > XR Settings)

Cardboard 添加到 Virtual Reality SDKs 列表中后,单击旁边的折叠箭头可查看更多 Cardboard 设置。

VR SDK 列表中特定于 Cardboard 的设置
VR SDK 列表中特定于 Cardboard 的设置

下表列出了 Cardboard 设置中的可用属性及其功能描述。

属性 描述
Depth Format 使用此下拉选单可设置 Z 缓冲区深度。Unity 使用此设置来对可见数据进行排序,并确定实际渲染到屏幕的内容。
Enable Transition View 过渡视图是 Google VR 提供的视图,用于通知用户必须将其设备放入与 Cardboard 兼容的查看器中。通过启用此功能,可为用户提供一些时间来将其设备插入查看器。默认情况下已禁用此功能,但可以启用此功能来为用户提供一些时间以将其设备插入查看器。

Cardboard 的最低平台版本要求为 Android 5.0 (Lollipop)(SDK API 级别 21)。

要确保 Unity 使用正确的 APK,并仅在升级到最新版 Android 的设备上运行,必须更改 Minimum API Level

要进行此操作,请选择 Player Settings 并导航到 Other Settings。在 Identification 下,使用 Minimum API Level 下拉选单将其设置为列表中的最新 API。

仅在目标为 Cardboard 时,才应将 Target API Level 设置为 API 级别 21 或更高级别。如果目标为 Daydream,则需要 24 或更高级别。默认情况下,此属性使用已安装的最高级别。有关 Android API 级别的更多信息,请参阅 Android PlayerSettings 的文档。

现在已经准备好为 Cardboard 创建 Unity 内容了。请遵循与常规 Android 或 iOS 开发相同的工作流程(有关更多信息,请参阅 Android 开发iOS 开发文档)。确保在支持 Cardboard 的设备上构建和运行游戏(菜单:__File__ > __Build & Run__)。

面向 Daydream(仅限 Android)

Unity 提供了许多特定于平台的构建选项,确保能将应用程序构建到 Daydream 支持的设备。

To access these settings, open the Player Settings (menu: Edit > Project Settings > Player) and navigate to the Android section (click the Android icon marked in the figure below). Navigate to XR__ Settings__ and make sure the Virtual Reality Supported checkbox is ticked. Next, navigate to the Virtual Reality SDKs list and click the plus (+) button. Select Daydream to add it to the list.

Finding the Daydream-specific settings for Android (Edit > Project Settings > Player > XR Settings)
Finding the Daydream-specific settings for Android (Edit > Project Settings > Player > XR Settings)

Daydream 添加到 Virtual Reality SDKs 列表中后,单击旁边的折叠箭头可查看更多 Daydream 设置。

VR SDK 列表中特定于 Daydream 的设置
VR SDK 列表中特定于 Daydream 的设置

下表列出了 Daydream 设置中的可用属性及其功能描述。

属性 描述
Depth Format 使用此下拉选单可设置 Z 缓冲区深度。此设置用于对可见数据进行排序,并确定实际渲染到屏幕的内容。
Foreground Icon 设置要在 Google VR Play 商店中显示的前景图标。
Background Icon 设置要在 Google VR Play 商店中显示的背景图标。
Use Sustained Performance Mode 启用 Sustained Performance Mode 可获得更长时间的 XR 体验。此设置会降低性能以延长电池续航时间。
Enable Video Surface Enable Asynchronous Video Reprojection. For more information, see the documentation about Asynchronous Video Reprojection for more information.
Enable Protected Memory Enables memory protection for DRM protected content when using Asynchronous Video Reprojection. This option only appears if Enable Video Surface has been selected. For more information, see Asynchronous Video Reprojection

Unity Player Settings 中可用于 Daydream 的属性

目标仅为 Daydream 时的最低平台版本要求为 Android 7.0 (Nougat)(SDK API 级别 24)。如果目标为 Cardboard 以及 Daydream,则支持的最低 API 级别为 21。

要确保 Unity 使用正确的 APK,并仅在升级到最新版 Android 的设备上运行,必须更改 Minimum API Level

要进行此操作,请在 Player Settings 中导航到 Other Settings。在 Identification 下,使用 Minimum API Level 下拉选单将其设置为列表中的最新 API。

如果目标是 Daydream,则 Target API Level 应设置为 API 级别 24。默认情况下,此属性使用已安装的最高级别。有关 Android API 级别的更多信息,请参阅 Android PlayerSettings 的文档。

现在已经准备好为 Daydream 创建 Unity 内容了。请遵循与常规 Android 开发相同的工作流程(有关更多信息,请参阅 Android 开发文档)。确保在支持 Daydream 的设备上构建和运行游戏(菜单:__File__ > __Build & Run__)。

使用 Google VR for Unity

本节介绍在 Unity 中创建 Google VR 内容时应该牢记的重要注意事项。

使用 Google VR for Unity 时,注意以下要求:

  • 想要为特定设备启用 XR 时,使用设备名称 daydream 和 cardboard 来加载该设备。为此,调用 XRSettings.LoadDeviceByName 并传入该设备的字符串名称。

  • 集成 Daydream for Unity 将接管 Unity 活动的层级视图。这意味着在 XR 模式下,将删除初始化 Daydream for Unity 之前对层级视图所做的任何修改。

Daydream 和 Cardboard

DaydreamCardboardVirtual Reality SDKs 列表 (File > Project Settings > Player > XR Settings) 中具有单独条目。Unity 从上到下读取列表,直至找到有效的设备配置。

删除列表中的 SDK 或者对其重新排序,会影响最终构建的应用程序的功能,详情如下:

  • 如果 DaydreamCardboard 都在 Virtual Reality SDKs 列表中,那么在支持异步重投影功能的硬件上运行时将启用该功能。如果在支持 Sustained Performance Mode 的硬件上运行并且已在 Player Settings 中启用相应设置,则将启用该模式(请参阅关于 Daydream 目标的上一节内容)。该应用程序显示在所有 Google Play 应用商店中。

  • Virtual Reality SDKs 列表中,如果 Cardboard 位于 Daydream 之上,该应用程序可能无法在 Daydream 模式下运行(即使在 Daydream 硬件上也一样)。

  • 如果 DaydreamVirtual Reality SDKs 列表中唯一的项,Unity 将添加 XR Android 清单条目,以便该应用程序显示在特定于 XR 的 Google Play 应用商店中。Daydream 需要异步重投影,所以所有支持 Daydream 的设备也支持异步重投影。

  • 如果 CardboardVirtual Reality SDKs 列表中唯一的项,该应用程序不会显示在 Google VR Play 应用商店中。异步重投影和 Sustained Performance Mode 将被禁用(即使在支持相应功能的硬件上也一样)。

  • 如果您计划支持 GearVR 以及 Daydream 和 Cardboard,请将 Oculus 置于列表顶部。支持 GearVR 的手机通过 GearVR SDK 运行,而不支持的手机则回退到 DaydreamCardboard

  • 如果将 None 添加为列表中的第一个设备,则 Unity 会作为普通应用程序启动,并可通过脚本开启 XR。请参阅关于 XRSettings.enabledXRSettings.LoadDeviceByName 的 API 文档以了解更多信息。

Cardboard for iOS

Google 通过 Cocoapods 库管理系统来分发适用于 iOS 的 Cardboard 原生开发工具包 (NDK)。Unity 与 Google VR 的集成使用 Cocoapods 管理器中特定版本的 Cardboard NDK。此 NDK 也用于创建您的 XCode 项目。

这意味着所生成项目的生成方式不同于标准 Unity 项目。Cocoapods 创建一个包含 Unity 项目的 XCode 包装工作空间,并创建一个用于 Cardboard NDK 库及其依赖项的项目。请始终确保打开和/或使用该工作空间而不仅仅是项目本身,从而避免由于缺少 Cocoapods 中的库而导致链接器错误。

Magic Window 模式

在开发过程中,您可能希望有一个仍然使用头部跟踪的__非立体视图。如果您要求用户用 XR__ 查看 2D 图像,或提供 XR 应用程序__的 2D 预览,则此功能非常有用。这也可用于制作宣传材料。为实现此目的,您可以在 XRSettings.enabled 属性为 false 且 XRSettings.loadedDeviceName 设置为 daydream__ 或 cardboard 时访问__头部跟踪数据__。

以下 C# 代码示例使用 XR 头部跟踪在场景中旋转主摄像机,同时使用 XRSettings 来禁用立体视图:

UnityEngine.XR.XRSettings.enabled = false;
Camera.main.GetComponent<Transform>().localRotation = UnityEngine.XR.InputTracking.GetLocalRotation(XRNode.CenterEye);

有关上述内容的更多信息,请参阅关于 XRSettings.LoadDeviceByName 的 API 文档。

硬件音量控件

Daydream SDK for Unity 会阻止本机操作系统 (OS) 访问设备的音量控件。处于 XR 模式时,这将阻止 OS 显示音量用户界面 (UI)。若要手动访问设备的音量控件,请扩展标准 __UnityPlayerActivity__(Android 上 Unity Player 的主 Java 类),并自行覆盖 onKeyDown 和 onKeyLongPress 按键事件函数。

如需了解此过程的更多信息,请参阅有关通过 Java 扩展 UnityPlayerActivity 类的 Unity 文档。

注意:__Unity 不会阻止 Daydream__ 控制器上的音量控件,所以如果您只打算在游戏中使用该控制器,那么可以决定根本不扩展 UnityPlayerActivity

覆盖 Daydream Android 库

Daydream SDK for Unity 提供两个库来支持 Daydream 设备的开发:

  • Daydream 本机库:gvr.aar

  • Google Protobuf Nano Java 库:libprotobuf-java-nano.jar

可以通过在项目中的 Assets/Plugins/Android 文件夹中放置不同版本的库文件来替换其中任一库。库文件名必须完全匹配,才能将其正确覆盖。

立体渲染方法

所有 Google VR 平台都支持多通道渲染。只有支持驱动程序级别实例化的平台上的 Daydream 才支持单通道渲染

支持的 API 和 SDK

本部分将概述使用 Unity 开发 Google VR 应用程序时支持的 API 和 SDK。

Unity API 支持

Google VR for Unity __不____支持__以下 API:

支持的图形 API

Unity 在 AndroidiOS 设备上均支持以下__图形__ __API__:

Android

  • OpenGL

iOS

  • Metal

  • OpenGL

控制器和输入设备

Daydream 控制器

Daydream 控制器允许 3 个自由度,提供旋转和位置信息,具有双轴触摸/点击控制器以及 2 个额外按钮。有关如何从此设备获取输入的信息,请参阅 Google Daydream 控制器文档

Daydream controller
Daydream controller

功能概述

有关 Google VR 提供的特定功能的完整详细信息,请参阅 Google 的 Daydream 开发者文档。有关 Google VR SDK for Unity 支持的功能的概述,请参阅有关 Google VR for Unity 的 Google 文档。

下一部分将简要概述 Google VR 支持的功能。

支持的功能集

下表概述了在 Unity 中使用 Google VR 时每种目标移动 VR 设备支持的功能。

设备 平台 渲染 输入
Cardboard Android Lollipop 或更高版本
- OpenGL
- 立体实例化渲染
- 立体渲染
Cardboard
iOS
- OpenGL
- Metal
- 立体实例化渲染
- 立体渲染
Daydream Android Nougat 或更高版本(使用兼容的硬件) - OpenGL
- 立体实例化渲染
- 立体渲染
Daydream 控制器

资源

实用链接

本部分提供了一些有助于进一步了解 Google VR 开发主题的有用外部链接。

故障排除指南

本部分将列出使用 Google VR SDK 进行开发时可能遇到的最常见问题。

问题 建议
我有 GvrController/GvrViewer/GvrXXXX/Instant Preview 方面的问题。如何解决此问题?
这些类型是 Google VR SDK for Unity 的一部分,由 Google 拥有并提供支持。虽然一般的 Unity 社区可能也能够回答您的问题,但对于任何技术问题,应该访问 GitHUB 上的 Google VR SDK for Unity 站点。
Daydream Keyboard 什么时候发布? 适用于 Google VR 的 Daydream Keyboard 是 Google 技术,将在未来某个核心 Android 系统版本中发布。此技术的访问和使用完全基于 Google 和 Google VR SDK for Unity
我正在尝试构建以 iOS 为目标的 Cardboard 项目,但 Xcode 报告了链接器错误。 Google 通过 Cocoapods 库管理系统来分发适用于 iOS 的 Cardboard 原生开发工具包 (NDK)。Unity 与 Cocoapods 管理器中特定版本的 Cardboard NDK 集成,并使用该 NDK 创建您的 XCode 项目。生成的项目与标准 Unity 项目的生成方式不同。Cocoapods 创建一个包含 Unity 项目的 XCode 包装工作空间,并创建一个用于 Cardboard NDK 库及其依赖项的项目。请始终确保打开和/或使用该工作空间而不仅仅是项目本身,从而避免由于缺少 Cocoapods 中的库而导致链接器错误。

请参阅官方的 Google VR 开发者网站,了解有关更多有关 CardboardDaydream 的故障排除信息。


  • 2017–11–21 页面已发布并进行了编辑审查

  • 2017.2 版中的新功能

XR SDK
Vuforia SDK overview