MRTKv2:如何获得空间感知观察者
MRTKv2: How get the spatial awareness observers
在 MRTK 中使用空间感知(又名空间映射)时的一个常见问题是如何访问空间观察器以单独配置它们。
问题出现是因为 IMixedRealitySpatialAwarenessSystem 接口的 GetObserver 方法被标记为过时。
MRTK 2.0.0 版本标准化了跨服务访问数据提供者的模式,以便
- 为所有服务类型提供一致的模式。
- 启用服务以添加数据提供程序支持,而无需中断接口更改。
以下示例演示了这种访问空间感知网格观察者的模式。
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;
}
}
}
在 MRTK 中使用空间感知(又名空间映射)时的一个常见问题是如何访问空间观察器以单独配置它们。
问题出现是因为 IMixedRealitySpatialAwarenessSystem 接口的 GetObserver 方法被标记为过时。
MRTK 2.0.0 版本标准化了跨服务访问数据提供者的模式,以便
- 为所有服务类型提供一致的模式。
- 启用服务以添加数据提供程序支持,而无需中断接口更改。
以下示例演示了这种访问空间感知网格观察者的模式。
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;
}
}
}