IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 游戏开发 -> VR开发基础(三)unity XR最简开发环境搭建-整合Interaction toolkit、openXR plugin、PICO与OCULUS -> 正文阅读

[游戏开发]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!

  游戏开发 最新文章
6、英飞凌-AURIX-TC3XX: PWM实验之使用 GT
泛型自动装箱
CubeMax添加Rtthread操作系统 组件STM32F10
python多线程编程:如何优雅地关闭线程
数据类型隐式转换导致的阻塞
WebAPi实现多文件上传,并附带参数
from origin ‘null‘ has been blocked by
UE4 蓝图调用C++函数(附带项目工程)
Unity学习笔记(一)结构体的简单理解与应用
【Memory As a Programming Concept in C a
上一篇文章      下一篇文章      查看所有文章
加:2022-10-17 13:05:24  更:2022-10-17 13:06:51 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 -2025/1/17 6:15:58-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码