当前位置: 首页 > news >正文

Unity XR Interaction Toolkit 开发教程(1):OpenXR 与 XRI 概述【3.0 以上版本】

文章目录

  • 📕Unity XR 开发架构
    • 🔍底层插件(对接硬件)
    • 🔍高层 SDK(面向应用交互层)
  • 📕OpenXR
  • 📕XR Interaction Toolkit
    • 🔍特点
    • 🔍XRI 能够实现的交互类型
    • 🔍XR 交互参与的对象
    • 🔍XRI 中与交互相关的状态

获取完整课程以及答疑,工程文件下载:
https://www.spatialxr.tech/

视频试看链接:https://www.bilibili.com/video/BV14pSbYsEPz

系列教程专栏:Unity XR Interaction Toolkit 系列教程(SDK 版本 3.0 以上)

📕Unity XR 开发架构

使用 Unity 开发 XR 应用的整体架构由底层插件和高层 SDK 组成。
在本套系列教程中,会使用 OpenXR + XR Interaction Toolkit 的开发方案。

🔍底层插件(对接硬件)

不同的底层插件对接对应的 XR 硬件平台,让 Unity 程序兼容到对应的硬件设备上,适配硬件的特性和用户的输入。

开发者通常只要在 Unity 的 XR Plug-in Management 中选择对应的 XR 插件供应商,然后进行设置,Unity 会自动处理程序与硬件的兼容,使得开发的应用能够成功接入设备的 XR 能力,在设备上正常运行。

例: OpenXR ,Apple visionOS,Oculus,Pico XR 插件

🔍高层 SDK(面向应用交互层)

将 XR 应用开发中的常用交互功能封装成模块给开发者使用。开发者会在开发流程中经常使用高层 SDK。

应用层的交互例如:抓取、UI 交互、MR 环境识别……

经典的高层 SDK:XR Interaction Toolkit,Meta XR SDK,PolySpatial,SteamVR SDK

📕OpenXR

在早期,不同的 XR 设备都维护着它们各自的 SDK,供开发人员制作出能在相应设备上运行的程序。但是尴尬的地方就在于,可能利用厂商 A 提供的 SDK 开发的程序无法兼容到厂商 B 的硬件设备上。不像如今已经比较成熟的安卓移动端,只需用 Android SDK开发一款程序,就能兼容到不同的安卓手机上。

而 OpenXR 就是为了简化 XR 开发而制定的一套标准。相当于在编写的 XR 应用程序和不同的硬件设备间新增了一个中间层,向上提供一套统一的开发 API,不同的开发引擎对该 API 进行二次封装,提供给 XR 应用开发者使用。而不同的设备厂商为硬件编写支持 OpenXR 标准的接口,使得中间层能够向下兼容对应的硬件设备。如今,越来越多的 XR 设备开始支持 OpenXR 标准,这意味着选用 OpenXR 进行 XR 设备的开发可以成为一种通用的方案。

有了统一的标准后只要编写一次代码,就能兼容所有的设备。这样开发者只要专注于程序开发本身,而不用在意设备间的差异

📕XR Interaction Toolkit

🔍特点

(1)简称 XRI

(2)Unity 推出的跨平台 XR 交互开发工具包,跨平台机制体现在以下几个方面:

  • 封装了通用的 XR 交互模块,如抓取、点触、射线、移动
  • 使用 Unity 的 Input System 处理不同平台的输入
  • 支持 OpenXR 标准(但是苹果不支持)`
  • 能结合 ARFoundation 开发 AR/MR 应用

(3)逐渐成为行业流行的标准,许多平台推行使用 XRI 作为交互开发包,结合自家 SDK(包括了硬件的特性),完成整套开发流程。

🔍XRI 能够实现的交互类型

  • 3D 物体交互:抓取物体,远距离操控物体,点击物体……
  • UI 交互:点击按钮,拖动滑动条……
  • 移动:持续移动,传送,攀爬……

🔍XR 交互参与的对象

Interactor:发起交互的对象

Interactable:被交互的对象

XRI 中通过 XR Interaction Manager 脚本统一管理场景中所有的 Interactor 和 Interactable

🔍XRI 中与交互相关的状态

Hover 悬停

  • 当 Interactor 接近 Interactable,准备进行交互的时候,会进入到 Hover 状态
  • 例:使用手柄射线点击 UI 按钮,当射线射到 UI 按钮上时,就进入到 Hover 状态,此时点击动作未发生,还未正式进行交互

Select 选中

  • 在进入到 Hover 状态的前提下,做出额外的输入动作发起交互,进入到 Select 状态
  • 例:使用手柄射线点击 UI 按钮,当射线射到 UI 按钮上时,进入到 Hover 状态,然后按下手柄的扳机键,相当于做出点击按钮的动作,进入到 Select 状态

Focus 获得焦点

  • 对象进入到 Select 状态时,同时也会处于 Focus 状态,直到再次选中 Interactable 或者选中另外一个 Interactable 或者明确不选择任何内容时退出 Focus 状态
  • 例:使用手柄抓取物体,手柄靠近物体时进入到 Hover 状态,然后按下手柄抓取键把物体抓起时会同时进入到 Select 和 Focus 状态,松开手柄抓取键结束抓取,会退出 Select 状态,但是不会退出 Focus 状态。重新抓起物体,才会先退出 Focus 状态,然后再同时进入新的 Select 和 Focus 状态。松开后单独按下手柄抓取键但不抓起物体,也能退出 Focus 状态(明确不选择任何内容)

Activate 激活

  • 在进入到 Select 状态的前提下,做出额外的输入动作可进一步对当前的交互对象进行交互
  • 例:用手柄抓取键拿起手枪,进入 Select 状态,然后按下手柄扳机键进行射击,进入 Activate 状态
http://www.lryc.cn/news/476068.html

相关文章:

  • 自扶正救生艇,保障水上救援的安全卫士_鼎跃安全
  • 《Qwen2-VL》论文精读【下】:发表于2024年10月 Qwen2-VL 迅速崛起 | 性能与GPT-4o和Claude3.5相当
  • WebSocket消息帧的组成结构
  • 如何利用低代码开源框架实现高效开发?
  • 使用 RabbitMQ 有什么好处?
  • 机器学习周报(RNN的梯度消失和LSTM缓解梯度消失公式推导)
  • 一篇文章理解前端中的 File 和 Blob
  • 串口屏控制的自动滑轨(未完工)
  • DFA算法实现敏感词过滤
  • Python自动化运维:技能掌握与快速入门指南
  • 在linux系统中安装pygtftk软件
  • decodeURIComponentSafe转义%问题记录URI malformed
  • 自由学习记录(18)
  • vue3-ref 和 reactive
  • Apache Calcite - 查询优化之自定义优化规则
  • 大型语言模型(LLM)的小型化研究进展
  • MiniWord
  • Netty 常见组件介绍
  • 高频电子线路---倍频器与振荡器
  • 删除 git submodule
  • el-table 多选默认选中(根据返回的id给数据加默认选中状态)
  • 境外网站翻译之自由职业
  • 批量图片转PDF文件的多种方法详解
  • Web服务器(理论)
  • js:()=>(,);()的作用:明确表达式的边界。
  • RSI 5G通信技术中用于标识小区的特定参数
  • JavaScript中的闭包、递归问题
  • 【青牛科技】GC4938替代A4938/Allegro在水泵、筋膜枪、吸尘器和电动工具中的应用
  • 基于yolov5的输电线,电缆检测系统,支持图像检测,视频检测和实时摄像检测功能(pytorch框架,python源码)
  • uniapp下载文件的方案,包括H5,App方案解决办法