Tartalomjegyzék:

Kiterjesztett valóság Vuforia 7 földi sík észlelése: 8 lépés
Kiterjesztett valóság Vuforia 7 földi sík észlelése: 8 lépés

Videó: Kiterjesztett valóság Vuforia 7 földi sík észlelése: 8 lépés

Videó: Kiterjesztett valóság Vuforia 7 földi sík észlelése: 8 lépés
Videó: Model Target Based Augmented Reality 2024, November
Anonim
Kiterjesztett valóság Vuforia 7 Ground Plane Detection
Kiterjesztett valóság Vuforia 7 Ground Plane Detection
Kiterjesztett valóság Vuforia 7 Ground Plane Detection
Kiterjesztett valóság Vuforia 7 Ground Plane Detection

A Vuforia Unity 3D kiterjesztett valóság SDK -ja az ARCore és az ARKit segítségével érzékeli a földi repülőgépeket az AR -ban. A mai oktatóanyag a Unity -ben található natív integrációjukból AR -alkalmazást készít Androidhoz vagy IOS -hoz. Egy autónk esik le az égből a földre, és az ajtók automatikusan kinyílnak, amikor közel érünk. Az AR -ban videót készítünk. A folytatáshoz szüksége lesz a Unity 3D telepítésére a számítógépére (ez ingyenes). Ezek az utasítások kezdőknek szólnak, ezért mindent részletesen áttekintünk!

A Vuforia SLAM -jának legjobb része az általa támogatott IOS és Android -eszközök száma. Az eszközök teljes listája itt található:

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

1. lépés: Indítson el egy új projektet

Indítson el egy új projektet
Indítson el egy új projektet

Töltse le a Unity 3D -t innen, ha még nem rendelkezik vele:

Ügyeljen arra, hogy telepítse a Vuforia kiterjesztett valóság és az Android vagy IOS támogatását attól függően, hogy milyen eszközzel rendelkezik.

Nyissa meg a Unity -t, és indítson új Unity -projektet, nevezze el, ahogy akarja.

Először állítsuk ki az alkalmazást az építéshez, hogy ne felejtsük el. Tehát mentse el a jelenetet, és nevezze "főnek".

Nyissa meg a fájlt, készítse el a beállításokat, és váltson az építési platformra Androidra vagy IOS -ra. Navigáljon az XR beállításokhoz a lejátszó beállításaiban, és ellenőrizze a Vuforia kiterjesztett valóság támogatása lehetőséget.

Ha Android rendszert használ, akkor nem kell mást tennie, de az IOS rendszeren lépjen a többi beállításhoz, és ügyeljen arra, hogy adjon meg valamit a csomag azonosítójához. Használja a "com. YourCompanyName. YourAppName" formátumot.

Adjon meg bármit a fényképezőgép használati leírásához, és módosítsa a cél minimális build verzióját legalább 9.0 -ra.

Zárja ki ezt, és most állítsunk be mindent.

2. lépés: Állítsuk be a Vuforia -t

Állítsuk be a Vuforia -t
Állítsuk be a Vuforia -t

Most állítsunk be mindent.

Lépjen a gameobject -re a felső menüben, és kattintson az ARCamera elemre. Most törölje a fő kamerát a jelenetből.

Válassza ki az ARCamera -t, és kattintson az ellenőr jobb oldalán az Open Vuforia Configuration gombra. Kattintson az adatkészletek gyűjteményére, és törölje a jelölést minden jelölőnégyzetből, mert itt nem használunk képcélzásokat.

Kattintson az eszközkövetőre, és kattintson az eszközkövetés nyomon követésére. Változtassa meg a követést forgóról pozicionálásra.

Most térjen vissza a játékobjektum fülre, és kattintson a Vuforia, a Ground Plane és a Plane Finder elemre. Ez tartalmazza azokat a forgatókönyveket, amelyek megtalálják a földi síkunkat.

Az utolsó dolog, amire szükségünk van, a földi sík, tehát menjen újra a játékobjektumhoz a felső menüben, és kattintson a Vuforia, Ground Plane, majd a Ground Plane Stage elemre. Most bármi, amit mi gyermeknek tartunk, megjelenik az AR -ban.

3. lépés: Új szkript hozzáadása

Új szkript hozzáadása
Új szkript hozzáadása
Új szkript hozzáadása
Új szkript hozzáadása

Ennek az alaplapi észlelésnek az alapértelmezett viselkedése az, hogy minden alkalommal, amikor megnyomja a képernyőt, új objektumot helyez el. Azt akarjuk, hogy az objektumot minden alkalommal, amikor megnyomja a képernyőt, újrapozícionáljuk. Tehát kattintson jobb gombbal az eszközök mappájába, és hozzon létre egy új C# szkriptet. Hívja "DeployStageOnce" -nek, és cseréljen ki mindent erre a kódra:

a rendszer használata;

a UnityEngine használatával; a Vuforia használata; public class DeployStageOnce: MonoBehaviour {public GameObject AnchorStage; private PositionalDeviceTracker _deviceTracker; privát GameObject _previousAnchor; public void Start () {if (AnchorStage == null) {Debug. Log ("Az AnchorStage -t meg kell adni"); Visszatérés; } AnchorStage. SetActive (hamis); } 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 eredmény) {if (result == null || AnchorStage == null) {Debug. LogWarning ("A találati teszt érvénytelen vagy az AnchorStage nincs beállítva"); Visszatérés; } var anchor = _deviceTracker. CreatePlaneAnchor (Guid. NewGuid (). ToString (), eredmény); if (horgony! = null) {AnchorStage.transform.parent = horgony.transzformáció; AnchorStage.transform.localPosition = Vector3.zero; AnchorStage.transform.localRotation = Quaternion.identity; AnchorStage. SetActive (igaz); } if (_előzetesAnchor! = null) {Destroy (_previousAnchor); } _previousAnchor = horgony; }}

Annak érdekében, hogy ez a szkript megszokott legyen, meg kell hívnunk az OnInteractiveHitTest () függvényt, így térjünk vissza az Unity -hez, és kattintsunk a síkkereső játék objektumára. Módosítsa az üzemmódot Automatikusról Interaktív módra. Húzza az éppen készített szkriptet a síkkereső játék objektumára. Távolítsa el a ContentPositioningBehavior szkriptet. A DeployStageOnce parancsfájlban megjelenik egy játékobjektum -pont, húzza oda a síkkeresőt, és keresse meg ezt a szkriptet, majd válassza a lista tetején található OnInteractiveHitTest funkciót. Most a funkciót hívjuk, amikor a felhasználó rákattint a képernyőre!

4. lépés: Adjuk hozzá az autót

Adjuk hozzá az autót
Adjuk hozzá az autót

Töltse le ezt az ingyenes autó 3D modellt innen (győződjön meg róla, hogy megkapja az.obj verziót):

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

Töltse le ezt a hangot is, mert akkor játsszuk le, amikor az autó a talajhoz ér:

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

Csomagolja ki mindkét fájlt, és húzza őket az eszközök mappájába.

Kattintson az autóra, és nézzen jobbra, és módosítsa a Beágyazott anyagok használata külső anyagok használatára (régi) lehetőséget a felső legördülő menüben. Most megváltoztathatjuk az autó összes anyagának színét.

Húzza az autót a földi síkra, hogy gyermek legyen. Módosítsa a skálát.035 -re x, y és z.

Most nézze át az autók gyermekjáték -tárgyait, és változtassa meg anyagaikat a kívánt színre.

Adjon hozzá egy merev karosszériaelemet az autó gyökérjáték -objektumához, és adjon hozzá egy dobozütközőt, méretezze úgy, hogy lefedje az egész autót. Adjon hozzá egy dobozütközőt az alaplaphoz, és méretezze úgy, hogy néhányszor szélesebb legyen, mint az alaplap. Így ledobhatjuk az autót az égből, és a Unity beépített fizikai motorjának segítségével a földre kerül.

5. lépés: Tegye az autót az égbe

Tegye az autót az égre
Tegye az autót az égre

Adjon hozzá hangforrás -összetevőt az autó gyökérjáték -objektumához, és húzza az autóbaleset hangját a hangklip helyére.

Most el kell készítenünk egy forgatókönyvet, amely a gépkocsit a levegőbe juttatja, amikor a felhasználó megnyomja a képernyőt, majd lejátssza az ütközés hangját, amikor az autó a talajhoz ér. Tehát kattintson a jobb egérgombbal az eszközök mappájában, és hozzon létre egy új C# szkriptet, és nevezze el "CarController" -nek.

Cserélje ki az összes kódot ezzel:

a System. Collections használatával;

a System. Collections. Generic használatával; a UnityEngine használatával; nyilvános osztályú CarController: MonoBehaviour {private bool soundPlayed = false; // A frissítést képkockánként egyszer hívják meg érvénytelen Update () {if (! SoundPlayed && transform.localPosition.y <.05f) {soundPlayed = true; StartCoroutine (DelayPlaySound ()); }} public void MoveCar () {transform.localPosition += new Vector3 (0, 10, 0); transform.eulerAngles += új Vector3 (5, 20, 5); soundPlayed = hamis; } IEnumerator DelayPlaySound () {hozam visszatér új WaitForSeconds (.2f); GetComponent (). Play (); }}

Adja hozzá a MoveCar funkciót az OnInteractiveHitTest eseményhez, mint a fenti képen. Most hívást kap, amikor a felhasználó rákattint a képernyőre.

6. lépés: Lamboajtók

Lambo ajtók
Lambo ajtók

Tehát ha kibővíti az autójáték tárgyát, és megtalálja az ajtókat, észre fogja venni, hogy mindkét ajtó egyetlen háló. Ha kinyitni akarjuk az ajtókat, az egyetlen lehetőségünk a függőlegesen nyíló Lambo ajtók lesz. Ahhoz, hogy ez működjön, először meg kell változtatnunk a fordulópontjukat.

Készítsen egy üres játék tárgyat, amely az autó gyermeke. Húzza be az ajtókat, és tegye őket az új játékobjektum gyermekévé. Mozgassa a szülő játék objektumot arra a helyre, ahol a forgáspontnak kell lennie, az ajtópántoknál. Most helyezze vissza a gyermekajtókat a helyére. Most, amikor elforgatjuk az ajtókat, a forgáspont a megfelelő helyen van.

Olyan forgatókönyvet fogunk készíteni, amely kinyitja az ajtókat, amikor az autó közelébe ér, de mielőtt ezt megtennénk, szükségünk van egy módra az esemény "kiváltására". Adjon hozzá egy dobozütközőt az ajtó szülőjáték objektumához, és méretezze úgy, hogy mindkét irányban kissé áthaladjon az autó felett. Jelölje be az "isTrigger" jelölőnégyzetet. Most adjon hozzá egy dobozütközőt a fő kamerához, és méretezze megfelelően. Ellenőrizze az "isTrigger" -t is. Adjon hozzá egy merev test alkatrészt a fényképezőgéphez, és törölje a "useGravity" jelölőnégyzet jelölését. Ha a fényképezőgépet kiválasztotta, módosítsa a címkét "MainCamera" -ra az ellenőr tetején.

Adjon hozzá egy új szkriptet "LamboDoorBehavior" néven, és adja hozzá az alábbi kódot. Húzza a forgatókönyvet az ajtó szülőjére.

a System. Collections használatával;

a System. Collections. Generic használatával; a UnityEngine használatával; public class LamboDoorBehavior: MonoBehaviour {private float currAngle = 0; privát úszó kívántAngle = 0; // A frissítést képkockánként egyszer hívják meg. transform.localEulerAngles = új Vector3 (currAngle, 0, 0); } public void OpenDoors () {kívántAngle = 60f; } public void CloseDoors () {kívántAngle = 0; } void OnTriggerEnter (Collider col) {if (col. CompareTag ("MainCamera")) {OpenDoors (); }} void OnTriggerExit (Colollider col) {if (col. CompareTag ("MainCamera")) {CloseDoors (); }}}

Ez a szkript hatására az ajtók lassan kinyílnak, amikor bezárja őket az AR -ban a Lerp () függvény egységével, amely két pont (vagy ebben az esetben két szög) között interpolál.

7. lépés: Videó lejátszása AR -ban

Videó lejátszása AR -ban
Videó lejátszása AR -ban
Videó lejátszása AR -ban
Videó lejátszása AR -ban

Az utolsó dolog, amit meg kell tennünk, hogy videót játsszunk le AR -ban.

Kattintson a jobb gombbal bármelyik játékobjektumra, amely az autója, és hozzon létre egy 3D objektumot, a Quad -ot. Ez biztosítja, hogy a quad gyermeke legyen az autójának. Helyezze el és méretezze át ezt a quadot úgy, hogy illeszkedjen az autó műszerfalába, és úgy nézzen ki, mintha ott lenne. Ezen fogjuk lejátszani a videót.

Adjon hozzá egy videolejátszó komponenst a quadhoz. Módosítsa a forrást URL -re, és keressen egy kemény hivatkozást egy. MP4 fájlra, vagy húzzon egy videofájlt az eszközök mappájába, majd húzza a klipet az üres helyre. Ha URL -ből szeretne videót közvetíteni, az Instragram kiváló forrás. Kattintson a jobb gombbal bármelyik Instagram -videóra a Google Chrome -ban, és kattintson az ellenőrzés gombra. Keresse meg a videót tartalmazó div -ot, és másolja onnan a linket (ez a módszer a fenti képen van).

Ellenőrizze a hurkot, ha többször szeretné lejátszani. Adjon hozzá hangforrás -összetevőt ehhez a játékobjektumhoz, és módosítsa a kimeneti forrást audioforrássá a videolejátszón. Húzza be az újonnan létrehozott hangforrást ebbe a nyílásba.

Végre végeztünk!

8. lépés: Tedd fel az alkalmazást a telefonodra

Tedd fel az alkalmazást a telefonodra!
Tedd fel az alkalmazást a telefonodra!

Ha Androidra épít, egyszerűen lépjen a fájlba, és nyomja meg a build és a futtatást a csatlakoztatott telefonnal.

Ha iPhone -ra és / vagy iPadre épít, akkor feltétlenül töltse le az Xcode -ot az alkalmazásboltból. Regisztráljon ingyenes almafejlesztői fiókot is a www.apple.developer.com webhelyen. Lépjen a fájlba, és nyomja meg a build gombot. Nyissa meg az Xcode -ból létrehozott fájlt, és csatlakoztassa a telefont. Válassza ki a fejlesztői csapatot, és nyomja meg a lejátszás gombot.

Lehet, hogy egy kicsit mozgatnia kell a kamerát, de adjon neki egy másodpercet, és érintse meg a képernyőt, és látnia kell, hogy autója leesik az égből a földre! Most beléphet és nézheti a videó lejátszását a műszerfalon!

Jó szórakozást, és ha bármilyen kérdése van, jelezze kommentben!

Ajánlott: