2025-04-07 NO.3 Quest3 MR 配置

news2025/4/8 6:42:50

文章目录

  • 1 MR 介绍
    • 1.1 透视
    • 1.2 场景理解
    • 1.3 空间设置
  • 2 配置 MR 环境
    • 2.1 场景配置
    • 2.2 MR 配置
  • 3 运行测试

配置环境:

  • Windows 11
  • Unity 6000.0.42f1
  • Meta SDK v74.0.2
  • Quest3

1 MR 介绍

1.1 透视

​ 透视(Passthrough)是将应用的背景从虚拟的图层替换成现实图层,类似于 P 图更换背景,虚拟物体相当于叠加在现实图层之上的元素。

​ 在单纯的透视下,虚拟物体和现实物体二者之间并不会进行交互。

image-20250407195617353

1.2 场景理解

​ 场景理解(Scene Understanding,Meta 用 Scene API 实现)能用 2D 平面或 3D 立方体来代表现实物体的位置和范围。在系统中,现实世界由不同的 2D 平面和 3D 立方体组成。

​ 此外,场景理解用语义标签来标识不同的 2D 平面或 3D 立方体,让系统理解标识出的东西具体代表哪一种现实中的物体。

image-20250407195718818

​ 加上场景理解,设备能够理解现实环境,分辨出现实物体在什么位置。通过场景理解,识别出的现实物体和虚拟物体均属于 MR 世界中的一部分,因此能够实现虚拟物体和现实物体之间的交互。

场景模型(Scene Model)

​ Scene Model 由许多场景锚点(Scene Anchor)组成。每个 Scene Anchor 存储数据组件(Component),这些数据组件可能存储着不同种类的数据,用来表示几何和语义信息。

​ Scene Anchor 的内部结构类似于 ECS 结构

  • C:Component。包含数据。
  • E:Entity。是一系列 Component 组件的集合。相当于一个 ID 标识物体。
  • S:System。用来处理 Component 的数据,执行逻辑(因为 ECS 使用面向数据的思想,所以最终处理的还是 Component 中的数据)。
image-20250407200039874

场景锚点(Scene Anchor)

​ 在 Scene Model 中,每个 Scene Anchor 相当于一个 Entity。一个 Scene Anchor 中包含不同种类的 Component 组件,不同种类的组件里存储着不同类型的数据。

  • 如果用于表示整个房间,Scene Anchor 需包含 RoomLayout 组件和 AnchorContainer 组件。
    • RoomLayout:表示整个房间布局,包含天花板,地板,墙壁的布局(这三个元素可以构成一个房间)。
    • AnchorContainer:包含房间内的所有Scene Anchor。
  • 如果用于表示房间内单独的物体,Scene Anchor 需包含 Locatable 组件,Bounded2D 或者 Bounded3D 组件(取决于物体是 2D 平面还是 3D 物体),Semantic Classification(语义分
    类)组件。
    • Locatable:定位物体,表示物体在房间中的位置。
    • Bounded2D/3D:表示物体的边界框,一个 Scene Anchor 也可以同时拥有 2D 和 3D 组件(桌子,桌面可以用 2D,整个桌子可以用 3D)。
    • Semantic Classification:用标签来表示物体是哪一种。

空间锚点(Spatial Anchor)

​ Scene Anchor 和 Spatial Anchor 的区别:

  • Scene Anchor 由 Quest 系统创建,受系统管理。
  • Spatial Anchor 由应用本身创建,受用户管理。

1.3 空间设置

​ 空间设置(Space Setup,以前称为场景捕获)是捕获场景模型的过程,由 Quest 系统管理,因此在设备上运行的所有应用都可以访问相同的环境数据。

​ 空间设置是一个用户引导的过程:

  1. 在设置之前,需要先允许应用访问设备的空间数据。
  2. 开启权限后,自动扫描环境,获取空间网格,提取空间信息(如地板和天花板的高度,墙壁的位置)。
  3. 最后由用户修正错误(校准墙壁位置)和添加缺失信息(房间物体)。

​ 空间设置无法在串流模式下进行。在 Quest 中,依次点击“设置”->“实际空间”->“空间设置”进行设置。

image-20250407201458743

2 配置 MR 环境

​ 前置条件:

  1. 配置 Meta SDK 开发环境。参考:2025-03-17 NO.1 Quest3 开发环境配置教程_quest3 unity 开发流程-CSDN博客。
  2. 熟悉 Quest3 抓取物体操作。参考:2025-04-06 NO.2 Quest3 基础配置与打包-CSDN博客。

2.1 场景配置

​ 创建新场景 MRDemo,删除 Main Camera,并添加 OVRCameraRig,并更改 Gravity Factor 改为 0,防止玩家下坠。(具体操作参考条件 2)。

image-20250407202532871

​ 选择菜单栏中的“Meta”,依次点击“Tools”->“Building Blocks”。

image-20250407202739665

​ 找到 Passthrough 模块,将其拖拽到 Hierarchy 窗口中。

image-20250407202859894

​ 拖拽这一步会自动将 OVRCameraRig 下 CenterEyeAnchor 的相机背景改为纯黑色。

image-20250407202859894

​ 拖拽后会创建 Passthrough 物体,该物体的 OVR Passthrough Layer 脚本上定义了 Placement,用于将现实场景放于哪个图层(相对于虚拟场景)。

image-20250407203100630

​ 最后,创建一个 Cube,并添加 Hand Grab 功能(具体操作参考条件 2)。

image-20250407203825961

2.2 MR 配置

​ 点击 OVRCameraRig,设置 OVRManager.cs 脚本:

  • Passthrough Support:Supported
  • Boundary Visibility Support:Supported
  • Enable Passthrough:勾选
  • Should Boundary Visibility Be Suppressed:勾选

​ Boundary Visibility 原本是为 VR 应用设计的,在 VR 中用户看到的是完全虚拟环境,看不到现实环境,Boundary Visibility 能在一定程度上避免用户与现实物体相撞。但在 MR 应用中,用户大多数情况下能看到现实环境,所以安全边界显得有些多余,并且影响体验感。

​ 注意:只有开启了 Passthrough 透视功能的 MR 应用才能关闭安全边界,如果是纯 VR 应用则无法关闭。

image-20250407203929997

​ 选择菜单栏中的“Meta”,依次点击“Tools”->“Update AndroidManifest.xml”,更新安卓配置信息。

image-20250407204319054

3 运行测试

​ 运行 Unity,可以看到现实世界中有一个立方体位于眼前。但是在 Unity 的 Game 窗口是看不到现实场景的。

image-20250407204634010

​ 可以借助 Meta Quest Developer Hub 进行投屏查看。安装链接:Homepage | Meta Horizon OS Developers。

image-20250407205020922

​ 安装后,进入 Device Manager,点击 Cast 进行投屏。

image-20250407205049643

​ 在投屏界面中可看到现实场景。

image-20250407205259324

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

抓wifi无线空口包之Macbook Pro抓包(一)

参考: 在MAC OS上进行Wi-Fi抓包和空中包分析_空口抓包和无线网卡抓包的区别-CSDN博客 WireShark中802.11帧的类型、子类型对照表_wireshark 怎么看disassociate帧和deauthenticate-CSDN博客 一、在macbook pro上,点击option 同时点击右上角wifi 功能&a…

单元测试原则之——不要模拟值对象 (1)

1. 什么是值对象(Value Objects)? 值对象是指那些不可变且仅通过其属性(数据)来定义的对象。它们通常没有复杂的逻辑或行为,主要用于存储和传递数据。例如: ● 字符串(String) ● 数字(Integer, Double) ● 日期(LocalDate, Instant) ● 自定义的简单数据类(如…

版本控制工具——SVN

目录 【版本控制系统】 【SVN概述】 【SVN基本使用】 【解决SVN拉取文件到本地后不显示绿色图标问题】 【版本控制系统】 版本控制系统(version control system)是一种用于管理文件变更的软件工具,主要用于记录文件的修改历史&#xff0c…

2022第十三届蓝桥杯大赛软件赛省赛C/C++ 大学 B 组(题解解析)

记录刷题的过程、感悟、题解。 希望能帮到,那些与我一同前行的,来自远方的朋友😉 大纲: 1、九进制转十进制-(解析)-简单的进制转化问题😄 2、顺子日期-(解析)-考察日期 3…

【EC200N-CN——Linux驱动移植】问题回顾

【EC200N-CN——Linux驱动移植】问题回顾 1)、开发回顾一、问题回顾与解决过程二、核心原理分析1. **USB设备识别的关键:VID/PID**2. **为什么之前不生成ttyUSB节点?**3. **为什么添加PID后就能生成节点?** 三、日志关键信息解读1…

构建k8s下Helm私有仓库与自定义Chart开发指南

#作者:程宏斌 文章目录 自定义helm模板1、开发自己的chare包2、调试chart3、安装chart 自定义helm模板 https://hub.helm.sh/ 1、开发自己的chare包 [rootmaster ~]# helm create mychare //创建一个名为mychare的chare包 [rootmaster ~]# tree -C mychare/ //以…

【7】C#上位机---Modbus RTU 界面设计与封装

C#上位机---Modbus通讯 1 Modbus RTU 通讯1.1 RS485串口与串行通信(Serial Communications)1.2 Modbus RTU协议1.3 Modbus RTU主从模式1.4 Modbus 主从站模拟调试2 Modbus RTU 界面设计与封装2.1 温度控件的类属性2.2 C#封装Modbus实现通讯2.3 C#封装Modbus TRU通用类2.4 上位…

【嵌入式学习6】多任务版TCP服务器

目录 如何实现: 客户端1.0版本: 服务端: 客户端2.0版本: thread.join() 是一个线程同步方法,用于主线程等待子线程完成。当你调用 thread.join() 时,主线程会阻塞,直到调用 join() 的子线程…

每天认识一个设计模式-外观模式:化繁为简的接口魔法

一、前言 在设计模式中,结构型设计模式处理类或对象组合,可助力构建灵活、可维护软件结构。此前探讨过组合模式(将对象组合成树形结构,统一处理单个与组合对象,如文件系统管理)和装饰器模式(动…

VLAN(虚拟局域网)

一、vlan概述 VLAN(virtual local area network)是一种通过逻辑方式划分网络的技术,允许将一个物理网络划分为多个独立的虚拟网络。每一个vlan是一个广播域,不同vlan之间的通信需要通过路由器或三层交换机 [!注意] vlan是交换机独有的技术,P…

Transformers without Normalization论文翻译

论文信息: 作者:Jiachen Zhu, Xinlei Chen, Kaiming He, Yann LeCun, Zhuang Liu 论文地址:arxiv.org/pdf/2503.10622 代码仓库:jiachenzhu/DyT: Code release for DynamicTanh (DyT) 摘要 归一化层在现代神经网络中无处不在…

题目练习之set的奇妙使用

♥♥♥~~~~~~欢迎光临知星小度博客空间~~~~~~♥♥♥ ♥♥♥零星地变得优秀~也能拼凑出星河~♥♥♥ ♥♥♥我们一起努力成为更好的自己~♥♥♥ ♥♥♥如果这一篇博客对你有帮助~别忘了点赞分享哦~♥♥♥ ♥♥♥如果有什么问题可以评论区留言或者私信我哦~♥♥♥ ✨✨✨✨✨✨ 个…

网站提示“不安全“怎么办?原因分析与解决方法

引言:为什么浏览器会提示网站"不安全"? 当您访问某些网站时,浏览器可能会显示"不安全"警告。这通常意味着该网站存在安全风险,可能影响您的隐私或数据安全。本文将介绍常见原因及解决方法,帮助您…

如何利用AI智能生成PPT,提升工作效率与创意表现

如何利用AI智能生成PPT,提升工作效率与创意表现!在这个信息爆炸的时代,制作一份既专业又富有创意的PPT,已经不再是一个简单的任务。尤其是对于每天都需要做报告、做展示的职场人士来说,PPT的质量直接影响着工作效率和个…

【数据结构】图论存储革新:十字链表双链设计高效解决有向图入度查询难题

十字链表 导读一、邻接表的优缺点二、十字链表2.1 结点结构2.2 原理解释2.2.1 顶点表2.2.2 边结点2.2.3 十字链表 三、存储结构四、算法评价4.1 时间复杂度4.2 空间复杂度 五、优势与劣势5.1 优势5.2 劣势5.3 特点 结语 导读 大家好,很高兴又和大家见面啦&#xff…

.net6 中实现邮件发送

一、开启邮箱服务 先要开启邮箱的 SMTP 服务,获取授权码,在实现代码发送邮件中充当邮箱密码用。 在邮箱的 设置 > 账号 > POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务中,把 SMTP 服务开启,获取授权码。 二、安装库 安装 …

【Linux】命令和权限

目录: 一、shell命令及运行原理 (一)什么是外壳 (二)为什么要有外壳 (三)外壳怎么工作的 二、Linux权限的概念 (一)Linux的文件类型 (二)L…

22.OpenCV轮廓匹配原理介绍与使用

OpenCV轮廓匹配原理介绍与使用 1. 轮廓匹配的基本概念 轮廓匹配(Contour Matching)是计算机视觉中的一种重要方法,主要用于比较两个轮廓的相似性。它广泛应用于目标识别、形状分析、手势识别等领域。 在 OpenCV 中,轮廓匹配主要…

深入解析AI绘画技术背后的人工智能

在当今数字艺术领域,AI绘画作为一种新兴艺术形式,正迅速吸引着越来越多的创作者与爱好者。它不仅推动了艺术创作的边界,同时也改变了我们对创作与美的理解。本文将深入探讨AI绘画所依赖的人工智能技术,并分析其背后的原理与应用。…

browser-use开源程序使 AI 代理可以访问网站,自动完成特定的指定任务,告诉您的计算机该做什么,它就会完成它。

一、软件介绍 文末提供程序和源码下载 browser-use开源程序使 AI 代理可以访问网站,自动完成特定的指定任务,浏览器使用是将AI代理与浏览器连接的最简单方法。告诉您的计算机该做什么,它就会完成它。 二、快速开始 使用 pip (Py…