FLARToolkit

Afin de développer une seconde application de réalité augmentée, nous avons téléchargé la librairie de fonctions FLARToolkit. Il s’agit du portage d’ARToolkit codé en POO dans le langage ActionScript d’Adobe Flash (proche du langage Java).

Nous avons opté pour ce choix car une application Flash est beaucoup plus portable notamment sur internet. Cela apporte un plus dans le cadre de notre projet dont l’une des exigences est le développement d’un site Web. L’utilisateur ne doit posséder qu’un navigateur internet et Flash Player (ainsi qu’une imprimante) afin d’avoir un premier aperçu de la réalité augmentée.

Après quelques tests, le seul défaut qui nous est apparu est la lenteur lors de l’exécution. Le rendu des mouvements du marqueur est saccadé. En effet, Flash n’est pas destiné prioritairement à la gestion d’objets 3D.

1. Présentation de la librairie FLARToolkit

La librairie FLARToolkit est très proche de la librairie ARToolkit. Elle contient les fonctions de chargement des patterns, du paramétrage de la caméra ou encore des fonctions de détection du marqueur. Les dernières versions permettent la gestion d’un ou plusieurs marqueurs. Cependant, la librairie ne contient pas les fonctions nécessaires à la création et à la gestion d’éléments 3D. Il faut donc ajouter une librairie pour cela. Nous avons choisi « Papervision3D » (PV3D).

2. Environnement de développement

2.1. Récupération des librairies

Afin de développer avec la librairie FLARToolkit, nous avons utilisé le logiciel propriétaire d’Adobe, Flash Builder 4 disponible en version d’évaluation [6]. Pour installer les librairies FLARToolkit 2.5.3 [7] et Papervision3D 2.0.883 [8] nous avons installé le gestionnaire de versions Tortoise SVN 1.6.8 [9].

2.2. Installation et lancement

Les marqueurs générés pour ARToolkit conviennent également à cette version. Nous réutilisons donc le fichier pattern créé précédemment. Enfin, nous créons un nouveau projet Action Script dans Flash Builder, où nous importons les dossiers des librairies FLARToolkit et Papervision3D comme sources.

3. Développement

3.1. Création du projet

Le fichier source est composé d’un constructeur appelé au démarrage. Ce constructeur appelle les fonctions d’initialisation.

3.2. Structure de l’application

Dans un premier temps, on procède au chargement du fichier .pat. Après avoir créé la caméra, on génère les objets 3D puis on les insère dans la scène. Dans notre cas nous réutilisons le logo de l’ENSICAEN créé auparavant sous Blender. Il a été exporté cette fois au format Collada ( extension .dae ). En effet la bibliothèque Papervision3d permet de charger ce type de fichier (objects.parsers.DAE).

Le système de fonctionnement est basé sur un écouteur positionné sur l’événement « ENTER_FRAME ». Lorsque la caméra capture une nouvelle image, une fonction exécute le schéma ci-contre.

3.3. Interactivité

A ce stade, l’objet 3D que nous avons créé se positionne en temps réel sur le marqueur lorsque celui-ci apparaît à la caméra. Afin de rendre l’animation interactive, nous allons ajouter plusieurs objets et fonctions.

Tout d’abord, nous ajoutons des ombres au logo pour améliorer le réalisme. On ajoute également un plan horizontal et un plan vertical légèrement transparents. Ainsi, sans occulter l’image filmée par la caméra, nous obtenons une scène plus esthétique.

Par ailleurs, nous ajoutons une sphère directement avec PV3D (objects.primitives.Sphere) sur le plan horizontal, puis nous appliquons comme texture à cette dernière l’image du logo de l’ENSICAEN. Grâce à des écouteurs, il est alors possible de cliquer sur la sphère qui redirige alors l’utilisateur vers le site de l’ENSICAEN.

Enfin, nous ajoutons la fonction moveSphere(). A chaque événement ENTER_FRAME, nous récupérons la matrice de transformation du marqueur. Nous calculons les angles du plan horizontal par rapport à la caméra. Cela nous permet de faire rouler la sphère dans le plan. On implémente également la gestion de la chute de la sphère si l’on penche trop le marqueur.