【问题标题】: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;
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-12-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多