为设备配置网格观察程序 - MRTK2
本指南将演示如何在支持 Windows Mixed Reality 平台(例如 HoloLens)的 MRTK 中配置现用空间网格观察程序。 混合现实工具包提供的默认实现是 WindowsMixedRealitySpatialMeshObserver 类。 但是,本文中的许多属性都适用于其他自定义观察程序实现。
配置文件设置
为空间感知系统配置空间网格观察程序配置文件时,必须先定义以下两项。
- 具体观察程序类型实现
- 支持运行此观察程序的平台列表
注意
所有观察程序都必须扩展 IMixedRealitySpatialAwarenessObserver 接口。
常规设置
启动行为
启动行为对观察程序在首次实例化时是否开始运行进行指定。 这两个选项如下:
- 自动启动 - 默认值,在此默认值中,观察程序将在初始化后开始运行
- 手动启动 - 观察程序在启动之前将等待指示
如果使用“手动启动”,则必须通过代码在运行时恢复并挂起它们。
更新间隔
向平台请求更新空间网格数据之间的时间(以秒为单位)。 典型值的范围在 0.1 到 5.0 秒之间。
是静止观察程序
指观察程序是保持静止状态,还是与用户一起移动和更新。 如果为 true,则由“观察范围”定义体积的“观察程序形状”将在启动时保留在原点。 如果为 false,则观察程序空间将把用户头部作为形状的原点。
以下属性所定义的观察程序空间之外的任何物理区域的网格数据不会被计算,如:是静止观察程序、观察程序形状* 和观察范围。
观察程序形状
观察程序形状对网格观察程序在观察网格时使用的体积的类型进行定义。 支持的选项包括:
- 轴对齐立方体 - 与世界坐标系统的轴保持对齐的矩形形状,在应用程序启动时确定。
- 用户对齐立方体 - 旋转后可与用户本地坐标系对齐的矩形形状。
- 球体 - 球状体,其中心位于世界空间原点。 “观察范围”属性的 X 值将用作球体的半径。
观察范围
观察范围定义了从观察点起始的网格观察距离。
物理设置
物理层
因要与 Unity 物理和 RayCast 系统交互而放置空间网格对象的物理层。
注意
默认情况下,混合现实工具包保留第 31 层,供空间感知观察程序使用。
重新计算法线
指定网格观察程序是否会在观察后重新计算网格的法线。 此设置可用于确保应用程序在不返回网格的平台上接收包含有效法线数据的网格。
详细级别设置
详细级别
指定空间网格数据的详细级别 (LOD)。 当前定义的值为“粗略”、“精细”和“自定义”。
粗略 - 对应用程序性能的影响较小,是导航/平面查找的极佳选择。
中等 - 均衡设置,通常适用于持续扫描环境以寻找大型地貌、地面墙面以及遮挡细节。
精细 - 通常对应用程序性能的影响更大,是遮挡网格的最佳选择。
自定义 - 要求应用程序指定“三角形数/立方米”属性,并允许应用程序优化空间网格观察程序的准确性和性能影响。
注意
不能保证所有平台接受所有的“三角形数/立方米”值。 使用自定义 LOD 时,强烈建议进行试验和分析。
每立方米三角形数
对“详细级别”属性使用“自定义”设置时有效,为空间网格指定三角形密度。
显示设置
显示选项
指定观察程序显示空间网格的方式。 支持的值是:
- 无 - 观察程序将不渲染网格
- 可见 - 使用可见材料的网格数据将具有可见性
- 遮挡 - 网格数据使用遮挡材料在场景中遮挡项目
可以通过代码在运行时恢复/挂起空间观察程序。
警告
将“显示选项”设置为“无”不会阻止观察程序运行。 如果要停止所有观察程序,应用程序需要通过 CoreServices.SpatialAwareness.SuspendObservers()
暂停所有观察程序
可见材料
指可视化空间网格时所使用的材料。
遮挡材料
指用于使空间网格遮挡全息影像的材料。