3.快速开始
此文档帮助开发者使用SDK快速开始创建一个可以在 Rhino X 上运行的MR程序,了解SDK的使用流程以及文件结构,快速熟悉SDK。
关于SDK的详细功能、组件以及API,请查看后面的章节。
注意
此SDK只支持Rhino X头显,请勿在RhinoX Pro头显上使用此SDK
3.1 快速使用SDK
1.下载 SDK
在开发者网站选择UnitySDK,点击 “下载最新版” 下载SDK,下载后将压缩包解压,会得到如下3个版本的Unitypackage
然后根据你需要使用的Unity编辑器版本选择对应的SDK包,切忌使用错误的Unity编辑器版本打开。
注解
使用2019版本时,Unity版本必须是2019.4或以上版本,且必须使用URP
2.创建新项目
1.通过Unity Hub创建新项目,创建时选择需要使用的Unity版本、选择3D模板、设置Project Name、选择Project路径
2.创建新项目之后,在新项目窗口选择 Assets -> Import Package -> Custom Package… 来导入SDK
注解
选择的Unitypackage必须与刚才创建项目所选的Untiy编辑器版本一致
3.导入SDK,选择 All ,然后点击 Import
3.UnitySDK 配置
SDK初始化
初次导⼊ SDK 进 Unity 项目中之后,必须通过 RhinoX SDK/Initialize 完成初始化。点击此按钮将初始化 RhinoX SDK 所需要的设置。
2.项目设置
先在 File -> Build Settings 中将打包平台切换为Android
接下来在Player Settings中按照如下图设置:
4.打包应用
RhinoX - Interaction - Demo - Two Hands demo场景展示了SDK的所有主要交互功能,您只需要打包此场景即可,请忽略其他Scene。
将需要打包的场景添加build场景中,然后勾选场景,点击右下角Build即可打包出一个apk文件。
您可以在Player Setting中设置修改Product Name以及Package Name,避免重复。
5.安装运行应用
3.2 SDK Demo介绍
此章节详细介绍SDK里面的主要demo的文件结构,帮助您快速了解SDK的基本使用方法,如果您对具体的组件使用方法理解起来有困难 可以参考此demo进行详细对比,或者直接在此demo基础上进行改造。
3.2.1 文件结构
用 Unity 打开 sdk 项目以后⽂件路径结构如下:
小技巧
如上面文件结构所示,SDK 的所有内容都在 Plugins 文件夹中,如需在其他项目中使用SDK,只需复制粘贴 Plugins 文件夹中所有内容到其他 Unity 项目中的 Plugins 文件夹中即可。
Plugins/Android ⽂件夹
AndroidManifest.xml:此⽂件定义RhinoX所必须的所有权限请求, 默认权限请不要修改,如需其他权限请自行添加。
Plugins/Android/assets:所有可追踪物体的标定⽂件(json 和 dat⽂件) 必须被存放在此路径中。 实际内容可能和此图有不同。
Plugins/Android/libs: 存放usb权限请求⽂件。 此⽂件夹装载所有必须的代码库,这些库⽂件是视觉算法的核⼼⽂件, 请不要删除或者移动这些⽂件
Plugins/RhinoX ⽂件夹
Plugins/RhinoX/Assets: 此文件夹中主要存放手柄交互相关资源,包括左右手柄的预制体,您可以直接通过他们来创建手柄交互组件
Plugins/RhinoX/OpenSource: 此文件夹里面主要存放RhinoX 交互系统代码,这些是开源⽂件,如果有需要⽤户可以修改这些⽂件
对应的Unity文件夹里面则存放SDK的DLL文件,建议不要改动此文件夹
3.2.2 初始化流程介绍
初始化内部⼯作流程:
设置关键类的 execution order
设置 PlayerSetting / MultiThread Rendering = False
设置 QualitySetting / VysncCount = Don’t Sync
设置 Default Orientation = Landscape Left
3.2.3 场景介绍
此demo里面的主场景为 RhinoX - Interaction - Demo - Two Hands demo ,主要展示以下功能:
利用Beacon作为GroundPlane来定位虚拟场景的原点位置,同时支持1、2、3号Beacon
利用手柄提供6dof的交互功能,同时支持单手柄和双手柄
提供可供触碰、抓取、抛掷的Cube模型
场景结构如下:
下面我们将介绍场景中最重要的几个GameObject模块,其他次要模块请您自行学习相关unity基础
1. ARCameraRig
ARCameraRig的子对象为ARCamera,他代表了我们的头显,因此场景必须有且只有一个 ARCamera 脚本存在。
ARCamera 脚本会让这个 Camera 以双目方式渲染,对可跟踪的物体进行识别,并且接受 VIO 算法的方位更新。
Tracking Config 下的选项可以让你控制头显的跟踪设置,如是否跟踪位置或者姿态,以及添加Tracking Profile
Reticle Config可以设置是否启用头瞄功能,可以通过反选Enable Reticle隐藏头显里面的小白点
警告
Tracking Profile必须包含需要跟踪的配置文件,不可为空。
2. Ground Plane
GroundPlane的作用是定位整个虚拟场景的地面位置,直接在场景的根目录下创建,可以创建多个,通常我们将他们的Transform设置(0,0,0)
我们通过Trackable Identity脚本来将GroundPlane与实际的定位信标进行绑定。通常我们将Beacon作为GroundPlane使用,即通过Beacon来控制场景的摆放位置。
GroundPlane脚本中的具体参数配置请查看 Ground Plane 介绍
3. RxPlayerHand-RightHand
此object代表我们的右手柄,left则代表左手柄,用于对场景中的对象进行交互
如果您需要创建新项目,建议您直接从下面路径导入手柄预制体,一般不需要您做修改,如果您对这个对象有兴趣,可以查看第4章文档 进行详细学习。
手柄其实就是最典型的 Dynamic Target 对象,所以此对象上挂载了Dynamic Target以及Trackable Identity脚本
其他脚本的详细信息请参考第4章 RxController 。
4. Touchable/Grabable/Throwable
这些为可交互对象,分别为可触摸、可抓取、可抛掷,如果你需要使用类似功能,请参照demo进行创建
如果您对这些交互组件有疑问,或者使用上有困惑,请查看第4章,交互组件
5. RxEventSystem
当场景中添加 RxButtonEventTrigger 的时候被自动创建,是监听 RhinoX 硬件输入的系统模块,详细信息请查看 事件系统