【问题标题】:MRTK v2 Spatial Mapping Hide the Visualization of PolygonsMRTK v2 空间映射隐藏多边形的可视化
【发布时间】:2020-08-26 20:46:14
【问题描述】:
如何隐藏多边形的可视化?
我用了下面的方法,还是失败了。
// Get the first Mesh Observer available, generally we have only one registered
var observer = CoreServices.GetSpatialAwarenessSystemDataProvider<IMixedRealitySpatialAwarenessMeshObserver>();
// Set to not visible
observer.DisplayOption = SpatialAwarenessMeshDisplayOptions.None;
【问题讨论】:
标签:
mapping
spatial
hololens
mrtk
【解决方案1】:
我查看了一个旧项目,在该项目中启用和禁用了空间映射。我猜你必须在更改DisplayOption 后恢复观察者。我就是这样做的:
public void ToggleObservers()
{
if (SpatialAwarenessSystem == null) return;
// If running → stop "running"
if (_isObserverRunning)
{
SetVisualizationOfSpatialMapping(SpatialAwarenessMeshDisplayOptions.None);
SpatialAwarenessSystem.SuspendObservers();
_isObserverRunning = false;
// Disabling the whole system boosts performance ~+5fps
if (ShouldSpatialSystemBeDisabled)
{
SpatialAwarenessSystem.Disable();
Debug.Log("Spatial map system was disabled.");
}
} // Else start spatial mapping
else
{
SpatialAwarenessSystem.Enable();
SetVisualizationOfSpatialMapping(SpatialAwarenessMeshDisplayOptions.Visible);
SpatialAwarenessSystem.ResumeObservers();
_isObserverRunning = true;
}
}
public void SetVisualizationOfSpatialMapping(SpatialAwarenessMeshDisplayOptions option)
{
if (CoreServices.SpatialAwarenessSystem is IMixedRealityDataProviderAccess provider)
{
foreach (var observer in provider.GetDataProviders())
{
if (observer is IMixedRealitySpatialAwarenessMeshObserver meshObs)
{
meshObs.DisplayOption = option;
}
}
}
}
private IMixedRealitySpatialAwarenessSystem SpatialAwarenessSystem
{
get
{
if (_spatialAwarenessSystem == null)
{
MixedRealityServiceRegistry.TryGetService<IMixedRealitySpatialAwarenessSystem>(out _spatialAwarenessSystem);
}
return _spatialAwarenessSystem;
}
}