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 图更换背景,虚拟物体相当于叠加在现实图层之上的元素。

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

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.mzph.cn/bicheng/76045.shtml

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

相关文章

如何在 GitHub 上开源一个小项目:从创建到长期维护的完整指南

如何在 GitHub 上开源一个小项目:从创建到长期维护的完整指南 适用于 个人开发者、团队合作、企业开源,涵盖 Git 基础、GitHub 配置、最佳实践、社区互动、自动化 CI/CD 及长期维护策略。 📌 1. 注册 GitHub 账户 如果你还没有 GitHub 账户&…

【技术报告】GPT-4o 原生图像生成的应用与分析

【技术报告】GPT-4o 原生图像生成的应用与分析 1. GPT-4o 原生图像生成简介1.1 文本渲染能力1.2 多轮对话迭代1.3 指令遵循能力1.4 上下文学习能力1.5 跨模态知识调用1.6 逼真画质与多元风格1.7 局限性与安全性 2. GPT-4o 技术报告2.1 引言2.2 安全挑战、评估与缓解措施2.2.1 安…

React中的跨组件通信

在React中,跨组件通信有几种常见的方式。每种方式适用于不同的场景,下面是几种常见的跨组件通信方法: 1. 通过父子组件传递 Props 父组件可以通过 props 将数据传递给子组件,子组件只能接收和使用这些数据。 父组件&#xff08…

系统与网络安全------Windows系统安全(8)

资料整理于网络资料、书本资料、AI,仅供个人学习参考。 DNS DNS概述 为什么需要DNS系统 www.baidu.com与119.75.217.56,哪个更好记? 互联网中的114查号台/导航员 DNS(Domian Name System,域名系统)的功…

[ctfshow web入门] web16

信息收集 提示:对于测试用的探针,使用完毕后要及时删除,可能会造成信息泄露 试试url/phpinfo.php url/phpsysinfo.php url/tz.php tz.php能用 点击phpinfo,查看phpinfo信息,搜索flag,发现flag被保存为变量…

Go基础一(Maps Functions 可变参数 闭包 递归 Range 指针 字符串和符文 结构体)

Maps 1.创建map make(map[键类型]值类型) 2.设置键值对 name[key]value; 3. name[key]获取键值 3.1 key不存在 则返回 0 4.len()方法 返回 map 上 键值对数量 len(name) 5.delete()方法 从map中删除 键值对 delete(name,key) 6.clear()方法 map中删除所有键值对 clear(name) 7…

✅ 2025最新 | YOLO 获取 COCO 指标终极指南 | 从标签转换到 COCOAPI 评估 (训练/验证) 全覆盖【B 站教程详解】

✅ YOLO 轻松获取论文 COCO 指标:AP(small,medium,large )| 从标签转换到 COCOAPI 评估 (训练/验证) 全覆盖 文章目录 一、摘要二、为什么需要 COCO 指标评估 YOLO 模型?三、核心挑战与解决方案 (视频教程核…

ResNet改进(18):添加 CPCA通道先验卷积注意力机制

1. CPCA 模块 CPCA(Channel Prior Convolutional Attention)是一种结合通道先验信息的卷积注意力机制,旨在通过显式建模通道间关系来增强特征表示能力。 核心思想 CPCA的核心思想是将通道注意力机制与卷积操作相结合,同时引入通道先验知识,通过以下方式优化特征学习: 通…

SpringMVC的简单介绍

SpringMVC的简单介绍 SpringMVC 是一个基于 Java 的 Web 框架,是 Spring Framework 中用于构建 Web 应用的一个核心模块。它采用了 模型-视图-控制器 (MVC) 设计模式,能够帮助开发者更加清晰地分离业务逻辑、用户界面和请求处理,从而提高应用…

MES生产工单管理系统,Java+Vue,含源码与文档,实现生产工单全流程管理,提升制造执行效率与精准度

前言: MES生产工单管理系统是制造业数字化转型的核心工具,通过集成生产、数据、库存等模块,实现全流程数字化管理。以下是对各核心功能的详细解析: 一、生产管理 工单全生命周期管理 创建与派发:根据销售订单或生产计…

Redis常见问题排查与解决方案指南

Redis作为高性能的内存数据库,广泛应用于缓存、队列、实时统计等场景。但在实际使用中,开发者和运维人员常会遇到性能下降、内存溢出、主从同步失败等问题。本文将针对高频问题进行详细分析,并提供对应的解决方案和预防措施,助你快…

目标跟踪Deepsort算法学习2025.4.7

一.DeepSORT概述 1.1 算法定义 DeepSORT(Deep Learning and Sorting)是一种先进的多目标跟踪算法,它结合了深度学习和传统的目标跟踪技术,在复杂环境下实现了高精度和鲁棒性的目标跟踪。该算法的核心思想是通过融合目标的外观特征和运动特征,实现对多个目标的持续跟踪,…

从零开始开发HarmonyOS应用并上架

开发环境搭建(1-2天) 硬件准备 操作系统:Windows 10 64位 或 macOS 10.13 内存:8GB以上(推荐16GB) 硬盘:至少10GB可用空间 软件安装 下载 DevEco Studio 3.1(官网:…

Linux | 无头 Linux 服务器安装和设置

注:本文为 “Headless Linux” 相关文章合辑。 机翻未校。 How to Install and Set Up Headless Linux Server 如何安装和设置无头 Linux 服务器 Winnie Ondara Last Updated: January 31, 2023 A vast majority of Linux users are familiar with a Linux desk…

AI赋能数据库管理“最后一公里”,融合架构重塑数据库承载成本效能——zCloud 6.7与zData X 3.3正式发布

点击蓝字 关注我们 在数据驱动的新时代,数据库的多元化和智能化已成不可逆的趋势。3月31日,云和恩墨以“奇点时刻数智跃迁”为主题举办线上发布会,云和恩墨创始人兼总经理盖国强、公司数据库和生态产品群总经理熊军共同带来 zCloud 6.7与 zD…

I have something to say about Vue Node.js

关于Vue Node.js,我真的说了很多次了,让我难以理解为啥这么粗糙的东西能流行一起。真疯狂的世界。 vue让感觉就像玩猫德一样的,如此的疯狂,天哪。睡觉了 Node.js v13 window7_nodejsv13-CSDN博客

【橘子大模型】使用streamlit来构建自己的聊天机器人(下)

一、简介 我们之前完成了一个简易的聊天机器人,但是还留下了一些问题没有解决,比如如何开启新的会话。如何切换session_id,如何把对话做成流式的输出。这些我们就会在今天来完成。 二、关于新的会话和session_id from dotenv import load_…

php-cgi参数注入攻击经历浅谈

起因: 阿里云服务器再次警告出现挖矿程序。上一次服务器被攻击后,怕有恶意程序残留,第一时间重装了系统,也没有详查攻击入口。不过事后还是做了一些防范,这台留作公网访问的服务器上并未保留业务数据,只作…

自动驾驶中的实时挑战:如何优化车辆动力学模型

自动驾驶中的实时优化:自行车模型与双轨模型的计算复杂度权衡 在自动驾驶领域,车辆动力学建模是实现精准控制和路径规划的关键。自行车模型和双轨模型作为两种主流的建模方法,在实时性需求下如何平衡计算复杂度与精确度,是工程师们必须面对的挑战。本文将深入探讨这两种模…

Hybrid 架构的概念,以及如何优化Hybrid 通信方案,提升页面加载速度和渲染性能

1. 什么是 Hybrid 架构? Hybrid(混合)架构是指 结合 Web 技术和 Native(原生)技术 的移动应用开发模式,通常由以下部分组成: Web 部分:使用 HTML、CSS、JavaScript(或前…