• Aucun résultat trouvé

Méthodes géométriques (ABF et ABF++)

Dans le document Géométrie Numérique (Page 62-69)

3.3 Libérer le bord

3.3.6 Méthodes géométriques (ABF et ABF++)

Cette section présente la méthode ABF (Angle Based Flattening)[SdS01], développée par A. Sheffer et. al, ainsi que les différentes améliorations que nous avons développées en coopération avec l’auteur afin de rendre cette méthode appliquable à de grands maillages.

La méthode ABF se fonde sur l’observation suivante: l’espace paramétrique forme une triangulation 2D, définie de manière unique par les angles aux sommets des triangles en 2D (modulo une similitude appliquée dans l’espace paramétrique). Cette simple remarque a conduit A. Sheffer et E. De Sturler à re-formaliser le problème de paramétrisation de surface – à savoir trouver les(ui, vi) – en termes d’angles aux sommets, à savoir trouver lesαt

i, oùαt

i dénote l’angle au triangle t incident au sommet i. Nous verrons comment cette formulation permet facilement de minimiser les déformations, d’une manière mieux équilibrée que notre méthode LSCM.

Formulation ABF

En termes d’angles, l’énergie minimisée par ABF s’écrit:

E(α) =

t∈T 3

k=1 1 wtkt k− βt k)2. (3.21)

[SdS01] Alla Sheffer and Eric de Sturler. Parameterization of faceted surfaces for meshing using angle based flattening. Engineering with Computers, 17:326–337, 2001.

Figure 3.27: A Violation de la contrainte de reconstruction: en faisant le tour autour du sommet k, on ne retombe pas sur le point de départ.

où lesαt

ksont les angles 2D inconnus, et où lesβt

ksont les angles “optimaux”, mesurés sur le maillage en 3D.

L’indice t parcourt l’ensemble T des triangles du maillage, et l’incide k parcourt les trois angles de chaque triangle. Les poids wtksont positionnés à 1

βt k

2 afin de mesurer une déformation angulaire relative plutôt que absolue.

Afin d’assurer que les angles construits par l’algorithme définissent bien une paramétri-sation valide, un ensemble de contraintes doit être pris en compte, et inclus dans la formu-lation, sous forme d’un problème d’optimisation contrainte (voir Section 2.2.6):

⋄ Validité des triangles (pour chaque triangle t):

∀t ∈ T, CTri(t) = α1t+ α2t+ α3t− π = 0; (3.22) ⋄ Planarité (pour chaque sommet interne v):

∀v ∈ Vint, CPlan(v) =

(t,k)∈v∗

αt

k− 2π = 0, (3.23)

où Vint est l’ensemble des sommets internes, et où vdénote l’ensemble des angles inci-dent au sommet v.

⋄ Reconstruction (pour chaque sommet interne) - cette contrainte assure que les côtés partagés par des paires de triangles ont la même longeur :

∀v ∈ Vint, CLen(v) =

(t,k)∈v∗ sinαt k⊕1

(t,k)∈v∗ sinαt k⊖1= 0. (3.24) Les indices k⊕ 1 et k ⊖ 1 dénote l’angle suivant et l’angle précedent dans le triangle. La Figure 3.27) montre un exemple où cette contrainte n’est pas satisfaite: le produit sinαt

k⊕1sinαt

k⊖1correspondant au rapport des longeurs de deux arêtes consécutives au-tour du sommet k, si leurs produits ne se correspondent pas, il est possible de “faire un tour” autour du sommet k sans “retomber” sur le point de départ.

Algorithme de résolution numérique

Le problème d’optimisation numérique contrainte peut se résoudre par la méthode des mul-tiplicateurs de Lagrange (c.f. section 2.2.6). Des mulmul-tiplicateurs de Lagrange sont associés à chaque type de contrainte (λTri, λPlan, λLen). Le Lagrangien F s’écrit:

F(x) = F(α, λTri, λPlan, λLen) = E +

t λt TriCTri(t) +

v λv PlanCPlan(v) +

v λv LenCLen(v).

3.3. LIBÉRER LE BORD 63 Sheffer et de Sturler[SdS01]calculent un point fixe du Lagrangien en utilisant la méthode de Newton (c.f. Section 2.2.5), de la manière suivante:

tantque k∇F(x)k > ε

resoudre ∇2F(x)δ = −∇F(x) x← x + δ

fin

(3.25)

Le Hessien ∇2F(x) (matrice des dérivées secondes, c.f. Section 2.2.3) est une matrice de dimension 4nf+ 2nint où nf = |T | dénote le nombre de triangles du maillage, et où nint= |Vint| dénote le nombre de sommets internes.

Nous avons donc au total 3nf variables, et nf+ 2nint multiplicateurs de Lagrange. Les systèmes linéaires mis en jeu par la méthode de Newton sont résolus par l’une des méthode évoquée en section 2.2.2 (l’article initial utilisait SuperLU).

Amélioration de l’algorithme de résolution (ABF++)

Intéressé par la qualité des résultats obtenus par la méthode ABF (Figure 3.26), j’ai étudié cette méthode. Malheureusement, le caractère non-linéaire du problème d’optimisation contrainte ainsi que la grande taille des matrices mises en jeu empêche l’utilisation de cette méthode pour des maillages de plus d’une dizaine de milliers de sommets.

Pour cette raison, j’ai étudié de plus près le problème d’optimisation numérique: une particularité de ce problème m’a frappée: le terme d’energie quadratique ∑(αt

i− βt i)2est très simple, il s’agit d’une forme quadratique dont la matrice est égale à la matrice identité. Le minimiseur est connu directement, à savoir∀i,αt

i = βt

i. En conséquence, la difficulté du problème ne provient pas du terme d’énergie, mais des contraintes. Nous allons voir com-ment ceci se traduit dans la structure du Hessien du Lagrangien, et comcom-ment la méthode du complément de Schur permet de découpler les variables et les multiplicateurs de Lagrange, de manière à simplifier grandement les calculs. D’autre part, afin de calculer les coor-données (ui, vi) à partir des angles aux sommets des triangles, j’ai proposé de remplacé l’algorithme “glouton” de l’article initial par l’algorithme LSCM géométrique (Equation 3.20), qui a la propriété intéressante de ré-exprimer ce problème sous forme d’une fonc-tionelle d’énergie globale, et ainsi de moins soufrir des problèmes d’accumulation d’erreur rencontrés par la méthode précédente.

J’ai développé cette méthode en coopération avec le premier auteur de la méthode ABF (Alla Sheffer). Nous avons publié la méthode améliorée (ABF++) dans le journal ACM Transactions on Graphics [SLMB04].

Programmation linéaire contrainte séquentielle

La formulation initiale de la méthode ABF se fonde sur la minimisation sous contraintes d’une forme quadratique. Comme nous l’avons remarqué, cette forme quadratique est très simple, puisque son optimum est déjà connu (à savoir, les angles optimumβ , mesurés sur le maillage en 3D). Les contraintes, quant à elles, sont relativement complexes, en particulier la contrainte de reconstruction (Equation 3.24).

Pour simplifier le problème, ma première idée a été d’utiliser la programmation con-trainte linéaire séquentielle[NW00]. Cette technique consiste à remplacer le problème ini-tial (avec des contraintes non linéaires) par une série de problèmes munis de contraintes linéaires. Ces contraintes linéaires sont obtenues par développement limité à l’ordre 1 des contraintes autour du point courant. En d’autre termes, ceci revient à négliger les termes

[SdS01] Alla Sheffer and Eric de Sturler. Parameterization of faceted surfaces for meshing using angle based flattening. Engineering with Computers, 17:326–337, 2001.

provenant des dérivées d’ordre 2 des contraintes, apparaissant dans la matrice Hessienne du Lagrangien ∇2F(x). Ceci simplifie le système résolu à chaque itération (3.25). Le prix à payer est une légère augmentation du nombre total d’itérations à affectuer avant d’atteindre la convergence.

Ainsi, le système linéaire ∇2F(x)δ = −∇F(x) résolu à chaque itération devient:  Λ Jt J 0   δα δλ  =  b1 b2  avec: (3.26) Λ = diag  2 wtk  , J=  ∂2F ∂ λi∂ αt k  , b1= −∇αF, b2= −∇λF.

Comme les contraintes sont à présent linéaires, le bloc supérieur gauche (Λ) devient une matrice diagonale. Le bloc inférieur droit est nul. En nous fondant sur cette structure très particulière de la matrice, il est possible de diminuer de manière significative la dimension des systèmes linéaires résolus à chaque itération. Pour ce faire, nous allons décomposer le Hessien en différents blocs, et utiliser deux fois la technique du complément de Schur.

Première décomposition du Hessien

Le système 3.26 peut alors s’écrire de la manière suivante:

Λδα+ Jtδλ = b1 (3.27)

α = b2. (3.28)

Il est maintenant possible de séparer le calcul du vecteurδλ associé aux multiplicateurs de Lagrange, et d’exprimer le vecteurδαassocié aux variable en fonction deδλ:

−1Jtδλ = b avec b= JΛ−1b1− b2 (3.29)

δα = Λ−1(b1− Jtδλ) (3.30)

La premère ligne (3.29) est obtenue en multipliant (3.27) par JΛ−1et en substituant Jδαpar l’expression donnée par (3.28). La seconde ligne (3.30) est obtenue en multipliant (3.27) par Λ−1. Nous attirons l’attention du lecteur sur le fait que la matrice Λ est diagonale, et que donc le calcul de Λ−1est trivial. Cette technique est connue sous le nom de complément de Schur.

En utilisant ces expressions, l’algorithme (3.25) s’écrit:

tant que k∇F(x)k > ε calculer b, J, Λ resoudre Equation 3.29 → δλ δα← Λ−1(b1− Jtδλ) (Equation 3.30) λ ← λ + δλ ; α ← α + δα / ∗ x = (α,λ ) ∗ / fin

Le système initial de dimension 4nf+ 2nint a été remplacé par un système plus petit, de dimension nf+ 2nint, où la matrice JΛ−1Jne dépend que du Jacobien des contraintes J et de la matrice diagonale Λ (c.f. Equation 3.29). Résoudre ce système fournit le vecteur δλ permettant de mettre à jour les multiplicateurs de Lagrange. Il devient alors facile de calculer le vecteurδα mettant à jour les variables, en fonction deδλ (c.f. Equation 3.30). Comme la dimension du système linéaire résolu à chaque itération est bien plus petite que celle de l’algorithme initial, ce nouvel algorithme est bien plus efficace. Nous montrons à présent comment réduire encore plus la dimension de ces systèmes linéaires, en analysant la structure de la matrice JΛ−1Jt et en lui appliquant une fois de plus la technique du complément de Schur.

3.3. LIBÉRER LE BORD 65 Seconde décomposition du Hessien

Pour analyser la structure particulière de JΛ−1Jt, nous pouvons décomposer le Jacobien des contraintes J en deux sous-matrices J1et J2:

J =  J1 J2 ,  (3.31)

où J1(nf× 3nf) est le Jacobian des contraintes CTriet où J2(2nint× 3nf) est le Jacobien des contraintes CPlanet CLen. Nous remarquons que J1présente une structure très simple:

J1 =      1 1 1 0 0 0 1 1 1 . .. 0 0 0 1 1 1      .

De plus, ses colonnes sont orthogonales et linéairement indépendantes. Nous pouvons alors décomposer JΛ−1Jtde la manière suivante:

−1Jt =   Λ J∗t J J∗∗   avec            Λ (nf× nf) = J1Λ−1Jt 1 J (2nint× nf) = J2Λ−1Jt 1 J∗∗ (2nint× 2nint) = J2Λ−1J2t (3.32)

En utilisant la décomposition par blocs de la matrice JΛ−1Jt, l’équation 3.29 devient:   Λ J∗t J J∗∗     δλ1 δλ2   =   b1 b2  . (3.33) En d’autres termes, Λδλ1+ J∗tδλ2 = b1 (3.34) Jδλ1+ J∗∗δλ2 = b2. (3.35) Puisque J1est orthogonale et que Λ−1 est diagonale, la matrice Λ= J1Λ−1J1t est di-agonale. Nous pouvons donc à présent calculer le vecteurδλ2 indépendament du reste, en résolvant le système suivante:

JΛ∗−1J∗t− J∗∗δλ2= JΛ∗−1b1− b2. (3.36) L’équation 3.36 a été obtenue en multipliant (3.34) par JΛ∗−1, puis en substituant Jδλ1 par son expression (3.35). Ensuite, le vecteurδλ1 peut être calculé en fonction deδλ2:

δλ1= Λ∗−1 b1− J∗tδλ2 (3.37) en multipliant (3.34) par Λ∗−1.

Nous remarquons à présent que le calcul deδλ2 requiert la résolution d’un système linéaire de dimension 2nint, alors que la formulation du problème initial mettait en jeu un système de dimension 4nf + 2nint. En nous fondant sur la formule d’Euler nf ≈ 2nint, nous estimons que 4nf+ 2nint≈ 10nint. Ainsi, notre nouvelle formulation a pour résultat la réduction de la dimension des matrice d’un facteur 5.

Figure 3.28: Quelques exemples de paramétrisation obtenues grâce à notre méthode ABF++. Les résultats offrent à la fois plus de garanties (signe du Jacobien constant) et une meilleure qualité que les méthodes précédentes (y compris notre méthode LSCM). Algorithme ABF++

Nous pouvons à présent combiner ces différents calcul pour décrire l’algorithme de paramétri-sation ABF++: tant que k∇F(x)k > ε calculer b, J, Λ resoudre Equation 3.36 → δλ2 calculerδλ1(Equation 3.37) calculerδα(Equation 3.30) λ1← λ1+ δλ1 ; λ2← λ2+ δλ2 ; α ← α + δα / ∗ x = (α,λ ) ∗ / fin (3.38)

En comparaison de la formulation Newton initiale (3.25), la nouvelle méthode requiert quelques itérations de plus pour converger (typiquement de 8 à 10 au lien de 5). Toutefois, à chaque itération, les systèmes linéaires manipulés sont de dimension 5 fois plus petite. Nous utilisons SuperLU, un solveur direct creux pour résoudre le système linéaire (equa-tion 3.36) L’algorithme final est plus de 10 fois plus rapide que l’algorithme initial. En conséquence, des surfaces de plus de 100K triangles peuvent à présent être paramétrisées en moins d’une minute. Un autre avantage est la réduction de la taille mémoire nécessaire au stockage des matrice. La Figure 3.28 montre quelques exemples de paramétrisations calculées avec notre approche. Plus récemment, nous avons travaillé avec Rhaleb Zayer à une méthode de paramétrisation dérivée également d’ABF, mais fondée sur une estimation de l’erreur à l’ordre 1 [ZLS07]. Cette dernière est bien plus simple à implanter, et égale-ment très efficace, car elle ne nécessite que la résolution de deux systèmes linéaires. Afin de garder la taille de ce mémoire raisonnable, nous ne détaillerons pas cette méthode ici.

Dans les sections suivantes, nous allons voir différentes applications des méthodes de paramétrisation. Au delà du plaquage de textures, application naturelle de ce type de méth-ode [Lé01], [LPRM02], nous avons expérimenté plusieurs autres méthméth-odes, tirant parti du découplage entre la géométrie et des propriétés stockées dans l’espace paramétrique.

3.3. LIBÉRER LE BORD 67 Comme une paramétrisation d’une surface mets celle-ci en correspondance avec un espace 2D plus simple, plusieurs algorithmes peuvent bénéficier de cette représentation. Dans ce chapitre, nous présentons succintement différentes applications de ces méthodes à des problèmes de re-maillage, d’extrapolation de surfaces et de simulation numérique de la lu-mière. Dans le cadre de ce mémoire, nous n’entrerons pas dans le détail de ces applications, pour plutôt nous concentrer sur les aspects directement liés à la géométrie numérique.

Dans le document Géométrie Numérique (Page 62-69)