INHOUDSOPGAWE:
- Stap 1: Begin 'n nuwe projek
- Stap 2: Kom ons stel Vuforia op
- Stap 3: Voeg 'n nuwe skrif by
- Stap 4: Kom ons voeg die motor by
- Stap 5: Sit die motor in die lug
- Stap 6: Lambo -deure
- Stap 7: Speel video in AR
- Stap 8: Sit die app op u telefoon
Video: Augmented Reality Vuforia 7 opsporing van grondvliegtuie .: 8 stappe
2024 Outeur: John Day | [email protected]. Laas verander: 2024-01-30 07:26
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
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
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
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
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
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
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
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
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:
Nest -termostaat, opsporing van besetting: 12 stappe
Nest -termostaat, gebruiksopsporing: my outomatiese verkoeling by die huis met my Nest -termostaat is tot onlangs deur IFTTT bestuur deur Life360 se "eerste om by die huis aan te kom" " en " laaste om die huis te verlaat " snellers. Dit was wonderlik, want ek kon familielede by my Li voeg
Vulstasie vir die opsporing van CO: 5 stappe
Vulstasie vir die opsporing van CO: Koolstofmonoksied (CO) is 'n baie gevaarlike gas, omdat dit nie ruik nie, maar nie smaak nie. U kan dit nie sien of met u neus opspoor nie. My doel is om 'n eenvoudige CO -detektor te bou. Eerstens bespeur ek baie klein hoeveelhede van die gas in my huis. Dit is die rede
Augmented Reality (AR) vir Dragonboard410c of Dragonboard820c met behulp van OpenCV en Python 3.5: 4 -stappe
Augmented Reality (AR) vir Dragonboard410c of Dragonboard820c Met behulp van OpenCV en Python 3.5: Hierdie instruksies beskryf hoe u OpenCV, Python 3.5 en afhanklikhede vir Python 3.5 kan installeer om die augmented reality -toepassing uit te voer
Verkeerspatroonanaliseerder met behulp van opsporing van lewendige voorwerpe: 11 stappe (met foto's)
Verkeerspatroonanaliseerder met behulp van opsporing van lewendige voorwerpe: In die hedendaagse wêreld is verkeersligte noodsaaklik vir 'n veilige pad. Verkeersligte kan egter baie keer irriterend wees in situasies waarin iemand die lig nader, net soos dit rooi word. Dit mors tyd, veral as die lig te lank is
Metodes vir die opsporing van watervlak Arduino met behulp van ultraklank sensor en Funduino watersensor: 4 stappe
Metodes vir die opsporing van watervlak Arduino met behulp van ultrasoniese sensor en Funduino watersensor: In hierdie projek sal ek jou wys hoe om 'n goedkoop waterdetektor te maak deur twee metodes te gebruik: 1. Ultrasoniese sensor (HC-SR04) .2. Funduino watersensor