Interpolation d'objets 3D
Projet Réalisé par Yéong
Sy (promo 96)
Description du projet
Communément appelée "morphing 3D", l'interpolation
d'objets 3D aborde le problème du passage continu d’une forme tridimensionnelle
à une autre.
Les objets 3D sont décrits par des modèles
orientés points et facettes. La visualisation est assurée
par un programme auxiliaire sous Unix.
Le but est de réaliser un programme, prenant
en entrée un objet A et un objet B, qui génère une
série d'objets intermédiaires en vue de réaliser une
animation non brutale d'une transformation de l’objet A vers l’objet B.
L’intérêt de la méthode que l’on se propose d’implémenter
est de pouvoir effectuer toute cette transformation de façon complètement
automatique, sans nécessiter d'intervention humaine, contrairement
à ce que l'on rencontre encore dans beaucoup de logiciels grand
public du commerce.
Etude du problème
Le problème de l’interpolation d’objets
3D peut se diviser en 2 parties :
La correspondance et l’interpolation
à proprement dite.
La correspondance
Cette partie consiste à déterminer où
un point de l’objet A va se retrouver sur l’objet B. Tout le travail va
être de fusionner les 2 modèles en ajoutant des points afin
d’obtenir pour A et B de nouveaux modèles avec des points qui pourront
être mis en correspondance de façon simple.
Toute l’idée de l’algorithme de fusion consiste
à projeter les modèles sur la sphère unité
et à trouver toutes les intersections entre arêtes des 2 modèles.
(cliquer ici pour
une description plus détaillée de l'algorithme de fusion
en pseudo-code)
Une fois tous les points du modèle fusionné
établis, il faut énumérer les faces de (Ma)n et (Mb)n
par un certain algorithme de parcours de graphe.
L’interpolation
Cette partie de la transformation consiste à
calculer les modèles intermédiaires de la transformation
à différents instants t, en vue de l’animation.
En fait, elle est extrêmement simple car la
correspondance est immédiate entre un point va de l’objet
A et son vis-à-vis vb sur l’objet B.
Et la détermination des coordonnées
d’un point interpolé entre ce point va et vb se réduit alors
à un calcul du type :
f(t) x (coordonnées
de va) + (1-f(t)) x (coordonnées de vb)
f : fonction comprise entre
0 et 1 qui donne le chemin de la transformation.
Pour les facettes, c'est encore plus simple puisqu'il
n'est pas nécessaire de les recalculer.
Il suffira de mettre ces données dans un
fichier tampon et de faire un copier-coller.
Limites de la méthode
L’algorithme décrit est limité dans sa
phase de correspondance.
D’abord, il ne peut traiter que des objets topologiquement
équivalents à la sphère - étoilé - à
cause de la projection sur la sphère unité.
Une extension possible du problème consisterait
à passer par les enveloppe convexes des objets pour des objets non
étoilés.
Ensuite, il ne peut résoudre le problème
de points tombant exactement sur une arête, puisque l’algorithme
repose sur la détermination de la facette de l’objet B qui contient
les points de l’objet A.
Dans toute la phase de test, afin d'éviter
tous les cas pathologiques, on fait subir à un des 2 modèles
de petites rotations selon les 3 axes.
Résultats
Voici une suite d'images de l'interpolation d'une sphère
vers un cube.
Les résultats obtenus sont assez décevants.
Même sur des modèles d'objets relativement simples - sphère
et cube -, des défauts d'affichage apparaissent.
De plus, le nombre d'intersections explose assez rapidement. De ce
fait, les temps de calcul augmentent et l'animation devient alors très
lente.
En outre, cette projection sur la sphère, du
fait du choix plus ou moins arbitraire du centre de la projection, a tendance
à grossir de façon "inharmonieuse" certaines parties des
objets.
Retour à la liste des projets réalisés