Creëer een Pokémon GO Style Augmented Reality-spel met Vuforia

Wat je gaat creëren

1. Inleiding

In het eerste bericht van deze serie hebben we gesproken over hoe geweldig Vuforia is voor het creëren van ervaringen met Augmented Reality, en nu zijn we klaar om deze concepten in een echte app te oefenen. In deze tutorial beginnen we met Augmented Reality te spelen met Vuforia op Unity 3D. We leren hoe we Vuforia kunnen opzetten en beginnen met het helemaal opnieuw ontwikkelen van een AR-game door een logica te gebruiken die lijkt op die van Pokémon GO!

Het is niet nodig om enige ervaring te hebben met Unity of Vuforia om deze tutorial te volgen.

Als u dieper wilt graven, waarom leert u dan niet over een van de meest fundamentele concepten van AR, markers, in onze korte cursus:

1.1. Quick Recap: Hoe werkt Vuforia?

Vuforia gebruikt de camerafeed van het apparaat in combinatie met de gegevens van de versnellingsmeter en gyroscoop om de wereld te onderzoeken. Vuforia gebruikt de computervisie om te begrijpen wat het 'ziet' op de camera om een ​​model van de omgeving te creëren. Nadat de gegevens zijn verwerkt, kan het systeem zichzelf globaal in de wereld lokaliseren, met de coördinaten ervan: waar is omhoog, omlaag, links, rechts, enzovoort.

Als je niet weet waar Vuforia over gaat, bekijk dan het eerste bericht in deze serie.

1.2. Wat zullen we leren?

Deze tutorial is verdeeld in twee delen. Hierin zullen we een aantal van de bijzonderheden van Vuforia op Unity 3D zien, we zullen leren hoe we de omgeving kunnen instellen, en we zullen ook beginnen met het ontwikkelen van een klein AR-spel genaamd Shoot the Cubes. We zullen speciale aandacht besteden aan de ARCamera Prefab, een van de belangrijkste onderdelen van Vuforia in Unity.

In het tweede deel gaan we door met het ontwikkelen van het spel Shoot the Cubes, waardoor interactiviteit wordt toegevoegd en het interessanter wordt. Deze sectie zal niet te veel ingaan op Vuforia's bijzonderheden, omdat het idee zal zijn om enkele mogelijkheden te verkennen die Unity biedt om een ​​boeiende ervaring met Augmented Reality te creëren..

2. Vuforia op eenheid

Unity is een populaire en krachtige game-engine die gemakkelijk te gebruiken is en spellen voor meerdere platforms kan compileren. Er zijn enkele voordelen bij het gebruik van Unity om AR-ervaringen met Vuforia te creëren. Het is mogelijk om alle ondersteunde systemen van Vuforia te targeten, inclusief de slimme bril. Het is eenvoudiger te gebruiken, dankzij de Prefabs die door Vuforia's SDK worden gegeven. Met alleen Unity is het mogelijk om toegang te krijgen tot alle functies die beschikbaar zijn op Vuforia.

2.1. Vuforia Prefabs

Je hebt toegang tot alle functies van Vuforia op Unity met behulp van de Vuforia prefabs. Het enige dat u hoeft te doen, is het object naar het werkgebied slepen en het configureren. Zoals de naam al doet vermoeden, zijn prefabs als sjablonen voor het maken en klonen van Unity-objecten, compleet met componenten en eigenschappen. Bijvoorbeeld de ImageTarget staat voor afbeeldingen die kunnen worden gebruikt als doelen. Laten we een kijkje nemen naar de Vuforia prefabs beschikbaar op Unity:

  • ARCamera: Het belangrijkste prefab. Het beheert de algemene AR-ervaring, regelt de renderkwaliteit, definieert het centrum van de wereld, de te gebruiken apparaatcamera, de maximale doelen die moeten worden gevolgd, enzovoort. In deze zelfstudie concentreren we onze inspanningen om te begrijpen hoe dit object te gebruiken.
  • targets: Alle Vuforia-doelen hebben hun eigen prefab: ImageTarget, multidoelvolgprobleem, CylinderTarget, ObjectTarget, UserDefinedTargetBuilder, VuMark, FrameMarker. Die doelen worden herkend door de ARCamera en start een actie, zoals het tonen van een 3D-object of -animatie.
  • CloudRecognition: Gebruikt om toegang te krijgen tot doelen die zijn gedefinieerd in het Vuforia-cloudsysteem.
  • SmartTerrain en stutten: Deze objecten worden gebruikt in de Smart Terrain-functie.
  • TextRecognition en Woord: Prefabs gebruikt in de functie Tekstherkenning.
  • VirtualButton: Vuforia begrijpt doelen als knoppen die fysiek door de gebruiker kunnen worden ingedrukt. Dit prefab helpt je om deze bron te gebruiken.

3. Onze eerste AR-ervaring creëren

De game die we zullen ontwikkelen is eenvoudig, maar het illustreert goed de principes van de Augmented Reality, en het zal ons enkele van de grondbeginselen van Vuforia leren. Het doel van de game is om kubussen te vinden en te fotograferen die door de kamer vliegen. De speler zal met zijn of haar apparaat zoeken naar de kubussen en 'tikken' om op de vakken te schieten. We houden ons niet bezig met score, niveau of iets dergelijks, maar je kunt deze aspecten van het spel eenvoudig zelf uitbreiden.

3.1. Eenheid voorbereiden voor Vuforia

Voordat we beginnen met spelen, moeten we Unity voorbereiden op Vuforia. Het proces is vrij eenvoudig en we moeten in principe het SDK-pakket van Vuforia importeren en een toevoegen ARCamera prefab aan ons project.

  • Maak een ontwikkelaarsaccount op Vuforia.
  • Maak de login en download de Vuforia SDK voor Unity.
  • Open Unity en maak een nieuw project met de naam "Shoot the Cubes".
  • Nadat het Unity-projectvenster is geopend, gaat u naar Activa> Pakket importeren> Aangepast pakket en selecteer de gedownloade SDK.
  • Importeer alles.
  • Verwijder de Camera object in de Hiërarchie venster.
  • Ga naar License Manager op de ontwikkelaarportal van Vuforia en maak een nieuwe licentie met uw ontwikkelaarsaccount.
  • Kopieer de licentiesleutel.
  • Terug naar Unity, in de project venster, ga naar Activa> Vuforia> Prefabs> ARCamera.Selecteer het element en sleep het naar de Hiërarchie venster.
  • Met ARCamera geselecteerd, in de Inspecteur paneel, ga naar Vuforia-gedrag (Script), vind het veld App-licentiesleutel, en plak de licentie die je hebt gemaakt in de ontwikkelaarportal van Vuforia.
  • Klik op de Van toepassing zijn knop in de buurt van de bovenkant van de Inspecteur paneel om de licentiesleutel aan iedereen toe te voegen ARCamera prefabs op dit project.

3.2. Testen of Vuforia werkt

Het is tijd om te controleren of de omgeving correct werkt. 

Uw computer gebruiken Camera

Als u een webcam op uw computer hebt, kunt u op de afspeelknop van Unity drukken om te controleren of ARCamera werkt. Het is mogelijk om doelen te herkennen met behulp van de webcam; het is echter niet mogelijk om sensorgegevens te gebruiken om uw AR-ervaring te testen. Als de camerafeed niet de Spel venster, is er een mogelijkheid dat uw camera niet compatibel is met het webcamprofiel geleverd door ARCamera

De toepassing configureren om op een apparaat uit te voeren

De beste manier om uw Vuforia-applicatie te testen, is rechtstreeks op het apparaat. We zullen het project voor Android compileren, maar dezelfde stappen zouden van toepassing zijn op iOS-apparaten.

  • Ten eerste moeten we de scène opslaan waar we aan werken. Ga naar Bestand> Scene opslaan.
  • Selecteer de Middelen map en maak een nieuwe map met de naam scenes.
  • Sla deze scène op als ShootTheCubesMain.
  • Ga naar Bestand> Instellingen maken.
  • kiezen Android en klik op Schakel platform. Als deze optie is uitgeschakeld, moet u de gewenste Unity SDK downloaden voor het apparaat.
  • Klik op Speler instellingen en configureer het project in de Inspecteur venster.
  • Besteed aandacht aan een aantal opties: Schakel de Auto Graphics API en zorg ervoor dat OpenGLES2 is geselecteerd voor de Grafische API keuze.
  • Typ de Bundelidentificatie.
  • Zorg er bij Android-apparaten voor dat de Minimum API-niveau geselecteerd is API 9 of groter. Je zult ook moeten gebruiken ARMv7 voor de Apparaatfilter keuze.
  • Als u de stappen correct hebt uitgevoerd, is het project klaar om te worden gebouwd. Als dit echter de eerste keer is dat u een Unity-project voor Android of iOS compileert, moet u Unity voor die apparaten configureren. Volg deze gids voor Android en dit voor iOS.
  • Ga terug naar om het project uit te voeren Bouw instellingen en klik op Build and Run.

Na het bouwen wordt de applicatie op uw apparaat geïnstalleerd. Voorlopig is het enige dat je zou verwachten, de camerafeed op je apparaat te zien zonder fouten. Als je dat hebt, werkte alles naar behoren.

3.3. Gebruik van de ARCamera Prefab

Het doel van het spel Shoot the Cubes is om rondvliegende kubussen uit te zoeken en deze te fotograferen met behulp van de camera en sensoren van het apparaat. Deze benadering lijkt op die van Pokémon GO. Om dit te bereiken, hoeven we alleen de Vuforia te gebruiken ARCamera prefab.

Er zijn veel scripts aan de ARCamera. Voor nu is de enige die je moet begrijpen, de Vuforia-gedrag script. Laten we de opties eens bekijken:

  • App licentie sleutel: Waar de Vuforia-licentiesleutel moet worden ingevoegd.
  • Cameramachinemodus: Regelt de renderkwaliteit van de objecten.
  • Max. Simultaan bijgehouden afbeeldingen: Definieert de maximale doelen die tegelijkertijd worden bijgehouden. Vuforia raadt niet meer dan vijf tegelijk aan.
  • Max simultaan bijgehouden objecten: Definieert de maximale objecten die tegelijkertijd worden gevolgd. Nogmaals, Vuforia raadt niet meer dan vijf tegelijk aan.
  • Objectdoelen laden bij detectie: Laadt het object dat aan het doelwit is gekoppeld zodra het doelwit is gedetecteerd.
  • Camerarichting: Kies welke apparaatcamera moet worden gebruikt.
  • Mirror Video Achtergrond: Bepaalt of de camerafeed moet worden gespiegeld.
  • Word Center-modus: De meest relevante optie voor ons project. Het bepaalt hoe het systeem het centrum van de wereld moet vinden. 
    • SPECIFIC_TARGET: Gebruikt een specifiek doelwit als een verwijzing naar de wereld.
    • FIRST_TARGET: Het eerste gedetecteerde doel zal worden gebruikt als een verwijzing naar de wereld.
    • CAMERA: Gebruikt de camera als een referentiepunt voor de wereld.
    • DEVICE_TRACKING: Gebruikt de sensor van het apparaat als een referentie om de posities van de wereld in te stellen. Dit is de optie die we moeten kiezen voor ons kleine project.

Voor nu, alles wat je nodig hebt om te veranderen in de ARCamera is de Word Center-modus. Klik op de ARCamera element in de hiërarchie en in de Inspecteur deelvenster, wijzig het Wereldcentrum-modus naar DEVICE_TRACKING.

3.4. De sensor van het apparaat gebruiken om het centrum van de wereld te vinden

Laten we een kubus aan het podium toevoegen en testen of de ARCamera correct werkt.

  • Zeker weten dat ARCamerapositie en rotatie worden ingesteld op 0 op de X-, Y- en Z-assen.
  • Maak een Kubus object van Spelobject> 3D-object> Kubus.
  • Verplaats de kubus Positie op de Z as naar 10 en 0 op de X en Y.
  • Schaal het object aan 2 op de XY, en Z as.
  • Draaien de Kubus 45 graden op de X en Y as.
  • U kunt op de knop Afspelen drukken om te controleren of de kubus correct is gepositioneerd.
  • Zodra u zeker weet dat de kubus correct is gepositioneerd, bouwt u het project opnieuw op en test u het op het apparaat. Ga naar om te bouwen Bestand> Build and Run.

U moet rondkijken door uw apparaat te draaien om de kubus te vinden. U zult merken dat het object nog steeds op dezelfde plaats staat, zelfs nadat u het apparaat er vanaf hebt gedraaid. Het lijkt alsof de kubus 'in de echte wereld' bestaat, maar alleen te zien is met de camera van het apparaat.

3.5. De positie van de elementen instellen volgens ARCamera

Het eerste probleem met onze applicatie tot nu toe is dat de kubus overal kan verschijnen en dat de gebruiker rond moet kijken om hem te vinden. Aangezien het centrum van de wereld wordt gedefinieerd op basis van de sensoren van het apparaat, kunnen we niet zeker zijn van de feitelijke positie van de elementen. Dit komt omdat de gebruiker kan beginnen met het apparaat in elke richting, en omdat de manier waarop rotatie wordt gemeten varieert van apparaat tot apparaat.

Om ervoor te zorgen dat de AR-entiteiten vertrekken in het licht van de gebruiker, is de eenvoudigste manier om te wachten tot Vuforia het centrum van de wereld definieert en de ARCamera rotatie en vervolgens om de startlocatie van elementen volgens die richting in te delen.

We zullen een maken Spawn Manager om de positie te bepalen van de kubussen die moeten worden uitgezet. De manager zal zijn positie bepalen volgens de ARCamera rotatie. Het zal wachten tot de rotatie is ingesteld en vervolgens 10 eenheden naar de voorkant van de camera verplaatsen.

  • Maak twee lege objecten met Spelobject> Maak leeg. Klik met de rechtermuisknop op een van de objecten die u zojuist hebt gemaakt en wijzig de naam ervan _SpawnController.
  • Verander de naam van het andere lege object in _GameManager.
  • In de project venster, selecteert u de Middelen map en maak een nieuwe map met de naam scripts.
  • In de scripts map, maak een C # -script aan SpawnScript.
  • Sleept de SpawnScript naar de _SpawnController.
  • Dubbelklik op SpawnScript om het te bewerken.

Laten we eerst het Vuforia-pakket toevoegen.

gebruikmakend van UnityEngine; met behulp van System.Collections; // We moeten het Vuforia-pakket gebruiken om te zorgen dat alles werkt met Vuforia; public class SpawnScript: MonoBehaviour 

Om toegang te krijgen ARCamera, gebruik Camera.main. Laten we een functie maken om de camerapositie te bepalen en de kubus in te stellen om vanaf dit punt 10 eenheden vooruit te spawnen.

public class SpawnScript: MonoBehaviour // Definieer de positie als het object // volgens ARCamera positie private bool SetPosition () // de camerapositie krijgt Transform cam = Camera.main.transform; // plaats de positie 10 eenheden naar voren vanuit de camerapositie transform.position = cam.forward * 10; geef waar terug; 

We zullen de positie slechts één keer wijzigen vanuit de Begin functie. Verander positie is een coroutine die een korte tijd zal wachten voordat de positie wordt bepaald.

 private bool mPositionSet; void Start () // Definitie van de spawnpositie StartCoroutine (ChangePosition ());  // We gebruiken een Coroutine om een ​​beetje // delay te geven voordat de positie private IEnumerator ChangePosition () wordt ingesteld yield return new WaitForSeconds (0.2f); // Definieer de spawn-positie slechts één keer als (! MPositionSet) // de positie alleen wijzigt als Vuforia actief is als (VuforiaBehavi.Instance.ingeschakeld) SetPosition ();  

Laten we het script testen:

  • Terug in Unity, klik op de _SpawnController object en gebruik Spelobject> 3D-object> Bol om een ​​bol in te voegen _SpawnController
  • Selecteer de bol en zorg ervoor dat de positie is ingesteld op 0 op de X-, Y- en Z-as. 
  • Nu zullen we de kubus en de overlappen _SpawnController dus je kunt het belang van het script opmerken. kiezen _SpawnController en stel de positie in op 0 op de X- en Y-as en op 10 op de Z-as, dezelfde positie als de kubus. 

De elementen beginnen overlappend; Zodra u de toepassing op een apparaat hebt gebouwd en uitgevoerd, ziet u dat _SpawnController en zijn bol zal voor de camera verschijnen, en de kubus zal op een andere plaats zijn. Ga je gang en test het! Zorg ervoor dat je naar het apparaat kijkt wanneer de app start.

4. Conclusie

Gefeliciteerd, je hebt je eerste Augmented Reality-ervaring gemaakt. Ja, het is een beetje ruw, maar het werkt! In deze tutorial heb je geleerd hoe je Vuforia's hoofd prefab gebruikt in Unity, de ARCamera. Je hebt ook geleerd hoe je het moet configureren en hoe je de sensors van het apparaat moet gebruiken om de illusie te creëren dat een virtueel object in de wereld wordt geplaatst.

4.1. Wat is het volgende?

In de volgende tutorial zullen we dit principe verbeteren om een ​​echt spel en een boeiender ervaring te creëren. We blijven het Shoot the Cubes-spel ontwikkelen, voegen wat interactiviteit toe en onderzoeken de mogelijkheden van Unity voor het maken van een interessant AR-spel. We laten de kubussen spaaien en rondvliegen, en we zullen de speler laten zoeken en vernietigen door een laser uit het apparaat te schieten.

Tot ziens!

Speciale dank voor de beeldvector ontworpen door Freepik, gelicenseerd onder Creative Commons CC BY-SA.