Unity XR Interaction Toolkit 开发教程(2):导入 SDK【3.0 以上版本】
文章目录
- 📕课程总结
- 📕安装 Unity 编辑器与打包模块
- 📕导入 OpenXR
- 📕导入 XR Interaction Toolkit
- 📕打包发布
获取完整课程以及答疑,工程文件下载:
https://www.spatialxr.tech/
视频试看链接:
2.导入 SDK(上):配置 OpenXR【Unity XR Interaction Toolkit 跨平台开发教程】(3.0以上版本)
2.导入 SDK(下):配置 XRI【Unity XR Interaction Toolkit 跨平台开发教程】(3.0以上版本)
系列教程专栏:Unity XR Interaction Toolkit 系列教程(SDK 版本 3.0 以上)
📕课程总结

📕安装 Unity 编辑器与打包模块
在 Unity Hub 中安装一个 Unity 编辑器(推荐 LTS 长期支持的稳定版),并且安装硬件设备对应平台的打包模块(目前市面上大部分 XR 头显都是安卓系统,如 Quest、Pico,需要安装 Android Build Support,只有苹果的头显是 visionOS 系统,需要安装 visionOS Build Support)

本教程中使用的 Unity 版本是 2022.3.20f1,因为考虑到大部分人用的可能还是相对旧一点的版本。如果你能够安装最新的 Unity 6000 LTS 版,也是可以的,后续在配置环境时的兼容性是更好的。
系列教程会选用 Meta Quest 3 进行最终应用的效果展示。
安装完编辑器后就可以创建一个新的 Unity 工程,我选用的渲染管线是 URP,需要使用 Universal 3D 模板。

📕导入 OpenXR
创建 Unity 工程后,在 Unity 编辑器界面菜单栏的 Edit>Project Settings 里安装 XR Plug-in Management,在 PC 端和安卓端勾选 OpenXR


然后在 XR Plug-in Management 下方的 OpenXR 里添加对应设备的交互配置文件 Interaction Profile(PC 端和安卓端都要添加):

因为我开发的是 Meta Quest,我就把 Meta 相关的交互配置文件都进行添加(Meta Quest Touch Pro Controller Profile 和 Oculus Touch Controller Profile)。
然后在下方的 OpenXR Feature Groups 当中勾选 Meta Quest Support(如上图所示)。如果不勾选,打包到 Quest 后会变成一个 2D 窗口应用。
然后在 Project Validation 中如果有看到红色的报错或者黄色的警告,需要点击 Fix All 进行环境配置的修复(PC 端和安卓端都要进行修复)。当列表每一项前方出现绿色的 ✔,就代表环境配置是正确的。

如果 Unity 是 URP 项目,需要移除 URP 配置文件里的 Screen Space Ambient Occlusion 渲染特性。
URP 配置文件默认在项目中的 Assets > Settings 文件夹中:


移除过后,重启 Unity 编辑器,正常来说就不会看到 Project Validation 窗口中的警告了。
📕导入 XR Interaction Toolkit
XR Interaction Toolkit 官方开发者文档:[XR Interaction Toolkit | XR Interaction Toolkit | 3.0.6]

可在文档中选择自己想要查看的版本。
在 Unity 菜单栏 Window > Package Manager 当中先在左上角切换到 Packages: Unity Registry,搜索 XR Interaction Toolkit,查看当前 Unity 版本里默认的 XRI 版本是否是最新的,如果不是,需要在 Unity 的 Package Manager 当中通过包名 com.unity.xr.interaction.toolkit,使用 Add package by name 导入最新版的 XRI

制作本教程时 XR Interaction Toolkit 已经更新到了 3.0.6
将 XRI 进行导入,成功后需要导入 XRI 的样例包(本节课程先导入 Starter Assets 和 XR Device Simulator)

然后确保 Input System 的版本更新到了 1.11.0 以上,如果是旧版,可以在 Unity 的 Package Manager 当中通过包名 com.unity.inputsystem,使用 Add package by name 导入最新版的 Input System

最后在 Project Validation 里进行配置修复。
📕打包发布
可以在 Assets > Samples 中打开官方提供的一个样例场景。

在 Unity 的 File > Build Settings,将需要打包的场景添加到打包列表下(点击 Add Open Scene 能添加当前打开的场景),确保设备开启了开发者模式后,可以将设备与电脑通过 USB 线进行连接,点击 Build and Run 进行打包。

相关文章:
Unity XR Interaction Toolkit 开发教程(2):导入 SDK【3.0 以上版本】
文章目录 📕课程总结📕安装 Unity 编辑器与打包模块📕导入 OpenXR📕导入 XR Interaction Toolkit📕打包发布 获取完整课程以及答疑,工程文件下载: https://www.spatialxr.tech/ 视频试看链接&a…...
element-plus校验单个form对象合法性
在 Vue 中,循环生成的表单列表,并且每个表单中包含多个对象,使用 v-for 来创建这些表单,并且使用动态 prop 路径来验证单个对象是否满足必填校验。 <template><el-form ref"formRef" :model"form" …...
Linux常见命令合集
目录 1.ls 列出指定目录下的文件和和文件夹 2.cd change directory 切换目录 3. cat 查看文件 4.more 分屏查看文件 5.tail从后往前查看指定文件 6.mkdir 创建目录 7.rm强制删除指定目录和文件 8.cp复制文件和目录 9.mv移动和重命名命令 10.tar命令打包和拆包 重点是…...
__init__.py __all__和 __name__的作用及其用法
__ init__.py 的作用及其用法: 包下的__init__.py 所在目录是一个模块包,本身也是一个模块,可用于定义模糊导入时要导入的内容。当我们导入一个包的时候,包下的__init__.py中的代码会自动执行,因此在某些大的项目被使用频率较高的模块&#x…...
js操作数组的方法 / js操作字符串的方法
操纵数组的方法 常见的有10种 push() -在数组末尾添加一个或多个元素,并返回新的长度。 pop() -删除数组的最后一个元素,并返回那个元素。 shift() -删除数组的第一个元素,并返回那个元素。 unshift() -在数组的开始添加一个或多个元素&…...
Docker 部署RocketMQ
FROM: Docker安装RocketMQ教程_docker 安装rocketmq-CSDN博客...
Linux(Cent OS)环境离线安装mkfontscale mkfontdir命令 解决java项目在linux系统下无法获取中文字体问题
https://download.csdn.net/download/mlc19860417/89938093 1 附件下载 1.libfontenc-1.1.3-3.amzn2.0.2.x86_64.rpm 2.libXfont-1.5.2-1.amzn2.0.2.x86_64.rpm 3.xorg-x11-font-utils-7.5-20.amzn2.0.2.x86_64.rpm 4.fontpackages-filesystem-1.44-8.amzn2.noarch.rpm 5.sti…...
计算堆栈中的剩余数字
更多关于刷题的内容欢迎订阅我的专栏华为刷题笔记 该专栏题目包含两部分: 100 分值部分题目 200 分值部分题目 所有题目都会陆续更新,订阅防丢失 题目描述: 向一个空栈中依次存入正整数, 假设入栈元素 n ( 1 < n < 2…...
笔记:mysql升级 5.6至5.7
说明 一台已有数据的机器,停机升级,从MySQL Server5.6.48,升级到 5.7.38。 环境介绍 10.24.10.247,Mysql 5.6.48 CentOS Linux release 7.9.2009 (Core) 32G内存、500G数据盘/home; 实际数据量约120M,2个…...
前端的全栈Deno篇(五):与前端保持一致的模块化方案,摆脱ERR_REQUIRE_ESM和mjs、cjs等模块混乱带来的心智负担
在现代JavaScript开发中,模块化系统的演变经历了多次变革,使得前端和后端开发人员在选择模块加载方式时常常感到困惑。尤其是Node.js所采用的CommonJS和ESM(ECMAScript Modules)两种模块体系,以及文件扩展名的多样性&a…...
与外部公司做数据交互时,需要注意哪些事情?
在现代企业系统中,数据交互已成为日常业务流程的核心部分。与外部公司进行数据交换可以带来业务合作和资源共享的机会,但也带来了数据安全、协议兼容性、合规性等方面的挑战。本文将深入探讨在与外部公司进行数据交互时需要关注的关键事项,并…...
基于hive分析Flask为后端框架echarts为前端框架的招聘网站可视化大屏项目
基于hive分析Flask为后端框架echarts为前端框架的招聘网站可视化大屏项目 1. 项目概述 项目目标是构建一个大数据分析系统,包含以下核心模块: 1、数据爬取:通过request请求获取猎聘网的就业数据。 2、数据存储和分析:使用 Hive …...
Ansible 部署应用
Ansible Ansible 是基于 Python 开发,集合了众多优秀运维工具的优点,实现了批量运行命令、部署程序、配置系统等功能的自动化运维管理工具。默认通过 SSH 协议进行远程命令执行或下发配置,无需部署任何客户端代理软件,从而使得自动…...
使用Docker Swarm进行集群管理
💓 博客主页:瑕疵的CSDN主页 📝 Gitee主页:瑕疵的gitee主页 ⏩ 文章专栏:《热点资讯》 使用Docker Swarm进行集群管理 Docker Swarm简介 安装Docker 在Ubuntu上安装Docker 在CentOS上安装Docker 在macOS上安装Docker …...
基于树莓派的安保巡逻机器人--(一、快速人脸录入与精准人脸识别)
目录 零、前言 一、人脸检测 二、人脸识别 1、采集人脸 2、训练人脸识别模型 3、人脸识别应用 零、前言 随着智能安防需求的增长,基于人工智能和物联网的安保系统逐渐成为趋势。树莓派因其低成本、高扩展性等特点,成为很多AI项目的理想平台。本文将为大…...
中间件的应用
控制器 <?phpnamespace App\Http\Controllers;use Illuminate\Http\Request;class AgeController extends Controller {//public function index(){return "年龄测试";} }路由 // 年龄控制器路由 Route::get("d2/{age}",[AgeController::class,&quo…...
真题与解析 202206二级 青少年软件编程(Python)考级
青少年软件编程(Python)等级考试试卷(二级) 202206真题与解析 分数:100 题数:37 测试时长:60分钟</...
ChatGPT新体验:AI搜索功能与订阅支付指南
就在凌晨,在ChatGPT迎来两周岁生日之际,OpenAI重磅发布了ChatGPT的全新人工智能搜索体验。 期待已久的时刻终于到来, ChatGPT正式转型成为一款革命性的AI搜索引擎! 先来看看ChatGPT搜索:这次不是简单的加个搜索框,而…...
【植物识别】Python+深度学习+人工智能+CNN卷积神经网络+算法模型训练+TensorFlow
一、介绍 植物识别系统,使用Python作为主要编程语言开发,通过收集常见的6中植物树叶(‘广玉兰’, ‘杜鹃’, ‘梧桐’, ‘樟叶’, ‘芭蕉’, ‘银杏’)图片作为数据集,然后使用TensorFlow搭建ResNet50算法网络模型&am…...
快讯,Flutter PC 多窗口新进展,已在 Ubuntu/Canonical 展示
相信 Flutter 开发者对于 Flutter PC 多窗口的支持一直是「望眼欲穿」,而根据 #142845 相关内容展示, 在上月 27 号的 Ubuntu 峰会,Flutter 展示了多窗口相关进展。 事实上 Ubuntu 和 Flutter 的进一步合作关系应该是在 2021 年就开始了&…...
后进先出(LIFO)详解
LIFO 是 Last In, First Out 的缩写,中文译为后进先出。这是一种数据结构的工作原则,类似于一摞盘子或一叠书本: 最后放进去的元素最先出来 -想象往筒状容器里放盘子: (1)你放进的最后一个盘子(…...
web vue 项目 Docker化部署
Web 项目 Docker 化部署详细教程 目录 Web 项目 Docker 化部署概述Dockerfile 详解 构建阶段生产阶段 构建和运行 Docker 镜像 1. Web 项目 Docker 化部署概述 Docker 化部署的主要步骤分为以下几个阶段: 构建阶段(Build Stage):…...
JavaSec-RCE
简介 RCE(Remote Code Execution),可以分为:命令注入(Command Injection)、代码注入(Code Injection) 代码注入 1.漏洞场景:Groovy代码注入 Groovy是一种基于JVM的动态语言,语法简洁,支持闭包、动态类型和Java互操作性,…...
Leetcode 3576. Transform Array to All Equal Elements
Leetcode 3576. Transform Array to All Equal Elements 1. 解题思路2. 代码实现 题目链接:3576. Transform Array to All Equal Elements 1. 解题思路 这一题思路上就是分别考察一下是否能将其转化为全1或者全-1数组即可。 至于每一种情况是否可以达到…...
【Java学习笔记】Arrays类
Arrays 类 1. 导入包:import java.util.Arrays 2. 常用方法一览表 方法描述Arrays.toString()返回数组的字符串形式Arrays.sort()排序(自然排序和定制排序)Arrays.binarySearch()通过二分搜索法进行查找(前提:数组是…...
HTML 列表、表格、表单
1 列表标签 作用:布局内容排列整齐的区域 列表分类:无序列表、有序列表、定义列表。 例如: 1.1 无序列表 标签:ul 嵌套 li,ul是无序列表,li是列表条目。 注意事项: ul 标签里面只能包裹 li…...
新能源汽车智慧充电桩管理方案:新能源充电桩散热问题及消防安全监管方案
随着新能源汽车的快速普及,充电桩作为核心配套设施,其安全性与可靠性备受关注。然而,在高温、高负荷运行环境下,充电桩的散热问题与消防安全隐患日益凸显,成为制约行业发展的关键瓶颈。 如何通过智慧化管理手段优化散…...
三体问题详解
从物理学角度,三体问题之所以不稳定,是因为三个天体在万有引力作用下相互作用,形成一个非线性耦合系统。我们可以从牛顿经典力学出发,列出具体的运动方程,并说明为何这个系统本质上是混沌的,无法得到一般解…...
NLP学习路线图(二十三):长短期记忆网络(LSTM)
在自然语言处理(NLP)领域,我们时刻面临着处理序列数据的核心挑战。无论是理解句子的结构、分析文本的情感,还是实现语言的翻译,都需要模型能够捕捉词语之间依时序产生的复杂依赖关系。传统的神经网络结构在处理这种序列依赖时显得力不从心,而循环神经网络(RNN) 曾被视为…...
css3笔记 (1) 自用
outline: none 用于移除元素获得焦点时默认的轮廓线 broder:0 用于移除边框 font-size:0 用于设置字体不显示 list-style: none 消除<li> 标签默认样式 margin: xx auto 版心居中 width:100% 通栏 vertical-align 作用于行内元素 / 表格单元格ÿ…...
