Turinys:

Išplėstinė realybė „Vuforia 7“antžeminis lėktuvas: 8 žingsniai
Išplėstinė realybė „Vuforia 7“antžeminis lėktuvas: 8 žingsniai

Video: Išplėstinė realybė „Vuforia 7“antžeminis lėktuvas: 8 žingsniai

Video: Išplėstinė realybė „Vuforia 7“antžeminis lėktuvas: 8 žingsniai
Video: How to Create an Augmented Reality Application in 1 mins using Vuforia and Unity3D in 2022 2024, Lapkritis
Anonim
Papildytos realybės „Vuforia 7“antžeminio lėktuvo aptikimas
Papildytos realybės „Vuforia 7“antžeminio lėktuvo aptikimas
Papildytos realybės „Vuforia 7“antžeminio lėktuvo aptikimas
Papildytos realybės „Vuforia 7“antžeminio lėktuvo aptikimas

„Vuforia“išplėstosios realybės SDK, skirtas „Unity 3D“, naudoja ARCore ir ARKit, kad aptiktų AR antžeminius lėktuvus. Šios dienos mokyme bus naudojama jų vietinė integracija į „Unity“, kad būtų sukurta AR programa, skirta „Android“ar „IOS“. Automobilis iškris iš dangaus ant žemės, o jo durys atsidarys automatiškai, kai priartėsime. Mes taip pat apžvelgsime vaizdo įrašų kūrimą AR. Norėdami sekti, jums reikės „Unity 3D“, įdiegto jūsų kompiuteryje (tai nemokama). Šios instrukcijos yra skirtos pradedantiesiems, todėl mes viską išsamiai aptarsime!

Geriausia „Vuforia“SLAM dalis yra palaikomų IOS ir „Android“įrenginių kiekis. Visą įrenginių sąrašą galite rasti čia:

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

1 žingsnis: pradėkite naują projektą

Pradėkite naują projektą
Pradėkite naują projektą

Atsisiųskite „Unity 3D“iš čia, jei to dar neturite:

Būtinai įdiekite „Vuforia“išplėstinės realybės ir „Android“ar „IOS“palaikymą, atsižvelgdami į turimą įrenginį.

Atidarykite „Unity“ir pradėkite naują „Unity“projektą, pavadinkite jį, kaip norite.

Pirmiausia leidžiame sukurti programą, kad ją sukurtume, kad nepamirštume. Taigi, išsaugokite sceną ir pavadinkite ją „pagrindine“.

Eikite į failą, sukurkite nustatymus ir perjunkite kūrimo platformą į „Android“arba „IOS“. Grotuvo nustatymuose eikite į XR nustatymus ir patikrinkite „Vuforia“papildytos realybės palaikymą.

Jei naudojate „Android“, jums nieko daugiau nereikia daryti, bet „IOS“eikite į kitus nustatymus ir būtinai įveskite ką nors savo paketo identifikatoriui. Naudokite formatą „com. YourCompanyName. YourAppName“.

Įveskite viską, kas aprašyta fotoaparate, ir pakeiskite minimalią tikslinę versiją į bent 9.0.

Uždarykite tai ir dabar sutvarkykime visa kita.

2 veiksmas: nustatykime „Vuforia“

Nustatykime „Vuforia“
Nustatykime „Vuforia“

Dabar viską sutvarkykime.

Viršutiniame meniu eikite į „gameobject“ir spustelėkite „ARCamera“. Dabar ištrinkite pagrindinę kamerą iš savo scenos.

Pasirinkite „ARCamera“ir dešinėje inspektoriaus pusėje spustelėkite „Open Vuforia Configuration“. Spustelėkite duomenų rinkinį ir atžymėkite viską, nes čia nenaudojame jokių vaizdo taikinių.

Spustelėkite įrenginio stebėjimo priemonę ir spustelėkite sekti įrenginio pozą. Pakeiskite stebėjimą iš sukimosi į pozicinį.

Dabar grįžkite į žaidimo objekto skirtuką ir spustelėkite „Vuforia“, „Ground Plane“ir „Plane Finder“. Čia yra scenarijai, kurie randa mūsų antžeminę plokštumą.

Paskutinis dalykas, kurio mums reikia, yra antžeminė plokštumos stadija, todėl vėl eikite į žaidimo objektą viršutiniame meniu, spustelėkite „Vuforia“, „Ground Plane“ir pasirinkite „Ground Plane Stage“. Dabar viskas, ką mes tai darome, bus rodoma AR.

3 veiksmas: pridėkite naują scenarijų

Pridėti naują scenarijų
Pridėti naują scenarijų
Pridėti naują scenarijų
Pridėti naują scenarijų

Numatytoji šio įžeminimo plokštumos aptikimo funkcija yra įdėti naują objektą kiekvieną kartą, kai paspaudžiate ekraną. Mes norime tiesiog pakeisti objekto padėtį kiekvieną kartą, kai paspaudžiate ekrane. Taigi dešiniuoju pelės mygtuku spustelėkite savo išteklių aplanką ir sukurkite naują C# scenarijų. Pavadinkite jį „DeployStageOnce“ir viską pakeiskite šiuo kodu:

naudojant sistemą;

naudojant „UnityEngine“; naudojant „Vuforia“; public class DeployStageOnce: MonoBehaviour {public GameObject AnchorStage; private PositionalDeviceTracker _deviceTracker; privatus GameObject _previousAnchor; public void Start () {if (AnchorStage == null) {Debug. Log ("AnchorStage turi būti nurodytas"); grįžti; } AnchorStage. SetActive (klaidinga); } 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 rezultatas) {if (result == null || AnchorStage == null) {Debug. LogWarning ("Rezultatų testas neteisingas arba nenustatytas" AnchorStage "); grįžti; } var anchor = _deviceTracker. CreatePlaneAnchor (Guid. NewGuid (). ToString (), rezultatas); if (inkaras! = nulis) {AnchorStage.transform.parent = inchor.transform; AnchorStage.transform.localPosition = Vector3.zero; AnchorStage.transform.localRotation = Quaternion.identity; AnchorStage. SetActive (tiesa); } if (_previousAnchor! = null) {Sunaikink (_previousAnchor); } _previousAnchor = inkaras; }}

Norėdami įsitikinti, kad šis scenarijus naudojamas, turime iškviesti funkciją OnInteractiveHitTest (), taigi grįžkite į „Unity“ir spustelėkite lėktuvo ieškiklio žaidimo objektą. Pakeiskite režimą iš automatinio į interaktyvų. Vilkite ką tik sukurtą scenarijų į lėktuvo ieškiklio žaidimo objektą. Pašalinkite „ContentPositioningBehavior“scenarijų. „DeployStageOnce“scenarijuje pamatysite žaidimo objekto vietą, vilkite lėktuvo ieškiklį ten ir suraskite šį scenarijų, sąrašo viršuje pasirinkite funkciją „OnInteractiveHitTest“. Dabar mūsų funkcija bus iškviesta, kai tik vartotojas spustelės ekraną!

4 žingsnis: pridėkime automobilį

Pridėkime automobilį
Pridėkime automobilį

Atsisiųskite šį nemokamą automobilio 3D modelį iš čia (būtinai įsigykite.obj versiją):

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

Taip pat atsisiųskite šį garsą, nes mes jį paleisime, kai automobilis atsitrenks į žemę:

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

Išpakuokite abu šiuos failus ir vilkite juos į savo išteklių aplanką.

Spustelėkite automobilį ir žiūrėkite į dešinę, viršuje esančiame išskleidžiamajame meniu pakeiskite Naudoti įterptąsias medžiagas, kad būtų naudojamos išorinės medžiagos (palikimas). Dabar galėsime pakeisti visų automobilio medžiagų spalvą.

Vilkite automobilį ant savo antžeminės plokštumos, kad jis taptų vaiku. Pakeiskite mastelį į.035 x, y ir z.

Dabar eikite per kiekvieno automobilio vaikų žaidimo objektus ir pakeiskite jų medžiagas į bet kokią norimą spalvą.

Prie pagrindinio automobilio žaidimo objekto pridėkite standų kėbulo komponentą, taip pat pridėkite dėžutės greitintuvą, padidinkite mastelį taip, kad jis apimtų visą automobilį. Taip pat pridėkite langelio greitintuvą prie įžeminimo plokštumos pakopos ir sureguliuokite ją taip, kad ji būtų kelis kartus platesnė nei įžeminimo plokštumos pakopa. Tokiu būdu mes galime numesti automobilį iš dangaus ir jis atsitrenks į žemę naudodami „Unity“įmontuotą fizikos variklį.

5 žingsnis: padėkite automobilį į dangų

Padėkite automobilį į dangų
Padėkite automobilį į dangų

Pridėkite garso šaltinio komponentą prie pagrindinio automobilio žaidimo objekto, vilkite automobilio avarijos garsą į jo garso įrašo vietą.

Dabar turime sukurti scenarijų, kuris pakeltų automobilį į orą, kai vartotojas paspaudžia ekraną, o tada paleis avarijos garsą, kai automobilis atsitrenks į žemę. Taigi, dešiniuoju pelės mygtuku spustelėkite išteklių aplanką ir sukurkite naują C# scenarijų ir pavadinkite jį „CarController“.

Pakeiskite visą ten esantį kodą taip:

naudojant System. Collections;

naudojant System. Collections. Generic; naudojant „UnityEngine“; public class CarController: MonoBehaviour {private bool soundPlayed = false; // Atnaujinimas iškviečiamas kartą per kadrą void Update () {if (! SoundPlayed && transform.localPosition.y <.05f) {soundPlayed = true; „StartCoroutine“(„DelayPlaySound“); }} public void MoveCar () {transform.localPosition += new Vector3 (0, 10, 0); transform.eulerAngles += naujas Vector3 (5, 20, 5); soundPlayed = klaidingas; } IEnumerator DelayPlaySound () {derlius grąžina naują WaitForSeconds (.2f); „GetComponent“(). „Play“(); }}

Pridėkite „MoveCar“funkciją prie įvykio „OnInteractiveHitTest“, kaip parodyta aukščiau esančiame paveikslėlyje. Dabar jis bus vadinamas, kai vartotojas spustelės ekraną.

6 žingsnis: „Lambo“durys

Lambo durys
Lambo durys

Taigi, jei išplėsite automobilio žaidimo objektą ir surasite duris, pastebėsite, kad abi durys yra viena tinklelis. Jei norime atidaryti duris, mūsų vienintelė galimybė bus vertikaliai atsidarančios „Lambo“durys. Norėdami tai padaryti, pirmiausia turime pakeisti jų posūkio tašką.

Padarykite tuščią žaidimo objektą, kuris yra automobilio vaikas. Vilkite duris ir paverskite juos šio naujo žaidimo objekto vaiku. Perkelkite pagrindinį žaidimo objektą ten, kur turėtų būti sukimosi taškas, prie durų vyrių. Dabar pastumkite vaiko duris atgal į vietą. Dabar, kai pasukame pagrindines duris, pasukimo taškas yra tinkamoje vietoje.

Mes ketiname sukurti scenarijų, kuris atveria duris jums priartėjus prie automobilio, tačiau prieš tai mums reikia būdo „suaktyvinti“įvykį. Prie durų pagrindinio žaidimo objekto pridėkite langelio greitintuvą ir padidinkite mastelį, kad jis šiek tiek peržengtų automobilį į abi puses. Pažymėkite „isTrigger“. Dabar prie pagrindinės kameros pridėkite langelio greitintuvą ir atitinkamai jį sureguliuokite. Taip pat patikrinkite „isTrigger“. Pridėkite standų korpuso komponentą prie fotoaparato ir panaikinkite žymėjimą „useGravity“. Pasirinkę fotoaparatą, inspektoriaus viršuje pakeiskite jo žymą į „MainCamera“.

Pridėkite naują scenarijų „LamboDoorBehavior“ir pridėkite žemiau esantį kodą. Vilkite scenarijų į savo durų tėvą.

naudojant System. Collections;

naudojant System. Collections. Generic; naudojant „UnityEngine“; public class LamboDoorBehavior: MonoBehaviour {private float currAngle = 0; pageidaujama privati plūdėAngle = 0; // Atnaujinimas iškviečiamas kartą per kadrą void Update () {currAngle = Mathf. LerpAngle (currAngle, wantAngle, Time.deltaTime * 3f); transform.localEulerAngles = naujas Vector3 (currAngle, 0, 0); } public void OpenDoors () {noriAngle = 60f; } public void CloseDoors () {noriAngle = 0; } void OnTriggerEnter (Collider col) {if (col. CompareTag ("MainCamera")) {OpenDoors (); }} void OnTriggerExit (Collider col) {if (col. CompareTag ("MainCamera")) {CloseDoors (); }}}

Dėl šio scenarijaus jūsų durys lėtai atsidarys, kai uždarysite jas AR, naudodami vienybės funkciją Lerp (), kuri interpoluoja tarp dviejų taškų (arba šiuo atveju dviejų kampų).

7 veiksmas: vaizdo įrašo paleidimas AR

Vaizdo įrašo paleidimas AR
Vaizdo įrašo paleidimas AR
Vaizdo įrašo paleidimas AR
Vaizdo įrašo paleidimas AR

Paskutinis dalykas, kurį turime padaryti, yra vaizdo įrašų leidimas AR.

Dešiniuoju pelės mygtuku spustelėkite bet kurį žaidimo objektą, kuris yra jūsų automobilio vaikas, ir sukurkite 3D objektą „Quad“. Taip įsitikinsite, kad keturratis yra jūsų automobilio vaikas. Padėkite ir pakeiskite šio keturračio dydį taip, kad jis tilptų į jūsų automobilio brūkšnį ir atrodytų taip, kaip turėtų būti. Tai yra tai, ką mes ketiname žaisti vaizdo.

Pridėkite vaizdo grotuvo komponentą prie savo keturkojo. Pakeiskite šaltinį į URL ir raskite kietą nuorodą į. MP4 failą arba vilkite vaizdo įrašo failą į išteklių aplanką, tada vilkite tą įrašą į tuščią angą. Jei norite transliuoti vaizdo įrašą iš URL, „Instragram“yra puikus šaltinis. Dešiniuoju pelės mygtuku spustelėkite bet kurį „Instagram“vaizdo įrašą „Google Chrome“ir spustelėkite „Tikrinti“. Raskite skyrių, kuriame yra vaizdo įrašas, ir nukopijuokite nuorodą iš ten (turiu šį metodą, pavaizduotą aukščiau).

Būtinai patikrinkite kilpą, jei norite, kad jis būtų paleistas daugiau nei vieną kartą. Pridėkite garso šaltinio komponentą prie šio žaidimo objekto ir vaizdo grotuve pakeiskite išvesties šaltinį į garso šaltinį. Įtraukite naujai sukurtą garso šaltinį į tą lizdą.

Pagaliau mes baigėme!

8 veiksmas: įdėkite programą į savo telefoną

Įdėkite programą į savo telefoną!
Įdėkite programą į savo telefoną!

Jei kuriate „Android“, galite tiesiog pereiti prie failo ir paspausti kurti ir paleisti prijungtą telefoną.

Jei kuriate „iPhone“ar „iPad“, būtinai atsisiųskite „Xcode“iš programų parduotuvės. Taip pat prisiregistruokite gauti nemokamą „Apple“kūrėjo paskyrą iš www.apple.developer.com. Eikite į failą ir paspauskite „Build“. Atidarykite failą, sukurtą iš „Xcode“, ir prijunkite telefoną. Pasirinkite savo kūrėjų komandą ir paspauskite paleidimo mygtuką.

Jums gali tekti šiek tiek pajudinti fotoaparatą, bet palaukite sekundę ir palieskite ekraną ir pamatysite, kaip jūsų automobilis nukrenta iš dangaus ant žemės! Dabar galite vaikščioti viduje ir žiūrėti vaizdo įrašo grojimą prietaisų skydelyje!

Smagiai ir praneškite man, jei turite klausimų komentaruose!

Rekomenduojamas: