在我的项目中,我使用的按钮可启用和禁用空间映射/感知。在10次中的7次中,它的效果很好。在其他3次中,可以观察到以下行为。通过禁用空间贴图网格(多边形),它们会消失到90%。但是10%会留在原地。重复按我的按钮(禁用/启用空间贴图)无济于事,仅保留10%。有什么建议导致这种行为的原因是什么?代码观察者:
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();
}// 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;
}
}
}
}
编辑:错误Report on Github。
这似乎是一种竞争条件,其中网格检测到的逻辑不遵守观察者的状态(暂停或恢复)。感谢您的问题@Perazim!