L’étude d’OpenGL et du code de « Mesa » ma permis de créer une librairie de fonctions indépendante de la plate-forme hôte.
Ces fonctions sont destinées à l’animation de systèmes d’atomes ou de molécules. Elles sont très générales et ne limitent pas l’utilisation de la librairie à ces seules animations. Ce sont des fonctions d’affichage de systèmes de particules reliées ou non entre elles, des fonctions d’affichage de formes symétriques de bases comme le cube, l’icosaèdre, le dodécagone et des approximations de sphères. Ces dernières ont été lissées et optimisées.
D’autres fonctions sont adjointes afin de faciliter l’implémentation d’applications utilisant les librairies OpenGL. Ce sont des fonctions récurrentes dans les implémentations OpenGL (création d’une fenêtre et configuration de l’environnement OpenGL , perspective en fonction de la taille de la fenêtre, matériaux de base,...).
Cette librairie contient aussi des fonctionnalités qui permettent d’utiliser des lignes d’épaisseur variable (en fonction de la distance). Cette librairie permet également de configurer interactivement la caméra avant et pendant l’animation.
Enfin, cette librairie ne restreint pas l’utilisation d’OpenGL et elle a été conçue pour être utilisée avec n’importe quel langage de programmation. Cette librairie peut être utilisée sur des PC, des stations de travail ALPHA et Silicon Graphics. Elle fonctionne sous les systèmes d’exploitation utilisant les librairies OpenGL (UNIX, Windows NT et 95,...).
L’étude des librairies graphiques, des mécanismes d’animation et l’étude particulière sur la modélisation d’une caméra virtuelle ont permis la création d’un programme d’édition d’images de synthèse. Cette application permet la gestion d’une caméra virtuelle dans un amas d’objets graphiques. Dans le cas présent, ces objets sont des particules.
L’application crée une animation d’images de synthèse 3D à partir de fichiers contenant les positions des atomes. Elle permet d’attacher la caméra à une particule pour une série d’images.
Elle introduit également la possibilité de suivre une particule tout au long de l’animation. L’interface permet une gestion simple et efficace de la caméra : elle permet d’attacher, de détacher la caméra ou le point qu’elle fixe en sélectionnant l’objet graphique au moyen de la souris.
L’application permet aussi de gérer l’aspect des objets graphiques. Elle permet de choisir la taille et la forme des atomes et des liens qui les unissent.
Le programme donne à l’utilisateur la possibilité de visualiser entièrement ou partiellement l’animation en temps réel. Il autorise également la navigation au sein de la série d’images. L’utilisateur peut se positionner sur une image particulière et y effectuer des modifications.
Enfin, l’application permet un rendu de type « Phong » des images de l’animation. Elle sauvegarde sur disque les images dans un format graphique. Les formes utilisées pour ces images sont plus précises et donnent une image de meilleure qualité.
Ce programme à été implémenté avec « Microsoft Visual C++ 4.0 » et OpenGL. Il est destiné à fonctionner sous Windows NT 4.0 (ou 95) ou ultérieur.
L’élaboration de ces applications m’a permis de réaliser l’analyse complète d’un projet informatique conséquent. Cette analyse comporte tous les processus d’élaboration d’un logiciel allant des spécifications à la mise en place. Elle m’a permis d’apprendre à décomposer un projet informatique en tâches élémentaires planifiées dans le temps.
La conception de l’interface m’a permis d’apprendre les conflits entre ergonomie et éventail d’options. Elle m’a également appris les techniques de base pour la création d’interfaces à base d’icônes.
Ce mémoire m’a permis d’apprendre la programmation d’une librairie portable, non restrictive et générale ainsi que les pièges d’une programmation indépendante de la plate-forme. L’implémentation de cette librairie m’a montré les problèmes de compatibilité entre optimisation, portable et « linkable »avec tous les langages.
Ce travail m’a également permis d’apprendre différents formats de fichiers graphiques tels que les formats « BMP », « PPM », « AVI »,...
Le travail au sein du Centre de Recherche en Modélisation Moléculaire m’a donné l’opportunité d’utiliser des stations dédiées au graphisme (Silicon Graphics), des DEC Stations Alpha 3800 et un DEC Alpha Server 8400 à mémoire partagée.
Ce mémoire a autorisé l’analyse des problèmes liés à l’animation de particules et en l’occurrence des systèmes d’atomes reliés entre eux. Il m’a également permis d’utiliser des langages graphiques de dernière génération (GL et OpenGL ). L’étude particulière de ces langages m’a permis de modifier ces langages pour une application particulière dédiée à l’animation.
La création des applications a permis une étude de tout le processus de création d’images de synthèse. Elle a permis l’étude des problèmes d’habillage et d’optimisation des formes, de l’éclairage d’une scène, des méthodes d’élimination des faces cachées et des types de rendus. Mais elle a principalement permis l’étude des mécanismes et techniques d’animation ainsi que la modélisation d’une caméra virtuelle.
Les différentes implémentations m’ont permis d’utiliser les mécanismes d’animation par « clefs d’interpolations », « avec liens hiérarchiques », « cinématique directe », « procédurale » et contrôlée par la dynamique ».
Enfin, la création d’une caméra virtuelle m’a permis de définir les différents types de caméras : la caméra libre, embarquée et « intelligente » ainsi que leur implémentation et les problèmes d’orientations qui leur sont liés.
Les implémentations effectuées pour ce mémoire sont générales et ne se limitent pas à la simple animation de molécules ou d’atomes. Mis à part les fonctions d’affichage, toutes les fonctions peuvent être réutilisées pour n’importe quelle animation.
La librairie « GL_PLUS » à été conçue pour l’animation 3D en général. Elle est composée des fonctions de base pour l’animation temps réel. Elle comporte en plus des fonctions spécifiques à l’animation de particules. Mais elle peut servir à afficher n’importe quelle simulation. Les fonctionnalités d’OpenGL permettent par exemple de définir des objets complexes sous forme de listes. L’utilisation du type d’affichage « USER » donne à l’utilisateur la possibilité de définir dans une liste n’importe quelle forme. Pour ce faire, il suffit de créer une liste pour l’affichage de l’objet et de donner pour l’atome correspondant à cette forme la position et comme couleur le numéro de la liste. L’ensemble des atomes peut alors être considéré comme un ensemble d’objets dont la composante « index » ne donne plus la couleur mais le numéro de liste de l’objet.
Le terme objet doit être pris au sens large. Les listes peuvent contenir autre chose qu’une forme. Elles peuvent, par exemple, être des lumières, des couleurs ou des transformations.
L’application « MoleView » pourrait être étendue afin de pouvoir sauvegarder les images dans plusieurs formats de fichiers. Elle pourrait également créer directement des fichiers « AVI », « MOV » ou « MPG ».
La gestion de la caméra pourrait être plus souple. Elle pourrait se faire en définissant la trajectoire de la caméra tout au long de l’animation. Un éditeur pourrait être ajouté à l’application afin de définir ces trajectoires de caméra. Les propriétés de la caméra pourraient également être modifiables. Dans la version actuelle il est nécessaire de créer un atome fictif ayant la trajectoire voulue.
Il serait également intéressant d’avoir plusieurs « viewport » afin de pouvoir mieux se repérer dans l’espace. Les différentes vues pourraient donner une vue du haut, de la gauche et de face de la scène. La sélection pourrait se faire dans n’importe quelle vue et n’affecter que le « viewport » donnant la vue de la caméra.
L’application « MoleView » est, dans son état actuel, moins souple que la librairie « GL_PLUS ». Mais elle peut servir non seulement à visualiser et animer des molécules ou atomes mais également toutes formes composées de segments de droite. Cette application pourrait être modifiée pour pouvoir lire des formats de fichiers contenant leurs propres fonctions d’affichage ou des fichiers d’images de synthèse standards tels que les « DXF » ou « 3DS ». Cette modification permettrait, sans modification du reste de l’application, d’utiliser l’application pour créer des films plus généraux car les algorithmes utilisés ne sont pas dépendants du type d’animation.
Ce mémoire est destiné à l’étude microscopique des phénomènes de mouillage. Il permet de descendre d’un niveau dans l’étude : il autorise le passage d’une étude d’un ensemble de molécules à l’étude d’une molécule et de son voisinage proche.
Il utilise tous les concepts d’infographie et tous les concepts d’animation temps réel : de la création de formes aux rendus d’images en passant par la gestion de caméra virtuelle et l’optimisation du code.
Il a été réalisé dans le cadre d’animation de molécules ou d’atomes mais ne se résume pas à ces seules animations.
Tous les concepts et implémentations utilisés sont généraux. Ils ont été réalisés dans une perspective d’évolution. Ils peuvent être utilisés dans toutes les applications se rapportant à l’animation.