Spisu treści:

Rzeczywistość rozszerzona Vuforia 7 Wykrywanie płaszczyzny naziemnej.: 8 kroków
Rzeczywistość rozszerzona Vuforia 7 Wykrywanie płaszczyzny naziemnej.: 8 kroków

Wideo: Rzeczywistość rozszerzona Vuforia 7 Wykrywanie płaszczyzny naziemnej.: 8 kroków

Wideo: Rzeczywistość rozszerzona Vuforia 7 Wykrywanie płaszczyzny naziemnej.: 8 kroków
Wideo: Adding Augmented Reality to your Typescript Project 2024, Lipiec
Anonim
Wykrywanie płaszczyzny naziemnej Vuforia 7 w rzeczywistości rozszerzonej
Wykrywanie płaszczyzny naziemnej Vuforia 7 w rzeczywistości rozszerzonej
Wykrywanie płaszczyzny naziemnej Vuforia 7 w rzeczywistości rozszerzonej
Wykrywanie płaszczyzny naziemnej Vuforia 7 w rzeczywistości rozszerzonej

Pakiet SDK rzeczywistości rozszerzonej Vuforia dla Unity 3D wykorzystuje ARCore i ARKit do wykrywania płaszczyzn naziemnych w AR. W dzisiejszym samouczku wykorzystamy ich natywną integrację w Unity, aby stworzyć aplikację AR na Androida lub IOS. Samochód spadnie z nieba na ziemię, a jego drzwi otworzą się automatycznie, gdy się zbliżymy. Przejdziemy również do robienia wideo w AR. Aby kontynuować, będziesz potrzebować Unity 3D zainstalowanego na swoim komputerze (to nic nie kosztuje). Te instrukcje są dla początkujących, więc szczegółowo omówimy wszystko!

Najlepszą częścią SLAM Vuforia jest liczba obsługiwanych urządzeń IOS i Android. Pełną listę urządzeń można znaleźć tutaj:

library.vuforia.com/articles/Solution/grou…

Krok 1: Rozpocznij nowy projekt

Rozpocznij nowy projekt
Rozpocznij nowy projekt

Pobierz Unity 3D stąd, jeśli jeszcze go nie masz:

Upewnij się, że zainstalowałeś obsługę rozszerzonej rzeczywistości Vuforia i systemu Android lub IOS w zależności od posiadanego urządzenia.

Otwórz Unity i rozpocznij nowy projekt Unity, nazwij go, jak chcesz.

Najpierw skonfigurujmy aplikację do budowania, abyśmy nie zapomnieli. Zapisz więc scenę i nazwij ją „główną”.

Przejdź do pliku, ustawienia kompilacji i przełącz platformę kompilacji na Androida lub IOS. Przejdź do ustawień XR w ustawieniach odtwarzacza i sprawdź Vuforia Augmented Reality Supported.

Jeśli jesteś na Androidzie, nie będziesz musiał robić nic więcej, ale na IOS przejdź do innych ustawień i upewnij się, że wstawiasz coś dla swojego identyfikatora pakietu. Użyj formatu „com. NazwaTwojejFirmy. NazwaTwojejAplikacji”.

Umieść cokolwiek w opisie użycia aparatu i zmień docelową minimalną wersję kompilacji na co najmniej 9.0.

Zamknij to, a teraz skonfigurujmy wszystko inne.

Krok 2: Skonfigurujmy Vforię

Skonfigurujmy Vuforia
Skonfigurujmy Vuforia

Teraz skonfigurujmy wszystko.

Przejdź do gameobject w górnym menu i kliknij ARCamera. Teraz usuń główną kamerę ze swojej sceny.

Wybierz ARCamera i po prawej stronie w inspektorze kliknij Otwórz konfigurację Vuforia. Kliknij kolekcję zbiorów danych i odznacz wszystko, ponieważ nie używamy tutaj żadnych celów graficznych.

Kliknij narzędzie do śledzenia urządzeń i kliknij pozycję śledzenia urządzenia. Zmień śledzenie z rotacyjnego na pozycyjne.

Teraz wróć do zakładki obiektów gry i kliknij Vuforia, Ground Plane i Plane finder. Zawiera skrypty, które znajdują naszą płaszczyznę uziemienia.

Ostatnią rzeczą, jakiej potrzebujemy, jest etap płaszczyzny podłoża, więc ponownie przejdź do obiektu gry w górnym menu, kliknij Vuforia, płaszczyzna podłoża i wybierz etap płaszczyzny podłoża. Teraz wszystko, czego jesteśmy dziećmi, pojawi się w AR.

Krok 3: Dodaj nowy skrypt

Dodaj nowy skrypt
Dodaj nowy skrypt
Dodaj nowy skrypt
Dodaj nowy skrypt

Domyślnym zachowaniem wykrywania płaszczyzny podłoża jest umieszczanie nowego obiektu za każdym razem, gdy naciśniesz na ekranie. Chcemy po prostu zmieniać położenie obiektu za każdym razem, gdy naciśniesz na ekranie. Więc kliknij prawym przyciskiem myszy w folderze zasobów i utwórz nowy skrypt C#. Nazwij go „DeployStageOnce” i zastąp wszystko tym kodem:

korzystanie z Systemu;

za pomocą UnityEngine; za pomocą Vuforia; public class DeployStageOnce: MonoBehaviour { public GameObject AnchorStage; prywatny PositionalDeviceTracker _deviceTracker; prywatny GameObject _previousAnchor; public void Start () { if (AnchorStage == null) { Debug. Log("Należy określić AnchorStage"); powrót; } AnchorStage. SetActive(false); } public void Awake() { VuforiaARController. Instance. RegisterVuforiaStartedCallback(OnVuforiaStarted); } public void OnDestroy() { VuforiaARController. Instance. UnregisterVuforiaStartedCallback(OnVuforiaStarted); } private void OnVuforiaStarted() { _deviceTracker = TrackerManager. Instance. GetTracker(); } public void OnInteractiveHitTest(HitTestResult wynik) { if (wynik == null || AnchorStage == null) { Debug. LogWarning("Test trafień jest nieprawidłowy lub nie ustawiono AnchorStage"); powrót; } var anchor = _deviceTracker. CreatePlaneAnchor(Guid. NewGuid(). ToString(), wynik); if (kotwica != null) { AnchorStage.transform.parent = anchor.transform; AnchorStage.transform.localPosition = Wektor3.zero; AnchorStage.transform.localRotation = Quaternion.identity; AnchorStage. SetActive(prawda); } if (_previousAnchor != null) { Zniszcz(_previousAnchor); } _previousAnchor = kotwica; } }

Aby upewnić się, że ten skrypt zostanie użyty, musimy wywołać funkcję OnInteractiveHitTest(), więc wróć do Unity i kliknij obiekt gry w wyszukiwarkę samolotów. Zmień tryb z automatycznego na interaktywny. Przeciągnij skrypt, który właśnie stworzyliśmy, na obiekt gry w wyszukiwarkę samolotów. Usuń skrypt ContentPositioningBehavior. Zobaczysz miejsce na obiekt gry w skrypcie DeployStageOnce, przeciągnij tam wyszukiwarkę samolotów i znajdź ten skrypt, wybierz funkcję OnInteractiveHitTest z góry listy. Teraz nasza funkcja zostanie wywołana za każdym razem, gdy użytkownik kliknie na ekranie!

Krok 4: Dodajmy samochód

Dodajmy samochód
Dodajmy samochód

Pobierz ten darmowy model samochodu 3D stąd (upewnij się, że masz wersję.obj):

www.turbosquid.com/3d-models/max-exterior-…

Pobierz również ten dźwięk, ponieważ będziemy go odtwarzać, gdy samochód uderzy o ziemię:

freesound.org/people/PaulMorek/sounds/1967…

Rozpakuj oba te pliki i przeciągnij je do folderu zasobów.

Kliknij samochód i spójrz w prawo, z menu rozwijanego u góry zmień opcję Użyj materiałów osadzonych na Użyj materiałów zewnętrznych (starsze). Teraz będziemy mogli zmienić kolor wszystkich materiałów w samochodzie.

Przeciągnij samochód na scenę samolotu naziemnego, czyniąc z niego dziecko. Zmień skalę na.035 na x, y i z.

Teraz przejrzyj każdy z potomnych obiektów gry samochodów i zmień ich materiały na dowolny kolor.

Dodaj sztywny element nadwozia do głównego obiektu gry samochodu, a także dodaj zderzacz pudełek, skaluj go tak, aby obejmował cały samochód. Dodaj także zderzacz pudełek do etapu płaszczyzny uziemienia i przeskaluj go, aby był kilka razy szerszy niż stopień płaszczyzny uziemienia. W ten sposób możemy zrzucić samochód z nieba i uderzy o ziemię dzięki wbudowanemu silnikowi fizycznemu Unity.

Krok 5: Umieść samochód na niebie

Umieść samochód na niebie
Umieść samochód na niebie

Dodaj komponent źródła dźwięku do głównego obiektu gry samochodu, przeciągnij dźwięk wypadku samochodowego do miejsca klipu audio.

Teraz musimy stworzyć skrypt, który podniesie samochód w powietrze, gdy użytkownik naciśnie ekran, a następnie odtworzy dźwięk zderzenia, gdy samochód uderzy o ziemię. Kliknij prawym przyciskiem myszy folder zasobów i utwórz nowy skrypt C# i nazwij go „CarController”.

Zastąp cały kod następującym:

za pomocą System. Collections;

za pomocą System. Collections. Generic; za pomocą UnityEngine; public class CarController: MonoBehaviour { private bool soundPlayed = false; // Aktualizacja jest wywoływana raz na klatkę void Update() { if (!soundPlayed && transform.localPosition.y <.05f) { soundPlayed = true; StartCoroutine (DelayPlaySound ()); } } public void MoveCar(){ transform.localPosition += new Vector3 (0, 10, 0); transform.eulerAngles += new Vector3 (5, 20, 5); soundPlayed = fałsz; } IEnumerator DelayPlaySound(){ wydajność zwraca nowe WaitForSeconds (.2f); GetComponent (). Graj (); } }

Dodaj funkcję MoveCar do zdarzenia OnInteractiveHitTest jak na powyższym obrazku. Teraz zostanie wywołany, gdy użytkownik kliknie na ekranie.

Krok 6: Drzwi Lambo

Drzwi Lambo
Drzwi Lambo

Więc jeśli rozwiniesz obiekt gry samochodowej i znajdziesz drzwi, zauważysz, że oba drzwi są jedną siatką. Jeśli chcemy otworzyć drzwi, naszą jedyną opcją będą drzwi Lambo, które otwierają się pionowo. Aby to zadziałało, musimy najpierw zmienić ich punkt obrotu.

Stwórz pusty obiekt do gry, który jest dzieckiem samochodu. Przeciągnij drzwi i uczyń je dzieckiem tego nowego obiektu gry. Przesuń nadrzędny obiekt gry w miejsce, w którym powinien znajdować się punkt obrotu, przy zawiasach drzwi. Teraz przesuń drzwiczki podrzędne z powrotem na miejsce. Teraz, gdy obracamy rodzica drzwi, punkt obrotu jest we właściwym miejscu.

Zamierzamy stworzyć skrypt, który otwiera drzwi, gdy zbliżysz się do samochodu, ale zanim to zrobimy, potrzebujemy sposobu na „wyzwolenie” zdarzenia. Dodaj zderzacz pudełek do obiektu gry nadrzędnego drzwi i przeskaluj go tak, aby przechodził trochę nad samochodem w obu kierunkach. Zaznacz "isTrigger". Teraz dodaj zderzacz pudełek do głównego aparatu i odpowiednio go przeskaluj. Sprawdź także "isTrigger". Dodaj komponent Rigid Body do aparatu i odznacz „useGravity”. Po wybraniu kamery zmień jej tag na „MainCamera” w górnej części inspektora.

Dodaj nowy skrypt o nazwie „LamboDoorBehavior” i dodaj poniższy kod. Przeciągnij skrypt na rodzica twoich drzwi.

za pomocą System. Collections;

za pomocą System. Collections. Generic; za pomocą UnityEngine; public class LamboDoorBehavior: MonoBehaviour { private float currAngle = 0; prywatny kąt pożądany kąt = 0; // Aktualizacja jest wywoływana raz na klatkę void Update() { currAngle = Mathf. LerpAngle (currAngle, requiredAngle, Time.deltaTime * 3f); transform.localEulerAngles = new Vector3 (currAngle, 0, 0); } public void OpenDoors(){ pożądany kąt = 60f; } public void CloseDoors(){ pożądanyAngle = 0; } void OnTriggerEnter(Collider col){ if (col. CompareTag ("MainCamera")) { OpenDoors (); } } void OnTriggerExit(Collider col){ if (col. CompareTag ("MainCamera")) { CloseDoors (); } } }

Ten skrypt spowoduje, że twoje drzwi będą się powoli otwierać, gdy zamkniesz je w AR za pomocą funkcji Lerp() w jedności, która interpoluje między dwoma punktami (lub w tym przypadku dwoma kątami).

Krok 7: Odtwarzanie wideo w AR

Odtwarzanie wideo w AR
Odtwarzanie wideo w AR
Odtwarzanie wideo w AR
Odtwarzanie wideo w AR

Ostatnią rzeczą, jaką musimy zrobić, jest odtwarzanie wideo w AR.

Kliknij prawym przyciskiem myszy dowolny obiekt gry, który jest dzieckiem Twojego samochodu i utwórz obiekt 3D, Quad. Dzięki temu quad będzie dzieckiem Twojego samochodu. Ustaw i zmień rozmiar tego quada tak, aby zmieścił się w desce rozdzielczej samochodu i wyglądał tak, jak powinien tam być. Na tym będziemy odtwarzać wideo.

Dodaj komponent odtwarzacza wideo do swojego quada. Zmień źródło na URL i znajdź twardy link do pliku. MP4 lub przeciągnij plik wideo do folderu zasobów, a następnie przeciągnij ten klip do pustego gniazda. Jeśli chcesz przesyłać strumieniowo wideo z adresu URL, Instagram jest doskonałym źródłem. Kliknij prawym przyciskiem myszy dowolny film na Instagramie w Google Chrome i kliknij sprawdź. Znajdź div zawierający wideo i skopiuj stamtąd link (mam tę metodę na zdjęciu powyżej).

Pamiętaj, aby sprawdzić pętlę, jeśli chcesz, aby była odtwarzana więcej niż raz. Dodaj składnik źródła dźwięku do tego obiektu gry i zmień źródło wyjściowe na źródło dźwięku w odtwarzaczu wideo. Przeciągnij nowo utworzone źródło dźwięku do tego gniazda.

Wreszcie skończyliśmy!

Krok 8: Umieść aplikację na swoim telefonie

Umieść aplikację na swoim telefonie!
Umieść aplikację na swoim telefonie!

Jeśli tworzysz dla Androida, możesz po prostu przejść do pliku, kliknąć kompilacja i uruchomić z podłączonym telefonem.

Jeśli budujesz na iPhonie lub iPadzie, pobierz Xcode ze sklepu z aplikacjami. Zarejestruj się również, aby uzyskać bezpłatne konto programisty Apple na stronie www.apple.developer.com. Przejdź do pliku i naciśnij build. Otwórz plik utworzony z Xcode i podłącz telefon. Wybierz swój zespół programistów i naciśnij przycisk odtwarzania.

Być może będziesz musiał trochę przesunąć kamerę, ale daj jej sekundę i dotknij ekranu, a powinieneś zobaczyć, jak twój samochód spada z nieba na ziemię! Teraz możesz wejść do środka i obejrzeć odtwarzanie wideo na desce rozdzielczej!

Baw się dobrze i daj znać, jeśli masz jakieś pytania w komentarzach!

Zalecana: