3.入门指南

此章节旨在帮助您从零开始使用RhinoX Unity XR SDK进行开发。

  • 如果您是一名初学者,那么建议您详细参考此文档以及文档中相关链接进行学习;

  • 如果您之前已经接触过Unity XR开发,也建议您仔细阅读此章节内容,其中有一些设置需要注意。

  • 如果对文档中的内容有疑问,您可以进入 论坛 进行提问,我们将及时为您解答。

3.1 准备工作

目前此SDK主要支持RhinoX Pro头显,开发前请确认您使用了正确的头显设备。

  • RhinoX Pro设备(灰色或者蓝色)

  • 一根Type-C数据线

  • 一台开发电脑

3.2 搭建开发环境

因为RhinoX Pro是基于Android系统的设备,且RhinoX Unity XR SDK是基于Unity引擎的SDK,所以使用前您需要准备以下软件环境。

  • 配置adb环境

  • 安装Unity Hub以及合适的Unity编辑器版本

1 配置adb环境

主要用于apk应用的安装

  1. 先点击 Android SDK platform-tool 进入官网进行下载:

  1. 参照 此教程 配置adb环境变量

2 安装Unity

  1. 先点击 Unity Hub下载 进入官网下载Unity Hub

  2. 下载安装Unity,建议使用 2020.3 版本

Note

目前已测支持版本为:2019.4、2020.3、2021.3,不建议使用其他未测试版本

  1. 安装Unity以及安卓开发环境

Note

Android Build Support是打包安卓apk必须的软件环境,请务必确认全部勾选以下安装包

_images/unityinstall-1.png

3.3 下载并导入SDK

目前RhinoX Pro头显只支持RhinoX Unity XR SDK,您需要选择正确的SDK进行下载

1 下载SDK

跳转到 SDK页面 ,选择RhinoX Unity XR SDK页面, 点击 “下载最新版” 进行下载

下载完成后您将得到如下压缩包

_images/sdkpkg.png

Note

如果压缩包名称不一致,请确认您是否下载了RhinoX一代头显的SDK,此SDK与RhinoX Pro的SDK不一样

2 新建Unity项目

打开Unity Hub,在 项目 -> 新项目 ,选择使用推荐的Unity版本新建项目, 推荐使用 2020.3 版本

Note

  • 如果推荐的Unity版本未安装,请从Unity官网下载并安装。

参考以下设置新建项目:

_images/projectconfig.png

Note

  • 模板选择3D

  • 路径以及项目名称中不能出现中文字符

3 导入SDK

在项目窗口选择Window->Package Manager,点击左上角的 + 号,选择Add package from disk

_images/7.1_image8.jpg

找到解压好的Ximmerse_UnityXR_SDK文件夹路径(文件夹后缀为版本号),选中package.json打开

_images/7.1_image9.jpg

导入完成后,编辑器顶部将出现 Ximmerse XR SDK 按钮,至此,SDK导入完成。

3.4 项目设置

1.切换目标平台

因为RhinoX Pro是Android平台设备,所以需要将Build平台切换为Android

  • 打开菜单项File > Build Settings

  • 在Platform列表中选择Android平台

  • 点击Switch Platform

_images/7.1_image7.jpg

Note

  • 如果没有Switch Platform按钮,请返回步骤3.2查看Unity是否安装Android Platform Build Support module

2.设置Player Settings

Player Settings中有很多发布需要的设置项,为了确保打包出来的应用能够正常使用,请务必按照以下要求进行设置

  1. 在Edit->Project Settings->Player->Other Setting中,将Active Input Handling修改为Both,此操作需要重启项目后生效。

_images/7.1_image10.jpg
  1. 重启项目后,点击菜单项Ximmerse XR SDK->Initialize XR SDK,对SDK进行初始化

_images/sdkint.png

Attention

如果应用打包出来有问题,您可以在Edit->Project Settings->Player->Other Setting中,对照如下设置项,检查是否与推荐设置一致, 建议您使用以下推荐配置。

配置项

推荐值

Default Orientation

Landscape Left

Color Space

Linear

Multithreaded Rendering

false

Graphics API

OpenGLES3

Compute Skinning

true

Graphics Jobs

false

Normal Map Encoding

XYZ

Shader Precision Model

Use platform defaults for sampler precision

Munimum API level

Android 8.0’Oreo’(API level 26)

Target Sdk Version

Automatic(highest installed)

Scripting Backend

IL2CPP

Api Compatibility Level

.NET_Standard_2_0

C++ Compiler Configuration

Release

Target Architectures

ARM64

VSync Count

Dont’t Sync

3.设置XR Loader

Attention

确保Assets/XR/Loaders中Ximmerse XR Loader的Settings不为空。

在Asset->XR->Loader里面选择Ximmerse XR Loader,按照如下图进行设置

_images/xrloader.png

4.勾选Ximmerse XR Plugin

Attention

不勾选此选项会导致打包出来的应用闪退

点击Edit->Player Settings ->XR Plug-in Management,勾选 Ximmerse XR Plugin

_images/7.1_image13.jpg

3.5 搭建场景

1.创建新场景

点击菜单项File > New Scene创建一个新的Scene,命名并保存Scene,此例中命名为Example

2.检查XR Interaction Toolkit

XR Interaction Toolkit 是 Unity 提供的高级工具包,包含许多跨平台的 XR 交互功能,使用前需要先下载Sample文件,主要包含以下两个部分:

Starter Assets:该示例文件默认位于 Assets/Samples/XR Interaction Toolkit/[version]/Starter Assets 目录下,提供了一套示范配置文件,包括一套默认的输入动作和预设。

XR Device Simulator: XR 设备模拟器,提供用于模拟 XR 头戴和手柄的资产,默认位于 Assets/Samples/XR Interaction Toolkit/[version]/XR Device Simulator 目录下。 该示例文件允许通过鼠标和键盘输入来操控头戴和手柄。文件夹内包含与模拟器配套使用的示例 Binding,以及一个可以在场景中 快速使用的预制体。

详细信息可查看 此文档

Attention

使用 ActionBase 创建交互时,务必下载 Starter Assets,否则无法进行交互。

下载步骤如下:

_images/samplefile.png

Note

由于Unity版本bug,2020.3.4以上版本可能无法自动安装XR Interaction Toolkit,建议使用2020.3.21.或者按照下图手动安装。

_images/addxrtoolkit1.png _images/addxrtoolkit2.png

3.添加摄像机

删除场景中默认的Main Camera,在Hierarchy面板单击鼠标右键,点击XR -> XR Origin(ActionBase)自动添加组件

Note

请勿修改XR Origin以及Main Camera的Rotation值

若使用的XR Interaction Toolkit版本比较新,此处XR Origin(ActionBase)显示为XR Origin(VR)

_images/xrrigcreate.png

将Main Camera上的Tracked Pose Driver(input system)替换为Tracked Pose Driver脚本

Attention

如果不替换,应用启动后如果头显息屏或者退到后台再启动,画面会卡住

_images/trackposedriver.png

创建完成后如下图:

_images/xrorigin.png

此处默认添加的是ActionBase组件,除此之外还有DeviceBase组件,若想详细了解可参考 从零开始教程

4.移除天空盒

MR应用与VR应用的最大区别在于,MR可以看到现实的世界,所以在MR应用中通常不需要天空盒作为背景,按照如下步骤可以去除天空盒

在场景中选择XRRig->Camera Offset->Main camera, 在Inspector中更改如下设置:

  • Camera的Clear Flags选为Solid Color

  • Background选择纯黑色

如下图所示:

_images/7.1_remove_skybox.png

5.添加手柄交互功能

在MR应用中,我们主要使用手柄进行交互,在上面添加的XR Origin中,我们可以看到 LeftHand Controller 以及 RightHand Controller 两个对象,他们分别代表左右手柄。

这里我们以左手柄为例,介绍如何添加手柄交互功能

1. 添加手柄的默认设置

按照如下步骤添加系统预设配置文件,这些设置主要用于绑定手柄按键与其对应的操作行为。

_images/startasset.png

Note

如果此处无法添加配置文件,请返回第2步下载Sample文件。

2. 添加手柄模型

我们在SDK中提供了默认的手柄预制体,如果您需要在项目中显示手柄模型,可以在如下路径中找到手柄预制体

_images/controllerprefabpath.png

然后将对应的预制体对象直接拖拽到LeftHand Controller->XR Controller->Model Prefab处

_images/addcontrollerprefab.png

右手柄交互添加方式同上。

3. 添加Input Action Manager脚本

由于RhinoX Unity XR SDK中使用了最新的Unity输入系统,所以需要添加 Input Action Manager 脚本来控制输入:

按照如下图步骤,在 XR Origin 对象下,通过Add Component添加脚本

_images/inputaction.png

新增Element0,然后添加 XRI Default Input Actions 文件即可

_images/inputaction1.png

6.创建Ground Plane

在RhinoX Pro的系统中 Ground plane是非常重要的组件,它主要用于定位场景的地面,应用启动后通过识别Ground Plane中 绑定的对应ID的定位信标,来定位场景的地面,他的作用与VR一体机中扫描地面来确定游戏使用范围的原理类似。

通常我们将Groundplane对象与场景的地面置于同一平面(与Unity场景的地面重合),这样启动应用,并识别定位板之后,场景的地面 就会自动被定位到Groundplane对象放置的平面(通常是地面)

如果你不希望将Groundplane对象放置在地面,比如放置在墙上或者桌子上,那么您可以通过设置Groundplane对象的Transform的 Y值来调整他与Unity场景地面的相对高度,具体效果,您可以通过实际测试观察.

Attention

举个例子:如果将Groundplane对象的Position的Y值设置为1,Unity场景地面的Y值为0,那么当你戴上头显低头识别到Groundplane 对象(Beacon)后,你的视线高度(Camera)就是你的身高加上1m,这个时候Unity场景里面的地面就是在现实地面的下面1m的位置 。如果你希望Unity中的地面与现实的地面重合,你可以将Beacon放置在距离现实地面1m高的位置,或者将Groundplane的 Positon Y值也设置为0即可。

Note

因为一体机出货默认标配的是1号Beacon,所以我们通常使用Beacon作为Ground Plane。如果Beacon无法满足使用需求,可向销售申请 其他形式的Tag使用,具体使用方法请查看 TagProfileLoading介绍

先添加Tag Profile Loading组件,然后勾选Beacon(表示可识别1,2,3号Beacon)

_images/tagprofileloadingcreate.png _images/tagprofileloading.png

右键添加 Ground Plane ,设置Track ID为65(代表1号Beacon),勾选 DebugView 选项(识别到会显示坐标轴)

_images/gpcreate.png _images/gpconfig.png

7.添加地面

在Hierachy界面点击鼠标右键,创建一个Plane,Transform设置为(0,0,0),至此一个简单的场景创建完成。

此场景只包含一个地面,以及双手柄的模型,如果您需要实现更丰富的功能,如模型的抓取,UI交互等,您可以自行学习Unity XR相关 开发知识,也可以参考 从零开始教程 进行学习。

3.6 打包运行

1.打包应用

选择File->Build Settings,点击Add Open Scenes按钮添加当前Scene,然后点击 Build 按钮,设置APK名称和路径,开始编译:

_images/7.1_image14.jpg

等待编译完成,Unity将弹出保存路径,可以看到编译出的APK文件。

_images/7.1_image15.jpg

2.安装应用

保证RhinoX Pro设备开机并电量充足,使用Type-C数据线连接开发电脑和RhinoX Pro设备,通过如下adb命令安装APK即可:

Note

如果您不熟悉adb的使用,可以返回 搭建开发环境 进行查看,或者直接下载 adb安装apk脚本 工具进行使用

_images/7.1_image16.jpg

3.运行应用

确认双手柄均已连接头显,通过手柄射线启动应用,启动应用后先将Beacon(圆盘)放在地面,戴上头显低头识别Beacon。

_images/lookbeacon.png

此时您将看到一个地面出现在Beacon上方,如果上面的设置中勾选了DebugView,识别到之后Beacon上会显示红绿蓝三轴坐标 ,如果勾选了却不显示,则代表未识别成功,请返回 创建GroundPlane 章节检查配置

_images/debugview.png

移动Beacon的位置,重新定位Beacon,地面位置会跟着移动。当手柄在视野内移动时,手柄的模型会跟随移动。

如果您能够看到上述现象,则表示您已经基本掌握了SDK的开发流程,更复杂的应用开发,您点击 Unity XR培训资料 进入论坛 查看相关学习资料,预祝您开发顺利!

3.7 参考示例

如果您是初次搭建场景,您可以直接导入Sample示例进行参考,具体操作步骤如下

_images/hellounity.png _images/hellounitypath.png

其中 HelloUnity 示例是RhinoX Unity XR SDK的基础示例场景, Gaze And Gesture Interaction Sample 是 手势识别的示例场景。

如果您希望获取更详细的示例教程,可以前往 示例教程 进行下载学习。