Académique Documents
Professionnel Documents
Culture Documents
Modélisation 3D et Synthèse
Master Informatique
2019-2020
I Notation matricielle :
y
adx adz
ad
P (t )x ..
P (t ) = P (t )y etM = · · · ··· .
y
ax a1 a1z
P (t )z
1
y
a0x a0 a0z
⇒ P (t ) = (P (t )x P (t )y P (t )z ) = (t d . . . t 2 t 1)M
y
Remarque : on notera également a0 = (a0x a0 a0z ) (ou sa transposée) dans la suite.
I Généralement on s’intéresse à des morceaux de courbes (P (t ) défini pour t ∈ [tdebut , tfin ]).
I Calcul d’un ensemble de nbPoint points et relier ces points par des segments
(approximation polygonale).
t =t_debut ;
pas_t =( t _ f i n −t _ d e b u t ) / ( nbPoint − 1);
P_old= evaluerP ( t ) ;
pour i v a r i a n t de 2 à n b P o i n t f a i r e
t = t +pas_t ;
P_new= evaluerP ( t ) ;
drawSegment ( P_old , P_new ) ;
P_old=P_new ;
f i n pour
Préferer ⇒
I Raccordement de courbes de degré au plus 3 (voire 4) « naturelles » .
I P (t ) = a 0 + a 1 t + a 2 t 2 + . . . + a d t d
∂P (t )
⇒ P 0 (t ) = ∂t
= 0 + a1 + 2a2 t + 3a3 t 2 + . . . + dad t d −1
I Le vecteur P 0 (t ) donne une tangente au point P (t ) (ou vecteur vitesse de P (t )).
I Avec la notation matricielle : P 0 (t ) = (dt d −1 . . . 2t 1 0)M
I P 00 (t ) =∂2 P (t ) ∂P 0 (t )
∂t 2
= ∂t
I Le vecteur P 00 (t ) définit l’accélération de P (t )).
⇒
I Contrôle intuitif et aisé (contrôle des extrémités et tangentes)
I Raccordement de plusieurs hermites facile.
fabrice.aubert@univ-lille.fr courbes et surfaces Master Informatique2019-2020 12 / 43
Forme matricielle
03 02
P0 0 1
P1 13 12 1 1
T0 = 3 × 02 2 × 01 1
M
0
T1 3 × 12 2 × 11 1 0
2 −2 1 1 P0
I On résout pour trouver M = −3 3 −2 −1 P1
.
0 0 1 0 T0
1 0 0 0 T1
P0
I Le « vecteur » G = P1 est appelé vecteur géométrique (plus précisément vecteur
T0
T1
de hermite dans le cadre des courbes de hermites).
2 −2 1 1
−3 3 −2 −1
I La matrice Mh = est appelée matrice de hermite (aucun
0 0 1 0
1 0 0 0
rapport avec les matrices hermitiennes).
I ⇒ P (t ) = (t 3 t 2 t 1)Mh G
I Pour simplifier, on considère des segments normalisés (P (t ) est défini avec t ∈ [0, 1]).
I Soient P (t ) et Q (t ) deux segments de courbes.
I Le raccordement de P en P (1) et de Q en Q (0) (« fin » de P (t ) et « début » de Q (t )) est
dit de continuité :
• C 0 ssi P (1) = Q (0) (pas d’autres conditions que l’égalité des points).
• C 1 ssi il est C 0 et P 0 (1) = Q 0 (0) 6= 0 (égalité des tangentes - raccordement
« lisse » ).
• C 2 ssi il est C 1 et P 00 (1) = Q 00 (0) 6= 0 (égalité des accélérations).
• ...
n
P (t ) = ∑ Bin (t )Pi
i =0
où
n!
Bin (t ) = Cni (1 − t )n−i t i avec Cni =
i !(n − i )!
I Les Bin (t ) sont appelés polynômes de bernstein.
I L’ensemble des points (P0 , P1 , . . . , Pn ), pris dans cet ordre, est appelé polygone de
contrôle.
−−→
I Les béziers cubiques (4 points) sont des courbes de hermites (les tangentes sont 3P0 P1 et
−−→
3P2 P3 ).
I Donne des formes naturelles.
I Contrôle aisé et « assez » intuitif (position des points de contrôle).
I Très utilisées en informatique graphique.
−−→ −−−−→
I Raccordement G1 aisé (tangentes aux extrémités colinéaires à P0 P1 et Pn−1 Pn ).
I ... très nombreuses propriétés (enveloppe convexe, intersection, raffinement, ...).
I Pour t fixé, on montre que le point P (t ) est le résultat d’une suite récurrente définie par :
0
Pi = Pi pour tout i(les points initiaux sont les points de contrôles)
Pik = (1 − t )Pik −1 + tPik+−11 (Pik est une interpolation linéaire dePik −1 et Pik+−11 ).
1
Algorithme de calcul pour P (t ) exemple pour le point t = 4
I On veut interpoler les points [P0 , . . . , Pn ] (c’est-à-dire trouver une courbe qui passe par
tous ces points).
I ⇒ courbe Ci définie pour chaque segment [Pi , Pi +1 ]
• Exemple : bézier cubique définie sur chaque segment : Ci = (Pi , Ii ,0 , Ii ,1 Pi +1 )
f (x , y ) = s
Z=f(X,Y)
Y
X
I Pour contrôler les formes on définit souvent des primitives implicites (i.e. courbes implicites
simples) qui sont ensuite « mélangées » .
I Exemple : mélange simple par somme : si on dispose de n champs potentiels fi ⇒
f (x , y ) = ∑ni=1 fi (x , y ).
I Les primitives peuvent être définies à partir d’objets simples (points, segments, ...) ⇒
primitives dites à squelettes.
I Exemple : 2 primitives f1 et f2 définies par un centre et un rayon.
f(X,Y)
C1
C2
I Problème : trouver les points (x , y ) tels que f (x , y ) = s (équation complexe et non linéaire,
souvent non polynomiale).
I Autre formulation : ⇒ trouver la coupe entre le plan z = s et la surface z = f (x , y ).
− − − − − − − + − f(G2)
− − + + + − −
− + + + + + − P
+ f(G1)
+
+ −
−
+
Problème d’ambiguité
− − − − − − − + − f(G2)
− − + + + − −
− + + + + + − P
+ f(G1)
+
+ −
−
+
Problème d’ambiguité
I Un des problèmes concernant les surfaces implicites est le contrôle de la forme souhaitée
(comment construire une voiture en surface implicite ? un cube ?).
I Implicitisation = transformer un modèle d’objet en surface implicite.
I Les courbes vues précédemment se généralisent aux surfaces par simple extension.
I Pour les courbes paramétriques (y compris les polynomiales) : adjonction d’un paramêtre
s:
x = f (s, t )
P (s , t ) = y = g (s, t )
z = h(s, t )
P (x , y , z ) tels que f (x , y , z ) = s
I Les courbes vues (bézier, b-spline, nurbs) s’étendent par « produit tensoriel » (i.e. produit
de deux courbes).
I Exemple pour bézier : on définit un maillage de contrôle de (n + 1) × (m + 1) points.
n m
P (s , t ) = ∑ ∑ Bin (s)Bjm (t )Pi ,j 0 ≤ s ≤ 1, 0 ≤ t ≤ 1
i =0 j =0
I Remarque : on « reconnait » des courbes de bézier dans chaque direction s et t (i.e. pour
s = sfixe , la courbe P (sfixe , t ) est une courbe de bézier).
I définition :
P (x , y , z ) tels que f (x , y , z ) = s
I la définition des primitives par squelette s’étend naturellement (coordonnée
supplémentaire ; voir blobs par exemple).
I identique à la polygonisation mais sur une grille régulière de cubes (appelés voxels) :
• évaluer f (x , y , z ) en chacun des sommets de la grille. Déterminer les intersections
avec les signes et par interpolation linéaire (un point par arête).
• relier les points dans chaque face (les carrés) ⇒ donne des arêtes.
• relier les arêtes dans chaque cube (se fait de manière naturelle en suivant les points
d’intersection) ⇒ donne un (ou plusieurs) polygones (généralement décomposé en
triangles pour les problèmes de coplanarité).
• ⇒ méthode dite du marching-cube (on fait les cubes un par un). Il existe de très
nombreuses variantes accélératrice de cette méthode (notamment précalcul de
toutes les configurations de cubes possibles).
I Localisation : un point est intérieur ou extérieur au volume englobé par la surface implicite
selon le signe de f (x , y , z ).
I une normale à la surface implicite en un point P (x , y , z ) est donnée par le gradient du
champ de potentiel :
∂f
∂x
(P )
→
− −−→ ∂f
n (P ) = gradf (P ) = (P )
∂y
∂f
∂z
( P)