当前位置: 首页 > article >正文

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

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

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

场景理解(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.kler.cn/a/13830.html

相关文章:

  • 媒体宣传的优势与重要性
  • Qt实现仿微信在线聊天工具(服务器、客户端)V1_ 02
  • 【C++学习笔记】字符串、向量和数组
  • flac格式如何转mp3,3招帮你搞定
  • springboot+vue准妈妈孕期交流平台(源码+文档)
  • shell脚本中用法_遇到的坑
  • Windows 服务监控工具
  • 第一个机器学习应用:鸢尾花分类
  • 哪款无线洗地机最好用?好用的无线洗地机分享
  • 无线洗地机哪款性价比高?高性价比的洗地机分享
  • OSCP-Exfiltrated(Subrion、exiftool提权)
  • 功能安全ISO26262 道路车辆 功能安全审核及评估方法第3部分:软件层面
  • springcloudfeign原理和流程
  • OpenAI-ChatGPT最新官方接口《从0到1生产最佳实例》全网最详细中英文实用指南和教程,助你零基础快速轻松掌握全新技术(十一)(附源码)
  • 设备树常用of操作函数
  • UE4: Niagara系统实现雨天效果,并跟随人物移动
  • hadoop之MapReduce框架原理
  • Java基于POI动态合并单元格
  • 大语言模型-中文Langchain
  • ElasticSearch索引文档写入和近实时搜索