您现在的位置是:首页 >学无止境 >HoloLens2场景理解,识别平面信息网站首页学无止境

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

疯狂的球球ww 2023-06-05 20:00:02
简介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包

第二步,

LibraryPackageCachecom.microsoft.mixedreality.toolkit.foundation@f2323a9b7aecProvidersExperimentalWindowsSceneUnderstandingWindowsSceneUnderstandingObserver.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

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。