Spisu treści:
- Krok 1: Przeszkody…
- Krok 2: Głupi kompas
- Krok 3: Wreszcie rozwiązanie
- Krok 4: Pozwól, aby aplikacja działała
- Krok 5: Skonfiguruj GameSparks
- Krok 6: Dodaj wydarzenia końcowe…
- Krok 7: Dodaj kod chmury
- Krok 8: SKOŃCZYLIŚMY
Wideo: Umieszczanie obiektów AR we współrzędnych GPS w rzeczywistości rozszerzonej: 8 kroków (ze zdjęciami)
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:32
Ta instrukcja omówi tworzenie aplikacji mobilnej do umieszczania obiektów AR we współrzędnych GPS za pomocą ARkit i ARCore przy użyciu Unity3D. Przeprowadzę Cię przez konfigurację projektu, który wykonałem przy użyciu Mapbox, który pozwala nam oznaczać wiadomości w określonych lokalizacjach GPS i zapisywać je w bazie danych GameSparks.
Całe oprogramowanie i projekty, których tutaj użyjemy, są bezpłatne.
Pobierz Unity 3D tutaj, jeśli jeszcze go nie masz:
unity3d.com/
Krok 1: Przeszkody…
Więc nie jest to najłatwiejsza aplikacja do wykonania przy obecnych ograniczeniach mobilnego GPS i mobilnego kompasu.
Szczerze mówiąc przedmioty pojawiają się tam, gdzie powinny być może około 50% czasu. Wyniki nie są więc wspaniałe, ale stają się dokładniejsze, im bliżej obiektów się zbliża.
Tak czy inaczej, myślę, że lepszym sposobem na AR opartego na GPS w tym momencie byłoby użycie mapy, takiej jak pokemon go, a kiedy zbliżasz się do obiektu, kamera otwiera się i widzisz tylko ten obiekt tuż przed tobą. W przyszłości chciałbym zrobić pełny samouczek dotyczący prostszej implementacji takiej jak ta.
Tak czy inaczej, wcześniej korzystałem z Mapbox i wiem, że mają klasę konwersji, która ma funkcje do konwersji współrzędnych GPS na współrzędne świata Unity. Pomyślałem, że mogę po prostu podać niektóre współrzędne GPS i pojawią się tam, gdzie chciałem. Nie działało.
Obiekty ukazują się poprawnie względem siebie, ale nigdy nie były we właściwym miejscu. Zrobiłem więc trochę badań i stwierdziłem, że moja kamera Unity musi być ustawiona na rzeczywistą północ, aby obiekty pojawiły się we właściwym miejscu.
Problem polega na tym, że kompas w telefonie nigdy nie jest całkowicie dokładny.
Krok 2: Głupi kompas
Główny problem polega na tym, że umieszczasz obiekty z dala od kamery, jeśli twoje wyobrażenie prawdziwej północy jest przesunięte nawet o kilka stopni, obiekty w oddali pojawią się bardzo daleko.
Prawie zrezygnowałem z tego przedsięwzięcia, ale znajomy powiedział mi o tym projekcie GitHub:
github.com/mapbox/mapbox-ar-unity
Jest to próba stworzenia AR w „skali światowej” z Mapbox, w której obiekty są zakotwiczone we współrzędnych GPS, dzięki czemu doświadczenia rzeczywistości rozszerzonej mogą działać na zewnątrz na duże odległości, a nie tylko w małym pokoju w domu.
Ich projekt wykorzystuje delty AR Position i GPS Position do obliczenia kąta, który jest przesunięciem kamery AR do prawdziwej północy. Więc po prostu weź jeden odczyt GPS, gdy użytkownik uruchomi aplikację i poprowadź go w linii prostej i wykonaj kolejny odczyt GPS. Dzięki tym dwóm punktom możesz określić, w którym kierunku szła ta osoba (zakładając, że jej kamera jest skierowana w kierunku, w którym idzie). Okazało się, że było to dokładniejsze niż używanie kompasu w telefonie.
Innym problemem, który próbują rozwiązać, jest dryf z ARkit. Śledzenie w małym pokoju jest w porządku, ale gdy pokonujesz duże odległości, obiekty AR kończą się dryfować daleko od miejsca, w którym powinny być.
Krok 3: Wreszcie rozwiązanie
Tak więc ten projekt Mapbox zaoferował sposób na uzyskanie wiarygodnego kierunku orientacji względem prawdziwej północy, więc jedyne, co pozostało, to po prostu umieścić obiekty na świecie.
Skończyło się na rozszerzeniu tego przykładu, aby móc oznaczyć wiadomość tekstową w określonej lokalizacji GPS, a następnie zapisać te informacje w bazie danych GameSparks. Właśnie tego pokażę, jak używać.
Jedyny problem z tym projektem polega na tym, że musisz uzyskać dobre wyrównanie, zanim będzie można go użyć.
Przez wyrównanie mam na myśli to, że ponieważ Mapbox używa delt pozycji do obliczania kursu, po pierwszym otwarciu aplikacji musisz upewnić się, że wykryto płaszczyznę podłoża, a następnie iść przez chwilę w linii prostej, aż zostanie obliczone prawidłowe wyrównanie.
W tym sensie UX jest kolejną przeszkodą, ale w ulepszeniach projektu dają przykład umieszczania sześcianów przed użytkownikiem, aby przejść przez nie, aby zapewnić dobre wyrównanie.
Więc teraz, gdy znasz ograniczenia tego projektu, pozwól, że pokażę ci, jak go używać, aby faceci mogli się pobawić. Ostatecznie będziesz musiał utworzyć konto mapbox i konto gamesparks, z których oba są bezpłatne. Użyłem gameparków tylko po to, aby móc gdzieś zapisać współrzędne GPS, ponieważ podczas testów będziesz dość często restartował i przebudowywał aplikację.
Powinno to działać zarówno z ARkit, jak i ARcore, ale w tej chwili mam tylko iPhone'a, więc to wszystko, co mogłem przetestować.
Krok 4: Pozwól, aby aplikacja działała
Najpierw pobierz ten projekt z GitHub:
Zapisz plik na pulpicie i otwórz go w Unity.
Przejdź do pliku, kompiluj ustawienia i przełącz platformę na Androida lub IOS.
Teraz przejdź do Mapbox.com i utwórz konto, jeśli jeszcze go nie masz.
Chwyć klucz API i wróć do Unity, kliknij kartę Mapbox u góry i kliknij konfiguruj. Wklej tam swój klucz API.
Teraz utwórz konto na GameSparks.com i kliknij przycisk w prawym górnym rogu, aby utworzyć nową aplikację.
Nazwij go, jak chcesz, i skopiuj klucz API i tajny klucz aplikacji. Wróć do Unity i znajdź zakładkę GameSparks na górze. Kliknij konfiguruj i wklej tam również swoje dane uwierzytelniające.
Krok 5: Skonfiguruj GameSparks
Teraz zanim aplikacja zacznie działać, musimy skonfigurować naszą bazę danych.
GameSparks używa noSQL, więc najpierw musimy utworzyć kolekcję i dodać zdarzenia, których nasza aplikacja używa do odczytywania, zapisywania i usuwania z serwera.
Najpierw utwórz nową kolekcję w witrynie GameSparks i nazwij ją, jak chcesz.
Teraz musimy stworzyć 3 wydarzenia.
Pierwszą rzeczą, którą aplikacja musi zrobić, jest zapisanie obiektu komunikatu do bazy danych.
Wiadomość ma szerokość i długość geograficzną, a następnie tekst wiadomości.
Przejdź więc do konfiguratora i dodaj nowe wydarzenie. Utwórz krótki kod „SAVE_GEO_MESSAGE”.
Wpisz, co chcesz, jako nazwę i opis.
Dodaj krótki kod dla 3 atrybutów:
„LAT” „LON”
"TEKST"
Ustaw każdy typ danych na ciąg i ustaw wartość domyślną na 0. Ustaw domyślny typ agregacji każdego z nich na „używany w skrypcie”.
Krok 6: Dodaj wydarzenia końcowe…
Aplikacja musi również załadować wszystkie wiadomości z bazy danych i odczytać je w Unity po uruchomieniu aplikacji, abyśmy mogli umieścić wiadomości AR przechowywane w bazie danych.
Utwórz kolejne wydarzenie i nazwij je „LOAD_MESSAGE”
To wydarzenie nie wymaga żadnych atrybutów. Ponownie umieść, co chcesz, jako nazwę i opis.
Zrób to samo dla innego wydarzenia i nazwij je „REMOVE_MESSAGES”
To nawet nie wymaga żadnych atrybutów.
Teraz ostatnią rzeczą, którą musimy zrobić, jest dodanie „kodu w chmurze” lub kodu po stronie serwera, który jest wywoływany, gdy każde zdarzenie jest uruchamiane z naszej aplikacji.
Krok 7: Dodaj kod chmury
W GameSparks przejdź do konfiguratora i kodu w chmurze.
Do każdego wydarzenia, które właśnie stworzyliśmy, musimy dodać skrypt.
W zdarzeniu LOAD_MESSAGE dodaj ten kod i zapisz go:
var messageData = Spark.runtimeCollection("GeoMessage");
var kursor = messageData.find();
var wszystkieWiadomości = ;
while(kursor.hasNext()) {
var obj = kursor.następny();
usuń(obj ["_id"]);
wszystkieWiadomości.push(obj);
}
Spark.setScriptData("wszystkie_komunikaty", wszystkie komunikaty); // zwróć wszystkie dane
W zdarzeniu REMOVE_MESSAGES dodaj ten kod:
var messageData = Spark.runtimeCollection("GeoMessage");
messageData.remove({});
Na koniec w wydarzeniu SAVE_MESSAGES dodaj to:
var geoMessageList = Spark.runtimeCollection("GeoMessage");
var wiadomośćLat = Spark.getData(). LAT;
var wiadomośćLon = Spark.getData(). LON;
var tekst wiadomości = Spark.getData(). TEKST;
var bieżąca wiadomość = {
"messLat": wiadomośćLat,
"messLon": wiadomośćLon,
"messText": messageText,
};
geoMessageList.insert(bieżąca wiadomość);
Krok 8: SKOŃCZYLIŚMY
Ten projekt używa unikalnego identyfikatora Twojego urządzenia do uwierzytelniania na serwerze GameSparks, dzięki czemu możesz teraz wrócić do Unity i kliknąć przycisk Odtwórz, a w konsoli powinieneś zobaczyć „uwierzytelnione urządzenie…”
Teraz przejdź do pliku, ustawienia kompilacji i kliknij kompiluj. Jeśli nigdy nie tworzyłeś aplikacji na Androida lub iOS, może być konieczne założenie konta programistycznego w Google lub Apple.
Po uruchomieniu aplikacji na telefonie musisz najpierw upewnić się, że ARKit lub ARCore wykryją samolot naziemny. Teraz kliknij przycisk dziennika w lewym dolnym rogu. Przejdź kilka kroków do przodu, a zobaczysz „obliczone wyrównanie” w kolorze jasnoniebieskim. Teraz powinny pojawić się przyciski interfejsu użytkownika, a jeśli jakieś wiadomości zostaną załadowane do twojej bazy danych, zostaną umieszczone w świecie.
Aby oznaczyć nową wiadomość GPS AR gdzieś, przejdź do lokalizacji, w której chcesz umieścić wiadomość, i kliknij ikonę wiadomości w prawym górnym rogu ekranu. Wpisz dowolną wiadomość i kliknij przycisk pinezki!
Zalecana:
Wzmocnij swoją pamięć dzięki Pałacowi Umysłu w Rzeczywistości Rozszerzonej: 8 kroków
Wzmocnij swoją pamięć dzięki Pałacowi Umysłu w rzeczywistości rozszerzonej: Korzystanie z pałaców umysłu, tak jak w Sherlocku Holmesie, było używane przez mistrzów pamięci do przywoływania wielu informacji, takich jak kolejność kart w potasowanej talii. Pałac umysłu lub metoda loci to technika pamięciowa, w której wizualne mnemoniki są
GlobalARgallery - Galeria globalnej rzeczywistości rozszerzonej: 16 kroków
#GlobalARgallery - Globalna galeria rozszerzonej rzeczywistości: #GlobalARgallery to okazja dla szkół (i innych osób) do asynchronicznego łączenia się na całym świecie i dzielenia się doświadczeniami, dziełami sztuki, historiami, osiami czasu, wystawami, prezentacjami i wszystkim, co tylko możesz sobie wyobrazić. Wszystkie te pojawiające się w A
Zagadka rzeczywistości rozszerzonej: 11 kroków
Augmented Reality Puzzle: Gry logiczne są po prostu cudowne. Istnieją wszelkiego rodzaju układanki, typowe układanki, labirynt z żetonami, a nawet gry wideo tego gatunku (na przykład Captain Toad). Gry logiczne wymagają od gracza zaprojektowania strategii rozwiązywania problemów
CityCoaster - Zbuduj własną podstawkę do rzeczywistości rozszerzonej dla swojej firmy (TfCD): 6 kroków (ze zdjęciami)
CityCoaster - zbuduj własną podstawkę z rozszerzoną rzeczywistością dla swojej firmy (TfCD): Miasto pod twoim kubkiem! CityCoaster to projekt zrodzony z myślą o produkcie dla lotniska Rotterdam Haga, który mógłby wyrażać tożsamość miasta, zabawiając klientów strefy wypoczynkowej rozszerzoną rzeczywistością. W środowisku takim
Prezentacja produktów w rozszerzonej rzeczywistości (TfCD): 11 kroków (ze zdjęciami)
Prezentacja produktów w rozszerzonej rzeczywistości (TfCD): Sprzedaż produktów podczas lotu staje się obecnie coraz bardziej popularna. Jednak w samolocie pierwszą i prawie jedyną informacją, jaką widzi pasażer (potencjalny nabywca) jest drukowana broszura. Ten instruktaż pokaże sposób na innowacje w sieci airp