Как загрузить несколько карт ARworld в реальном мире, используя ARkit2.0 в Unity? - PullRequest
0 голосов
/ 21 мая 2019

Я работал над сценой UnityARworldMap. Пытался загрузить два или более карт мира (расширение .worldmap), которые я сохранил ранее. Начиная загрузку с одной карты мира, пройдя некоторое расстояние, я загружаю вторую карту мира и следующую карту мира через некоторое расстояние.

Я успешно загрузил первую карту arworldmap, и префабы достигают точных позиций в реальном мире. Проблема, с которой я столкнулся, заключается в том, что когда я загружаю вторую карту мира, префабы, загруженные на первую карту, меняют свою позицию (сбрасывают) и загружают в разных позициях. Причина, по которой я считаю, заключается в том, что вторая карта не содержит позиции префабов на первой карте. Без сброса, как загрузить другие карты вместе с первой картой?

public void Load(string flname)
{


    //Loading file from persistent path


    Debug.LogFormat("Loading ARWorldMap {0}", Loadpath);
    var worldMap = ARWorldMap.Load(Loadpath);


    if (worldMap != null)
    {
        m_LoadedMap = worldMap;
        Debug.LogFormat("Map loaded. Center: {0} Extent: {1}", worldMap.center, worldMap.extent);

        UnityARSessionNativeInterface.ARSessionShouldAttemptRelocalization = true;

        var config = m_ARCameraManager.sessionConfiguration;
        config.worldMap = worldMap;
       UnityARSessionRunOption runOption = UnityARSessionRunOption.ARSessionRunOptionRemoveExistingAnchors | UnityARSessionRunOption.ARSessionRunOptionResetTracking;

        Debug.Log("Restarting session with worldMap");
       session.RunWithConfigAndOptions(config, runOption);
       // StopPlaneDetection();


    }
    else
    {
        Debug.Log("No World Map loaded");
    }




}

Так я загружаю карты через разные промежутки времени (см. Ниже).

Load(path+FileName2);//for second world map
Load(path+FileName3);//for third world map

1 Ответ

0 голосов
/ 21 мая 2019

В настоящее время ARWorldTrackingConfiguration принимает только один объект карты мира, и чтобы применить его к сцене, вы сбрасываете сеанс и удаляете все существующие привязки. По этой причине, когда вы применяете вторую карту мира, все якоря из предыдущей удаляются.

Возможный обходной путь - извлечь обе карты мира и скопировать все якоря и характерные точки из одной в другую, а затем загрузить новую карту мира в сцену. Но, тем не менее, это не будет точным, поскольку для каждой карты мира существуют два разных снимка, центра и экстента, что затрудняет процесс перемещения.

Так что, вероятно, лучший вариант на данный момент - сохранить все якоря на одной карте мира и предотвратить загрузку нескольких.

...