Jean Le Feuvre (jean.lefeuvre_at_telecom-paristech.fr, 9694, bureau 5D33)
Descriptif
Pour certaines applications multimédia, il est parfois nécessaire de diffuser ou de lire en temps-réel des données audio-vidéo, sous-titres, etc. Cette diffusion et cette lecture mettent en oeuvre des techniques dites de streaming qui décomposent les données en portion d’un flux audio/vidéo. Chaque portion est capturée, diffusé et lues à des instants précis. Cela permet à la fois de commencer la lecture des données avant de les avoir toutes reçues, mais aussi de limiter la quantité de données à stocker, ce qui peut être intéressant pour des périphériques mobiles.
Ressources dont le module dépend
Bibliographie
Java Media Framework: http://www.oracle.com/technetwork/java/javase/tech/index-jsp-140239.html
Android Media Player API: http://developer.android.com/guide/topics/media/mediaplayer.html
Exemples d’utilisation du module
Réalisation d’un système client/serveur de capture, diffusion et lecture audio/vidéo
Diffusion en temps réel d’informations pour la télévision
Résultats attendus
connaissances: principes de base du streaming et de certains protocoles associés
compétence : écriture d’un programme en Java manipulant les protocoles de streaming.
livrable 1: programme qui diffuse une vidéo en streaming, lue par un lecteur mutlimédia type VLC
livrable 2: programme qui lit une vidéo en streaming
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.
Antoine Amarilli, C201-4, antoine.amarilli_at_telecom-paris.fr
Louis Jachiet, louis.jachiet_at_telecom-paris.fr
Descriptif
Une système de gestion de bases de données est un service permettant de stocker, d’organiser et contrôler l’accès à des données structurées. La mise en oeuvre d’un tel service suppose que la structure des données ait été pensée et adaptée aux besoins de traitement de ces données. Les bases de données relationnelles (organisées en tables ou relations) sont très populaires et bien adaptées aux besoins de nombreuses applications. On distingue souvent la tâche de conception du schéma (structure logique) de la base de donnèes de la tâche d’exploitation de la base de données, à l’aide du langage standard SQL dans le cas du modèle relationnel. Le but de ce module est de vous permettre d’intégrer un composant base de donnée (depuis la conception de la base, jusqu’à la manipulation de son contenu).
Jean-Claude Dufourd, 9691, bureau 5D30, dufourd@telecom-paris.fr
Descriptif
L’utilisation de smartphones ou de tablettes est devenue depuis quelques années presque incontournable. Parmi les différents systèmes d’exploitation permettant de contrôler ces smartphones et tablettes, le système Android représente près de la moitié des périphériques. La programmation des smartphones ou tablettes Android fait appel au langage Java, vu lors du cours INF103. Elle ne devrait pas poser de difficulté majeure, néanmoins une des difficultés souvent rencontrées est la prise en main de l’environnement de développement et des spécificités des applications Android. Ce module a pour vocation d’aider les élèves à surmonter cette difficulté.
Application Android avec une interface graphique simple
Application Android utilisant la caméra d’un téléphone mobile
Application Android utilisant l’écran tactile d’une tablette
Objectifs Pédagogiques
Informatique : prendre en main l’environnement de développement Android, comprendre le fonctionnement d’une application Android, savoir lire et utiliser la documentation des API Android, savoir créer une application Android de base et utiliser certaines fonctionnalités avancées (affichage graphique, réseau, multimédia …), savoir debugger une application
Résultats attendus (A affiner selon vos besoins)
PAN2 :
Réaliser une application Android sur émulateur mettant en oeuvre le cycle de vie, l’enchaînement de plusieurs activités, y compris en tâche de fond, et le lancement d’une autre application.
PAN3 :
Réaliser une application spécifique (à définir en fonction des besoins du projet). Cette application fonctionnera sur un smartphone ou une tablette et pourra mettre en oeuvre:
la communication via le réseau, par exemple selon le protocole HTTP,
un affichage graphique simple avec quelques éléments interactifs,
la lecture ou la capture de données multimédia (son, image, vidéo)
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é)
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