平面检测

平面检测示例

该示例演示了如何可视化现实世界中跟踪到的平面,有关自定义可跟踪对象更新的基本信息,以及 Unreal Engine 的 AR Trackable Notify 组件的功能,请参考 Unreal Engine 文档

 

示例工作原理

默认情况下,当打开示例时,它会为检测到的平面生成简单的几何形状。如果启用“使用凸包检测”选项,示例将使用检测到平面的凸包生成更复杂的几何形状。

 

您还可以选择显示这些几何体的线框图。

 

图片35.png


平面 AR 管理器

BP_PlaneARManager 蓝图文件(位于 SnapdragonSpacesSamples Content > SnapdragonSpaces > Samples > PlaneDetection > Placeable)负责通过事件系统管理平面的创建和销毁。该蓝图将 AR Trackable Notify 组件的事件绑定,以响应 AR 跟踪平面的变化。以下事件与平面检测相关:

● 添加/更新/移除跟踪平面:这些事件在系统使用简单平面几何时会被触发。

● 添加/更新/移除跟踪几何:这些事件在系统使用复杂平面几何时会被触发。

○ 与其他情况不同的是,UARTrackedGeometry 可以注册为不同类型的对象。要确认它是否为凸面平面,可以检查其对象分类是否为 EARObjectClassification::NotApplicable。请使用 GetObjectClassification 函数进行验证。

 

图片36.png


警告!

记得在检测开始时将 ToggleARCapture 的状态设置为 ON,以启动检测;在检测完成时将其状态设置为 OFF,以停止检测并销毁所有生成的 AR 几何体。


复杂 AR 会话配置

当用户启用凸包选项时,系统会开始使用 D_ConvexHullSessionConfig 资产(位于 SnapdragonSpacesSamples Content > SnapdragonSpaces > Samples > PlaneDetection > Core)来检测复杂平面。

 

与平面检测相关的选项包括:

● 使用凸包检测

● 水平平面检测

● 垂直平面检测

 

功能设置

可以通过点击 OpenXR 项目设置中平面检测功能旁边的齿轮图标来找到功能设置。

 

使用场景理解:

○ 启用或禁用此设置会对检测到的平面的形状和数量产生不同的影响。

○ 启用此设置将使用场景理解功能来检测平面,这与空间网格(实验)功能使用的技术相同。

 

默认检测与基于场景理解的平面检测的区别


指标默认场景理解
检测速度和首次检测检测速度和首次检测检测速度和首次检测

假阳性

少量假阳性

易出现假阳性

平面准确性

平面数量

平面更新和移动

稳定且不易更新

动态且平面更新更多

平面方向过滤器

支持水平和垂直过滤

无过滤选项

命中检测

按平面预期进行检测

对网格进行碰撞检测