2017-07-24 69 views
7

Mam nadzieję, że będę przechowywać dane chmury punktów zapisane przy użyciu ARKit i Unity, tak że można je pobrać i wyświetlić tak, jak zostały pierwotnie zapisane. Powiedzmy, że po prostu wyświetla dane chmury punktów dokładnie jak działa skrypt UnityPointCloudExample.cs, który jest dołączony do wtyczki Unity. Jednak po wykryciu i wyświetleniu punktu przechowuję również istotne informacje o tym punkcie. Następnie całkowicie zamykam aplikację. Kiedy ponownie otworzę aplikację, chcę mieć możliwość ponownego załadowania danych w tych samych pozycjach w stosunku do kamery, jaka była po pierwotnym wykryciu, czy jest to możliwe przy użyciu wtyczki ARKit i Unity tak jak jest?Przechowywanie danych chmur punktów ARKit i pobieranie do wyświetlania

Wiem, że wymagałoby to zapisania pewnych informacji o położeniu kamery względem pozycji punktu, a następnie po ponownym uruchomieniu aplikacji należałoby wykonać jakieś tłumaczenie pomiędzy nową pozycją kamery przy ponownym uruchomieniu a jej położeniem z poprzednią sesję, w której zapisano punkty, a następnie wykorzystując te informacje, aby umieścić punkty we właściwej pozycji. Przeglądając dokumentację ARKita, nie jestem do końca pewny, w jaki sposób osiągnęłbym to za pomocą natywnego interfejsu, a jeszcze mniej jestem pewien, w jaki sposób osiągnęłbym to za pomocą wtyczki Unity. Gdyby ktoś mógł mnie skierować w stronę elementów wtyczki jedności lub natywnego interfejsu ARKit, który najłatwiej ułatwiłby implementację powyższej funkcjonalności, byłbym bardzo wdzięczny.

Lub, jeżeli wykracza to poza zakres wtyczki ARKit/Unity w obecnym stanie, wyjaśnienie, w jaki sposób i dlaczego tak się dzieje, jest równie pomocne. Dzięki!

Odpowiedz

0

ARKit ustawia początek na 0,0,0, gdy rozpoczyna się śledzenie AR. Nie ma możliwości prawidłowego załadowania sceny AR w kolejnych przebiegach przy użyciu współrzędnych z poprzedniego przebiegu bez definiowania relacji między punktami z poprzedniego przebiegu i punktami z nowego przebiegu.

Aby powiązać wcześniejsze przebiegi ARKit z nowym przebiegiem, możemy używać punktów orientacyjnych, ręcznie umieszczonych lub wykrytych za pomocą rozpoznawania obiektów. Załóżmy, że ręcznie umieszczamy punkty orientacyjne dla uproszczenia.

Oto potok, który pozwoli nam zapisywać i przywracać scenę ARKit między kolejnymi przebiegami.

  1. Wstępna procedura ustawiania sceny.

    • Rozpocznij naszą aplikację ARKit w pierwszym uruchomieniu, aby umieścić przedmioty lub zagrać w grę.
    • Umożliwia inicjowanie ARKit.
    • Wybierz dwa punkty odniesienia wzdłuż płaskiej poziomej płaszczyzny w naszym otoczeniu. Na przykład, jeśli jesteśmy w domu, możemy wybrać dwa rogi pomieszczenia. Te punkty będą używane do ponownego załadowania naszej sceny ARKit.
  2. Umieść obiekty w ARSpace według potrzeb. Po zakończeniu zapisz położenie naszych obiektów AR i naszych dwóch punktów odniesienia do pliku.

  3. Po ponownym załadowaniu, umieść te same dwa punkty odniesienia w miejscu, które wcześniej zapisaliśmy. Po zdefiniowaniu tych dwóch punktów możliwe jest ponowne załadowanie zasobów w ich poprzednich lokalizacjach poprzez uzyskanie ich lokalizacji względem starych punktów, a następnie umieszczenie ich względem nowo zdefiniowanych punktów.

Aby zmniejszyć wymaganą interakcję użytkownika, możemy rozszerzyć to o śledzenie/wykrywanie obrazu.Po wykryciu obrazu lub obiektu przełomowego automatycznie ustawiamy jego lokalizację w ARSpace jako jeden z dwóch punktów. Po wykryciu obu punktów orientacyjnych możemy "automatycznie" załadować ponownie scenę zgodnie z opisem w kroku 3. Pozwoli to wyeliminować początkowy błąd punktowania.