MRTK V2 - визуализация пространственной осведомленности Mesh не работает должным образом - PullRequest
0 голосов
/ 30 октября 2019

В моем проекте я использую кнопку, которая включает и отключает пространственное отображение / осведомленность. Это работает довольно хорошо, в 7 раз из 10. Следующее поведение может наблюдаться в остальных 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;
            }
        }
    }
}

Редактировать: Ошибка Отчет о Github .

1 Ответ

0 голосов
/ 05 ноября 2019

Похоже, что это состояние гонки, когда логика обнаружения сетки не учитывает состояние наблюдателя (приостановлено или возобновлено). Спасибо за вопрос @Perazim!

...