【重制版】Unity Meta Quest 一体机开发(一):前期准备,Meta XR SDK导入和环境配置,配置玩家物体

文章目录

  • 📕教程说明
  • 📕Meta XR SDK 介绍
  • 📕前期准备
    • ⭐开启开发者模式
      • ⚡在 Meta 官网申请开发者
      • ⚡在 Meta Quest 手机 APP 开启开发者
    • ⭐电脑需要下载的软件
      • ⚡Meta Quest Link(以前叫做Oculus PC客户端)
      • ⚡Oculus ADB Drivers
      • ⚡SideQuest
      • ⚡87VR助手
      • ⚡Meta Quest Developer Hub
      • ⚡Unity Hub
  • 📕Unity 操作
    • ⭐Unity 环境配置
      • ⚡添加安卓模块
      • ⚡Building Settings 里将平台切换成安卓
      • ⚡导入 Meta XR SDK
      • ⚡Project Setup Tool 自动修复环境
      • ⚡Quality 设置
      • ⚡XR Plug-in Management
      • ⚡修改全局配置文件
    • ⭐配置玩家物体
    • ⭐例:快速配置可以被抓取的物体
    • ⭐将 Unity 程序打包到头显中运行
    • ⭐导入样例场景

此教程相关的详细教案,文档,思维导图和工程文件会放入 Spatial XR 社区。这是一个高质量 XR 开发者社区,博主目前在内担任 XR 开发的讲师。该社区提供专人答疑、完整进阶教程、从零到一项目孵化保姆服务(包含产品上架App lab)、投资|融资对接、工程文件下载等服务。

社区链接:
SpatialXR社区:完整课程、项目下载、项目孵化宣发、答疑、投融资、专属圈子

在这里插入图片描述


📕教程说明

这期教程我将介绍使用 Unity 开发 Meta Quest 应用的前期准备,Meta XR SDK 导入 Unity 和环境配置,以及如何配置玩家物体。

Unity 版本:2022.3.20f1

视频讲解链接:
(上)开发者模式,前期软件准备 https://www.bilibili.com/video/BV1kw4m1D7yF

(下)导入Meta XR SDK,配置玩家物体 https://www.bilibili.com/video/BV1LJ4m1P7gr

注:在制作教程的时候 SDK 版本还是 v64 版本,但是教程发布的时候,SDK的版本已经更新到了 v65 版本。不过相关的配置流程没有发生变化,所以大家可以放心看接下来的部分。


📕Meta XR SDK 介绍

在这里插入图片描述


📕前期准备

在这里插入图片描述

⭐开启开发者模式

⚡在 Meta 官网申请开发者

官方文档中的指导:https://developer.oculus.com/documentation/native/android/mobile-device-setup/

在这里插入图片描述
在这里插入图片描述
账号认证:(我之前使用的是手机号认证)
在这里插入图片描述

创建组织:
在这里插入图片描述

⚡在 Meta Quest 手机 APP 开启开发者

这个步骤非常重要!
在这里插入图片描述
在这里插入图片描述
开启开发者模式后,可以在 Quest 头显里的 “设置>系统” 中检查是否有“开发者”选项(截图源于Quest v64 系统)

在这里插入图片描述

不过有时候虽然头显里有开发者选项,主要还是看手机 APP 里的开发者模式是否是开启的。

⭐电脑需要下载的软件

⚡Meta Quest Link(以前叫做Oculus PC客户端)

用于串流调试,直接通过头显看到Unity中运行的画面。

串流:将电脑中显示的画面传输到头显中。
有线串流:通过USB线(推荐USB3.0)将头显与电脑连接在一起
无线串流:通过Wi-Fi将头显与电脑连接在一起

下载链接:https://www.meta.com/zh-cn/help/quest/articles/headsets-and-accessories/oculus-rift-s/install-app-for-link/

串流需要的电脑配置(推荐用 Windows,Mac 目前无法串流)
https://www.meta.com/zh-cn/help/quest/articles/headsets-and-accessories/oculus-link/requirements-quest-link/

在这里插入图片描述

Meta Quest Link软件打不开,一直在加载的解决方法:

在这里插入图片描述

一般是网络问题。

关键词
方法一:代理软件开隧道模式 TUN Mode
方法二:改 Host 文件

Meta Quest Link软件设置(重要)
在开启开发者模式的前提下:
在这里插入图片描述
在这里插入图片描述

⚡Oculus ADB Drivers

驱动软件
https://developer.oculus.com/downloads/package/oculus-adb-drivers/

在这里插入图片描述

⚡SideQuest

可以用于下载第三方应用,Quest 文件夹管理,投屏。

在这里插入图片描述

⚡87VR助手

SideQuest 替代品,作用和 SideQuest 类似,有中文界面
在这里插入图片描述

⚡Meta Quest Developer Hub

更多的开发者调试功能,应用上架商店 (需要科学上网)

在这里插入图片描述

⚡Unity Hub

用于管理不同版本的 Unity 编辑器。

国际版:
版本号后缀没有 c,导入 Meta XR SDK 比较方便(https://unity.com/download,需要科学上网才能下载到国际版,注意下载的 Unity Hub 版本后缀)

国服版:
大陆 ip 默认下载的是国服版,版本号后缀带有 c,对国内社区比较方便,过去导入 Meta XR SDK 不方便,但是 SDK v65 及以后版本解决了以前版本的导入问题

在这里插入图片描述

如上图所示,上面的是国际版,下面的是国服版。

Meta XR SDK 的导入方式:
方法一:在 Unity 的资源商店中将 SDK 导入自己的资源库,然后从 Unity 中的 Package Manager 导入到项目中

方法二:从 Meta 官网(https://npm.developer.oculus.com/)将 SDK 下载到本地,然后在 Unity 的 Package Manager 中通过 Add package from tarball 从本地导入到项目中(SDK v65之前国服版 Unity 需要使用这种导入方式,但是 v65 及以后的版本可以直接使用第一种导入方式)。


📕Unity 操作

在这里插入图片描述

⭐Unity 环境配置

⚡添加安卓模块

第一次安装 Unity 编辑器时会有添加模块的过程。如果你已经安装了 Unity 编辑器,可以到 Unity Hub 的安装里找到对应版本的编辑器,然后添加模块,如下图所示:

在这里插入图片描述
安装安卓相关的模块,因为 Quest 一体机的安卓系统,相当于我们要开发安卓应用。
在这里插入图片描述

⚡Building Settings 里将平台切换成安卓

点击菜单栏的 File > Build Settings,将 Platform 切换成安卓:

在这里插入图片描述
在这里插入图片描述

⚡导入 Meta XR SDK

Meta XR SDK v65 及以后的版本,不管是国际版的 Unity,还是国服版的 Unity,应该都可以直接从 Unity 资源商店里进行导入。

首先打开 Unity Asset Store 资源商店的官网,将 Meta XR All-in-One SDK 添加到自己的资源库:

在这里插入图片描述
在这里插入图片描述
接下来打开 Unity 的 Window > Package Manager,选中 My Assets,安装 Meta XR All-in-One SDK

在这里插入图片描述
在这里插入图片描述

安装完成后它会自动导入里面包含的 Meta XR SDK。

⚡Project Setup Tool 自动修复环境

点击菜单栏的 Edit > Project Settings,找到 Meta XR,点击安卓端和 PC 端的 Fix All 和 Apply All,直到所有元素变绿,Project Setup Tool 能自动帮我们配置开发环境。

在这里插入图片描述

⚡Quality 设置

点击菜单栏的 Edit > Project Settings,找到 Quality,官方是推荐把 Anti-Aliasing 设为 4x Multi Sampling:

在这里插入图片描述

⚡XR Plug-in Management

如果之后你在 PC 串流调试的时候遇到只有一只眼睛渲染的情况,你可以把 XR Plug-in Management 下的 Oculus 的 PC 端的 Rendering Mode 设为 Multi Pass,但是需要注意,Project Setup Tool 会将它自动改回 Single Pass instanced,所以如果出现了上述的问题,需要手动修改。

在这里插入图片描述

另外安卓端的 Target Device 可以勾选上自己的设备:

在这里插入图片描述

⚡修改全局配置文件

在 Project 窗口中的 Assets >Oculus 文件夹下找到 Oculus Project Config,Target Devices 也勾选上自己开发的设备型号,并且将 Hand Tracking Support 改为 Controller And Hands 或 Hands Only 来开启手势追踪。

在这里插入图片描述
在这里插入图片描述

⭐配置玩家物体

配置玩家物体有多种方式,比如使用 Building Block(相关教程:Unity Meta XR SDK 快捷配置开发工具【Building Block/Quick Action/OVRCameraRigInteraction】),或者自己从头开始手动配置。而这期教程会介绍另一种简单的方法:

我们在 Project 窗口中搜索 OVRCameraRigInteraction 物体,搜索选项改为 All 或者 In Packages(因为 Meta XR SDK 的大部分资源存放在 Packages 文件夹下),然后将它添加到场景中:

在这里插入图片描述
这个是 Meta XR Core SDK 中提供的一个玩家物体,玩家物体就代表了我们在 XR 世界中的自己,而这个玩家物体集成了大部分的手柄和手势追踪交互功能,和交互相关的功能来自于 Meta Interaction SDK。

在这里插入图片描述

上图展示了一部分手势追踪交互相关的物体,可以看到该玩家物体上有许多 Interactor 后缀的物体。XR 的交互一般有两个对象参与:Interactor(发起交互的对象)和 Interactable(可以被交互的对象),Interactor 一般在玩家物体上,因为交互动作由玩家发起。Interactable 一般在可交互的物体上。那么有了 OVRCameraRigInteraction 这个玩家物体,我们基本就不用配置 Interactor 了,只需要把注意力放在给物体添加 Interactable 相关的脚本。

⭐例:快速配置可以被抓取的物体

玩家物体上已经有抓取相关的 Interactor,那么如果想要配置一个可被抓取的物体,是有比较便利的方法的。我们可以在 Unity 场景中添加一个物体,然后在 Hierarchy 面板中鼠标右键物体,选择 Interaction SDK > Add Grab interaction:

在这里插入图片描述

这时候会跳出一个窗口,首先点击 Fix All,它会在物体身上添加一些抓取需要的前置脚本,然后点击 Create:

在这里插入图片描述
这个时候,物体会多出一个子物体,这个子物体集成了抓取所需要的脚本:

在这里插入图片描述
在这里插入图片描述

这个时候运行程序,就能够看到抓取的功能。

⭐将 Unity 程序打包到头显中运行

点击菜单栏的 File > Build Settings,将要打包的场景放入Build Settings 中的Scenes In Build(可以点击 Add Open Scene,会自动添加当前的场景),头显与电脑连接成功后点击 Build And Run,将APK安装进头显,需要确保通过手机 APP 开启开发者模式后(有时候 Quest 系统更新,手机 APP 中的开发者模式会被关闭,要重新打开一下),Unity才能识别到头显设备。

在这里插入图片描述

⭐导入样例场景

与交互相关的场景用上了 Interaction SDK,但是它的样例场景包需要在 Unity 资源商店中额外导入,叫做 Meta XR Interaction SDK OVR Samples,然后在 Unity 的 Package Manager 中点击 Samples,手动将下方的样例场景文件导入到项目中:

在这里插入图片描述
导入的样例在 Assets 文件夹下。

在这里插入图片描述

其他 SDK 的样例场景也是在 Package Manager 找有没有 Samples 选项。

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

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

相关文章

【iOS】——工厂设计模式

文章目录 一、设计模式创建型模式结构型模式行为型模式 二、设计模式七大准则三、简单工厂模式四、工厂方法模式五、抽象工厂模式 一、设计模式 设计模式是指在特定上下文中解决常见问题时所采用的一套可复用的解决方案。这些模式是面向对象编程中的通用概念,广泛应…

点云处理中阶 Octree模块

一、什么是Octree 八叉树(Octree)是一种用于描述三维空间的树状数据结构。八叉树的每个节点表示一个正方体的体积元素,每个节点有八个子节点,这八个子节点所表示的体积元素加在一起就等于父节点的体积。一般中心点作为节点的分叉中…

《计算机网络微课堂》2-3 传输方式

本节课我们介绍几种传输方式: 串行传输和并行传输同步传输和异步传输单工,半双工‍‍以及全双工通信 ​​ ‍ 串行 我们首先来看串行传输和并行传输,串行传输是指‍‍数据是一个比特依次发送的,因此在发送端和接收端之间‍‍只…

每日5题Day10 - LeetCode 46 - 50

每一步向前都是向自己的梦想更近一步&#xff0c;坚持不懈&#xff0c;勇往直前&#xff01; 第一题&#xff1a;46. 全排列 - 力扣&#xff08;LeetCode&#xff09; class Solution {//这道题就是一个dfs//把所有结果遍历&#xff0c;到叶子节点就可以添加结果了List<Int…

helloworld 可执行程序得到的过程

// -E 预处理 开发过程中可以确定某个宏 // -c 把预处理 编译 汇编 都做了,但是不链接 // -o 指定输出文件 // -I 指定头文件目录 // -L 指定链接库文件目录 // -l 指定链接哪一个库文件 #include <stdio.h> #include <stdlib.h> #include <string.h>int mai…

用栈实现队列(C语言)

目录 题目题目分析 代码栈的实现结构体。栈的初始化栈的销毁 入栈删除查找顶部数据判空 答案结构体初始化插入数据删除数据获取队列开头元素判空销毁栈 题目 题目分析 链接: 题目 请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作&#xff08;push、po…

【机器学习系列】使用高斯贝叶斯模型进行数据分类的完整流程

目录 一、导入数据 二、选择特征 三、十折交叉验证 四、划分训练集和测试集 五、训练高斯贝叶斯模型 六、预测测试集 七、查看训练集和测试集上的分数 八、查看混合矩阵 九、输出评估指标 一、导入数据 # 根据商户数据预测其是否续约案例 import pandas #读取数据到 da…

驱动编译报error: negative width in bit-field ‘<anonymous>’错误

错误如下图所示&#xff1a; 代码如下&#xff1a; 问题点&#xff1a;module_param的其他用户的权限参数上。 在Linux中&#xff0c;文件权限由读(r)、写(w)、执行(x)权限组成&#xff0c;分别对应数值4、2、1。 第一位0是占位符&#xff0c;在这里没有意义&#xff0c;因为…

Cloneable接口和深拷贝

在java中如何对对象进行拷贝呢&#xff1f;我们可以使用Object类中的clone方法。 一、浅拷贝 在使用clone方法对对象进行拷贝的时候&#xff0c;需要注意&#xff1a; 1.需要重写clone方法&#xff1b; 2.clone方法的返回值是Object类&#xff0c;需要强制类型转化&#xf…

软考之零碎片段记录(三十一)+复习巩固(错题整理,知识点总结,易错题)

1. 奇偶校验 只能检测一位数的错误。但无法纠正错误。若有奇数个数据位出错&#xff0c;可检测。有局限性。 2. 深度与广度优先遍历 参考题【【数据结构自用】1.图深度优先遍历2.找有向图中的强连通分量数目3.给出图的任意两个拓扑序列】https://www.bilibili.com/video/BV…

python 面对对象 类 魔法方法

魔法方法 一、__init__ 构造函数&#xff0c;可以理解为初始化 触发条件&#xff1a;在实例化的时候就会触发 class People():def __init__(self, name):print(init被执行)self.name namedef eat(self):print(f{self.name}要吃饭)a People(张三) a.eat() # in…

前端 防抖和节流

在前端开发中&#xff0c;防抖&#xff08;Debounce&#xff09;和节流&#xff08;Throttle&#xff09;是两种常用的性能优化技术&#xff0c;尤其在处理频繁触发的事件时显得尤为重要。无论是在用户输入、窗口调整大小&#xff0c;还是滚动事件中&#xff0c;这两种技术都可…

HarmonyOS 鸿蒙应用开发 - 多态样式 stateStyles

前言&#xff1a;Styles和Extend仅仅应用于静态页面的样式复用&#xff0c;stateStyles可以依据组件的内部状态的不同&#xff0c;快速设置不同样式&#xff0c;类似于css伪类&#xff0c;但语法不同。 ArkUI提供以下四种状态&#xff1a; focused&#xff1a;获焦态。normal&…

每日一题 包含不超过两种字符的最长子串

目录 1.前言 2.题目解析 3.算法原理 4.代码实现 1.前言 首先我打算介绍一下&#xff0c;我对滑动窗口的理解。 滑动窗口可以分为四个步骤&#xff1a; 进窗口&#xff1a; 在这一步骤中&#xff0c;我们决定了要在窗口中维护的信息。例如&#xff0c;在这个问题中&#xff…

学习经验分享【37】YOLOv10解读——最新YOLO版本

YOLO算法更新速度很快&#xff0c;已经出到V10版本&#xff0c;后续大家有想发论文或者搞项目可更新自己的baseline了。有需要改进方法的和相关资料可以关注后私信获取。 代码&#xff1a;GitHub - THU-MIG/yolov10: YOLOv10: Real-Time End-to-End Object Detection 摘要&…

LabVIEW控制Trio控制器

将LabVIEW与Trio控制器结合&#xff0c;可以实现对复杂运动系统的控制和监测。以下是详细的方法和注意事项&#xff1a; 一、准备工作 软件安装&#xff1a; 安装LabVIEW开发环境&#xff0c;确保版本兼容性。 安装Trio控制器的相关驱动程序和软件&#xff0c;如Trio Motion …

数据驱动的UI艺术:智能设计的视觉盛宴

数据驱动的UI艺术&#xff1a;智能设计的视觉盛宴 引言 在当今这个数据泛滥的时代&#xff0c;大数据不仅仅是一种技术手段&#xff0c;它更是一种艺术形式。当大数据遇上UI设计&#xff0c;两者的结合便催生了一种全新的艺术形式——数据驱动的UI艺术。本文将探讨如何将数据…

项目如何有效做资源管理?易趋项目管理软件让资源管理可视化

在项目管理的过程中&#xff0c;有效的资源管理能够确保资源得到合理的分配和使用&#xff0c;避免资源的浪费和冗余&#xff0c;进而提高整体工作效率、确保项目的成功&#xff1b;同时降低组织的运营成本。 但在项目推进过程中&#xff0c;项目经理总会面临各种资源管理的难…

Linux-命令上

at是一次性的任务&#xff0c;crond是循环的定时任务 如果 cron.allow 文件存在&#xff0c;只有在文件中出现其登录名称的用户可以使用 crontab 命令。root 用户的登录名必须出现在 cron.allow 文件中&#xff0c;如果这个文件存在的话。系统管理员可以明确的停止一个用户&am…

Langchain-Chatchat的markdownHeaderTextSplitter使用

文章目录 背景排查步骤官方issue排查测试正常对话测试官方默认知识库Debug排查vscode配置launch.json命令行自动启动condadebug知识库搜索测试更换ChineseRecursiveTextSplitter分词器 结论 关于markdownHeaderTextSplitter的探索标准的markdown测试集Langchain区分head1和head…