Comment créer une application de réalité augmentée

La réalité augmentée (RA) est une technologie innovante qui vous permet de présenter une vue améliorée du monde réel qui vous entoure. Un bon exemple serait d’afficher les scores des matchs intégrés à côté de l’action de football en direct du terrain. L’incorporation se fait via une application de réalité augmentée qui rend une image de caméra en direct et augmente un objet virtuel par-dessus l’image du monde réel et s’affiche sur l’écran de prévisualisation de votre caméra à l’aide d’algorithmes de reconnaissance basés sur la vision.

Dans ce blog, nous expliquerons le processus de développement d’un exemple d’application AR utilisant Qualcomm Vuforia SDK, l’un des meilleurs SDK disponibles pour créer des applications AR basées sur la vision pour les appareils mobiles et les tablettes. Il est actuellement disponible pour Android, iOS et Unity. Le SDK prend en charge les complexités de plus bas niveau, ce qui permet aux développeurs de se concentrer entièrement sur l’application.

Vue d’ensemble conceptuelle

Nous commencerons par un aperçu des concepts clés utilisés dans l’espace AR. Il est important de les comprendre avant de commencer le développement d’une application AR.

  • Cibles – Ce sont des objets du monde réel ou des marqueurs (comme des codes-barres ou des symboles). Les cibles sont créées à l’aide du gestionnaire de cibles Vuforia. Une fois créées, elles peuvent être utilisées pour suivre un objet et afficher du contenu par-dessus. Les cibles peuvent être des cibles d’image, des cibles cylindriques, des cibles définies par l’utilisateur ou des cibles de mot, des cadres d’image 2D (marqueurs de cadre), des boutons virtuels (qui peuvent déclencher un événement) ou des cibles de nuage.
  • Contenu – Par contenu, nous entendons un objet 2D/3D ou une vidéo que nous voulons augmenter au-dessus d’une cible. Par exemple, afficher une image ou une vidéo au-dessus de la cible.
  • Textures – Une texture est un objet OpenGL formé par une ou deux images ayant le même format d’image. Le système Vuforia AR convertit le contenu en texture et le système AR rend la texture pour l’afficher sur l’écran de prévisualisation de la caméra.
  • Interface native Java – Dans les échantillons Vuforia Android, les événements des cycles de vie sont gérés en Java mais les événements de suivi et le rendu sont écrits en C++ natif. JNI peut être utilisé pour communiquer entre Java et C++ car il permet des appels de méthodes natives depuis Java.
  • Occlusion – C’est le suivi d’un objet virtuel caché par un objet réel. Le traitement de la gestion de l’occlusion consiste à établir une relation entre les objets virtuels et réels en utilisant des shaders transparents et donc en affichant les graphiques comme s’ils étaient à l’intérieur d’un objet du monde réel.
  • OpenGL ES – Vuforia utilise OpenGL ES en interne pour le rendu des graphiques 2D et 3D en utilisant une unité de processeur graphique. L’OpenGL ES est spécifiquement conçu pour les smartphones et les dispositifs embarqués.

Composants de Vuforia

Le schéma ci-dessus montre les composants de base de l’application Vuforia AR.

  • Caméra – Capture l’image de prévisualisation et la transmet au traqueur d’images.
  • Convertisseur d’image – Le convertisseur de format de pixel convertit le format par défaut de la caméra en un format adapté au rendu et au suivi OpenGL ES.
  • Tracker – Le tracker détecte et suit les objets du monde réel dans le cadre de prévisualisation de la caméra en utilisant des algorithmes de reconnaissance d’image. Les résultats sont stockés dans un objet d’état qui est transmis au moteur de rendu d’arrière-plan vidéo.
  • Moteur de rendu d’arrière-plan vidéo – Le moteur de rendu rend l’image de la caméra stockée dans l’objet d’état et l’augmente sur l’écran de la caméra.
  • Bases de données de périphériques – La base de données ou l’ensemble de données de périphériques contient des cibles créées à l’aide du gestionnaire de cibles. Elle contient un fichier de configuration XML et un fichier binaire .dat.
  • Bases de données de nuages – Peut être créée en utilisant le gestionnaire de cibles et peut contenir une base de données de jusqu’à 1 million de cibles, qui peut être interrogée au moment de l’exécution.

Début du développement

TargetManager – La première étape consiste à créer des cibles en utilisant Vuforia Target Manager pour les utiliser comme base de données de périphériques. Pour cela, il faut s’inscrire gratuitement sur le portail des développeurs Vuforia. Ce compte peut être utilisé pour télécharger des ressources de Vuforia et poster des problèmes sur les forums Vuforia. Après la connexion,

  • Ouvrir TargetManager sur le site Vuforia comme indiqué ci-dessus et ouvrir l’onglet Bases de données de périphériques.
  • Cliquer sur Créer une base de données, Ajouter une cible. Une nouvelle boîte de dialogue de cible s’ouvre.

  • Sélectionnez l’image que vous voulez afficher comme cible depuis votre système local. Seules les images JPG ou PNG (RVB ou niveaux de gris uniquement) d’une taille inférieure à 2 Mo sont prises en charge. Une image cible idéale doit être riche en détails et doit présenter un bon contraste et aucun motif répétitif.
  • Sélectionnez le type de cible comme image unique. Entrez une valeur arbitraire comme largeur et cliquez sur créer la cible. Après un court temps de traitement, la cible sélectionnée sera créée.
  • Si la notation de la cible est supérieure à trois, alors la cible peut être utilisée pour le suivi. Un classement plus élevé indique que l’image est facilement suivie par le système AR.
  • Ajouter plus de cibles de la même manière. Sélectionnez les cibles que vous voulez télécharger et cliquez sur télécharger les cibles sélectionnées.
  • Le téléchargement contiendra un fichier <nom_de_la_base>.xml et <nom_de_la_base>.dat. Le fichier .xml contient la base de données des images cibles tandis que le fichier .dat est un fichier binaire contient des informations sur la base de données traçable.

Installation et téléchargement du code échantillon

  • En supposant que vous êtes déjà connecté à votre compte Vuforia, allez-y et téléchargez Vuforia SDK pour Android et Samples for Android
  • Extrait le dossier Vuforia SDK et mettez-le dans le même dossier où vous avez gardé votre Android-SDK-dossier. Copiez les échantillons à l’intérieur du répertoire vide des échantillons dans le dossier Vuforia SDK et importez l’échantillon VideoPlayBack.
  • Dans Eclipse, allez dans Fenêtre-Préférences et naviguez jusqu’à Java-Build Path – Class Variables et créez une nouvelle variable.
  • Ajouter QCAR_SDK_ROOT dans le champ Nom et sélectionner votre dossier Vuforia SDK en cliquant sur l’option dossier.
  • Vérifier dans votre projet Java Build Path, vuforia.jar est exporté sous l’onglet Commande et Exportations.
  • Ouvrir copyVuforiaFiles.xml et sous <fileset> donner le chemin pour armeabi-v7a. Vous pouvez vérifier le chemin dans le répertoire de construction de votre dossier Vuforia-SDK. Dans mon cas, sous Linux, le chemin est : « /home/vineet/vuforia-sdk-android-2-8-8/build/lib/armeabi-v7a »
  • L’étape précédente générera le fichier libVuforia.so dans le répertoire libs de votre projet lorsque vous construirez et exécuterez l’app.
  • L’app de démonstration contient déjà 2 marqueurs et des fichiers vidéo que vous pouvez utiliser pour tester. Vous pouvez imprimer les marqueurs à partir des fichiers PDF dans le dossier média de votre app.
  • Après avoir lancé l’app, l’écran de vue de la caméra s’ouvrira. En pointant la caméra sur le marqueur, une vidéo apparaîtra sur l’écran superposée au marqueur.

Flux de travail du développeur

Lorsqu’un utilisateur lance l’exemple d’application, il commence à créer et à charger des textures en appelant loadTextures(). Ici, les bitmaps du dossier des actifs sont convertis en textures requises par le moteur Vuforia SDK pour le rendu des objets 3D sur la vue AR.

Simultanément, l’app commencera le processus de configuration du moteur en appelant initAR(). Ici, l’app va initialiser de manière asynchrone le moteur Vuforia SDK. Après une initialisation réussie, l’application commence à charger les données des trackers de manière asynchrone. Elle chargera et activera les ensembles de données à partir du fichier XML cible créé à l’aide de TargetManager.

Après la configuration du moteur, l’app appelle initApplicationAR() où elle créera et initialisera la vue OpenGLES et lui attachera un moteur de rendu, qui est nécessaire pour afficher la vidéo en haut de l’écran de la caméra si imagetarget est trouvé. Le moteur de rendu attaché à la vue OpenGL ES demande le chargement des vidéos via VideoPlaybackHelper et appelle la méthode OpenGL DrawFrame() pour suivre les images de la caméra. Au cours de ce processus, les textures OpenGL des objets textures chargés au début et les textures pour les données vidéo sont également créées.

L’application appelle ensuite startAR() pour démarrer la caméra. Dès que la caméra démarre, le moteur de rendu commence à suivre les images. Lorsque imageTarget est trouvé, l’app affiche la vidéo. La vidéo peut être configurée pour être lue automatiquement ou peut être lancée sur tap.

Toutes les ressources sont déchargées par l’app en appelant onDestroy() lorsque l’utilisateur ferme l’app.

Conclusion

Avec ce blog, nous avons maintenant vu comment nous pouvons utiliser Vuforia pour suivre les ImageTargets et afficher la vidéo par-dessus. Vuforia peut être utilisé à de nombreuses fins comme la détection de texte, la gestion des occlusions, la génération de cibles en temps réel à partir du cloud. Pour en savoir plus sur Vuforia, consultez le site developer.vuforia.com.

.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.