Pour les futurs développeurs Sommaire



Documents pareils
TP Blender n 2 : Importation d un modèle SketchUp et animation

Microsoft Windows XP. Movie Maker 2

Silhouette Studio Leçon N 2

On trouvera sur le site du CCDMD un exemple d album construit avec Cantare. (

Optimiser pour les appareils mobiles

Isadora. Photo jpeg qualité 50% %, 320X240. Prérequis

Rapport projet MMI. Luis Domingues, I3 Naomi Favre, I3 Tiago De Deus, I3. Luis Domingues, Tiago De Deus, Naomi Favre SP Interfaces Multimodales

Mise en scène d un modèle dans l espace 3D

pcon.planner 6 Préparer et présenter une implantation en toute simplicité

Assistant d e tablissement de Tableaux

Réalisation de cartes vectorielles avec Word

MEDIA NAV Guide de téléchargement de contenus en ligne

L EFFET PARALLAXE N EST

FORMATION MULTIMÉDIA LVE

Comment se connecter au dossier partagé?

Comment sélectionner des sommets, des arêtes et des faces avec Blender?

BIRT (Business Intelligence and Reporting Tools)

AVEC LIVE TRADER, VISEZ PLUS HAUT POUR VOS INVESTISSEMENTS

Comment accéder à d Internet Explorer

Réalisez votre propre carte de vœux Éléctronique

GUIDE D INSTALLATION RAPIDE DEXH264

Navigation dans Windows

Your Detecting Connection. Manuel de l utilisateur. support@xchange2.net

Manuel d utilisation de V3D Events - Visiteurs

TUTORIEL IMPRESS. Ouvrir Impress cocher «présentation vierge», «suivant» cocher «écran», «suivant» cocher «standard», «créer»

FICHIERS ET DOSSIERS

Utilisation de la plateforme VIA ecollaboration

L espace de travail de Photoshop

MODE D EMPLOI. Plateforme de réflexion et de recherche de la CIDEGEF pour un modèle de management francophone

Utilisation d une tablette numérique

Chapitre 4 : Guide de Mouvement et Masque

Guide de démarrage rapide. (pour la version 5.0.)

ESPACE MULTIMEDIA DU CANTON DE ROCHESERVIERE

Guide de l utilisateur. Faites connaissance avec la nouvelle plateforme interactive de

I Pourquoi une messagerie?

Logiciel PICAXE Programming Editor

Documentation utilisateur. [EIP] TransLSF

PRECAUTIONS DESCRIPTION DU PRODUIT

Utilisation de la clé USB et autres supports de stockages amovibles

cbox VOS FICHIERS DEVIENNENT MOBILES! POUR ORDINATEURS DE BUREAU ET PORTABLES WINDOWS ÉDITION PROFESSIONNELLE MANUEL D UTILISATION

Dispositif Technique

Dans la série Les tutoriels libres présentés par le site FRAMASOFT. <Handbrake> <Utilisation d'handbrake pour les débutants> Par <OLIVIER LECLERCQ>

L accès à distance du serveur

Introduction à Eclipse

Volet de visualisation

TAGREROUT Seyf Allah TMRIM

Publier dans la Base Documentaire

Géographie CM2. Guide pédagogique. Ressources vidéoprojetables & 14 animations interactives. Jacques Arnaud Nicole Darcy Daniel Le Gal

Créer des étiquettes avec les adresses d'un tableau Calc


LOGICIEL DE SURVEILLANCE NUUO NOTICE

MAJ 08/07/2013. INSTALLATION RAPIDE Version 1.3

DOSSIER D'ACTIVITES SUR LE PHP N 03 Créer une base de données MySQL avec PHPMyAdmin

Edutab. gestion centralisée de tablettes Android

Mes premiers diaporamas avec Open Office Impress?

AIDE à l utilisation du cédérom «L athlétisme à l école» Niveau Primaire SOMMAIRE

Aide à la clé pédagogique «Former à la première intervention et à l évacuation»» 2 e édition

Avertissement : Nos logiciels évoluent rendant parfois les nouvelles versions incompatibles avec les anciennes.

Infolettre #18 : Les graphiques avec Excel 2010

Clé USB Wi-Fi D-Link DWA-140

Édu-groupe - Version 4.3

Dans cette Unité, nous allons examiner

Installation d'une galerie photos Piwigo sous Microsoft Windows.

«Petit guide d utilisation Prezi» par Marc Nolet

L écran du marais : Comment configurer le viewer OpensSim

Ceci est un Chromebook, ton ordinateur!

Organiser vos documents Windows XP

LES TABLETTES : EN PRATIQUE

Sommaire. Images Actives Logiciel libre développé par le CRDP de l académie de Versailles 2 Rue Pierre Bourdan Marly le Roi

Saisissez le login et le mot de passe (attention aux minuscules et majuscules) qui vous ont

Classer et partager ses photographies numériques

Stopack : logiciel pour l entrepôt

Manuel d utilisation de V3D Events - Visiteurs. We bring people closer

J ai peur des souris mais je me soigne Petit manuel à l attention des profs de langues vivantes désireux d affronter le Monstre Informatique

Premier cours d informatique

Gérer ses fichiers et ses dossiers avec l'explorateur Windows. Février 2013

Création WEB avec DreamweaverMX

!" #$$%& Disque dur 2.5 pouces Firewire Apple MacOS FR V2.4 - Page 1/17

ESPACE COLLABORATIF SHAREPOINT

Leçon N 5 PICASA Généralités

R00 Installation du logiciel R sous Windows

Sauvegarder automatiquement sa clé USB

Étape 1 : Création d une adresse courriel GMAIL

Internet : Naviguer en toute sérénité

CREER ET ANIMER SON ESPACE DE TRAVAIL COLLABORATIF

Manuel v. 6sV Simplement surfer. Simplement cliquer. Simplement bloguer.

Manuel Utilisateur. Boticely

Créer un compte itunes Store

Mode d. Version 1.7.4

Les outils numériques permettant l enregistrement de documents audiovisuels diffusés sur Internet sont nombreux. Certains sont gratuits.

Publier un Carnet Blanc

Jade. Projet Intelligence Artificielle «Devine à quoi je pense»

MO-Call pour les Ordinateurs. Guide de l utilisateur

Découvrez Windows NetMeeting

INSTALLATION ET PRISE EN MAIN

LiveUSB clefisn. Meilland jean claude et Kbida Abdellatif. 16 septembre 2012

Manuel d utilisation de V3D Events - Visiteurs. We bring people closer

SOMMAIRE. Présentation assistée sur ordinateur. Collège F.Rabelais 1/10

Manuels numériques et bibliothèque Didier Guide pratique

GUIDE de prise en main. let s play

Transcription:

Pour les futurs développeurs Sommaire I. Présentation du projet... 2 II. Détails sur les différentes parties... 3 1. Le modèle 3D... 3 2. Reconnaissance des gestes... 4 3. Reconnaissance d objets... 6 4. Interface graphique... 6 III. Présentation des packages et des classes... 6 1. Package Vue... 6 a. Interface... 6 b. OpenGLViewer... 8 2. Package Controler :... 9 a. Base :... 9 b. Kinect :... 9 c. Video :... 10 3. Package Model... 10 a. Game :... 10 b. Movement :... 10 c. OpenGl... 10 d. Scenario... 10 IV. Les limites de notre application... 11 1. Côté animation 3D... 11 2. Côté interface joueur... 11 V. Références... 11

I. Présentation du projet Notre projet consiste à créer un jeu pour les enfants atteints de troubles de la parole. Ils pourront ainsi apprendre à l aide de gestes. D un autre côté, cette application confirmera les études des chercheurs sur le rôle du geste dans l apprentissage du langage. L application contiendra donc deux interfaces distinctes : une pour le joueur (l enfant) et une pour l administrateur. L interface joueur devra donc reconnaître des gestes effectués devant une Kinect et des objets présentés à la webcam. L administrateur pourra quant à lui modifier différents paramètres : il pourra ajouter ou modifier un scénario, ajouter un nouveau mouvement à la base. Un scénario de jeu simple sera : Il y a donc des parties bien distinctes que nous allons développer dans la suite de ce document. Tout d abord, il semble important de bien comprendre les différents logiciels et librairies que nous avons utilisés, notamment pour l'acquisition de données de la Kinect.

II. Détails sur les différentes parties Notre projet consiste en plusieurs parties bien distinctes: Animation d un modèle 3 dimensions avec la kinect en non temps réel Reconnaissance des gestes Reconnaissance d objet Interface graphique Nous avons pu développer ces parties séparément puis les intégrer les unes aux autres. 1. Le modèle 3D Le but du projet était d animer un modèle 3 dimensions, en non temps réel puis en temps réel. En ce qui concerne le non temps réel, nous avons utilisé : - Blender : puissant logiciel permettant de faire de l animation 3D. - NiMate : logiciel permettant de récupérer les données de la Kinect. En connectant ces deux logiciels, il a été possible d animer un personnage 3D sur Blender. Le site de NiMate (www.ni-mate.com) contient les sources d installation du logiciel. Une vidéo tutoriel explique comment connecter NiMate et Blender. Après avoir suivi ce tutoriel il est donc possible d animer un personnage en temps réel sur blender. Mais l animation temps réel reste sur l interface blender. Nous avons réalisé de nombreuses vidéos sous Blender. La librairie VLC (libvlc) a été utilisé afin d afficher ces vidéos à partir de l interface graphique. En ce qui concerne le temps réel, il ne semble pas possible d intégrer l animation de Blender dans l interface c++. Nous avons donc aussi utilisé OpenGL pour animer un modèle 3D. La récupération des points d un mouvement se fait en parsant un fichier créer par Processing.

La librairie Assimp (Open Asset Import Library) nous a permis de charger un modèle Blender (format 3ds) avec opengl. Mais les résultats de l animation du personnage n étaient pas très convaincant, nous avons donc du abandonner cette partie. Finalement, nous avons : 2. Reconnaissance des gestes La reconnaissance de gestes s effectue en trois temps, avec 3 programmes différents : - récupération des mouvements du joueurs avec Processing et SimpleOpenNI - reconnaissance de gestes avec OpenFrameworks et GRT - mise à jour du jeu dans Gest-Art

La communication entre eux s effectue avec Open Sound Control (OSC). Chacun des programmes utilise une version adaptée : - oscp5 pour Processing - ofxosc pour OpenFrameworks - oscpack pour Gest-Art Pour résumer, nous avons : Adresse de communication : loopback (127.0.01) Ports de communication : 12345 : Processing OpenFrameworks 12346 : OpenFrameworks Gest-Art Où sont fixés les ports : Processing : méthode setup OpenFrameworks : classe SynapseStreamer Gest-Art : classe src/model/scenario/receiveclasslabel.hpp Présentation de la librairie Gesture Recognition Toolkit (GRT) : "The Gesture Recognition Toolkit (GRT) is a cross-platform, open-source, C++ machine learning library that has been specifically designed for real-time gesture recognition." Développée par Nick Gillian, GRT implémente un certain nombre d algorithmes adaptés à différentes situations. L algorithme choisi a été l algorithme Dynamic Time Wraping (DTW), donnant de bons résultats avec peu d échantillons. Pour un grand nombre échantillons, il faudra éventuellement changer d algorithmes. Consultez le wiki de nick gillian pour plus de détails. http://www.nickgillian.com/wiki/pmwiki.php/grt/gesturerecognitiontoolkit

3. Reconnaissance d objets Le but était d arriver à identifier un objet physique dans notre application. Nous avons décidé de choisir les qr-codes comme moyen de reconnaissance pour la simple raison que des librairies ont déjà été développées dans ce but. Le qr-code sera généré à partir de nom de chaque objet. Les librairies que nous avons choisies sont libqrencode pour la génération de qr-code et Zbar pour le décodage. Malheureusement, nous n avons pas pu intégrer ces librairies dans notre code C++, nous avons donc utilisé directement la commande «qrencode» pour générer les qr-codes et nous avons utilisé un appel système pour appeler la commande «zbarcam». 4. Interface graphique L interface graphique est actuellement faite avec la librairie Gtkmm. Cependant elle est peut personnalisable et les boutons restent de disign standard. Dans le cas d un changement de librairie graphique, (Gtk, opengl avec picking,...) le travail consistera à redessiner l interface et lier tous les boutons avec les fonctions appelées. III. Présentation des packages et des classes Nous avons 3 gros packages pour notre projet, cette organisation est basée sur l acrhitecture Modèle-Vue-Controleur. Chaque package contient différents autres packages. 1. Package Vue a. Interface InterfaceG : Crée lors du main, cette classe permet d initialiser toutes les fenêtres du jeu : la fenêtre d accueil, la fenêtre administrateur et le jeu. Elle contient des fonctions qui permettent de passer d une fenêtre à une autre. Menu : Cette classe permet de créer la page d accueil du jeu, c est à dire la fenêtre cidessous

PageAdmin: Cette classe permet de créer la page administrateur du jeu, c est à dire la fenêtre ci-dessous : DisplayScenar: Cette classe permet d afficher la page de gestion des scénarios, c est à dire la fenêtre ci-dessous

ModifScenar: Cette classe permet d afficher la page de modification ou d ajout de scénario, c est à dire la fenêtre ci-dessous Dialog : Cette classe permet de créer une boite de dialogue avec une zone de texte à remplir, telle que : Window : Cette classe permet d afficher un message dans une nouvelle fenêtre. b. OpenGLViewer Ce package contient des classes permettant l affichage du squelette opengl. Nous ne les utilisons pas toutes dans le rendu de notre projet mais certaines permettent notamment de loader un model blender dans le vue opengl.

ViewerParser: Cette classe permet l affichage de la vue opengl avec le squelette ou les mesh blender. ViewerGame: Classe non utilisee dans le rendu. Permettra d afficher la scene d arriere plan du magicien. ViewerMesh: Classe permettant de charger une simple mesh (ex : le magicien opengl). ViewerTime: 2. Package Controler : a. Base : Ce package contient une unique classe main permettant de lancer l application et de créer l interface. b. Kinect : Ce package contient des classes permettant de lancer des applications utilisant la kinect. Of : OpenFramework ne fonctionne pas sans processing. Cette classe lance donc openframework et processing. Il y a deux programmes openframework, un pour l enregistrement des gestes et un pour la reconnaissance des gestes. La classe contient donc deux fonctions différentes pour lancer le programme de reconnaissance ou d enregistrement. Elle contient aussi une fonction fermant les applications of et processing. Processing : Cette classe permet de lancer l application Processing seule. Osc : Cette classe permet de lancer l application Osc. Celle-ci écoute les résultats reconnus par openframework lors de la reconnaissance de mouvements. Si le résultat est celui attendu, le programme met a jour le booléen de l'activité correspondante pour dire que la reconnaissance a effectivement eu lieu. Parser : Cette classe permet l animation du squelette opengl à partir d un fichier de mouvement (selectionné par l utilisateur). Une fonction permet de parser nbmembres (12) lignes du fichier et met à jour les positions des membres du squelette. Cette fonction sera donc appelée plusieurs fois.

c. Video : Ce package contient une seule classe permettant l affichage de vidéos dans l interface. On utilise la libvlc afin de pouvoir lancer les vidéos depuis notre interface. 3. Package Model a. Game : Ce package contient une seule classe Game. Un game contient une liste de scenario. Cette classe permet de mettre a jour les scénarios et de lancer un scenario. b. Movement : Ce package contient une seule classe GestureMap qui permet d associer un nom de mouvement à un numéro. Les gestes sont enregistrés dans un fichier appelé gestfile qui est situé à la racine du projet. Une map associant un numéro et un nom permet de gérer facilement les gestes. c. OpenGl Skeleton : Cette classe définit le squelette opengl qui permet la visualisation d un mouvement. elle définit les coordonnées de chaque embre du squelette. Segment : Cette classe définit un os, cad deux points. Elle permet de dessiner les os. Mesh : Cette classe permet de charger une mesh. Math_3D : Cette classe définit diférents points (3D, 2D) et les fonctions permettant de les manipuler. d. Scenario Scenario : Un scénario contient une liste d activités. Il existe deux types d activités: Les activités formes consistants en la reconnaissance d un geste et les activités objets consistants en la reconnaissance d un objet. Chaque scénario lance d abord toutes les activités formes puis toutes les activités objets. Pour les activités formes, on a besoin de lancer les applications Of et Processing Activity : Une activité contient un nom, un nom de paramètre et un nombre d essais. Un booléen welldone permet de savoir quand l activité a été réussi ou non. Un attribut MovieDuration permet de connaître la durée de la vidéo d une activité. Un autre attribut TrialDuration permet de connaître la durée d un essai. Une fonction launch permet de lancer l activité. ObjectActivity : Une activité objet consiste à reconnaître un objet montré à la caméra. La reconnaissance se fait par QrCode. Les différentes paramètres peuvent être les noms des différents objets enregistrés dans la base.

ShapeActivity : Une activité forme consiste à reconnaître un mouvement fait devant la kinect. Les différents paramètres peuvent être les différentes formes enregistrées dans la base. La principale fonction est exec qui permet d exécuter une activite et qui lance Osc, open framework et processing pour la reconnaissance du geste. InfoActivity : Défini les durées des différentes activités. MoveTestActivity : Ce n est pas une vrai activité. Cette classe permet de tester si un mouvement est bien reconnu ou non. Elle contient une unique fonction qui permet de savoir si le mouvement est reconnu ou non; elle lance Osc, openframework et Processing. IV. Les limites de notre application Étant donné que nous devions réalisé ce projet en trois semaines, nous n avons pas pu implémenter toutes les fonctionnalités. Les limites de notre application seront donc présentées dans cette partie. 1. Côté animation 3D Notre animation 3D opengl reste très limitée puisqu elle consiste en un simple affichage d un squelette 3 dimensions. Afin de pouvoir réaliser l animation d un avatar en temps réel, il sera nécessaire d animer un modèle blender (celui de notre magicien) sous opengl. Cela consiste en le chargement d une mesh puis en son animation. Nous avons commencé cette partie, mais par manque de résultats convaincants, nous avons dû abandonner. 2. Côté interface joueur Lors de la reconnaissance d un mouvement effectué par l enfant en face de la kinect, l interface de processing est lancée. Ainsi, l enfant voit son squelette apparaître à l écran, celui-ci est rouge si l enfant est calibré. Cela peut être perturbant pour l enfant, il pourrait ne pas comprendre ce qui se passe. Le but finale serait d afficher son avatar animé en temps réel. Il semble possible de cacher la fenêtre de processing, mais il est ainsi difficile de savoir quand commencer le geste. Des améliorations à ce niveau semblent nécessaires afin que le jeu soit utilisable dans un but curatif. V. Références

ANNEXE 1 Création de vidéo sous blender 1. Importer le modèle 3D du magicien avec sa scène File -> Open -> Choisissez votre fichier blender 2. Enregistrer un mouvement sur le magicien a. Brancher la Kinect b. Ouvrir NiMate c. Vérifier dans live view que le squelette de la personne en face de la kinect apparait bien

Interface NiMate : -> Le branchement de la Kinect avec Blender est effectué! d. A gauche de la fenêtre Blender se trouve le bouton permettant de lancer l animation de notre magicien. Appuyer sur start et vous verrez le magicien bouger en temps réel avec vous!

e. En bas de la fenetre blender se trouve l interface Timeline. Appuyer sur le petit rond permet d enregistrer les key frames automatiquement. Appuyer sur play lance l enregistrement. Le trait vert permet de dire ou nous sommes dans le temps. Les boutons Strat et End permettent de choisir la longueur de notre vidéo. Position dans la timeline Start

f. Tester votre animation en cliquant sur le bouton play Si vous voulez supprimer le mouvement du magicien afin d en réaliser un nouveau, aller dans la première vue (mesh) puis sélectionner tous les points. Puis aller dans DropSheet, appuyer sur la touche A puis sur la touche x. Plusieurs mesh : Les différents calques - Sélectionner tous les points : A - Aller dans de Dope Sheet : Dope Sheet - Supprimer les key frame : X

Vue 2 : Deuxième calque 3. Enregistrer manuellement un mouvement (texte ou objet qui bougent) a. Placer le trait vert de la timeline ou vous souhaitez commencer votre mouvement b. Choisir l objet que vous voulez animer en object mode - Object Mode : Sélectionner l objet (sur l image le texte Presque) - Edit Mode sert à modifier le texte c. Placer votre objet ou vous le souhaitez à l aide des flèches

d. Appuyer sur la touche I = insert a keyframe -> la position initiale de l objet est enregistré e. Déplacer le trait vert là ou vous souhaitez terminer l animation de votre objet f. Répéter les étapes b à d. En fait, les positions de départs et d arrivée sont interpoler et votre objet bougera de la position initiale à la position finale de façon la plus naturelle possible. Si vous souhaitiez faire une animation plus complexe, il vous suffit de décomposer votre mouvement en insérant plus de key frames à différents endroits. Pour supprimer une key frame, cliquer dessus dans la fenêtre Timeline et faites Alt + I. 4. Ajouter du son a. Placez le trait vert de la Timeline àl endroit ou vous souhaitez que votre son commence b. Aller dans la vue Video Sequence Editor c. Cliquer sur Add -> Sound d. Choisissez votre son e. Retourner dans la Timeline : Tester votre vidéo en cliquant sur play!

Si vous souhaitez faire une animation plus sophistiquée, il existe beaucoup de tuto sur internet expliquant les différentes parties très précisément. 5. Ajouter un objet Ajouter un objet consiste en fait en l ajout d une texture sur un objet plat Blender. a. Ajouter un objet b. Le placer correctement dans la vue à l aide des déplacements et rotations Déplacement Rotation Ajouter un nouvel objet

c. Ajouter une texture représentant l objet (une image de l objet souhaité) Mode - Appuyer sur + pour ajouter un nouvel objet texture - Cliquer sur New Ajout de texture Ajout de nouvel texture

Nom de la texture Votre texture est une image Choisissez votre image d. Regarder le rendu!

ANNEXE 2 : Créer un projet avec OpenFrameworks La place des applications dans l'arborescence d'openframeworks est primordiale. Elles doivent se trouver dans le dossier : [OpenFrameworks]/apps/myapps Pour créer une nouvelle application, le plus simple est de copier un exemple, soit vide, soit utilisant l'un des addons nécessaire. Pour GestArt, nous avions besoins d'osc, nous avons donc copié puis modifié l'exemple [OpenFrameworks]/examples/addons/oscReceiveExample. Ouvrir ensuite le fichier «.cbp» avec Code::Blocks, et inclure les fichiers nécessaires (notamment GRT). Sous Mac : Après avoir copié l'exemple : - Ouvrir le fichier *.xcodeproj (afficher le contenu du paquet), et supprimer le ficher *.xcworkspace ANNEXE 3 : Installation de GRT Installation de GRT : Page web : http://www.nickgillian.com/software/grt Wiki : http://www.nickgillian.com/wiki/pmwiki.php?n=grt.gesturerecognitiontoolkit Forum : http://www.nickgillian.com/forum/index.php 1) Télécharger GRT : git clone https://github.com/nickgillian/grt 2) Copier le dossier grt/grt dans le projet : attention à ne pas confondre les dossiers Les algorithmes sont documentés sur le wiki, et pour toute demande Nick Gillian est assez réactif sur le forum (aussi bien pour les problèmes rencontrés que pour aider à choisir le meilleur algorithme).