HoloLens2场景理解,识别平面信息

news2024/11/16 7:36:27

因为可用的资料比较少,就记录下吧,大家也可以少走弯路,节省时间。

场景理解,通俗的讲,可以识别空间当中的墙面、地板、天花板、平台等.

场景理解(Scene Understanding)是指 HoloLens2 通过深度传感器、摄像头和计算机视觉算法等技术,能够对周围的物体、空间和用户的动作进行理解和分析。这使得 HoloLens2 可以根据场景进行自适应的显示和交互,为用户提供更加真实和自然的 AR 体验。

场景理解可转换混合现实设备捕获的非结构化环境传感器数据,并将其转换为强大的抽象表示形式。

混合现实设备会不断集成它在环境中看到的内容信息(传感器数据)。 场景理解SDK汇总所有这些数据源,并生成单一且一致的抽象。

场景理解生成场景,这是 一个场景Object 的构成,表示单个事物的实例, (例如墙/天花板/地板。) 场景对象本身是 [SceneComponents, 它代表构成此 SceneObject 的更精细的片段。 组件的示例包括四边形和网格,但未来可能表示边界框、冲突网格、元数据等。

场景理解观察程序 - MRTK 2 | Microsoft Learn

场景理解概述

场景理解 - Mixed Reality | Microsoft Learn

场景理解 SDK 概述

场景理解 SDK - Mixed Reality | Microsoft Learn

一)、启动样例场景

最好理解的方式找个样例跑起来看下效果. 刚好MRTK当中有样例。

SceneUnderstandingExample, 现在关键是要把例子跑起来, 这个花了不少时间,因为资料比较少.

我用的unity版本为2020.3.42版本,这个版本影响应该问题不大.

第一步,先给项目引入SDK包, 从MRTK Tools中导入SceneUnderstanding包

第二步,

Library\PackageCache\com.microsoft.mixedreality.toolkit.foundation@f2323a9b7aec\Providers\Experimental\WindowsSceneUnderstanding\WindowsSceneUnderstandingObserver.cs(1491,72): error CS7069: Reference to type 'Vector2' claims it is defined in 'System.Numerics', but it could not be found   会有这个报错。  

需要在Player当中,设置兼容性级别,改为.NET 4.x

到这里场景大概率可以跑起来了。

用到的一些配置,MRTK样例当中已经配置好。

比如说需要启用空间感知系统、观察点是否在间隔上自动更新其观测值、更新的频率,还有支持检测的类型,可以配置墙面、天花板、地板等(也可以后续在代码当中进行配置,设置IMixedRealitySceneUnderstandingObserver observer;

设置observer.SurfaceTypes).

勾选这个可以加载保存的场景文件,在unity编辑器当中进行调试,看到一些效果,这个很方便,如果不知道的话,每次都需要打到HoloLens当中去看效果,很费时间,最初的我就是如此(奔溃).

样例中关键的脚本,DemoSceneUnderstandingController.cs.

二)、效果图

将HoloLens当中保存的.bytes场景文件,放到unity编辑器当中使用,效果图如下:

上面的菜单,

Get meshs: Get RequestMeshData,启用后,该服务将提供表面网格。

Get quads: RequestPlaneData,启用后,该服务将提供表面平面,表示为四边形。

Occlusion: observer.RequestOcclusionMask,启用后,该服务将生成适合空间查询的纹理数据。

下面的菜单:,表示过来检测的空间表面层类型,检测哪些类型。

检测平台Platforms(上面的杯子,是通过DemoSceneUnderstandingController脚本设置的)

检测到墙壁

三)、关键的API

空间表面层类型对应的API解释:

空间感知表面类型枚举 (Microsoft.Mixed Reality.Toolkit.SpatialAwareness) |微软学习

背景:Background 32

不适合已定义曲面类型之一的曲面。

空间表面层类型:

天花板:Ceiling 4  

环境的天花板。

地板:Floor 2

环境的地板。

推断:Inferred 128

我们没有观测到的物体

平台:Platform 16.   桌子Platform

可以放置对象的大凸起表面。

可以放置全息影像的较大平面。 它们往往表示桌子、台面和其他较大水平面。

未知:Unknown   1. red椅子。

尚无法分类的曲面。

墙:Wall 8

用户空间内的垂直表面。

世界:World 64

一个无边无际的世界网格。

IMixed现实场景理解观察者接口

IMixedRealitySceneUnderstandingObserver Interface(Microsoft.Mixed Reality.Toolkit.Experimental.SpatialAwareness) |微软学习https://learn.microsoft.com/zh-cn/dotnet/api/microsoft.mixedreality.toolkit.experimental.spatialawareness.imixedrealitysceneunderstandingobserver?view=mixed-reality-toolkit-unity-2020-dotnet-2.8.0

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

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

相关文章

Centos安装Nvidia驱动解决内核版本不匹配问题

Centos安装Nvidia驱动解决内核版本不匹配问题 问题分析尝试解决 写程序三分钟,配环境三小时,尤其是在一台全新机器/重装系统后。。。 已经解决的: 禁用nouveau驱动并重启电脑(参考这篇博客)缺少cc,手动yum…

C++---状态压缩dp---炮兵阵地(每日一道算法2023.4.17)

注意事项: 本题为"状态压缩dp—蒙德里安的梦想"和"状态压缩dp—小国王"和"状态压缩dp—玉米田"的近似题,建议先阅读这三篇文章并理解。 题目: 司令部的将军们打算在 NM 的网格地图上部署他们的炮兵部队。 一个…

Pytorch中的仿射变换(F.affine_grid)

目录 1、平移操作实现 2、缩放操作 3、旋转操作 4、转置操作 在pytorch框架中, F.affine_grid 与 F.grid_sample(torch.nn.functional as F)联合使用来对图像进行变形。 F.affine_grid 根据形变参数产生sampling grid,F.grid_…

深入浅出openGauss的执行器基础

目录 火山模型 Tuple 数据结构设计 条件计算 Expr 和 Var 示例1 filter 示例2 join 示例3 index scan & index only scan 火山模型 执行器各个算子解耦合的基础。对于每个算子来说,只有三步: 1、向自己的孩子拿一个 tuple。即调用孩子节点…

C++初阶之缺省参数

目录 前言 缺省参数 1.缺省参数的概念 2.缺省参数的分类 全缺省参数 半缺省参数 前言 今天小编继续给大家带来C的内容,那么今天小编给大家讲解的就是有关C中缺省参数的介绍。 缺省参数 1.缺省参数的概念 缺省参数是声明或定义函数时为函数的参数指定一个缺省…

分布式互联网——Web3.0

文章目录 前言一、什么是 Web3.0?二、Web3.0 技术1.分布式账本技术(DLT)2. 区块链3. 智能合约4. 加密算法2.操作 三、Web3.0 的未来发展 前言 Web3.0,也被称为“分布式互联网”,是当前互联网的下一代版本。它是一种未来的互联网,它没有中心…

ROS学习第十一节——常用命令

1.概述 机器人系统中启动的节点少则几个,多则十几个、几十个,不同的节点名称各异,通信时使用话题、服务、消息、参数等等都各不相同,一个显而易见的问题是: 当需要自定义节点和其他某个已经存在的节点通信时,如何获取…

实践分享:如何在自己的App 中引入AI 画图

最近AIGC 简直是杀疯了,领导动不动就让我们在APP 里引入大语言模型,引入AI画图……说搞就搞!本期基于最近在app 里引入AI画图小程序的操作,给大家做一波实践分享。 Scribble Diffusion 是一个简单的在线服务,它使用 A…

定制自己的文档问答机器人

近期ChatGPT很火爆,功能很强大,其具有强大的逻辑推理能力和数据背景。但是如果我们想要使用ChatGPT聊一些它没有训练过的知识,或者我们自己的一些数据时,由于ChatGPT没有学习过这些知识,所以回答结果不准确。 下文就介…

十、切分织物起球和非起球区域以便于计算毛球对比度

一、通过训练的模型可以将织物的起球区域进行识别区分 原图: 模型识别: 二、对比度的计算 为了对织物起球等级进行评定,需要这边不同的参数特征来构建模型的评级系统 通过查阅相关文献,确定最终的特征参数为:织物起…

11.面向对象概述,类的创建,对象的创建

一.面向对象程序设计概述 1.知识点面向对象程序设计的目的 (1)从程序设计的角度来看,事物的属性就可以用变量来表示,行为则可以用方法来反映。 (2)客观世界中事物的属性和行为可以进行传递,当…

汇编与内联 x86-64

机器字长 x86是32位系统 64是64位系统 这里的32和64,指的都是机器字长 机器字长是 能直接进行整数/位运算的大小指针的大小(索引内存的范围) 8位机 由于空间大小限制,想要把集成电路做到个人主机里,只能用8位字长的 16位机 8086 IBMP…

如何破除增长的未知性?火山引擎交出了答卷

4月18日,由火山引擎主办的2023春季火山引擎“FORCE原动力”大会在上海召开。本次大会主要围绕云计算和数字化领域,全方位地展示火山引擎在云技术、云服务和云场景方面的最新探索、应用与实践,呈现创新发展的战略蓝图。 曾经,增长是…

Flink高手之路5-Table API SQL

文章目录 Flink 中的Table API & SQL一、Table API & SQL 介绍1. 为什么要Table API和SQL2. Table API & SQL的特点3. Table API& SQL发展历程3.1 架构升级3.2 查询处理器的选择3.3 了解-Blink planner和Flink Planner具体区别如下:3.4 了解-Blink …

神采PromeAI 2.0版本上线,助你释放创作超能力

上个月,我们推出神采PromeAI 1.0版本,让用户可以免费体验AI草图渲染功能。神采作为设计师的提效工具和灵感源泉,深受用户的广大好评。于是,在经过算法优化后,神采PromeAI 2.0版本终于在本周上线了! 我们提供…

【Vulnhub】之Symfonos2

一、 部署方法 在官网上下载靶机ova环境:https://download.vulnhub.com/symfonos/symfonos2.7z使用VMware搭建靶机环境攻击机使用VMware上搭建的kali靶机和攻击机之间使用NAT模式,保证靶机和攻击机放置于同一网段中。 二、 靶机下载安装 靶机下载与安…

ETCD(四)读请求处理过程

客户端通过etcdctl执行get命令 etcdctl get name --endpoints localhost:12379,192.158.00.32:12379client端 首先是client会解析这条命令,包括其中的get API方法,key值,请求server地址。解析完之后etcdctl会创建一个clientv3库对象&#xf…

Ubantu docker学习笔记(七)容器网络

文章目录 一、容器网络管理1.1查看容器网络1.2创建容器网络1.3 删除容器网络1.4 容器网络详细信息1.5 配置容器网络1.6 断开容器网络连接 二、none网络三、host网络四、bridge网络五、container网络六、容器连接外部网络6.1创建Overlay网络6.2创建Macvlan网络 一、容器网络管理…

研0进阶式学习---数据库配置

目录 最开始的问题:不同的连接名下面的数据库信息完全一样尝试新建用户名和密码,以此来建立新的连接 但这样建立的连接下面的数据库仍然是和之前的一模一样尝试改变xampp端口号,以此来建立新的连接 结论MySQL实例的数据库文件是与实例绑定的&…

完美解决丨+# TypeError: ‘dict_keys‘ object does not support indexing

结构 - 标题 - 问题描述 - 代码栗子 - 总结 目录 TypeError: dict_keys object does not support indexing 如何实现&#xff1f; python a {a: 1} b a.keys() c b[0] 异常描述 TypeError Traceback (most recent call last) <ipython-input-9-9dceb06f3f…