Interpolation de formes 3D
Projet Réalisé par Loïc GUIGNOT (promo 96)
Description du projet
. Le projet consiste en l'utilisation d'une nouvelle méthode de
"morphing", qui consiste à faire partager aux polyèdres de
départ et d'arrivée la même topologie (ie les mêmes
points/arêtes) pour minimiser durant la transformation les distortions
locales. Il gère de plus intelligemment la recherche de cette topologie
en évitant un maximum de calculs inutiles.
La fusion des deux topologies se fait par projection sur la sphère
avec création des points intersections de segments de chacun des
deux objets d'origine A et B.
Algorithmes utilisés
Algorithme global :
Lecture des fichiers triangulés
Pour chaque arête de A
Trouver la face de B où l'extrémité de l'arête
se projette
Ajouter les trois segments supports de la face trouvée à
la WorkList
Tant que la WorkList n'est pas vide
Si l'arête de A intersecte celle de la WorkList (en projection)
Alors calculer la position sur les deux segments du point d'intersection
Noter les 2 faces de A et les 2 faces de B qui s'appuient sur ce point
Rajouter les arêtes de la face de B où vient de déboucher
l'arête projetée de A à la WorkList
Supprimer la première arête de la WorkList
Ajouter les extremités de l'arête de A à la structure
finale en notant les faces de A et de B s'appuyant sur ces points
Pour chaque point de B
Trouver la face de A où le point se projette
Noter toutes les faces de B et celle de A qui s'appuient sur ce point
Regrouper les points (à double coordonnées : initiale et
finale) en fonction des faces de A et B notées
Reconstituer ainsi les faces avec les points en ordre trigonométrique
(face sortante)
Trianguler les faces
Générer les fichiers de sortie .OFF par barycentrage
des coordonnées initiales et finales de chaque point
En ce qui concerne la recherche de la face sur laquelle un point se
projette, une méthode qui évite une liste exhaustive de tests
consiste à trouver la position du point relativement au plan formé
par le centre et une arête, puis à procéder ainsi de
face en face en testant uniquement les arêtes de la face candidate.
Ci-dessous on trouve la face 2.
.
Résultats obtenus
On fait le morphing obtenu entre deux tétraèdres pour avoir
ceci :
A l'heure actuelle, le programme a encore du mal à traiter tous
les cas de figure et ne donne pas toujours de résultat?
Problèmes rencontrés et solutions apportées
Le sujet initial proposait de calculer les intersections des arcs (projections
des segments sur la sphère) pour former les nouveaux points En pratique,
le calcul de l'intersection ne s'appuyait que sur la direction des points
supports des segments, de sorte que l'on peut éviter de transiter
par la sphère en combinant cette étape avec la projection
du point créé sur les polyèdres d'origine.
Le projection des points ainsi crées sur les segments et les
faces des polyèdres d'origine n'est malheureusement pas immédiate.
Grâce à la géométrie, on trouve néanmoins
des formules épargnant l'approximation d?une résolution numérique.
La génération des faces finales n'est pas évidente..
En fait, ces faces sont, crées comme intersection des projections
sur la sphère d'une face de A et d'une face de B. En notant ces
informations de face avec les points crées, on regroupe face par
face les points supports . Sachant que les objets initiaux étaient
triangulés, et que les faces obtenus n'ont ainsi qu'entre 3 et 6
points, il suffit alors de parcourir ces points dans l'ordre " face sortante
". Une dernière étape de triangulation est nécessaire
car si les points de la face sont coplanaires au début et à
la fin de la transformation, ils ne le restent pas durant le mouvement.
Limites rencontrées
La conception même de la méthode de résolution
implique de ne traiter que le cas d?objets étoilés. Trois
problèmes se posent donc :
-
Pour un centre donné, comment savoir (rapidement) s'il voit tout
l'intérieur de l'objet ? On peut essayer de voir si, dans une direction,
il se projette sur plusieurs faces grâce aux outils développés
pour l?interpolation, les directions se limitant à celles passant
par le barycentre d?une face.
-
Pour un objet donné, quel est le lieu (connexe) des points voyant
tout son intérieur ? Le barycentre est le meilleur candidat, mais
il est difficile d'aller au-delà.
-
Pour un objet non étoilé, comment adapter la méthode
d'interpolation ? La solution semble être d'appliquer la méthode
précédente uniquement à des parties étoilées,
mais en laissant les faces de " raccord " vides.
Jusqu'ici, la méthode d'interpolation bute dès qu'un point
d?un objet se projette sur un point ou un segment de l'autre objet. Deux
solutions complémentaires sont envisageables :
-
Il est possible de faire une rotation d'un objet pour éviter de
telles " percussions ". Cela change néanmoins la façon dont
le morphing va se dérouler.
-
Sinon il faut envisager tous les cas contrariants (particulièrement
fastidieux) ce qui modifie tous les raccourcis de la méthode.
Retour
à la liste des projets réalisés