MRTKv2:如何获得空间感知观察者

MRTKv2: How get the spatial awareness observers

在 MRTK 中使用空间感知(又名空间映射)时的一个常见问题是如何访问空间观察器以单独配置它们。

问题出现是因为 IMixedRealitySpatialAwarenessSystem 接口的 GetObserver 方法被标记为过时。

MRTK 2.0.0 版本标准化了跨服务访问数据提供者的模式,以便

  1. 为所有服务类型提供一致的模式。
  2. 启用服务以添加数据提供程序支持,而无需中断接口更改。

以下示例演示了这种访问空间感知网格观察者的模式。

if (CoreServices.SpatialAwarenessSystem != null)
{
    IMixedRealityDataProviderAccess dataProviderAccess = 
        CoreServices.SpatialAwarenessSystem as IMixedRealityDataProviderAccess;

    if (dataProviderAccess != null)
    {
        IReadOnlyList<IMixedRealitySpatialAwarenessMeshObserver> observers =
        dataProviderAccess.GetDataProviders<IMixedRealitySpatialAwarenessMeshObserver>();

        // Modify the observer(s)
        foreach (IMixedRealitySpatialAwarenessMeshObserver observer in observers)
        {
            // Set the mesh to use the occlusion material
            observer.DisplayOption = SpatialMeshDisplayOptions.Occlusion;
        }
    }
}