2025-04-07 NO.3 Quest3 MR 配置
文章目录
- 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 图更换背景,虚拟物体相当于叠加在现实图层之上的元素。
在单纯的透视下,虚拟物体和现实物体二者之间并不会进行交互。
1.2 场景理解
场景理解(Scene Understanding,Meta 用 Scene API 实现)能用 2D 平面或 3D 立方体来代表现实物体的位置和范围。在系统中,现实世界由不同的 2D 平面和 3D 立方体组成。
此外,场景理解用语义标签来标识不同的 2D 平面或 3D 立方体,让系统理解标识出的东西具体代表哪一种现实中的物体。
加上场景理解,设备能够理解现实环境,分辨出现实物体在什么位置。通过场景理解,识别出的现实物体和虚拟物体均属于 MR 世界中的一部分,因此能够实现虚拟物体和现实物体之间的交互。
场景模型(Scene Model)
Scene Model 由许多场景锚点(Scene Anchor)组成。每个 Scene Anchor 存储数据组件(Component),这些数据组件可能存储着不同种类的数据,用来表示几何和语义信息。
Scene Anchor 的内部结构类似于 ECS 结构
- C:Component。包含数据。
- E:Entity。是一系列 Component 组件的集合。相当于一个 ID 标识物体。
- S:System。用来处理 Component 的数据,执行逻辑(因为 ECS 使用面向数据的思想,所以最终处理的还是 Component 中的数据)。
场景锚点(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 系统管理,因此在设备上运行的所有应用都可以访问相同的环境数据。
空间设置是一个用户引导的过程:
- 在设置之前,需要先允许应用访问设备的空间数据。
- 开启权限后,自动扫描环境,获取空间网格,提取空间信息(如地板和天花板的高度,墙壁的位置)。
- 最后由用户修正错误(校准墙壁位置)和添加缺失信息(房间物体)。
空间设置无法在串流模式下进行。在 Quest 中,依次点击“设置”->“实际空间”->“空间设置”进行设置。
2 配置 MR 环境
前置条件:
- 配置 Meta SDK 开发环境。参考:2025-03-17 NO.1 Quest3 开发环境配置教程_quest3 unity 开发流程-CSDN博客。
- 熟悉 Quest3 抓取物体操作。参考:2025-04-06 NO.2 Quest3 基础配置与打包-CSDN博客。
2.1 场景配置
创建新场景 MRDemo,删除 Main Camera,并添加 OVRCameraRig,并更改 Gravity Factor 改为 0,防止玩家下坠。(具体操作参考条件 2)。
选择菜单栏中的“Meta”,依次点击“Tools”->“Building Blocks”。
找到 Passthrough 模块,将其拖拽到 Hierarchy 窗口中。
拖拽这一步会自动将 OVRCameraRig 下 CenterEyeAnchor 的相机背景改为纯黑色。
拖拽后会创建 Passthrough 物体,该物体的 OVR Passthrough Layer 脚本上定义了 Placement,用于将现实场景放于哪个图层(相对于虚拟场景)。
最后,创建一个 Cube,并添加 Hand Grab 功能(具体操作参考条件 2)。
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 应用则无法关闭。
选择菜单栏中的“Meta”,依次点击“Tools”->“Update AndroidManifest.xml”,更新安卓配置信息。
3 运行测试
运行 Unity,可以看到现实世界中有一个立方体位于眼前。但是在 Unity 的 Game 窗口是看不到现实场景的。
可以借助 Meta Quest Developer Hub 进行投屏查看。安装链接:Homepage | Meta Horizon OS Developers。
安装后,进入 Device Manager,点击 Cast 进行投屏。
在投屏界面中可看到现实场景。

相关文章:
2025-04-07 NO.3 Quest3 MR 配置
文章目录 1 MR 介绍1.1 透视1.2 场景理解1.3 空间设置 2 配置 MR 环境2.1 场景配置2.2 MR 配置 3 运行测试 配置环境: Windows 11Unity 6000.0.42f1Meta SDK v74.0.2Quest3 1 MR 介绍 1.1 透视 透视(Passthrough)是将应用的背景从虚拟的…...
抓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)是一种用于管理文件变更的软件工具,主要用于记录文件的修改历史,…...
2022第十三届蓝桥杯大赛软件赛省赛C/C++ 大学 B 组(题解解析)
记录刷题的过程、感悟、题解。 希望能帮到,那些与我一同前行的,来自远方的朋友😉 大纲: 1、九进制转十进制-(解析)-简单的进制转化问题😄 2、顺子日期-(解析)-考察日期 3…...
Three.js 系列专题 5:加载外部模型
内容概述 Three.js 支持加载多种 3D 文件格式(如 GLTF、OBJ、FBX),这让开发者可以直接使用专业建模软件(如 Blender、Maya)创建的复杂模型。本专题将重点介绍 GLTF 格式的加载,并调整模型的位置和材质。 学习目标 理解常见 3D 文件格式及其特点。掌握使用 GLTFLoader 加…...
【EC200N-CN——Linux驱动移植】问题回顾
【EC200N-CN——Linux驱动移植】问题回顾 1)、开发回顾一、问题回顾与解决过程二、核心原理分析1. **USB设备识别的关键:VID/PID**2. **为什么之前不生成ttyUSB节点?**3. **为什么添加PID后就能生成节点?** 三、日志关键信息解读1…...
linux安装ollama
俩种方式都可 一、linux通过docker安装ollama镜像 1.下载安装ollama镜像 # 安装 Docker sudo yum install docker sudo systemctl start docker#docker查看所有容器 docker ps -a # 查看所有容器# docker查看指定容器 docker ps -a |grep ollama# 创建模型存储目录ÿ…...
构建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 上位…...
【JVM】question
问题 JVM线程是用户态还是内核态 java线程在jdk1.2之前,是基于名为“绿色线程”的用户线程实现的,这导致绿色线程只能同主线程共享CPU分片,从而无法利用多核CPU的优势。 由于绿色线程和原生线程比起来在使用时有一些限制, jdk1.2…...
Node.js 中处理 Excel 文件的最佳实践
在现代应用开发中,Excel 文件仍然是数据交换和存储的重要格式之一。在 Node.js 环境中,处理 Excel 文件的需求日益增加。本文将介绍如何在 Node.js 中高效地处理 Excel 文件,涵盖工具选择、基本操作和最佳实践。 1. 选择合适的库 在 Node.js…...
【嵌入式学习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的奇妙使用
♥♥♥~~~~~~欢迎光临知星小度博客空间~~~~~~♥♥♥ ♥♥♥零星地变得优秀~也能拼凑出星河~♥♥♥ ♥♥♥我们一起努力成为更好的自己~♥♥♥ ♥♥♥如果这一篇博客对你有帮助~别忘了点赞分享哦~♥♥♥ ♥♥♥如果有什么问题可以评论区留言或者私信我哦~♥♥♥ ✨✨✨✨✨✨ 个…...
负载均衡是什么,Kubernetes如何自动实现负载均衡
负载均衡是什么? 负载均衡(Load Balancing) 是一种网络技术,用于将网络流量(如 HTTP 请求、TCP 连接等)分发到多个服务器或服务实例上,以避免单个服务器过载,提高系统的可用性、可扩…...
网站提示“不安全“怎么办?原因分析与解决方法
引言:为什么浏览器会提示网站"不安全"? 当您访问某些网站时,浏览器可能会显示"不安全"警告。这通常意味着该网站存在安全风险,可能影响您的隐私或数据安全。本文将介绍常见原因及解决方法,帮助您…...
如何利用AI智能生成PPT,提升工作效率与创意表现
如何利用AI智能生成PPT,提升工作效率与创意表现!在这个信息爆炸的时代,制作一份既专业又富有创意的PPT,已经不再是一个简单的任务。尤其是对于每天都需要做报告、做展示的职场人士来说,PPT的质量直接影响着工作效率和个…...
【11】Redis快速安装与Golang实战指南
文章目录 1 Redis 基础与安装部署1.1 Redis 核心特性解析1.2 Docker Compose 快速部署1.3 Redis 本地快速部署 2 Golang 与 Redis 集成实战2.1 环境准备与依赖安装2.2 核心操作与数据结构实践2.2.1 基础键值操作2.2.2 哈希结构存储用户信息 3 生产级应用场景实战3.1 分布式锁实…...
【数据结构】图论存储革新:十字链表双链设计高效解决有向图入度查询难题
十字链表 导读一、邻接表的优缺点二、十字链表2.1 结点结构2.2 原理解释2.2.1 顶点表2.2.2 边结点2.2.3 十字链表 三、存储结构四、算法评价4.1 时间复杂度4.2 空间复杂度 五、优势与劣势5.1 优势5.2 劣势5.3 特点 结语 导读 大家好,很高兴又和大家见面啦ÿ…...
聊一聊没有接口文档时如何开展测试
目录 一、前期准备与信息收集 二、使用抓包工具分析接口 三、逆向工程构造测试用例 四、安全测试 五、 模糊测试(Fuzz Testing) 六、记录并维护发现的接口信息 七、 推动团队规范流程 其它注意事项 在我们进行接口测试时,总会遇到各种…...
.net6 中实现邮件发送
一、开启邮箱服务 先要开启邮箱的 SMTP 服务,获取授权码,在实现代码发送邮件中充当邮箱密码用。 在邮箱的 设置 > 账号 > POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务中,把 SMTP 服务开启,获取授权码。 二、安装库 安装 …...
vector复制耗时
CPP中的vector对象在传参给子函数时,如果直接传参,会造成复制给形参的额外耗时 如何解决这个问题呢? 这样定义局部函数 const vector <int>&vec可以保证传递vector对象时使用地址传递,并且使用const保证vector不被改变…...
MySQL 数据库操作指南:从数据库创建到数据操作
关键词:MySQL;数据库操作;DDL;DML 一、引言 MySQL 作为广泛应用的关系型数据库管理系统,对于开发人员和数据库管理员而言,熟练掌握其操作至关重要。本文章通过一系列 SQL 示例,详细阐述 MySQL…...
【Linux】命令和权限
目录: 一、shell命令及运行原理 (一)什么是外壳 (二)为什么要有外壳 (三)外壳怎么工作的 二、Linux权限的概念 (一)Linux的文件类型 (二)L…...
22.OpenCV轮廓匹配原理介绍与使用
OpenCV轮廓匹配原理介绍与使用 1. 轮廓匹配的基本概念 轮廓匹配(Contour Matching)是计算机视觉中的一种重要方法,主要用于比较两个轮廓的相似性。它广泛应用于目标识别、形状分析、手势识别等领域。 在 OpenCV 中,轮廓匹配主要…...
深入解析AI绘画技术背后的人工智能
在当今数字艺术领域,AI绘画作为一种新兴艺术形式,正迅速吸引着越来越多的创作者与爱好者。它不仅推动了艺术创作的边界,同时也改变了我们对创作与美的理解。本文将深入探讨AI绘画所依赖的人工智能技术,并分析其背后的原理与应用。…...
Kaggle房价预测
实战 Kaggle 比赛:预测房价 这里李沐老师讲的比较的细致,我根据提供的代码汇总了一下: import hashlib import os import tarfile import zipfile import requests import numpy as np import pandas as pd import torch from matplotlib i…...
