Xavier Marchal - Construction de courbes 3D à partir de courbes 2D - resultats

De Ensiwiki
Aller à : navigation, rechercher


Construction de courbes 3D à partir de courbes 2D

Labo INRIA
Equipe Bipop/Evasion
Encadrants Florence.Bertails@inrialpes.fr Franck.hetroy@imag.fr, Florence.Bertails@inrialpes.fr

Etudiant

Xavier Marchal, étudiant 2A Ensimag filière générale

Introduction

Le stage s’inscrivait dans le contexte d’une collaboration en cours entre l'INRIA et un studio d’animation français, dont l’objectif est de réaliser un film intégrant de nombreuses scènes de chevelures stylisées en mouvement. L’un des enjeux principaux de la collaboration est de parvenir à un modèle physique de chevelures à la fois réaliste et facilement contrôlable par un artiste.

Florence Bertails a proposé il y a quelques années un modèle mécanique de Super-Hélice [BAC+06], constitué de morceaux d’hélices circulaires, qui permet de simuler efficacement le mouvement d’un cheveu de forme quelconque (lisse, ondulé, bouclé). Grâce à cette primitive de base, il a été possible de générer des animations de chevelures complètes.

BOucleDanceSeq.jpg

Un problème non résolu concerne la modélisation d’une chevelure quelconque à partir de ce modèle physique. En effet, l'utilisateur doit pour l'instant fournir manuellement des paramètres physiques et géométriques en entrée pour générer une courbe 3D (hélice par morceaux) ayant une certaine forme sous la gravité (forme au repos), mais inversement, il n'est actuellement pas possible, à partir d'une forme de courbe donnée (ou dessinée en 2D), d'obtenir le calcul automatique de la Super-Hélice (i.e. de ses paramètres physiques et géométriques) correspondante.

Ressort.jpg

Cette application se révèlerait cependant très utile en modélisation/animation 3D de chevelures, car un infographiste souhaitera typiquement contrôler directement la forme d'une chevelure au repos par le dessin de courbes, plutôt que de manière indirecte, par le réglage fastidieux de paramètres physiques. L'idéal serait en fait pour l'artiste de disposer d'une interface de croquis 2D qui permette de générer automatiquement dans la scène une Super-Hélice 3D dont la forme au repos se projette de la manière la plus précise possible sur la courbe 2D tracée par un infographiste.

Une propriété intéressante de l'hélice circulaire est que ses projections en perspective cavalière donnent des courbes 2D qui appartiennent toutes à la famille des trochoïdes [Mathcurve]. Mon stage proposait donc deux axes principaux de recherches : approcher une courbe 2D quelconque par une thochoïde, puis retrouver la courbe 3D dont la trochoïde trouvée est la perspective cavalière. Le temps qui m'était imparti ne m'a permis que de traiter la première partie du sujet.

Eléments de pré-requis

Je rappelle l'essentiel des notions mathématiques à connaître pour mon sujet. Je détaille plus en détail ces notions dans mon rapport (voir lien ci-dessous)

Trochoïdes

On désigne par trochoïde la courbe décrite par un point lié à un cercle de rayon R qui roule sans glisser sur une base. Dans le cas ou cette base est une figure possèdant un centre de rotation, on dit de la trochoïde qu'elle est à centre. Dans notre cas, nous étudions les trochoïdes dont la base est une droite.\\

La distance entre le centre du cercle et le point est noté d.

Dessin trochoide.jpg

Dans le cas où la base est l'axe des abscisses, l'équation paramétrique d'une trochoïde est la suivante :

x(t) = R.t-d.sin(t)

y(t) = R -d.cos(t)

Selon les valeurs des paramètres R et d, les trochoïdes sont différentes :

d<R : Trochoïde raccourcie

Le point est à l'intérieur du cercle roulant et la courbe tracée ressemble à un sinusoïde. La courbe possède des points d'inflexion. On remarque aussi que la courbe n'intersecte pas la base.

Trochoide raccourcie.jpg

d>R : Trochoïde rallongée

Le point est à l'extérieur du cercle et la courbe tracée peut prendre diverses formes, avec de plus en plus de points doubles à mesure que d augmente.

Trochoide rallongee.jpg

d=R : Cycloïde

L'égalité des deux paramètres donne une cycloïde. Cette courbe est la trochoïde qui a été la plus étudiée par les scientifiques grâce à ses caractéristiques nombreuses.

Cycloide.jpg

Dans notre étude, nous remarquons que ses points d'intersections avec la base sont des points de rebroussement de première espèce et que sa radiale (cf ci-dessous) est un cercle de rayon 2R.

L'étude des points caractéristiques des trochoïdes (inflexion, rebroussements) est effectuée dans mon rapport.

Seconde interprétation géométrique

On peut aussi définir les trochoïdes comme les trajectoires d'un mouvement rectiligne uniforme couplé à un mouvement circulaire. Autrement dit, si nous traçons un cercle de rayon d sur un tableau qui coulisse à une vitesse régulière, on trace une trochoïde.

Feuille mobile.jpg

Radiales

On construit la radiale d'une courbe (G) (associée à un point O fixe) en calculant pour chaque point d'une courbe Mi les coordonnées du centre de courbure en ce point Ci. On ramène la valeur du vecteur MiCi au point 0. Autrement dit, la radiale est le lieu de l'extrémité du vecteur rayon de courbure, attaché à un point fixe.

Radiale.gif

Dans le cas de la cycloïde, la radiale est un cercle de rayon 2R.

Travail réalisé

Il semble intéressant de trouver une propriété caractéristique des trochoïdes qui permettrait de justifier d'une courbe quelconque qu'elle est une trochoïde.

En effet, l'utilisateur (a priori un infographiste) va tracer une courbe quelconque sur sa palette graphique, notre algorithme doit donc analyser une propriété de cette courbe et la comparer avec une propriété des trochoïdes (voire l'approcher selon un degré d'erreur défini auparavant).

Etude des radiales des trochoïdes

Une des propriétés intéressantes des cycloïdes est que sa radiale est un cercle. Approcher une courbe quelconque par une cycloïde reviendrait alors à calculer la radiale de la courbe et voir si elle ressemble à un cercle (et à partir des données sur le cercle, on retrouverait la cycloïde de base). Dans un premier temps, mes recherches se sont portées sur les radiales des trochoïdes.

Les propriétés que j'ai trouvées se sont révélées intéressantes : En effet, j'ai notamment démontré que la forme d'une radiale de trochoïde ne dépend que du facteur R/d. Selon la forme de la radiale, je peux donc déduire de quelle trochoïde elle provient.

De plus, j'ai remarqué pratiquement (puis théoriquement) que les radiales des cas R=d et R/d=0 donnent des cercles. Ce résultat était encourageant pour la suite de ma recherche.

Bla2.jpg

Malheureusement, je n'ai pu trouver par la suite des équations parfaites ou simples pour caractériser les cas où R est différent de d, même si on pouvait espérer trouver des résultats intéressants d'après l'étude des deux cas précédents. Les courbes ressemblent à des cercles aplatis aux pôles dans le cas des trochoïdes allongées, à des hyperboles dans le cas des trochoïdes raccourcies, et à une droite dans le cas où d=0 (la radiale d'une droite est une droite).

Bla1.jpg Bla3.jpg

Ainsi, nous avons jugé qu'il n'était pas intéressant de retenir la radiale comme une propriété intéressante, car ceci aurait nécessité d'approcher la radiale par un cercle ou une hyperbole pour retrouver les valeurs (R et d). Il nous a semblé plus intéressant de chercher une autre propriété qui donnerait une courbe parfaite, définie par une équation théorique et simple d'utilisation.

Recherche d'un algorithme en reprenant la seconde interprétation géométrique des trochoïdes

La piste de la radiale n'ayant pas aboutie, son étude m'a permis de penser qu'il faudrait trouver une propriété des trochoïdes où la courbe approchée serait théoriquement un cercle ou une droite (car il est facile d'approcher de telles courbes).

Nous avons ensuite centré nos recherches sur l'interprétation géométrique des trochoïdes : Un cercle qui roule sur une droite. Nous avons alors pensé qu'il serait alors intéressant, à partir d'une trochoïde de pouvoir retrouver le cercle et la base qui lui ont donnés naissance.

J'ai alors réussi grâce à une étude du site Mathcurve.com, à démontrer qu'à partir d'une trochoïde d'équation y=f(x), le cercle générateur à pour équations polaires, dans le cas où la base de la trochoïde est supposée sur l'axe des abscisses :

Equation.jpg

Un cercle étant facile à approcher (voir rapport), ces équations permettent de déduire une bonne caractéristique des trochoïdes. J'ai déduis mon algorithme de celle ci.

Cependant, nous avons supposé que la base était sur l'axe des abscisses, mais a priori, il n'y aucune raison que cela soit le cas. De ce fait, il faudra rechercher, pour une courbe quelconque, la base de la trochoïde cherchée, puis effectuer une translation/rotation pour revenir au cas où la base est l'ae des abscisses (l'étude complète se trouve dans le rapport).

J'ai démontré notamment qu'une trochoïde rallongée coupe la base en des points dont la tangente à la courbe est verticale. Cette propriété n'est valable que dans ce cas, et je n'ai pas trouvé une telle propriété pour les trochoïdes raccourcies. Mon algorithme n'est donc valable que pour les trochoïdes rallongées.

Résumé de l'algorithme théorique trouvé

Je récapitule les différentes étapes de mon algorithme pour approcher une courbe quelconque par une trochoïde :

1. Trouver la base de la trochoïde

2. Effectuer une rotation/translation pour revenir à une base située sur l’axe des abscisses.

3. Appliquer les formules pour obtenir un ensemble de points

4. Vérifier que l’ensemble de points est un cercle et trouver le rayon (~d) et les coordonnées ([0,~R]) du centre

5. En déduire les paramètres R et d adaptés

Implémentation informatique

L'algorithme précédente permet d'approcher une courbe par UNE trochoïde. Pour approcher de manière efficace n'importe quelle courbe, il semble intéressant d'approcher la courbe par une trochoïde par morceaux.

La partie difficile du problème est de savoir quels morceaux de courbes doit-on approcher différemment du reste. Après avoir réfléchi longtemps, nous avons conclu qu'il était intéressant de chercher des points caractéristiques de la courbe, et trouver la trochoïde la plus adaptée entre ces points.

Les points de courbure minimales et maximales ont semblé intéressants car nous devons rechercher ces points pour trouver la base.

Decoupage courbe.jpg

Une fois le découpage effectué, on applique l'algorithme décrit précédemment pour approcher chaque partie de la courbe. Enfin, on conclut l'algorithme en appliquant une fusion des trochoïdes si celles-ci possèdent une base identique et des paramètres proches.

Pour cela, nous avons convenu d'utiliser une programmation dynamique pour fusionner les trochoïdes selon un seuil d'erreur d'approximation demandé par l'utilisateur. Cette manière de faire a déja été effectuée dans des algorithmes d'approximation par des clothoïdes (voir référence M.McRae). Il me semble que cette manière est intéressante, même si je n'ai pas poussé mes recherches dans ce domaine (par manque de temps)

Conclusion

La première partie mathématique du stage est pratiquement finie, hormis pour le cas des trochoïdes raccourcies. Je n'ai pas trouvé de méthode pour trouver la base, même si mes recherches à ce sujet pourraient aboutir (voir section 4.3.2 du rapport).

Il ne reste maintenant qu'à finaliser l'implémentation informatique de celle ci. Néanmoins, il reste encore un travail conséquent à réaliser pour arriver à la finalité du programme : Il faudrait maintenant, à partir d'une courbe approchée par une trochoïde par morceaux, générer la courbe en trois dimensions dont la trochoïde est la perspective cavalière. Il faudra aussi retrouver les paramètres pour construire cette hélice. Cela nécessitera à priori une nouvelle étude mathématique.

Références

  • [BAC+06] - F. Bertails and B. Audoly and M.-P. Cani and B. Querleux and F. Leroy and J.-L. L'évêque, Super-Helices for Predicting the Dynamics of Natural Hair [1]
  • Trochoïdes sur Mathcurve [2]
  • Roulantes et roulettes sur Mathcurve [3]
  • Radiales sur Mathcurve [4]
  • Transformée de Hough [5]

Documents additionnels