baner
osirix

Édition interactive de rendu

Contexte

Le chef-d'oeuvre est un projet de fin d'études pour la formation Master 2 Informatique, Image et Multimédias de l'université Paul Sabatier à Toulouse. Il s'agit d'un projet en groupe qui a pour but d'utiliser les compétences acquises tout au long de la formation, dans un projet de grande ampleur.

Ce projet nous a été confié par Monsieur David VANDERHAEGHE, maître de conférence à l'Université Paul Sabatier, Toulouse III.

Objectifs

Le but de ce chef d’oeuvre est de permettre l’édition interactive d’images de synthèses, en agissant sur les différents aspects visuels qui la composent. Pour cela, il faudra implémenter les différents algorithmes et techniques présentés dans les sources suivantes : "Interactive Reflection Editing" et "Interactive On-Surface Signal Deformation". Ces papiers concernent l'édition intéractive de rendu, et permettent de modifier une scène avec des modifications physiquement non réalistes, mais visuellement plausibles.

Le produit devra permettre à l’utilisateur final de modifier de manière interactive le rendu d’une scène 3D sans en modifier la géométrie. Pour cela, l’utilisateur pourra spécifier des modifications - appelées « contraintes » - de l’apparence de l’image sur des zones spécifiques de la scène, grâce à une interface. Le produit devra permettre à l’utilisateur d’imposer plusieurs modifications simultanées, lui permettant ainsi de créer des effets de rotation et/ ou de mise à l’échelle.

Résultats

Notre conception utilise le patron d’architecture MVC (Mod&egrav;le Vue Contrôleur), afin de garantir de bonnes interactions entre l’interface (IHM) et le logiciel. Le contrôleur s’assure donc de la bonne transmission des événements afin que les méthodes soient appelées au bon moment.

Voici les fonctionnalités que nous avons mis en place :

1) Sélection d’un mode
La fonction de sélection d’un mode est gérée par l’IHM de notre programme, lorsqu’elle se lance l’application OSIRIX permet à l’utilisateur de choisir entre le mode « Sur la surface » et le mode « Reflexions ». Chacune d’elles proposant à l’utilisateur d’effectuer les opérations propres au mode. Nous n’avons pas implémenté le mode « Sur la surface » mais notre application met à jour, suite au clic de l’utilisateur, les tableaux de contraintes dans notre classe gérant la scène (openglwidget). Il faudrait aussi changer le pipeline de rendu de l’application (ne faisant également pas la même chose selon le mode) changer les shaders à utiliser etc.

2) Créer une contrainte
La fonction créer une contrainte permet d’ajouter une contrainte sur la scène. Elle s’exécute après que l’utilisateur ait cliqué sur le bouton « ajout d’une contrainte » le curseur de la souris change et suite à un clic de l’utilisateur une contrainte est crée et ajoutée à la liste de contraintes de la scène (dans openglwidget). Une contrainte, comme spécifié dans nos précédents rapports, aura une influence inversement proportionnelle à la distance des points sur lesquels elle s’applique. Visuellement l’utilisateur voit un cube rouge apparaitre à l’endroit de son clic symbolisant la contrainte, qui est lié à un autre cube vert qui est le point réfléchi (point de destination de la contrainte de réflexion).

3) Créer une région d’intérêt
La fonction créer une région d’intérêt est implémentée, c’est le constructeur d’une région d’intérêt, l’utilisateur peut suite à ses clics déterminer une région d’intérêt euclidienne aillant un centre et un certains rayon. Visuellement le centre est de couleur bleu. Cette zone détermine la zone d’effet d’une contrainte, conformément aux précédentes spécifications l’influence des contraintes sur les points dans la région d’intérêt varie de 1 à 0 : proche de 0 aux bords et proche de 1 au centre.

4) Relation entre un point 2D et un point 3D
La fonction unProject (également appelée findPoint dans des rapports précédents)a été implémentée quasi totalement par le client, elle permet à partir de deux coordonnées (un pixel) d’obtenir sa position dans la scène (un point en 3D). Comme décrit dans les rapports précédents cette fonction intervient fréquemment dans notre programme pour permettre à l’utilisateur d’effectuer ces actions avec la souris directement sur la scène qu’il souhaite modifier.

5) Figer les réflexions
La fonctionnalité figer les réflexions n’a pour l’instant pas été implémenté, nous ne savons pas si elle le sera lors de la présentation. Car pour l’instant nous n’avons pas tout à fait terminé l’édition des réflexions. Cependant nous avons prévu un bouton pour cette fonctionnalité dans l’interface ainsi que placé les méthodes à remplir dans notre code pour son fonctionnement.