INHOUDSOPGAWE:

Augmented Reality Vuforia 7 opsporing van grondvliegtuie .: 8 stappe
Augmented Reality Vuforia 7 opsporing van grondvliegtuie .: 8 stappe

Video: Augmented Reality Vuforia 7 opsporing van grondvliegtuie .: 8 stappe

Video: Augmented Reality Vuforia 7 opsporing van grondvliegtuie .: 8 stappe
Video: Vuforia 7 - Model Targets - new Augmented Reality 3D Tracking 2024, November
Anonim
Augmented Reality Vuforia 7 Grondvliegtuigopsporing
Augmented Reality Vuforia 7 Grondvliegtuigopsporing
Augmented Reality Vuforia 7 Grondvliegtuigopsporing
Augmented Reality Vuforia 7 Grondvliegtuigopsporing

Vuforia se SDK vir augmented reality vir Unity 3D gebruik ARCore en ARKit om grondvliegtuie in AR op te spoor. Die tutoriaal van vandag gebruik hul eie integrasie in Unity om 'n AR -app vir Android of IOS te maak. Ons laat 'n motor uit die lug val op die grond, en sy deure sal outomaties oopgaan as ons naby kom. Ons sal ook gaan kyk na video in AR. Om dit te volg, moet u Unity 3D op u rekenaar geïnstalleer (dit is gratis). Hierdie instruksies is vir totale beginners, so ons sal alles in detail bespreek!

Die beste deel van Vuforia se SLAM is die hoeveelheid IOS- en Android -toestelle wat dit ondersteun. 'N Volledige lys van toestelle kan hier gevind word:

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

Stap 1: Begin 'n nuwe projek

Begin 'n nuwe projek
Begin 'n nuwe projek

Laai Unity 3D hier af as u dit nog nie het nie:

Maak seker dat u ondersteuning vir Vuforia Augmented Reality en Android of IOS installeer, afhangende van watter toestel u het.

Maak Unity oop en begin 'n nuwe Unity -projek, noem dit wat u wil.

Laat ons eers die app opstel om op te stel sodat ons dit nie vergeet nie. Stoor dus die toneel en noem dit 'hoof'.

Gaan na lêer, bou instellings en skakel u bouplatform oor na Android of IOS. Gaan na die XR -instellings in die spelerinstellings en kyk of Vuforia Augmented Reality Ondersteun is.

As u op Android is, hoef u niks anders te doen nie, maar op IOS, gaan na ander instellings en maak seker dat u iets vir u bondel -identifiseerder inbring. Gebruik die formaat "com. YourCompanyName. YourAppName."

Voeg enigiets in vir die beskrywing van die gebruik van die kamera en verander die minimum minimum bouweergawe na ten minste 9.0.

Sluit dit uit en laat ons nou al die ander dinge instel.

Stap 2: Kom ons stel Vuforia op

Kom ons stel Vuforia op
Kom ons stel Vuforia op

Laat ons nou alles opstel.

Gaan na gameobject in die boonste menu en klik op ARCamera. Verwyder nou die hoofkamera van u toneel.

Kies die ARCamera en klik aan die regterkant in die inspekteur op Open Vuforia Configuration. Klik op die versameling datastelle en verwyder alles, want ons gebruik geen beelddoelwitte hier nie.

Klik op die toestelopsporing en klik op die posisie van die spoortoestel. Verander die opsporing van rotasie na posisioneel.

Gaan nou terug na die oortjie spelvoorwerp en klik op Vuforia, grondvliegtuig en vliegtuigzoeker. Dit bevat die skrifte wat ons grondvlak vind.

Die laaste ding wat ons nodig het, is die fase van die grondvlak, so gaan weer na die spelvoorwerp in die boonste spyskaart en klik op Vuforia, grondvliegtuig, en kies grondvlakvlak. Alles wat ons hieraan verwant is, sal nou in AR verskyn.

Stap 3: Voeg 'n nuwe skrif by

Voeg 'n nuwe skrif by
Voeg 'n nuwe skrif by
Voeg 'n nuwe skrif by
Voeg 'n nuwe skrif by

Die standaardgedrag van hierdie grondvlakopsporing is om elke keer as u op die skerm druk 'n nuwe voorwerp te plaas. Wat ons wil hê, is om die voorwerp net weer te plaas elke keer as u op die skerm druk. Klik met die rechtermuisknop in u map met bates en skep 'n nuwe C# -script. Noem dit 'DeployStageOnce' en vervang alles met hierdie kode:

met behulp van System;

gebruik UnityEngine; die gebruik van Vuforia; openbare klas DeployStageOnce: MonoBehaviour {public GameObject AnchorStage; private PositionalDeviceTracker _deviceTracker; private GameObject _previousAnchor; public void Begin () {if (AnchorStage == null) {Debug. Log ("AnchorStage moet gespesifiseer word"); terugkeer; } AnchorStage. SetActive (vals); } openbare leegte Ontwaak () {VuforiaARController. Instance. RegisterVuforiaStartedCallback (OnVuforiaStarted); } openbare leemte OnDestroy () {VuforiaARController. Instance. UnregisterVuforiaStartedCallback (OnVuforiaStarted); } private leemte OnVuforiaStarted () {_deviceTracker = TrackerManager. Instance. GetTracker (); } public void OnInteractiveHitTest (HitTestResult result) {if (result == null || AnchorStage == null) {Debug. LogWarning ("Hit test is invalid or AnchorStage not set"); terugkeer; } var anker = _deviceTracker. CreatePlaneAnchor (Guid. NewGuid (). ToString (), resultaat); as (anker! = nul) {AnchorStage.transform.parent = anchor.transform; AnchorStage.transform.localPosition = Vector3.zero; AnchorStage.transform.localRotation = Quaternion.identity; AnchorStage. SetActive (waar); } if (_previousAnchor! = null) {Destroy (_previousAnchor); } _previousAnchor = anker; }}

Om seker te maak dat hierdie skrif gebruik word, moet ons die funksie OnInteractiveHitTest () bel, dus gaan terug na Unity en klik op die vliegtuigzoeker -voorwerp. Verander die modus van outomaties na interaktief. Sleep die skrif wat ons pas gemaak het na die vliegtuigzoeker -voorwerp. Verwyder die ContentPositioningBehavior -skrif. U sien 'n plek vir 'n spelvoorwerp in die DeployStageOnce -script, sleep die vliegtuigzoeker daarheen en vind hierdie script, kies die OnInteractiveHitTest -funksie bo -aan die lys. Nou word ons funksie gebel wanneer die gebruiker op die skerm klik!

Stap 4: Kom ons voeg die motor by

Kom ons voeg die motor by
Kom ons voeg die motor by

Laai hierdie gratis motor -3D -model van hier af af (maak seker dat u die.obj -weergawe kry):

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

Laai ook hierdie geluid af, want ons speel dit as die motor die grond tref:

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

Pak albei lêers uit en sleep dit na u batesmap.

Klik op die motor en kyk na regs, verander Gebruik ingebedde materiale in die gebruik van eksterne materiale (oud) in die keuselys bo -aan. Nou kan ons die kleur van al die materiaal op die motor verander.

Sleep die motor na die grondvlak om dit 'n kind te maak. Verander die skaal na.035 op die x, y en z.

Gaan nou deur elkeen van die motorspeletjies en verander die materiaal in watter kleur u wil.

Voeg 'n stewige bakkomponent by die motor se wortelspelvoorwerp en voeg ook 'n boksbotser by, skaal dit sodat dit die hele motor dek. Voeg ook 'n boksbotser by die grondvlakstadium en skaal dit sodat dit 'n paar keer wyer is as die grondvlak. Op hierdie manier kan ons die motor uit die lug laat val, en dit sal die grond tref met die ingeboude fisika -enjin van Unity.

Stap 5: Sit die motor in die lug

Sit die motor in die lug
Sit die motor in die lug

Voeg 'n klankbronkomponent by die motor se wortelspelvoorwerp, sleep die motorongeluk na die klankgreep.

Nou moet ons 'n draaiboek maak wat die motor in die lug sal sit wanneer die gebruiker op die skerm druk en dan die ongeluksgeluid speel wanneer die motor die grond tref. Klik met die rechtermuisknop in die map bates en skep 'n nuwe C# -skrip en noem dit 'CarController'.

Vervang al die kode daar met hierdie:

met behulp van System. Collections;

met behulp van System. Collections. Generic; gebruik UnityEngine; openbare klas CarController: MonoBehaviour {private bool soundPlayed = false; // Opdatering word een keer per raam leeggemaak Update () {if (! SoundPlayed && transform.localPosition.y <.05f) {soundPlayed = true; StartCoroutine (DelayPlaySound ()); }} publieke leemte MoveCar () {transform.localPosition += nuwe Vector3 (0, 10, 0); transform.eulerAngles += nuwe Vector3 (5, 20, 5); soundPlayed = vals; } IEnumerator DelayPlaySound () {opbrengsopbrengs nuwe WaitForSeconds (.2f); GetComponent (). Play (); }}

Voeg die MoveCar -funksie by die OnInteractiveHitTest -gebeurtenis, soos op die foto hierbo. Nou word dit gebel as die gebruiker op die skerm klik.

Stap 6: Lambo -deure

Lambo deure
Lambo deure

As u die voorwerp vir motorspeletjies uitbrei en die deure vind, sal u agterkom dat albei deure een gaas is. As ons die deure wil oopmaak, is ons enigste Lambo -deure wat vertikaal oopmaak. Om hierdie werk te laat werk, moet ons eers hul spilpunt verander.

Maak 'n leë spelvoorwerp wat 'n kind van die motor is. Sleep die deure in en maak hulle 'n kind van hierdie nuwe spelvoorwerp. Beweeg die ou spelvoorwerp na die plek waar die spilpunt moet wees, by die deur se skarniere. Beweeg nou die kinderdeure weer op hul plek. As ons nou die deure van die ouer draai, is die spilpunt op die regte plek.

Ons gaan 'n draaiboek maak wat die deure oopmaak as u naby die motor kom, maar voordat ons dit doen, het ons 'n manier nodig om die gebeurtenis te "aktiveer". Voeg 'n boksbotser by u voorouerspel -voorwerp en skaal dit sodat dit 'n entjie oor die motor in beide rigtings gaan. Gaan "isTrigger" na. Voeg nou 'n boksbeschermer by die hoofkamera en skaal dit korrek. Kyk ook na "isTrigger". Voeg 'n Rigid Body -komponent by u kamera en verwyder die vinkje by 'useGravity'. As u kamera gekies is, verander u die merker na "MainCamera" bo -aan die inspekteur.

Voeg 'n nuwe skrif by met die naam "LamboDoorBehavior" en voeg die onderstaande kode by. Sleep die skrif na die ouer van u deur.

met behulp van System. Collections;

met behulp van System. Collections. Generic; gebruik UnityEngine; openbare klas LamboDoorBehavior: MonoBehaviour {private float currAngle = 0; private vlot gewenste hoek = 0; // Opdatering word een keer per raam leeggemaak Update () {currAngle = Mathf. LerpAngle (currAngle, desireAngle, Time.deltaTime * 3f); transform.localEulerAngles = nuwe Vector3 (currAngle, 0, 0); } openbare leegte OpenDoors () {wishAngle = 60f; } openbare leemte CloseDoors () {winsAngle = 0; } maak OnTriggerEnter ongeldig (Collider col) {if (col. CompareTag ("MainCamera")) {OpenDoors (); }} ongeldig OnTriggerExit (Collider col) {if (col. CompareTag ("MainCamera")) {CloseDoors (); }}}

Hierdie skrif sal veroorsaak dat u deure stadig oopgaan wanneer u dit in AR toemaak deur die Lerp () -funksie in eenheid te gebruik wat tussen twee punte (of in hierdie geval twee hoeke) interpoleer.

Stap 7: Speel video in AR

Speel video in AR
Speel video in AR
Speel video in AR
Speel video in AR

Die laaste ding wat ons moet doen, is om video in AR te laat speel.

Klik met die rechtermuisknop op enige speletjievoorwerp wat 'n kind van u motor is en skep 'n 3D -voorwerp, Quad. Dit sal verseker dat die vierwiel 'n kind van u motor is. Plaas en verander die grootte van hierdie vierkant sodat dit in die streep van u motor pas en lyk asof dit daar behoort te wees. Dit is waarop ons die video gaan speel.

Voeg 'n videospeler -komponent by u vierwiel. Verander die bron na URL en vind 'n harde skakel na 'n. MP4 -lêer of sleep 'n videolêer na u batesmap en sleep dan die snit na die leë gleuf. As u 'n video vanaf 'n URL wil instroom, is Instragram 'n uitstekende bron. Klik met die rechtermuisknop op enige Instagram -video in Google Chrome en klik op inspekteer. Soek die div met die video en kopieer die skakel van daar af (ek het hierdie metode hierbo afgebeeld).

Kontroleer die lus as u meer as een keer wil speel. Voeg 'n klankbronkomponent by hierdie spelvoorwerp en verander die uitvoerbron na die klankbron op die videospeler. Sleep u nuutgemaakte klankbron na die gleuf.

Uiteindelik is ons klaar!

Stap 8: Sit die app op u telefoon

Sit die app op u telefoon!
Sit die app op u telefoon!

As u vir Android bou, kan u net na die lêer gaan en op build en hardloop met u telefoon ingeprop.

As u 'n iPhone of en iPad wil bou, moet u Xcode aflaai van die app store. Teken ook aan vir 'n gratis app -ontwikkelaarrekening van www.apple.developer.com. Gaan na die lêer en druk op build. Maak die lêer oop wat deur Xcode geskep is, en koppel u telefoon aan. Kies u ontwikkelingspan en druk die speelknoppie.

Miskien moet u die kamera 'n bietjie rondskuif, maar gee dit 'n oomblik en tik op die skerm, en u motor moet uit die lug op die grond val! Nou kan u binne stap en kyk hoe u video in die dashboard speel!

Geniet dit en laat weet my as u vrae het in die kommentaar!

Aanbeveel: