平面检测示例
该示例演示了如何可视化现实世界中跟踪到的平面,有关自定义可跟踪对象更新的基本信息,以及 Unreal Engine 的 AR Trackable Notify 组件的功能,请参考 Unreal Engine 文档。
示例工作原理
默认情况下,当打开示例时,它会为检测到的平面生成简单的几何形状。如果启用“使用凸包检测”选项,示例将使用检测到平面的凸包生成更复杂的几何形状。
您还可以选择显示这些几何体的线框图。
平面 AR 管理器
BP_PlaneARManager 蓝图文件(位于 SnapdragonSpacesSamples Content > SnapdragonSpaces > Samples > PlaneDetection > Placeable)负责通过事件系统管理平面的创建和销毁。该蓝图将 AR Trackable Notify 组件的事件绑定,以响应 AR 跟踪平面的变化。以下事件与平面检测相关:
● 添加/更新/移除跟踪平面:这些事件在系统使用简单平面几何时会被触发。
● 添加/更新/移除跟踪几何:这些事件在系统使用复杂平面几何时会被触发。
○ 与其他情况不同的是,UARTrackedGeometry 可以注册为不同类型的对象。要确认它是否为凸面平面,可以检查其对象分类是否为 EARObjectClassification::NotApplicable。请使用 GetObjectClassification 函数进行验证。
警告! 请记得在检测开始时将 ToggleARCapture 的状态设置为 ON,以启动检测;在检测完成时将其状态设置为 OFF,以停止检测并销毁所有生成的 AR 几何体。 |
复杂 AR 会话配置
当用户启用凸包选项时,系统会开始使用 D_ConvexHullSessionConfig 资产(位于 SnapdragonSpacesSamples Content > SnapdragonSpaces > Samples > PlaneDetection > Core)来检测复杂平面。
与平面检测相关的选项包括:
● 使用凸包检测
● 水平平面检测
● 垂直平面检测
功能设置
可以通过点击 OpenXR 项目设置中平面检测功能旁边的齿轮图标来找到功能设置。
使用场景理解:
○ 启用或禁用此设置会对检测到的平面的形状和数量产生不同的影响。
○ 启用此设置将使用场景理解功能来检测平面,这与空间网格(实验)功能使用的技术相同。
默认检测与基于场景理解的平面检测的区别
指标 | 默认 | 场景理解 |
检测速度和首次检测 | 检测速度和首次检测 | 检测速度和首次检测 |
假阳性 | 少量假阳性 | 易出现假阳性 |
平面准确性 | 高 | 高 |
平面数量 | 少 | 多 |
平面更新和移动 | 稳定且不易更新 | 动态且平面更新更多 |
平面方向过滤器 | 支持水平和垂直过滤 | 无过滤选项 |
命中检测 | 按平面预期进行检测 | 对网格进行碰撞检测 |