MRTKv2:如何获得空间意识观察者

时间:2019-09-12 19:38:12

标签: mrtk

在MRTK中使用空间感知(又称空间映射)时,一个常见的问题是如何访问空间观察者以对其进行单独配置。

由于IMixedRealitySpatialAwarenessSystem接口的GetObserver方法已标记为过时,因此出现了问题。

1 个答案:

答案 0 :(得分:1)

MRTP 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;
        }
    }
}