Approximation de surfaces développables pour la modélisation d

publicité
Approximation de surfaces développables pour la modélisation
d’objets 3D
Gilles LAURENT (MMIS MCS - 2A Ensimag)
Mai 2012
Résumé
Nous considérons le problème suivant : construire une surface développable 3D quand on connait
uniquement son bord. Nous créons pour cela un maillage à partir d’une discrétisation de la
courbe du bord, et nous modifions les points intérieurs à l’aide d’une méthode d’optimisation
pour rendre le maillage développable. Après plusieurs subdivisions, le maillage obtenu est proche
d’une surface développable.
1
Introduction
Une surface développable est une surface qui peut être mise à plat sans distorsion de la surface.
Il est très peu probable qu’une surface prise au hasard ait la propriété d’être développable. Or
de telles surfaces modélisent parfaitement les tissus, le cuir et les métaux par exemple. Elles
présentent donc un intérêt tout particulier pour ces domaines de l’industrie, notamment en
métallurgie où l’on déforme les tôles de métal pour former par exemple la coque d’un bateau.
Notre travail a été motivé par le fait de reconstruire une surface développable à partir de la
seule connaissance des bords de la surface. En effet, dans l’article [8], les chercheurs ont à
leur disposition des capteurs sous formes de bandes qu’ils disposent sur une voile. Ils essayent
ensuite d’interpoler la surface intérieure en utilisant un minimum de capteurs (ceux-ci étant très
chers) et en ne connaissant que la courbe du bord de la voile. Or la voile étant un tissu, elle
est développable. Ainsi, en interpolant la surface intérieure tout en respectant la propriété de
développabilité, on cherche une modélisation proche de la réalité.
Nous décrivons dans cet article une méthode pour interpoler une surface à partir des courbes
du bord, avec la contrainte que la surface obtenue soit développable.
Travaux existants
Une surface est développable si sa courbure de Gauss est partout égale à zéro. L’approximation
de telles surfaces par des maillages a déjà été traitée dans des articles connexes, où les maillages
sont localement approchés par des surfaces réglées développables [4, 7, 16] (des morceaux de
cylindres, de cônes). Dans ces méthodes, on transforme des maillages de manière locale. Dans
le même ordre d’idées, dans l’article [10], on segmente un maillage de manière à ce que les
différentes parties approchent des surfaces coniques (donc développables), et on tente ensuite
de tranformer localement le maillage en véritable conique. Nous ne pouvons malheureusement
utiliser ces approches locales que sur des formes bien particulières.
D’autres approches travaillent sur une transformation globale du maillage, nous avons moins de
contraintes sur les maillages que l’on peut optimiser. La courbure de Gauss est alors discrétisée
en chaque point, puis l’on résout un système afin de rendre le maillage globalement développable
[18]. C’est principalement sur cette idée que nous travaillons dans cet article.
2
Définitions, notations
Nous allons présenter dans cette section les notions de maillage développable et de maillage
laplacien. Le schéma de l’algorithme présenté utilisera ces deux notions.
1
2.1
Maillage développable
On dit qu’un maillage M est développable si on peut l’aplatir, i.e. le transformer en un maillage
D du plan, sans que la surface subisse de distorsion. Sans perte de généralité, on peut se
contenter d’étudier les maillages qui sont des triangulations. Dans l’article [12] on définit la
notion de developpablité discrète. Dans cet article, nous prendrons les notations suivantes :
Figure 1: Illustration de l’angle intérieur du maillage (cf [17])
Notation
• M = {P, E, F } un maillage.
• P = {vi ∈ R3 , i ∈ V }, l’ensemble des points qui forment le maillage.
• V l’ensemble des indices des points du maillage.
• E = {(i, j) ∈ N2 } l’ensemble des arêtes du maillage.
• F l’ensemble des faces du maillage. On considèrera dans la suite que toutes les faces sont
des triangles. Notre maillage sera donc une triangulation.
• Vint = {i tel que ∀j, (i, j) ∈ E ⇒ (i, j) appartient à exactement deux faces de F },
l’ensemble des indices des points intérieurs à M .
• Vbord = V r Vint , l’ensemble des indices des points du bord du maillage.
• N (vi ) = {j tel que (i, j) ∈ E}, l’ensemble des indices des points premiers voisins de vi
dans M .
• N (vp ) = {(i, p, j) ∈ N3 tel que le triangle 4vi vp vj ∈ F }, l’ensemble des faces adjacentes
à vp .
Définition 1 On note pour tout p ∈ Vint ,
θ(vp ) =
X
vi\
vp vi+1
(i,p,j)∈N (vp )
On dira que θ(vp ) est l’angle du point vp sur le maillage M .
Propriété 1 Un maillage est développable, si et seulement si en tout point p ∈ Vint , θ(vp ) = 2π.
En effet on dit qu’un maillage M est développable si et seulement si on peut trouver une
déformation isométrique de R3 dans R2 . Les triangles du maillage applati sont donc semblables
2
aux triangles de M et ainsi la valeur des angles est préservée. Or les angles des points intérieurs
d’un maillage plan sont tous égaux à 2π. Donc les angles des points intérieurs de M sont tous
égaux à 2π.
Nous n’avons ici qu’une condition nécessaire[18]. Pour avoir la réciproque il suffit que le maillage
soit topologiquement équivalent à un disque, i.e. qu’il ne possède pas de trou et ne se replie pas
sur lui-même.
Propriété 2 Un maillage topologiquement équivalent à un disque est développable si et seulement si ∀p ∈ Vint , θ(vp ) = 2π.
Pour rendre nos maillages développables, il nous suffira donc d’annuler en tout point du maillage
la valeur de θ − 2π.
Courbure de Gauss discrète réelle
La courbure de Gauss discrète en un point vp n’est pas exactement égale à θ(vp ). En effet pour
un maillage hexagonal (voir Figure 3)[2], on a :
Définition 2
Pour tout vp , p ∈ Vint on appelle
K6 (vp ) = 3
2π − θ(vp )
Aire(N (vp ))
La courbure de Gauss discrète au point vp , pour un maillage 6-régulier.
Où Aire(N (vp )) représente l’aire des triangles contenus dans le premier voisinage de vp .
Définition 3 On dit qu’une surface est développable si sa courbure de Gauss est nulle en
chacun de ses points.
Ainsi la courbure de Gauss dépend fortement de la taille du maillage, car si les mailles sont
1
petites, Aire(N
(vp )) deviendra très grand. Il peut donc y avoir une différence d’échelle importante entre θ(vp ) − 2π et K6 (vp ). Il faudra alors bien différencier le fait de minimiser la valeur
de θ(vp ) − 2π ou bien minimiser la valeur de K6 (vp ).
2.2
Maillage laplacien
Un maillage est dit laplacien si chacun de ses points est le barycentre de ses voisins, ce qui a
donc un effet régularisant sur les points du maillage. A partir de cette interprétaion géometrique
et d’après les articles [13, 9], on peut donner la définition suivante pour un maillage laplacien :
Définition 2 On dit qu’un maillage est laplacien si,
∀vi ∈ M, vi −
1
|N (vi )|
X
vj = 0
(1)
vj ∈N (vi )
où |N (vi )| est le cardinal de l’ensemble N (vi ).
On peut également traduire cette relation sous la forme matricielle suivante :
En notant,

si(i = j)
 1
−1
si(j
∈ N (vi ))
Li,j =
 |N (vi )|
0
sinon
3
(2)
et (xp )p , (yp )p , (zp )p , les coordonnées respectives des points (vp )p , l’équation (1) devient équivalente
à
Lx = 0
Ly = 0
(3)
Lz = 0
On appelle alors L l’opérateur Laplacien.
Propriété 3 Pour un maillage dont chacun des points est connexe, le rang de L est n − 1
où n est le nombre de points du maillage. L est quant à elle une matrice de dimension n ∗ n.
En effet,
si on note (xp )p ∈ Rn , le vecteur colonne des abscisses des points vp , et

 |N (vi )| si i = j
−1
si j ∈ N (vi )
L̃i,j =

0
sinon
Alors
Lx = 0 ⇔ L̃x = 0
Par ailleurs, L̃ est symétrique et l’on a :
X
∀x ∈ Rn , xT L̃x =
(xi − xj )2
(i,j)∈E
Ainsi,
∀x ∈ Rn ,
⇒
⇒
⇒
⇒
0
0
0
0
0
= L̃x
T
=x
P L̃x
= (i,j)∈E (xi − xj )2
= (xi − xj ),
∀(i, j) ∈ ε
= xi − x0 ,
∀i
donc ker L̃ ⊆ vect(ξ) où ξ = (1, . . . , 1)T .
Réciproquement ξ ∈ ker L̃ donc ker L̃ = vect(ξ).
Ainsi L, qui est de même rang que L̃, est de rang n − 1.
Ainsi, nous avons un degré de liberté pour rendre un maillage laplacien et développable.
3
Algorithme de développabilité
L’algorithme que nous avons créé est un algorithme itératif qui, à chaque itération, subdivise le
maillage puis l’optimise pour le rendre développable.
Pour réaliser l’étape d’optimisation, nous nous inspirons des résultats décrits dans les articles
[18, 17]. Celle-ci se base principalement sur la méthode de Newton pour annuler une fonction.
Or nous savons que cette méthode ne fonctionne que si l’on possède une donnée initiale proche
de la solution finale. L’algorithme que nous proposons fournit donc un moyen d’obtenir ce
“bon” maillage initial sans perdre en performance. En effet il est très facile de transformer des
maillages de petite taille en maillages développables, car les matrices entrant en jeu s’inversent
à moindre coût. Nous avons donc effectué cette démarche itérative dans l’espoir de trouver des
maillages développables de plus en plus grands. Ainsi, au début de chaque itération, le maillage
initial est le meilleur possible et la méthode Newton converge donc plus vite.
3.1
Principe de l’algorithme
L’algorithme part d’une courbe qui est le bord du maillage que l’on souhaite rendre développable.
On crée un premier maillage au centre.
4
On déplace ensuite les points du centre pour rendre le maillage le plus proche possible d’une
surface développable.
Cela peut se traduire de la façon suivante :
• Nous voulons que la surface finale soit développable.
• Nous voulons que la surface soit le plus lisse possible, on essaye donc d’obtenir un maillage
laplacien.
• Nous voulons que la surface soit assez proche de la surface initiale.
Nous obtenons alors un maillage proche d’une surface développable.
Dans un second temps, on subdivise le maillage, et on obtient un nouveau maillage initial.
On réitère les étapes précédentes.
3.2
Obtention du maillage initial
Figure 2: Création d’un patch de Coons, de dimension 25 ∗ 25, à partir de quatre courbes issues
de la surface d’un cône
Afin d’obtenir un premier maillage nous coupons la courbe initiale en quatre courbes P 1, P 2,
Q1 et Q2 (Figure 2) et nous appliquons sur ces quatre courbes un patch de Coons[6]. Le maillage
obtenu de cette facon est un maillage régulier. De plus pour effectuer notre triangulation, nous
considèrerons le fait que chaque point a un premier voisinage hexagonal (Figure 3). Choisir
un tel maillage nous permet d’assurer que la courbure de Gauss discrète converge, au fur et à
mesure des subdivisions, vers la courbure de Gauss de la surface lisse limite [2].
5
Figure 3: Maillage régulier dont chaque point intérieur possède un premier voisinage hexagonal
3.3
Déplacement des points intérieurs
3.3.1
Modélisation du problème
Les trois conditions décrites précédemment sur le maillage à obtenir à chaque étape peuvent se
traduire par la résolution du problème d’optimisation sous contrainte [11, 14] suivant :
Trouver (v1 ∗, . . . , vn ∗) ∈ (R3 )n tels que
φ(v1 ∗, . . . vn ∗) =
min
φ(v1 , . . . vn )
(v1 , . . . , vn ) ∈ (R3 )n
θ(vi ) = 2π, ∀i ∈ Vint }
(4)
Où n = |Vint | est le nombre de points intérieurs du maillage et les (vi )i∈Vint sont les points
intérieurs du maillage.
φ est la fonction objectif que l’on cherche à minimiser. En effet, on veut approcher un maillage
laplacien et être proche du maillage initial. C’est donc dans la fonction φ que l’on fait apparaitre
ces contraintes.
On pose donc :
φ(v1 , . . . vn ) = ωLap JLap (v1 , . . . vn ) + ωP os JP os (v1 , . . . vn )
(5)
Où ωLap et ωP os sont les poids des différentes fonctions que l’on cherche à optimiser.
On pose également :
JLap (v1 , . . . vn ) =
1 X
kLvi k2
2
(6)
i∈Vint
Minimiser cette fonction revient donc à essayer d’être le plus proche possible d’un maillage
laplacien.
1 X
JP os (v1 , . . . vn ) =
kvi − v0i k2
(7)
2
i∈Vint
v0i
Où
représente la position du point d’indice i dans le maillage initial. Ainsi, minimiser cette
fonction revient à rester le plus proche possible du maillage initial.
On a choisi les coefficients ωLap = 100.0 et ωP os = 1.0, ainsi on privilégie le fait d’avoir un
maillage laplacien plutôt que de rester proche du maillage initial. Cela se justifie car le maillage
initial ne représente pas grand chose, il est choisi arbitrairement. Il n’est donc pas nécessaire
que la surface finale s’en rapproche trop. Nous sommes cependant obligés de garder le terme
JP os pour pouvoir, par la suite, inverser la matrice hessienne de φ, puisque nous avons vu que
la matrice L n’est pas inversible.
6
3.3.2
Résolution du problème
Pour résoudre un problème d’optimisation sous contrainte, il suffit de trouver le minimum de la
fonction lagrangienne [11, 14] J donnée par :
X
J(v1 , . . . vn , λ1 , . . . , λn ) = φ(v1 , . . . vn ) +
λi (θ(vi − 2π)
(8)
i∈Vint
Où λ = (λ1 , . . . , λn ) ∈ Rn et sont appelés les multiplicateurs de Lagrange.
Il nous faut donc annuler ∇J afin de trouver le minimum de J.
Or comme ∇J est une fonction de (R3 )n × Rn dans R4n , on peut calculer ses zéros grâce à la
méthode de Newton.
Celle-ci s’écrit alors à chaque itération k :
∇2 J(Xk )(Xk+1 − Xk ) = −∇J(Xk )
(9)
Où ∇2 J est la matrice hessienne de J et Xk = (vk1 , . . . vkn , λk1 , . . . , λkn ), vki étant la position du
ie point intérieur du maillage à la k e itération de la méthode de Newton.
Algorithme de minimisation de courbure
1. tant que |J(Xk+1 ) − J(Xk )| > ε faire
2.
Résoudre ∇2 J(Xk )Dk = −∇J(Xk )
3.
Xk+1 = Xk + αDk
4. fin tant que
On fixe α = 0.25, ainsi nous assurons la stabilité de la méthode et nous avons un algorithme qui
converge assez vite. On fixe également ε = 10−5 , de cette façon l’algorithme s’arrêtera lorsque
les angles θ seront de l’ordre de 10−4 . Il s’agit d’un critère d’arrêt arbitraire, d’autant plus que
la courbure de Gauss peut être beaucoup plus importante que cette valeur. On adaptera donc
ce critère en fonction de la taille du maillage à optimiser.
On note de plus Dk = Xk+1 − Xk .
On peut alors écrire ∇J(Xk ) et ∇2 J(Xk ) sous la forme matricielle suivante :


dx
 dy 

D=
 dz 
λ

Φx
 Φy 

∇J(Xk ) = 
 Φz 
Ω

H
0
0 ΘTx
 0 H
0 ΘTy
∇2 J(Xk ) = 
 0
0 H ΘTz
Θx Θy Θz 0
(10)

(11)




(12)
A chaque itération de la méthode de Newton, on remet les λk1 , . . . , λkn à zéro, ce qui ne change
pas la convergence de la méthode car la dépendance en lambda dans la fonction J est linéaire.
Cela permet de simplifier les matrices ci-dessus :
ΘT = ∇θ
7
(13)
H = ωP os In + ωLap (LT L)
(14)
Φ = ∇φ
(15)


θ(v1 ) − 2π

..

.
θ(vn ) − 2π

Ω=
Calcul des dérivés de φ
On a
:
∂JP os
(v1 , . . . , vn ) = vi − v0i
∂vi
∀i,
∂ 2 JP os
(v1 , . . . , vn ) = δij I3
∂vi ∂vj


1 0 0
1 si i = j
Où δij =
, et I3 =  0 1 0 
0 sinon
0 0 1
∀i, j,
∀i,
∀i,
∀i, j,
∂JLap
(v1 , . . . , vn ) = LT Lvi
∂vi
∂ 2 JLap
(v1 , . . . , vn ) = (LT L)i,j I3
∂vi ∂vj
∀i, j,
Donc
(16)
∂φ
(v1 , . . . , vn ) = ωP os (vi − v0i ) + ωLap (LT Lvi )
∂vi
∂2φ
(v1 , . . . , vn ) = (ωP os δij + ωLap (LT L)i,j )I3
∂vi ∂vj
(17)
(18)
(19)
(20)
(21)
(22)
Calcul du gradient de la courbure de Gauss :
On note A : R3 × R3 −→ R la fonction qui à deux vecteurs associe leur angle. On a alors :
A(x, y) = arccos



∂A
∂x (x, y)
∂A
∂y (y, x)
= (y −
= (x −
hx, yi
kxkkyk
x
x
1
√
kxk h kxk , yi) kxk2 kyk2 −hx,yi2
y
y
1
√
kyk h kyk , xi) kyk2 kxk2 −hy,xi2
(23)
(24)
On remarque que l’on a alors :
X
∀vi ∈ Vint , θ(vi ) =
A(vk1 − vi , vk2 − vi )
(25)
∂A
∂A
+ (δ̃kj 2 − δ̃ij )
∂x
∂y
(26)
(k1 ,k2 )∈N (vi )
Donc :
Où
δ̃ij
3.3.3
∂θ
(vi ) =
∂vj
=
1
0
X
(δ̃kj 1 − δ̃ij )
(k1 ,k2 )∈N (vi )
si i = j et vi ∈ Vint
.
sinon
Amélioration de la résolution de la méthode de Newton
Résoudre ∇2 J(Xk )(Dk ) = −∇J(Xk ) revient à inverser une matrice symétrique positive de dimension 4n ∗ 4n. La matrice ayant une forme très particulière, il est possible d’inverser cette
matrice pour un coût bien inférieur à O((4n)3 ). En réalité on n’inverse pas la matrice mais on
résout un système linéaire, ce qui réduit le coût de la résolution.
D’après le livre d’algorithmique [5], on a :
8
Proprieté 4
Si la matrice A est symétrique positive telle que :
B CT
A=
C D
Alors, si C T est de rang maximal (A n’est pas nécessairement définie, elle peut être juste positive)
alors A est inversible et on a :
−1
B + B −1 C T S −1 CB −1 −B −1 C T S −1
−1
A =
−S −1 CB −1
S −1
Où S = D − CB −1 C T est appelé le complément de Schur. S est alors définie positive.
On peut donc appliquer ce résultat à notre problème en posant :


H 0 0
B= 0 H 0 
0 0 H

Θx
C =  Θy 
Θz

et
D=0
On obtient alors les expressions suivantes :
S = −Θx H −1 ΘTx − Θy H −1 ΘTy − Θz H −1 ΘTz
(27)

  −1
H + H −1 ΘTx S −1 (Θx H −1 Φx + Θy H −1 Φy + Θz H −1 Φz ) − H −1 ΘTx S −1 Ω
dx
 dy  =  H −1 + H −1 ΘTy S −1 (Θx H −1 Φx + Θy H −1 Φy + Θz H −1 Φz ) − H −1 ΘTy S −1 Ω 
dz
H −1 + H −1 ΘTz S −1 (Θx H −1 Φx + Θy H −1 Φy + Θz H −1 Φz ) − H −1 ΘTz S −1 Ω
(28)
On ne calcule pas les λ car à chaque itération on leur affecte la valeur 0.
On constate par ailleurs que la valeur de H est fixe et ne dépend que de la géométrie du maillage,
on peut donc calculer H −1 avant de commencer les itérations.

Algorithme minimisation de courbure, avec amélioration
1. calculer H −1 .
2. tant que |J(Xk+1 ) − J(Xk )| > ε faire
3.
Calculer à l’aide de la formule ci-dessus dx , dy , dz
4.
Xk+1 = Xk + αDk
5. fin tant que
A chaque itération de cet algorithme, le coût en nombre d’opérations est donc en O(n3 ) voire
O(n2.8 ) si l’on implémente l’algorithme de Strassen [5] pour le produit matriciel. Ici n est le
nombre de sommets intérieurs. On gagne donc en rapidité de calcul.
9
(a) Maillage initial
de taille 4 ∗ 4
(b) Maillage
subdivisé une fois de
taille 7 ∗ 7
(c) Maillage
subdivisé deux fois
de taille 13 ∗ 13
(d) Maillage
subdivisé trois fois de
taille 25 ∗ 25
Figure 4: Etapes de la subdivision de Catmull-Clark sur un maillage initial de taille 4 ∗ 4
(a) Courbe initiale de
taille 4 ∗ 4
(b) Courbe interpolée
une fois de taille 7 ∗ 7
(c) Courbe interpolée
deux fois de taille
13 ∗ 13
(d) Courbe interpolée
trois fois de taille
25 ∗ 25
Figure 5: Etapes de la subdivision de Catmull-Rom sur une courbe de bord initiale de taille 4 ∗ 4
3.4
Subdivision du maillage
Une fois que l’on a obtenu un maillage suffisement développable, nous augmentons sa taille à
l’aide d’une subdivision de Catmull-Clark (Figure 4)[1, 15]. On espère que le maillage issu de
la subdivision n’augmente pas trop la courbure de Gauss par rapport au précédent maillage, on
obtiendrait alors une bonne valeur initiale pour la méthode de Gauss à l’itération suivante.
Nous ne nous contentons pas d’effectuer simplement une subdivision de Catmull-Clark car
celle-ci implique de modifier la position des points du bord. Or nous nous somme fixé, comme
contrainte de notre problème, de ne pas modifier les bords de la courbe initiale. Ainsi, les points
du bords sont interpolés par une courbe de Cattmul-Rom (Figure 5)[3], afin d’obtenir un aspect plus lisse. En effet, si la surface présente des zones anguleuses (ce que l’on obtiendrait en
prenant simplement le milieu des deux voisins) alors localement la courbure de Gauss risque
d’être très élevée. Nous lissons donc les bords en interpolant la position des points ajoutés lors
de la subdivision. Nous aurions aussi pu prendre des points issus d’une courbure initiale plus
précise et ajouter les points du bord manquant pour notre subdivision mais cela implique d’avoir
suffisemment de points de la courbe du bord.
Nous espérons donc qu’avec cette subdivision la méthode de Newton des étapes suivantes convergera plus vite, i.e. avec moins d’itérations.
Calcul du surcoût de la subdivision Nous avons vu précédemment que pour un maillage de
taille mk ∗mk le coût d’une itération de la méthode de Newton est en O(mk2∗2.8 ). Supposons qu’à
chaque étape de subdivision, nous effectuons le même nombre d’itérations que pour la méthode
de Newton pour annuler ∇J (nous verrons que cette hypothèse se vérifie dans nos tests).
Par ailleurs, avec les subdivisions successives, on peut affirmer que mk , la racine carrée de la
taille du maillage à l’étape k, est mk = 2mk−1 − 4 = 2k (m0 − 2).
10
Alors, si Ck est le coût de l’algorithme à subdivisions, on a :
Ck = O(m4.6
k ) + Ck−1 = O(
k
X
k
X
m4.6
)
=
O(
24.6i ) = O(24.6(k+1) )
i
i=0
i=0
Or le coût de l’algorithme direct est
4.6k
C̃k = O(m4.6
)
k ) = O(2
Ainsi les deux algorithmes s’exécutent avec le même ordre de grandeur de nombre d’opérations.
Le surcoût engendré par les étapes de subdivisions est donc négligeable. On comparera donc la
performance des deux algorithmes en se basant uniquement sur le nombre d’itérations effectuées
au cours de la dernière étape d’optimisation.
4
Résultats
Nous avons implémenté l’algorithme en C. Nous avons créé des structures de donnée propres
au problème afin d’optimiser au maximum les temps de calcul. Nous avons testé le programme
sur un PC de bureau (CPU Intel Core i3-300M + 4GB RAM) et les temps de calcul nous ont
permis d’optimiser des maillage de taille 25*25 sans problème. L’exécution de l’algorithme sur
25*25 points n’excédant jamais plus de 5 min.
Dans cette partie nous allons comparer les deux algorithmes : l’algorithme d’optimisation directe, et notre algorithme qui subdivise et optimise à chaque étape. Pour cela nous nous fixons
comme objectif de rendre développable des maillages de taille 25 ∗ 25.
Les maillages obtenus seront colorés avec une échelle de couleur logarithmique (Figure 6). Leur
couleur représente la valeur locale de la courbure de Gauss sur ce maillage et non pas la valeur
de θ (voir section 2, Courbure de Gauss discrète réelle). Dans les surfaces suivantes, les zones de
Figure 6: Echelle de la mesure de la courbure de Gauss
couleur bleue représentent des valeurs de courbure de Gauss de 10−5 il s’agit donc de surfaces
quasi-développables, tandis que les zones rouges représentent des zones où la courbure de Gauss
est de 10+1 il s’agit donc de surfaces peu développables. La plupart des zones seront de couleur
verte correspondant à des valeurs de l’ordre de 10−2 pour la courbure de Gauss. Il s’agit de
valeurs tout à fait correctes pour des maillages quasi-développables.
4.1
Comparaison de l’algorithme sur un maillage initial extrait d’un cylindre
Pour le premier exemple, nous extrayons une courbe fermée sur un cylindre et nous appliquons
les deux algorithmes pour tenter de former une surface développable à l’intérieur de cette courbe.
Algorithme direct
L’algorithme direct optimise un maillage de 25 ∗ 25 points (Figure 7).
Pour l’algoritme direct, nous obtenons les resultats suivants :
Etape d’optimisation
Première étape (Figure 7(b))
Taille du maillage
25 ∗ 25
11
Nombre d’itérations
16
Courbure maximale finale
1.06.10−2
(a) Maillage 25*25 initial Courbure de Gauss < 9.36
(b) Maillage 25*25 optimisé Courbure de Gauss
< 1.0610−2
Figure 7: Application de l’algorithme de développabilité en une seule étape (courbe de bord
extraite d’un cylindre)
Algorithme à subdivisions successives
Dans notre algorithme, nous partons d’un maillage 4 ∗ 4 que nous optimisons à chaque itération,
puis nous le subdivisons et nous recommençons ce processus jusqu’à optimiser un maillage 25∗25
(Figure 8).
(a) Maillage 4*4
initial étape 0 Courbure de Gauss
< 6.36.10−1
(b) Maillage 7*7
initial étape 1 Courbure de Gauss
< 3.84
(c) Maillage 13*13
initial étape 2 Courbure de Gauss
< 7.77
(d) Maillage 25*25
initial étape 3 Courbure de Gauss
< 14.0
(e) Maillage 4*4
optimisé étape 0 Courbure de Gauss
< 1.54.10−3
(f) Maillage 7*7
optimisé étape 1 Courbure de Gauss
< 4.94.10−3
(g) Maillage 13*13
optimisé étape 2 Courbure de Gauss
< 1.78.10−2
(h) Maillage 25*25
optimisé étape 3 Courbure de Gauss
< 9.97.10−2
Figure 8: Application de l’agorithme de subdivision en quatre étapes (courbe de bord extraite
d’un cylindre)
A la fin de chaque étape de subdivision nous obtenons les résultats suivants :
12
Etape d’optimisation
Taille du maillage Nombre d’itérations Courbure maximale finale
Première étape (Figure 8(e))
4∗4
22
1.54.10−3
Deuxième étape (Figure 8(f))
7∗7
19
4.94.10−3
Troisième étape (Figure 8(g))
13 ∗ 13
19
1.78.10−2
Dernière étape (Figure 8(h))
25 ∗ 25
17
9.97.10−2
Sur cet exemple notre algorithme itère la méthode de Newton 17 fois sur un maillage 25*25.
Algorithme direct sur le même bord que l’algorithme à subdivision
Comme on utilise une subdivision de Catmull-Rom pour interpoler les bords du maillage dans
notre algorithme, nous n’obtenons pas les même bords que ceux présentés dans le premier exemple. Nous allons donc appliquer l’algorithme direct sur un maillage 25 ∗ 25 ayant exactement
les mêmes bords que l’algorithme à subdivision (Figure 9).
Pour l’algorithme direct utilisé sur les mêmes bords que l’algorithme à subdivision, on obtient
(a) Maillage 25*25 initial Courbure de Gauss < 23.5
(b) Maillage 25*25 optimisé Courbure de Gauss
< 1.71.10−1
Figure 9: Application de l’agorithme en une seule étape sur un maillage 25 ∗ 25 dont les bords
sont identiques à ceux de l’algorithme à subdivision (courbe de bord extraite d’un cylindre)
les résultats suivants :
Etape d’optimisation
Première étape (Figure 9(b))
Taille du maillage
25 ∗ 25
Nombre d’itération
18
Courbure maximale finale
1.71.10−1
Récapitulatif
Pour le maillage obtenu avec notre algorithme (Figure 8(h)), il a fallu 17 itérations au moment où le maillage était 25 ∗ 25. Nous avons vu précédemment que l’on pouvait négliger les
étapes précédentes. Sur le troisième exemple, l’algorithme direct, avec les courbes du bords identiques à celle de l’algorithme à subdivision (Figure 9(b)), se termine au bout du même nombre
d’itérations. Cependant, la valeur de la courbure de Gauss du maillage obtenu est beaucoup plus
forte (presque deux fois plus grande). Comme notre algorithme s’arrête lorsque la variation de
la courbure devient trop faible, cela signifie qu’il aurait eu besoin de beaucoup plus d’itérations
pour atteindre une courbure de Gauss maximale inférieure à 9.97.10−2 .
Par ailleurs, on ne peut pas vraiment comparer les résultats avec le premier algorithme direct
(Figure 7(b)), car les courbes de bords ne sont pas les mêmes. Cependant on peut noter que les
résultats des algorithme direct et à subdivision sont à peu près semblables. Cela s’explique par
le fait que la surface initiale est extraite d’un cylindre, or la surface obtenue par un patch de
Coons à partir de ce genre de surfaces est quasi-développable. Ici le maillage 25*25 initial est
suffisement proche d’une bonne surface pour faire converger la méthode de Newton rapidement.
Dans ce cas, notre algorithme présente peu d’intérêt.
13
4.2
Comparaison de l’algorithme sur un maillage initial très peu développable
Sur l’exemple précédent, on ne peut pas affirmer que notre algorithme est meilleur. Dans ce
nouvel exemple, il présente un grand intérêt puisque nous prenons une courbe qui est très peu
développable à la base. Pour ce faire, nous avons créé quatres courbe de Bézier que nous avons
raccordées pour obtenir le contour initial. Sur de telles courbes de bord, le patch de Coons
donne des surfaces avec une courbure de Gauss très importante. Regardons les résultats que
nous obtenons.
Application de l’algorithme direct
Nous utilisons cette fois une courbe de bord identique pour les deux algorithmes. Nous commençons donc par optimiser maillage 25 ∗ 25 (Figure 10). Pour l’algoritme direct, nous obtenons
(a) Maillage 25*25 initial Courbure de Gauss < 3.07
(b) Maillage 25*25 optimisé Courbure de Gauss
< 1.7110−1
Figure 10: Application de l’algorithme de développabilité en une seule étape (courbe de Bezier
pour le bord)
les résultats suivants :
Etape d’optimisation
Première étape (Figure 10(b))
Taille du maillage
25 ∗ 25
Nombre d’itérations
36
Courbure maximale finale
3.6.10−1
Algorithme à subdivisions successives
Nous partons d’un maillage 4∗4 que nous subdivisons jusqu’à obtenir un maillage 25∗25 (Figure
11).
A la fin de chaque étape de subdivision nous obtenons les résultats suivants :
Etape d’optimisation
Taille du maillage Nombre d’itérations Courbure maximale finale
Première étape (Figure 11(e))
4∗4
24
4.70.10−4
Deuxième étape (Figure 11(f))
7∗7
21
2.26.10−3
Troisième étape (Figure 11(g))
13 ∗ 13
18
1.72.10−4
Dernière étape (Figure 11(h))
25 ∗ 25
15
1.65.10−1
Sur cet exemple, notre algorithme itère la méthode de Newton 15 fois sur un maillage 25*25.
Récapitulatif
Sur ce deuxième exemple nous observons que notre algorithme converge avec deux fois moins
d’itérations. Dans ce cas, et contrairement à l’exemple précédent, la subdivision permet d’augmenter
la stabilité de l’algorithme en fournissant un maillage initial de dimension 25*25 (Figure 11(d))
qui est bien meilleur. La surface initiale de la méthode directe (Figure 10(a)) est quelconque et
donc n’a aucune raison d’être satisfaisante pour la méthode de Newton.
14
(a) Maillage 4*4
initial étape 0 Courbure de Gauss
< 3.87.10−1
(b) Maillage 7*7
initial étape 1 Courbure de Gauss
< 9.67.10−1
(c) Maillage 13*13
initial étape 2 Courbure de Gauss
< 2.09
(d) Maillage 25*25
initial étape 3 Courbure de Gauss
< 5.98
(e) Maillage 4*4
optimisé étape 0 Courbure de Gauss
< 4.70.10−4
(f) Maillage 7*7
optimisé étape 1 Courbure de Gauss
< 2.26.10−3
(g) Maillage 13*13
optimisé étape 2 Courbure de Gauss
< 1.72.10−4
(h) Maillage 25*25
optimisé étape 3 Courbure de Gauss
< 1.65.10−1
Figure 11: Application de l’algorithme de subdivision en quatre étapes (courbe de bord extraite
d’un cylindre)
Dans le cas où le maillage initial est assez loin d’une surface développable, notre méthode itérative
présente un intérêt important. On peut observer sur les maillages optimisés intermédiaires (Figures 11(e) 11(f) 11(g)) que les courbures de Gauss sont très faibles, cela permet donc de stabiliser
l’algorithme.
5
Conclusion
Dans ce papier nous avons vu une méthode permettant de créer un maillage développable interpolant une surface de bord. Nous nous sommes principalement attardés sur le fait de trouver une
surface initiale de bonne qualité pour faire converger l’algorithme plus rapidement. Pour cela
nous opérons de manière itérative en rendant développable une série de maillages intermédiaires.
Cela fournit un surcoût que l’on peut négliger par rapport au coût final d’une optimisation sur
un maillage de grande dimension.
Bilan et perspectives
Au vu des exemples, nous pouvons affirmer que notre algorithme ne présente pas de résultats
pires que son prédécesseur (l’optimisateur direct). On constate qu’effectivement sur certains
exemples il converge plus rapidement vers une surface développable. Cependant, sur des surfaces
qui sont à la base presque développables, son temps d’exécution n’est pas meilleur.
En revanche, nous pensons qu’il est possible de travailler sur cet algorithme afin de le rendre
plus efficace. Nous avons identifié quelques perspectives pour l’améliorer. En effet, la méthode
proposée par [18], et dont nous nous somme servi, travaille sur les angles des points du maillage
et non pas la courbure de Gauss directement. En fonction de la taille du maillage, l’optimisation
ne rend donc pas la même courbure de Gauss finale. C’est pourquoi nous aimerions optimiser
directement la valeur de la courbure de Gauss, et ce d’autant plus que certains résultats laissent
à penser que si la courbure de Gauss est suffisamment faible, celle-ci reste bornée après un
15
nombre quelconque de subdivisions de Catmull-Clack. De cette façon, il serait plus juste de
travailler directement sur la courbure de Gauss et non pas sur θ.
Remerciement
Je tiens à remercier Stefanie Hahmann qui m’a encadré pour mon travail d’IRL.
References
[1] J. Bolz and P. Schröder.
Web3D’02, 2002.
Rapide Evaluation of Catmull-Clark Subdivision Surfaces.
[2] V. Borrelli. Courbure discrète ponctuelle. Actes du séminaire de Théorie spectrale et
géométrie, pages 25–39, 2007.
[3] E. Catmull and R. Rom. A class of local interpolating splines. Computer Aided Geometric
Design, pages 317–326, 1974.
[4] C. Chu and C. Séquin. Developpable Bézier patches : properties and design. ComputerAided Design, 2002.
[5] T. Cormen, C. Leiserson, R. Rivest, and C. Stein. Introduction à l’algorithmique, seconde
édition. 2001.
[6] R.T. Farouki, N. Szafran, and L. Biard. Existence conditions for Coons patches interpolating geodesic boundary curves. Computer Aided Geometric Design, 2009.
[7] I. Lee H. Chen, S. Leopoldseder, H. Pottmann, T. Randrup, and J. Wallner. On surface
approximation using developpable surfaces. Graphical Models and Image Processing, 1999.
[8] Mathieu Huard, Nathalie Sprynski, Bernard Lacolle, and Luc Biard. Serret-Frenet Frame
Interpolation under Length Constraints for Surface Reconstruction. 2011.
[9] Z. Ji, L. Liu, and G. Wang. A Global Laplacian Smoothing Aproach with Feature Preservation. Computer Aided Design, 2005.
[10] D. Julius, V. Kraevoy, and A. Sheffer. D-charts: quasi-developpable mesh segmentation.
Computer Graphics Forum, 2005.
[11] K. Madsen, H.B. Nielsen, and O. Tingleff. Optimisation with constraints. Informatics and
Mathematical Modeling, 2004.
[12] M. Meyer, M. Desbrun, P. Schröder, and A.H. Barr. Discrete differential-geometry operators
for triangulated 2-manifolds. Visualisation and Mathematics III, pages 35–58, 2003.
[13] A. Nealen, T. Igarashi, O. Sorkine, and M. Alexa. Laplacian mesh optimisation. 2006.
[14] J. Nocedal and S.J. Wright. Numerical Optimisation. 1999.
[15] H.R. Pakdel and F. Samavati. Incremental Catmull-Clark Subdivision.
[16] M. Peternell. Recognition and reconstruction of developpable surfaces from point clouds.
Proceeding of Geometric Modeling and Processing, pages 301–310, 2004.
[17] C. Wang. Flattenable Mesh Surface Fitting on Boundary Curves. Engeenering with Computer, 2008.
[18] C. Wang. Towards flattenable mesh surfaces. Computer-Aided Design, 2008.
16
Téléchargement