如何解决MRTK v2空间映射隐藏多边形的可视化
如何隐藏多边形的可视化?
我使用以下方法,但仍然失败。
// 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;
解决方法
我查看了一个旧项目,在其中启用和禁用了空间映射。我猜您必须在更改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;
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。