VR开发基础(三)unity XR最简开发环境搭建-整合Interaction toolkit、openXR plugin、PICO与OCULUS

一,是时候使用openxr了

1,开发阶段,VR设备厂商SDK各异:

pico和Oculus是国内外的vr设备代表,各自提供了不同的厂商SDK(unity 插件)进行快速上手,但也可能因此调用了厂商私有接口导致不兼容;

2,编译运行,设备商SDK编译应用兼容问题:

即使应用开发中没有直接使用私有接口,但基于厂商SDK编译出的apk也并未完全兼容,底层不同的XR loader、运行时带来的典型的问题包括:VRorigin绑定错乱、追踪失效、运行崩溃等;

3,各厂商在积极拥抱openxr

Oculus已经全面支持openxr,直接使用unity openxr plugin已经提供了Oculus支持,其他OVR特性抽取到integration SDK中供平台开发时选用;PICO也在近期对SDK进行了调整,可以看出最近的SDK也按此划分了基础和平台部分,只是目前基础部分宣称支持openxr(native runtime),还没有直接支持到unity官方plugin。

二,XRIT、InputSystem、openXR 在unity开发架构的位置关系

1,Unity XR 插件框架

开发环境的认识依然要从前文介绍过的Unity 的 XR框架开始,以插件框架的机制铺开,该框架使 厂商的XR 提供程序可与 Unity 引擎集成并实现其具体子系统功能。

这种基于插件框架打造“XR SDK壳”的方法,提高了 Unity 的能力:一方面对应用开发者来说,向上解耦了应用开发和底层特定运行时的关系;另一方面支持平台合作伙伴分发 SDK 更新,以支持新的 XR 设备和运行时,而无需修改核心引擎。

unity的XR应用开发架构官方图示回顾

2,XR Interaction Toolkit:文档

用于创建 VR 和 AR 体验的、基于组件的交互系统。提供统一的interaction manager机制,通过为对象分别导入配置Interactor (射线等)、Interactable(cube等) 交互组件,进行抓取等交互;

重点是:XRIT支持openxr,并提供了多个基于openxr的交互组件;

3,Input System:文档

unity推出的新输入系统, 原有UnityEngine.Input的替代方案。通过配置式的action map进行多对多的输入和回调的映射,使得输入响应与具体设备抽象出来,扩展性更强,同时入手难度也变大。

重点是:XRIT中inputsystem默认自带一个早期input system包,XRIT提供各种action based交互组件以支撑自定义配置事件源,使得新系统的入手难度降低;

4,openXR plugin:文档

OpenXR 是由 Khronos 开发的开放标准,允许开发人员面向抽象的 AR/VR 设备进行开放。unity中使用此插件可在 XR 插件管理中启用 OpenXR。

该插件也将XR SDK离散的框架进一步收拢,规范了设备需要为unity SDK的 XR提供者和特性 进行的实现和适配。

Unity XR 框架整合 OpenXR的示意图回顾:

 

注:openXR plugin要求必须采用新的input system;

小结:

XRIT是unity 开发的已有XR开发核心模块,支持action based的input system;openXR是未来的统一方向,其plugin要求事件输入使用input system;

input system提供了Cross-platform XR 设备输入,满足一次开发的需求;

5,一次编写:

unity上基于unity XR接口开发,基于openxr编译统一loader和运行时的调用,是比较理想的应用解决方案,即一次编写一次编译;

unity的openXR插件开发支持进展不同,当前从验证效果来看:Oculus quest2已基本适配对接OpenXR plugin编译,而PICO则未支持,从官方roadmap和论坛答复看需要2020年8月份后,但与官方plugin直接对接似乎要延迟(PICO UnityXR SDK对接OpenXR标准);

因此目前兼容Pico和Oculus还需要一次编写、分开编译。

具体为在build的project的plugin配置中,为pico选用pico plugin;为Oculus选用openxr或Oculus plugin;

三,环境整合,Quick Start

1,设置开发环境,新建unity项目

硬件:PICO和Oculus基于安卓系统,有关必要的开发设置和驱动等安装类同手机不作赘述,其中PICO可以通过打开原生Android的设置进行网络和休眠时间等的设置;

软件:unity最低 版本使用2020,目前推荐使用unity hub进行集成安装和project创建启动管理,证书可使用个人版(有效期只有几天,但会自动延期);

新建项目:使用hub新建项目,选择3D模板;不建议采用VR模板,其中主要多一个rig绑定对象,但无法直接试用到设备,后续通过导入XR包创建。

熟悉unity项目面板:官方面板介绍手册

2,启用设备,Build Setting开发配置:

  • USB

使用 USB-C 数据线将设备连接到计算机,然后戴上设备。

当提示开发者选项或允许访问数据时,单击允许。

Oculus下载 OEM USB 驱动程序

  • Build Setting

要验证连接,请打开 Unity 项目,然后在菜单上,转到File > Build Settings

Platform列表中,选择Android,然后单击Switch Platform

在“运行设备”列表中,请点击刷新,查看和选择已连接成功的设备

 

3,package manager配置,导入必须开发包

PICO开发包,从官方网站下载和导入;

Oculus集成包和插件,从Unity Asset Store下载,(可选,建议采用openXR插件)

XRIT,从package manager面板搜索导入;

openXR plugin,从package manager面板搜索导入;

input system,建议从package manager更新到最新版本;

如有需要从unity assert store搜索添加资源的,如图package manager左上角切换到“My Asserts”可以找到和导入;

 

4,project配置设置:配置和自定义 project构建设置

一体机大致相同,通过菜单上,转到Edit > Project Settings,配置player几个重要项:

Color Space 用linear,

版本、最小Android API LEVEL、脚本后端、目标架构

  

input 处理选用new input system,会重启unity

 

5,构建您的第一个应用程序

进入project settings,plugin manager中选择Android tab配置插件:

  • PICO勾选pico;
  • Oculus勾选openXR,同时添加Oculus 的交互profile,并必须勾上featuregroup的quest support

导入interaction toolkit的start assert,包含了基本的action map、controller预制;

 

在inspect中设置为默认,以便导入origin的时候将其直接应用上

 

在3D项目中接着创建XR origin action based,一个基于新input system的action配置式输入的第一人称对象,

 

为XRIT配置默认的“输入处理器”和“action map”:

  • 修改evensystem的input module处理接收器为XRIT提供的"UI input Module",其本身也是继承自原input System UI input module;

 

  • 为origin添加action manager组件,挂载controller用到的“XRI Default Input Actions”;
  • 更多对actions的预览和修改,可以点击actions文件在inspect面板中打开它进行修改编辑,如图展开UI press动作,增加其他的输入源绑定;

 

回到Build Settings面板,编译apk到设备上运行,如可看到第一人称附带controller射线的场景,SUCCESS!

6,为场景添加简单的XR交互

添加2Dcanvas和3D物体cube,或导入openXR plugin的controller sample(带一个canvas和cube)

通过add component,添加射线交互

为3D物体添加grab interactable

为2D的canvas添加受追踪设备的图形射线检测,接收raycaster交互

回到Build Settings面板,编译apk到设备上运行,如果第一人称可使用controller射线并可点击canvas的button,可抓取cube,SUCCESS!

  • 3
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值