Hoe maak je een Augmented Reality-app

Augmented Reality (AR) is een innovatieve technologie waarmee je een verbeterde weergave van de echte wereld om je heen kunt presenteren. Een goed voorbeeld is het weergeven van de wedstrijdscores naast de live voetbalactie. De embedding wordt gedaan via een augmented reality-toepassing die een live camerabeeld rendert en een virtueel object bovenop het echte wereldbeeld vergroot en op uw camera preview-scherm weergeeft met behulp van vision-gebaseerde herkenningsalgoritmen.

In deze blog zullen we het ontwikkelingsproces van een voorbeeld AR-app uitleggen met behulp van Qualcomm Vuforia SDK, een van de beste SDK’s die beschikbaar zijn om vision-gebaseerde AR-apps voor mobiele apparaten en tablets te bouwen. Momenteel is het beschikbaar voor Android, iOS en Unity. De SDK zorgt voor de kleinste ingewikkeldheden, waardoor de ontwikkelaars zich volledig op de toepassing kunnen richten.

Conceptueel overzicht

We beginnen met een overzicht van de belangrijkste concepten die in de AR-ruimte worden gebruikt. Het is belangrijk om deze te begrijpen voordat je begint met de ontwikkeling van een AR app.

  • Targets – Dit zijn objecten of markeringen uit de echte wereld (zoals barcodes of symbolen). De targets worden gemaakt met behulp van Vuforia Target Manager. Eenmaal gemaakt kunnen ze worden gebruikt om een object te volgen en er inhoud over te tonen. De targets kunnen image targets, cylindrische targets, door de gebruiker gedefinieerde targets of woord targets, 2D image frames (frame markers), virtuele knoppen (die een event kunnen triggeren) of Cloud targets zijn.
  • Content – Met content bedoelen we een 2D/3D object of video die we willen augmenteren bovenop een target. Bijvoorbeeld het weergeven van een afbeelding of video bovenop het doel.
  • Texturen – Een textuur is een OpenGL object gevormd door een of twee afbeeldingen met hetzelfde beeldformaat. Het Vuforia AR systeem converteert inhoud in texturen en het AR systeem rendert de texturen om ze weer te geven op het preview scherm van de camera.
  • Java Native Interface – In Vuforia Android monsters, worden de lifecycles events afgehandeld in Java, maar tracking events en rendering zijn geschreven in native C++. JNI kan worden gebruikt om te communiceren tussen Java en C + + omdat het mogelijk maakt native methode aanroepen van Java.
  • Occlusion – Het betekent het bijhouden van een virtueel object verborgen door echte object. Occlusion management handling houdt in dat er een relatie wordt gelegd tussen virtuele en echte objecten door gebruik te maken van transparante shaders en daardoor afbeeldingen weer te geven alsof ze zich binnen een echt object bevinden.
  • OpenGL ES – Vuforia gebruikt OpenGL ES intern voor het renderen van 2D en 3D afbeeldingen met behulp van een grafische processor unit. OpenGL ES is speciaal ontworpen voor smartphones en embedded devices.

Vuforia Components

Het bovenstaande schema toont de kerncomponenten van Vuforia AR applicatie.

  • Camera – Legt het preview frame vast en geeft het door aan de Image Tracker.
  • Image Converter – De pixel-formaat converter converteert het standaard formaat van de camera naar een formaat dat geschikt is voor OpenGL ES rendering en tracking.
  • Tracker – De tracker detecteert en volgt echte wereld objecten in de camera preview frame met behulp van beeldherkenning algoritmen. De resultaten worden opgeslagen in het state object dat wordt doorgegeven aan de video background renderer.
  • Video Background Renderer – De renderer rendert het camera beeld dat is opgeslagen in het state object en vergroot het op het camera scherm.
  • Device Databases – De device database of dataset bevat targets die zijn gemaakt met Target Manager. Het bevat een XML-configuratiebestand en een binair .dat-bestand.
  • Cloud Databases – Kunnen worden gemaakt met behulp van target manager en kan een database van maximaal 1 miljoen targets bevatten, die kunnen worden opgevraagd tijdens runtime.

Beginnen ontwikkeling

TargetManager – De eerste stap is om targets te maken met behulp van Vuforia Target Manager om te gebruiken als apparaat database. Hiervoor moet je je eerst gratis registreren op het Vuforia ontwikkelaarsportaal. Dit account kan worden gebruikt om middelen van Vuforia te downloaden en problemen te posten op Vuforia forums. Na het inloggen,

  • Open TargetManager op de Vuforia website zoals hierboven getoond en open Device Databases tab.
  • Klik Create Database, Add Target. Er wordt een nieuw dialoogvenster geopend.

  • Selecteer de afbeelding die u als doel wilt tonen vanaf uw lokale systeem. Alleen JPG- of PNG-afbeeldingen (alleen RGB of grijstinten) van minder dan 2 MB worden ondersteund. Een ideale afbeelding moet rijk aan details zijn en moet een goed contrast hebben en geen herhalende patronen.
  • Selecteer het doeltype als enkele afbeelding. Voer een willekeurige waarde in voor de breedte en klik op Create Target. Na een korte verwerkingstijd, zal het geselecteerde doel worden gemaakt.
  • Als de doelwaardering meer dan drie is, dan kan het doel worden gebruikt voor tracking. Een hogere rating geeft aan dat het beeld gemakkelijk te traceren is door het AR systeem.
  • Voeg meer doelen toe op dezelfde manier. Selecteer de targets die u wilt downloaden en klik op download selected targets.
  • De download zal een <database_name>.xml en <database_name>.dat bestand bevatten. Het .xml bestand bevat de database van de target afbeeldingen terwijl het .dat bestand een binair bestand is dat informatie bevat over de trackable database.

Installatie en downloaden van voorbeeldcode

  • Aannemende dat je al bent ingelogd op je Vuforia account, ga je gang en download Vuforia SDK voor Android en Samples voor Android
  • Uitpakken van de Vuforia SDK-map en zet het in dezelfde map waar je je Android-SDK-map hebt bewaard. Kopieer de voorbeelden in de lege voorbeeldmap in de Vuforia SDK map en importeer het VideoPlayBack voorbeeld.
  • In Eclipse, ga naar Window-Preferences en navigeer naar Java-Build Path – Class Variables en maak een nieuwe variabele.
  • Voeg QCAR_SDK_ROOT toe in het Naam veld en selecteer je Vuforia SDK map door op de map optie te klikken.
  • Controleer in je project Java Build Path, vuforia.jar is geëxporteerd onder Order and Exports tab.
  • Open copyVuforiaFiles.xml en geef onder <fileset> het pad op voor armeabi-v7a. Je kunt het pad controleren in de build directory van je Vuforia-SDK map. In mijn geval in Linux is het pad : “/home/vineet/vuforia-sdk-android-2-8-8/build/lib/armeabi-v7a”
  • De vorige stap zal libVuforia.so bestand genereren in je project libs directory wanneer je de app bouwt en uitvoert.
  • De demo app bevat al 2 markers en video bestanden die je kunt gebruiken om te testen. U kunt de markers printen van PDF-bestanden in de media map van uw app.
  • Na het uitvoeren van de app, zal het camera-view scherm openen. Als u de camera op de markering richt, verschijnt er een video op het scherm die over de markering wordt gelegd.

Werkstroom voor ontwikkelaars

Als een gebruiker de voorbeeld-app start, begint hij met het maken en laden van texturen door loadTextures() op te roepen. Hier worden de bitmaps uit de assets-map geconverteerd naar texturen die door de Vuforia SDK-engine worden gebruikt voor het renderen van 3D-objecten in AR-weergave.

Tegelijkertijd start de app het proces voor het configureren van de engine door initAR() op te roepen. Hier zal de app asynchroon initialiseren van de Vuforia SDK engine. Na een succesvolle initialisatie, begint de app met het asynchroon laden van trackers data. Het zal laden en activeren van de datasets van doel XML-bestand gemaakt met behulp van TargetManager.

Na motor configuratie, de app roept initApplicationAR() waar het zal maken en initialiseren OpenGLES uitzicht en hecht een renderer aan het, die nodig is om video weer te geven op de top van de camera-scherm als imagetarget is gevonden. De renderer gekoppeld aan OpenGL ES view vraagt om het laden van video’s via VideoPlaybackHelper en roept OpenGL DrawFrame() method op om camera frames te volgen. Tijdens dit proces worden ook de OpenGL textures van textures objecten die in het begin zijn geladen en textures voor video data aangemaakt.

De app roept dan startAR() aan om de camera te starten. Zodra de camera start, begint de renderer met het volgen van frames. Wanneer imageTarget is gevonden, toont de app de video. De video kan worden geconfigureerd om automatisch af te spelen of kan worden gestart op tap.

Alle middelen worden ontladen door app door het aanroepen van onDestroy() wanneer de gebruiker de app sluit.

Conclusie

Met deze blog, hebben we nu gezien hoe we Vuforia kunnen gebruiken om ImageTargets te volgen en video weer te geven op de top van het. Vuforia kan gebruikt worden voor vele doeleinden zoals tekstdetectie, occlusie management, runtime target generatie vanuit de cloud. Om meer te weten over Vuforia kijk op developer.vuforia.com.

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.