Archives de catégorie : module: 3d et interfaces

Module : Interface Utilisateur Graphique

Note importante:

Si vous avez un module Programmation Android, l’interface utilisateur est gérée avec votre expert Android. Si vous programmez sur PC/Mac/Linux, alors ce module-ci est pour vous.

Expert contact : votre encadrant GL

coordinateur: Jean-Claude Dufourd, email : jean-claude.dufourd_at_telecom-paris.fr

Supports de cours :

Planches du cours sur Swing :

Descriptif

Une application logicielle doit fournir un moyen à l’utilisateur de présenter les actions/fonctionnalités de l’application avec lesquelles il souhaite interagir. En réponse, l’application fournit un rendu graphique correspondant au service lui-même ou permettant à l’utilisateur de contrôler son exécution (affichage d’une vidéo, affichage d’un menu, d’un texte, création d’une fenêtre, une barre de progression, etc.). Le module ne concerne ni du traitement de l’image ni de la 2D/3D.

La conception et la mise en œuvre d’une interface doit respecter certaines règles si l’on veut éviter les défauts classiques : mauvaise réactivité, ergonomie dégradée par les choix d’implémentations, etc.

Nous verrons dans ce module les principes qui vous permettront de décrire l’interface que vous souhaitez réaliser. Puis, nous verrons des éléments concrets d’implémentation sous Java Swing ou Android vous permettant de réaliser cette interface.

Types de savoir faire concernés

  • Savoir définir et utiliser dans la description de votre module les termes : interface graphique, rendu graphique, composants d’interface graphique, chaîne réactive, évènements.
  • Savoir définir une disposition pour vos objets graphiques qui vous permette de contrôler efficacement le rendu graphique. Savoir utiliser les chaînes réactives existantes (event Swing, Android), ou créer ses propres évènements pour capturer des stimuli spéciaux et les intégrer dans votre chaîne réactive.
  • Savoir Implémenter les concepts vus lors du module et les adapter à votre projet.

Livrables Types

Presque tous les projets dans le cadre de PACT repose sur des interfaces graphiques. Cela ne veut pas dire qu’un module doit être nécessairement créer pour ce travail. Seuls les interfaces un peu complexes nécessiteront la mise en place d’un module.

Attentes pour les différents PAN:

PAN 1 :

  • Comprendre la terminologie du domaine : interface graphique, rendu graphique, composants d’interface graphique, évènements, chaîne réactive (ou évènementielle).
  • Rédiger une description textuelle et graphique (dessin ou schéma, même dessins à la main scannés ou photographiés) de l’interface graphique souhaitée dans votre projet. Cette description devra séparer au maximum la partie représentation graphique, de la partie chaîne réactive (évènement et réactions à ces évènements).

PAN 2 :

  • Implémentation de l’interface graphique, pas encore connectée avec les éléments de la chaîne réactive.

PAN 3 :

  • Interface graphique complête

Module : Visualisation de données, en particulier de test

Module: Visualisation de données, en particulier de test
proposé par :

  • Jean-Claude Dufourd (dufourd_at_telecom-paris.fr, 9691, bureau 5D30)
Descriptif
Il y a plusieurs bibliothèques de dessin de courbes et de représentations de données en Java:

Ces bibliothèques permettent d’afficher à peu près n’importe quel type de données de manière très évoluée. Par exemple, vous avez un tableau de valeurs représentant un spectre, vous aimeriez bien visualiser ce spectre comme une courbe à l’écran pour voir si votre programme fonctionne.

Si vous avez un besoin ponctuel d’affichage de test pendant vos développements, inutile d’en faire un module. Si par contre vous avez des besoins variés et/ou une utilité de la visualisation dans le produit fini, alors créons un module.

jFreeChart est très complète, mais la doc est payante.

jmathplot est beaucoup plus facile à utiliser, mais plus limitée, et pour de la représentation 2D.

jzy3d fait de l’affichage 3D en perspective, c’est mieux pour certains types de données.

GraphView et MPAndroidChart sont des bonnes bibliothèques pour faire l’équivalent sous Android.

Ressources dont le module dépend
  • Bibliographie
    • voir les liens ci-dessus
Exemples d’utilisation du module
  • pour afficher des données audio, de spectre, d’histogramme, …
  • pour afficher des résultats d’enquêtes SES, d’étude de marché
  • pour afficher un tableau de bord complexe pour votre programme
Résultats attendus
  • il s’agit de déterminer les besoins de votre sujet, de créer une série de mises en oeuvre de la bibliothèque dans des situations qui seront réutilisables dans votre projet, et de tester ces mises en oeuvre sur des exemples.
Séquencement
Le séquencement précis de ce module par rapport aux PANs est flexible et sera négocié au début du module.

Module : La visualisation en relief

La Visualisation en Relief
  • Jean Le Feuvre
  • Yves Mathieu
Descriptif
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.

Module : La synthèse d’images 3D

La synthèse 3D
proposé par :

  • Jean Le Feuvre, jean.lefeuvre_at_telecom-paris.fr
  • Jean-Marc Thiery (jean-marc.thiery_at_telecom-paris.fr)
Descriptif
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

Une introduction à l’illumination global est disponible ici: introduction global illumination

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.

Comme celui-ci: Big Buck Bunny

  • Modèles

Pour charger un model 3DS en JAVA consultez: Model Loading

(pour créer des 3DS dans Blender: export->3DS)

Pour charger un model OBJ en JAVA consultez: OBJ Loader

(pour créer des OBJ dans Blender: export->Wavefront OBJ)

Un tutoriel vidéo est ici: Tutoriel ou pour la version précedente: Tutoriel <2.5

Il y a plusieurs ressources de modèles de haute qualité: aim@shape, inria gamma repository, or turbosquid.

  • Théorie

Comme point d’entrée à la théorie derrière les coulisses est le cours Geometric Modeling Based on Polygonal Meshes

Exemples d’utilisation du module
  • Affichage de mondes virtuels
  • Jeux
  • Effets visuels
  • Aide au traitement des images
Objectifs Pédagogiques
  • 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