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 年就开始了&…...
测试微信模版消息推送
进入“开发接口管理”--“公众平台测试账号”,无需申请公众账号、可在测试账号中体验并测试微信公众平台所有高级接口。 获取access_token: 自定义模版消息: 关注测试号:扫二维码关注测试号。 发送模版消息: import requests da…...
关于nvm与node.js
1 安装nvm 安装过程中手动修改 nvm的安装路径, 以及修改 通过nvm安装node后正在使用的node的存放目录【这句话可能难以理解,但接着往下看你就了然了】 2 修改nvm中settings.txt文件配置 nvm安装成功后,通常在该文件中会出现以下配置&…...
【解密LSTM、GRU如何解决传统RNN梯度消失问题】
解密LSTM与GRU:如何让RNN变得更聪明? 在深度学习的世界里,循环神经网络(RNN)以其卓越的序列数据处理能力广泛应用于自然语言处理、时间序列预测等领域。然而,传统RNN存在的一个严重问题——梯度消失&#…...
高等数学(下)题型笔记(八)空间解析几何与向量代数
目录 0 前言 1 向量的点乘 1.1 基本公式 1.2 例题 2 向量的叉乘 2.1 基础知识 2.2 例题 3 空间平面方程 3.1 基础知识 3.2 例题 4 空间直线方程 4.1 基础知识 4.2 例题 5 旋转曲面及其方程 5.1 基础知识 5.2 例题 6 空间曲面的法线与切平面 6.1 基础知识 6.2…...
精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南
精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南 在数字化营销时代,邮件列表效度、用户参与度和网站性能等指标往往决定着创业公司的增长成败。今天,我们将深入解析邮件打开率、网站可用性、页面参与时…...
【从零学习JVM|第三篇】类的生命周期(高频面试题)
前言: 在Java编程中,类的生命周期是指类从被加载到内存中开始,到被卸载出内存为止的整个过程。了解类的生命周期对于理解Java程序的运行机制以及性能优化非常重要。本文会深入探寻类的生命周期,让读者对此有深刻印象。 目录 …...
【C++进阶篇】智能指针
C内存管理终极指南:智能指针从入门到源码剖析 一. 智能指针1.1 auto_ptr1.2 unique_ptr1.3 shared_ptr1.4 make_shared 二. 原理三. shared_ptr循环引用问题三. 线程安全问题四. 内存泄漏4.1 什么是内存泄漏4.2 危害4.3 避免内存泄漏 五. 最后 一. 智能指针 智能指…...
毫米波雷达基础理论(3D+4D)
3D、4D毫米波雷达基础知识及厂商选型 PreView : https://mp.weixin.qq.com/s/bQkju4r6med7I3TBGJI_bQ 1. FMCW毫米波雷达基础知识 主要参考博文: 一文入门汽车毫米波雷达基本原理 :https://mp.weixin.qq.com/s/_EN7A5lKcz2Eh8dLnjE19w 毫米波雷达基础…...
AI语音助手的Python实现
引言 语音助手(如小爱同学、Siri)通过语音识别、自然语言处理(NLP)和语音合成技术,为用户提供直观、高效的交互体验。随着人工智能的普及,Python开发者可以利用开源库和AI模型,快速构建自定义语音助手。本文由浅入深,详细介绍如何使用Python开发AI语音助手,涵盖基础功…...
MySQL的pymysql操作
本章是MySQL的最后一章,MySQL到此完结,下一站Hadoop!!! 这章很简单,完整代码在最后,详细讲解之前python课程里面也有,感兴趣的可以往前找一下 一、查询操作 我们需要打开pycharm …...
