Afin d’expérimenter la visualisation en relief, Telecom ParisTech dispose d’écrans 3D sans lunettes, offrant 5 point de vues différents pour un surface d’affichage de 19 » et d’une résolution de 1440×900 pixels. Ces écrans doivent impérativement être connectés à une sortie numérique de l’ordinateur; le lien analogique (VGA) introduit en effet du bruit non compatible avec le format d’affichage, cassant ainsi l’effet 3D.
Ressources
Ce logiciel nécessite les bibliothèques Java suivantes:LWJGL: une librairie Java de jeux permettant d’écrire facilement des programmes Java OpenGL slick-util:une librairie d’utilitaires Java permettant de charger rapidement des images pour les manipuler en OpenGL:NYU Media Research Lab, avec une petite animation permettant de comprendre rapidement la technologie.Un bon aperçu du fonctionnement de ces écrans est disponible sur le site de Paul Bourke.Site expliquant comment les images sont générées pour ces écrans.
Les spécifications détaillées de ces écrans sont disponibles ici: SVI_19.
Exemples d’utilisation
Affichage en 3D
Affichage simultané de contenus différents
Objectifs Pédagogiques
Vision stéréoscopique : savoir expliquer les principes de bases de la vision stéréoscopie et de la perception du relief.
Dispositifs d’affichages stéréoscopiques : savoir expliquer les différents dispositifs d’affichages, leurs avantages et inconvénients.
Application de visualisation en relief: compréhension de la programmation GPU par shader. Etre capable de justifier les choix techniques faits.
Résultats attendus
PAN1 :
Principes de bases de la vision en relief.
Expliquer comment le programme manipule l’écran 3D.
PAN2 :
Expliquer les principes de bases de la programmation de GPU par shader
Livrable: rendu anaglyphe d’un couple stéréoscopique
PAN3 :
Livrable : Programme OpenGL pour le rendu sur écran 3D, rendu d’un objet simple.
Expliquer le fonctionnement de l’afficheur
Décrire le fonctionnement et l’intégration du module dans le prototype allégé
PAN4 :
Analyser comment le module est intégré dans le prototype, quelles pistes d’améliorations seraient à envisager (performance, simplicité,)
livrable: Exemple de code permettant l’affichage 3D d’un objet (modèle ou cube ou série d’image) avec variation de l’effet de profondeur.
livrable biblio : les principes de fonctionnement de la vision 3D.
La WiiMote est le contrôleur de la console de jeu Wii.La WiiMote communique avec la console via BlueTooth, et peut par conséquent communiquer avec tout appareil supportant le protocole BlueTooth.
Ressources
Vous trouverez de nombreuses ressources bibliographiques traitant de la WiiMote sur internet. Les possibilités offertes par la WiiMote sont nombreuses, comme en témoignent ces vidéos youtube.Vous trouverez par ailleurs de nombreuses ressources sur l’architecture matérielle de la WiiMote sur le site Wiimote Project
Il existe un logiciel libre permettant de dialoguer avec la WiiMote depuis un programme Java: http://code.google.com/p/wiiusej/.D’autres logiciels existent mais n’ont pas été testés dans le cadre de PACT.
Exemples d’utilisation du module
Suivi de mouvement (accélération)
Actionneurs simples entrée (boutons) et sorties (vibreur, haut-parleur, leds).
Récupérer l’état de capteurs.
Suivi de sources infrarouges ponctuelles
Objectifs Pédagogiques
Comprendre le fonctionnement de la wiimote
Savoir expliquer les limitations du capteur
Résultats attendus
PAN1 :
Comment le capteur s’interface avec le programme
PAN2 :
Principes de fonctionnement de la Wiimote
Premiers tests d’interaction avec la Wiimote
PAN3:
Wiimote intégrée au prototype allégé
Justifiez comment le capteur s’intègre dans l’architecture, et les limites éventuelles.
La Kinect est un capteur de mouvement développé par Microsoft, afin de servir de contrôleur de jeux à la console XBox 360. La Kinect communique avec la console via USB 2.0, et peut par conséquent communiquer avec tout appareil supportant le protocole USB 2.0.
Ressources
Logiciel Java associé : Un logiciel libre permettant de dialoguer avec la Kinect depuis un programme Java a été créé à Telecom ParisTech. Ce logiciel utilise les drivers open-source freenect et la librairie JavaCV, surcouche Java autour de OpenCV ( librairie d’outils pour la vision par ordinateur).Les instructions pour installer JavaCV et OpenCV sont disponibles ici: InstallationJavaCV_Kinect.Les pilotes OpenKinect pour Windows sont disponibles ici: freenect_win32.Une application Java montrant comment manipuler les données vidéo (couleur et profondeur) est disponible (KinectGrabber.java). Attention, cette application ne fait pas la calibration des vues profondeur et couleur, les images restent légèrement décalées.Resources Bibliographiques :OpenKinect : implémentation libre des pilotes logiciels de dialoguer avec la Kinect depuis un ordinateur. Vous trouverez sur ce site de nombreuses ressources liées à la Kinect.OpenNI : utilitaires de développement pour les interactions homme-machine, avec entre autre un support pour la Kinect, utilisé pour la version 2 de la Kinect.
Vous trouverez de nombreuses ressources bibliographiques traitant de la Kinect sur internet, ainsi que de nombreux exemples d’applications utilisant ce capteur.
Exemples d’utilisation du module
La Kinect ne fournit comme information que les trames vidéo et profondeur. Un système utilisant la Kinect à par conséquent besoin d’une composante logicielle importante pour analyser ces images afin d’en extraire des informations utiles à l’application, par exemple:
détection et suivi des mains, reconnaissance des gestes
détection du nombre de personnes
analyse de la position d’un corps et calcul du « squelette » ou ensemble de points nécessaires à l’animation d’un avatar.
Contacts Tuteurs :Jean-Claude Dufourd, Jean Le Feuvre
Pour vos besoin de présentation de données, vous pourrez bien sur utiliser les stations de travail de Telecom ParisTech. Des dispositifs spécialisés sont aussi à votre disposition:
Ces capteurs sont classiquement utilisés comme controleurs de consoles de jeux. Ils sont principalements utilisés dans des applications d’interface homme-machine, parfois sous des formes surprenantes! Vous avez à votre disponibilité les contrôleurs suivants:
Vous pouvez intégrer à votre projet des capteurs et des actionneurs qui vous permettront respectivement d’acquérir des données ou de produire une action.
La visualisation en relief d’images, ou stéréoscopie, se retrouve sous les lumières des projecteurs depuis le récent regain d’intérêt pour le cinéma en 3D. Pour autant, les technologies de visualisation en relief sont loin d’être matures. On peut rapidement citer les techniques suivantes:
Anaglyphes
La coloration des images (resp. droite et gauche) est modifiée avec des filtres de couleurs (resp. rouge et cyan), puis on mélange les deux images en une seule. A l’aide de lunettes équipées de filtres de même couleur, un utilisateur verra un effet 3D, au détriment de la perte de couleur. De telles lunettes sont faciles à fabriquer, et quelques exemplaires sont à votre disposition à Telecom Paristech.
Lunettes passives
La lumière est polarisée différemment pour la vue droite et la vue gauche, et les vues ainsi polarisées sont projetées en alternance à une fréquence élevée. A l’aide de lunettes équipées de filtres de même polarité un utilisateur verra un effet 3D, au détriment d’une légère perte de luminosité.
Lunettes actives
La lumière est bloquée devant l’œil gauche (resp. droit) lorsque l’écran affiche la vue droite (resp. gauche). En projetant les images à une fréquence élevé, le cerveau reconstruira un effet 3D, au détriment d’une perte de luminosité.
Ecrans sans lunettes
Des lentilles semi-cylindriques (on parle alors d’écrans lenticulaires) ou de « petits trous » (on parle de barrière de parallaxe) sont placés au-dessus de l’écran. Pour chaque pixel (ou sous-pixel R, G ou B) de l’écran, le chemin de la lumière jusqu’à l’œil de l’utilisateur est ainsi modifié par la forme géométrique de ce réseau. On peut alors diriger certains pixels vers l’œil droit et d’autres vers l’œil gauche. En mélangeant les vues droites et gauche lors de la phase d’affichage, l’utilisateur verra un effet 3D, au détriment d’une perte de résolution. De tels écrans 3D sont disponibles dans le cadre de PACT.
Ressources
De nombreuses ressources bibliographiques sont disponibles sur Internet. Vous pouvez entre autre consultez les sites suivants:Stereo3D, site dédié au technologies d’affichage 3DLe site de Paul Bourkecontient de nombreux liens sur ses travaux autour de la vision 3D.Attention, créer l’illusion de la stéréoscopie n’est pas facile, même avec le bon équipement. De nombreux paramètres sont à prendre en compte, comme le montre la page de Paul Bourke sur la calibration de points de vue.
Exemples d’utilisation du module
Rendu immersif de monde virtuels
Consultation d’œuvre d’art (modèles 3D)
Objectifs Pédagogiques
Vision stéréoscopique : savoir expliquer les principes de bases de la vision stéréoscopie et de la perception du relief.
Dispositifs d’affichages stéréoscopiques : savoir expliquer les différents dispositifs d’affichages, leurs avantages et inconvénients.
Application de visualisation en relief: compréhension de la programmation GPU par shader. Etre capable de justifier les choix techniques faits.
Résultats attendus
PAN1 :
Principes de bases de la vision en relief.
Expliquer comment le programme manipule l’afficheur 3D.
PAN2 :
Expliquer le fonctionnement de la programmation de GPU par shader
Livrable: rendu anaglyphe d’un couple stéréoscopique
PAN3 :
Livrable : Programme OpenGL pour le rendu sur afficheur 3D.
Expliquer le fonctionnement de l’afficheur
Décrire le fonctionnement et l’intégration du module dans le prototype allégé
PAN4 :
Analyser comment le module est intégré dans le prototype, quelles pistes d’améliorations seraient à envisager (performance, simplicité,)
livrable biblio : les principes de fonctionnement de la vision 3D.
L’informatique graphique connaît depuis quelques années un formidable essor. Popularisées par les jeux vidéo et l’industrie des effets spéciaux, les images de synthèses sont de plus en plus utilisées dans des domaines allant du divertissement, à l’art en passant par les simulations d’entraînement, la visualisation scientifique et l’aide à l’analyse (par exemple pour l’investigation d’hypothèses archéologiques). Même si les données en entrée sont toujours les mêmes (une description 3D des objets obtenus par acquisition automatique ou par modélisation manuelle) les algorithmes qui leurs sont appliqués sont de plus en plus variés: affichage dans différents styles (physiquement réaliste, stylisé), détection de collisions, analyse géométrique, etc. plusieurs de ces algorithmes étant souvent effectuées en parallèle au sein d’une même application. En outre, la complexité des modèles ne cesse de croître (environnements virtuels très grands, modèles très détaillés) et même si les capacités des ordinateurs et cartes spécialisées évoluent en conséquence, ces algorithmes doivent être sans-cesse optimisés pour tourner le plus rapidement possible.Notez par ailleurs que les techniques proposées dans ce module peuvent servir à la synthèse d’image 2D n’exploitant pas les effets de perspectives.
Ressources
Littérature d’initiation
Un mini-cours autour de la synthèse 3D et d’openGL est disponible ici.
Comme point d’entrée en informatique graphique, il peut être intéressant de regarder le red book qui est un guide d’introduction à openGL. OpenGL est une API qui permet de communiquer avec la carte graphique pour créer des images sur l’écran. Comme sous-langage GLSL offre la possibilité d’écrire des petits programmes (shadeurs) qui sont exécutes sur la carte graphique et qui permet notamment de réaliser des images beaucoup plus convaincantes.
Code
OpenGL et les shadeurs peuvent être utilisé avec JAVA en utilisant la librairie: lwjgl. Plusieurs exemples et démos se retrouvent ici: potatoland Quelques Sujets en Informatique Graphique
Photo-Réalisme
La création des images photo-réaliste n’est pas facile et il est nécessaire de simuler proprement les modèles physiques pour assurer une haute qualité.
La lumière interagit avec les objets de la scène. Selon le matériel, cette interaction peut être très complexe et plusieurs modèles ont été proposé pour simuler les effets de matériaux. Ensuite la lumière rebondit des surfaces de la scène (par exemple un objet rouge proche d’un mur blanc va souvent réfléchir une tache rouge sur le mur). Cet éclairage s’appelle illumination globale. Un des grands problèmes est le calcul de la visibilité (des occultations) car la lumière renvoyé ne va pas atteindre directement des surfaces cachées de la source. Le même problème se pose au moment qu’on calcul les ombres dans une scène.
En combinant tous ses effets (et encore plus…), on s’approche de la création d’une image réaliste.
Un survey sur les modèles des matériaux est disponible ici: survey materiaux
Un survey des techniques de calcul d’ombres est disponible ici: calcul d’ombres
Un shader GLSL pour le calcul d’ombres à la ShadowMap: shader glsl
Rendu non-photoréaliste
Pour obtenir un aspect artistique, un rendu réaliste n’est pas le meilleur choix. En NPR (non photorealistic rendering), le but est souvent de reproduire un style particulier (aquarel, crayons, …) ou d’inventer un nouveau style tout court. Souvent une image non-réaliste peut être plus facile à comprendre par un observateur et peut être jugé plus intéressant qu’une simple reproduction de la réalité.
Ce domaine est très vaste et il y a des nombreux sujets différents qui font partie de cette catégorie.
Un survey sur le NPR est disponible ici: cours NPR
Géométrie
Une partie très importante en informatique graphique est la création et la modification des données géométriques. En particulier, la déformation de modèles pour l’animation mais aussi pour la modélisation.
INFOGRAPHIE
Si vous êtes intéressé par la création de modèle (ou la converison en format lisible par votre application), essayez de télécharger Blender! C’est un logiciel très performant de l’infographie. Ce programme vous permet de créer, rendre et animer des scènes. Vous pouvez donc créer vos propres films 3D.
Informatique graphique : savoir expliquer et manipuler le calcul vectoriel, les transformations d’espace, les modèles de couleurs et d’éclairage, les images et textures
Compréhension des coprocesseurs graphiques : savoir expliquer le pipeline graphique, comprendre la programmation par shaders et la gestion de mémoire sur un GPU
Application:savoir expliquer comment les connaissances acquises sont mise en place dans le code
Résultats attendus (A affiner selon vos besoins)
PAN1 :
Décrire les données 3D issues du prototype
Expliquer comment ces données sont exploitées via OpenGL.
PAN2 :
Expliquer calcul matriciel 2D/3D, les vertex, les VBO, les formats de couleurs et textures
Livrable: animation 3D d’un objet simple par modification de position ou modification de caméra, utilisation de textures
PAN3 :
Livrable : Utilisation des programmes de rendu OpenGL (aka shaders) pour l’animation et le dessin d’objets
Expliquer le fonctionnement des lumières et ombrages
Décrire le fonctionnement et l’intégration du module dans le prototype allégé
PAN4 :
Analyser comment le module est intégré dans le prototype, quelles pistes d’améliorations seraient à envisager (performance, simplicité,)
livrable biblio : les principes de fonctionnement du GPU et d’OpenGL
Bienvenue ! Ceci est le site racine du dispositif PACT.
PACT = Projet d’Apprentissage Collaboratif Thématique.
Le projet thématique 1A de Télécom ParisTech est un dispositif pédagogique destiné aux élèves en première année à Télécom ParisTech. Il s’agit d’un travail en groupe, qui implique plusieurs des champs disciplinaires de l’école.
Chaque groupe d’élèves est encadré par un tuteur, qui l’accompagnera tout au long du projet, ie. de la phase de définition du sujet à sa démonstration finale. L’originalité de PACT réside dans le fait que ce sont les élèves eux-mêmes qui fixent l’ambition de leur projet.