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 状态

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/904820.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

2024-10-29 商业分析-盗取他人游戏MOD牟利-记录

摘要: 2024-10-29 商业分析-盗取他人游戏MOD牟利-记录 事件: 【实锤】《真英雄》盗用本人《风林火山》mod地图售卖牟利!_ryan_knight_12吧_百度贴吧 真英雄??我从未见过如此厚颜无耻之人【ryan_knight_12吧】_百度贴吧…

神奇的数据恢复工具:让丢失的数据重现

现在很多时候我们的数据资料都是通过电子方式存储吧,毕竟现在都在推崇无纸化办公啦。但是有时候我们觉得好好存储在电子设备里的文件莫名的就不翼而飞了。今天我介绍几个免费的数据恢复软件帮你把它们抓回来! 1.Foxit数据恢复大师 链接直达&#xff1a…

MFC界面开发组件Xtreme Toolkit Pro v24全新发布—完整的SVG支持

Codejock软件公司的Xtreme Toolkit Pro是屡获殊荣的VC界面库,是MFC开发中最全面界面控件套包,它提供了Windows开发所需要的11种主流的Visual C MFC控件,包括Command Bars、Controls、Chart Pro、Calendar、Docking Pane、Property Grid、Repo…

定高与不定高虚拟列表

前言 在日常代码开发过程中,总会遇到大数据量的问题,当我们需要加载显示几千上万的数据的时候,如果我们是一次性渲染,那肯定就会出现严重的卡顿现象,这对用户体验是非常差的,也会让我们的项目,可…

基于全景图像拼接算法

图像拼接简介图像拼接的主要步骤摄像机运动的投影模型( projective model)图像的对齐 (registration)图像的合成 (blending)图像拼接试验 什么是图像拼接? 将多幅在不同时刻、从不同视角或者由不同传感器获得的图像经过对齐然后无缝地融合在一起&#xf…

二十二、MySQL 8.0 主从复制原理分析与实战

文章目录 一、复制(Replication)1、什么是复制2、复制的方式3、复制的数据同步类型3.1、异步复制3.2、半同步复制3.3、设计理念:复制状态机——几乎所有的分布式存储都是这么复制数据的 4、基于binlog位点同步的主从复制原理4.1、异步复制示例…

MFC工控项目实例二十七添加产品参数

承接专栏《MFC工控项目实例二十六创建数据库》 在型号参数界面添加三个参数试验时间、最小值、最大值。变量为double m_edit_time; double m_edit_min; double m_edit_max; 1、在SEAL_PRESSURE.h中添加代码 class CProductPara { public:union{struct{...double m_edit_min;…

java:入门基础(1)

练习一:文字版格斗游戏 需求: ​ 格斗游戏,每个游戏角色的姓名,血量,都不相同,在选定人物的时候(new对象的时候),这些信息就应该被确定下来。 举例: ​ 程序运行之后…

Spring Boot Configuration和AutoConfiguration加载逻辑和加载顺序调整

在spring中, AutoConfiguration也是一个种Configuration,只是AutoConfiguration是不能使用proxy的。 而且spring对于两者的加载顺序也不是一视同仁,是有顺序的。spring会先加载SpringBootApplication可达的且标注了Configuration的类&#x…

第二十三章 Vue组件通信之非父子组件通信

目录 一、引言 1.1. event bus 事件总线 1.1.1. 实现步骤 1.2. provide & inject 1.2.1. 实现步骤 二、event bus事件总线完整代码 2.1. 工程结构图 ​2.2. main.js 2.3. App.vue 2.4. EventBus.js 2.5. BaseC.vue 2.6. BaseB.vue 2.7. BaseA.vue 三、provi…

AI代币是什么?AI与Web3结合的未来方向在哪里?

近两年随着人工智能的崛起,AI已经渗透到制造业、电商、广告、医药等各个行业,加密货币领域也不例外,人工智能与区块链的融合,让我们看到了独特的数字资产 — AI加密代币。 它的流行始于2022年底,随着OpenAI智能聊天机…

java_封装

基本介绍 面向对象编程有三大特征:封装、继承和多态。 封装介绍 封装的理解和好处 封装的实现步骤(三步) 案例 package com.hspedu.encap;public class Encapsulation01 {public static void main(String[] args) {// 如果要使用快捷键altr…

爬虫+数据保存2

爬取数据保存到MySQL数据库 这篇文章, 我们来讲解如何将我们爬虫爬取到的数据, 进行保存, 而且是把数据保存到MySQL数据库的方式去保存。 目录 1.使用pymysql连接数据库并执行插入数据sql代码(insert) 2.优化pymysql数据库连接以及插入功能代码 3.爬取双色球网站的数据并保…

物理模拟:OpenVDB数据与游戏引擎的结合使用

目录 OpenVDB简介 VDB(Voxel Data Base)存储结构 距离场(SDF)和密度场(Density) VDB格式特点 VDB应用案例 1. 网格运算 2.Ray Marching算法优化 3.模型转流体 PBRT V4 OpenVDB在Unreal Engine中的…

Java8中CompletableFuture.allOf的使用

目录标题 CompletableFuture.allOf(...);CompletableFuture.allOf(...).get();CompletableFuture.allOf(...).join();总结如何优雅的处理异常呢? CompletableFuture.allOf(…); CompletableFuture.allOf(…) 本身不会等待所有的 Completable…

VBA语言専攻介绍20241031

VBA语言専攻简介 在当今世界,几乎没有任何工作是没有计算机的。有些工作需要定期重复相同的过程,最好将它们自动化。一旦任务自动化,只需单击一个按钮即可运行。VBA是实现自动化工作的最为简单的方式,它不需要其他工具&#xff0…

OpenCV视觉分析之目标跟踪(6)轻量级目标跟踪器类TrackerNano的使用

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 Nano 跟踪器是一个超轻量级的基于深度神经网络(DNN)的通用目标跟踪器。 由于特殊的模型结构,Nano 跟踪器速度…

Python小游戏17——飞机大战

运行结果 首先,你需要安装Pygame库。如果你还没有安装它,可以使用以下命令来安装: bash pip install pygame 代码: python import pygame import random # 初始化Pygame pygame.init() # 屏幕大小 SCREEN_WIDTH 800 SCREEN_HEIGH…

Java 基本语法与语言环境(1/30)

目录 Java 基本语法与语言环境 1. Java 语言环境搭建 1.1 安装 JDK 1.2 配置系统变量 配置步骤(Windows 系统) 2. Hello World 程序 2.1 代码解析 2.2 编译与运行 3. Java 程序结构 4. 基本语法规则 4.1 标识符与关键字 4.2 数据类型与变量 …

开源一个开发的聊天应用与AI开发框架,集成 ChatGPT,支持私有部署的源码

大家好,我是一颗甜苞谷,今天分享一个开发的聊天应用与AI开发框架,集成 ChatGPT,支持私有部署的源码。 介绍 当前系统集成了ChatGPT的聊天应用,不仅提供了基本的即时通讯功能,还引入了先进的AI技术&#x…