1.5 Conclusion
2.1.1 Approche G´en´erale
Comme nous l’avons vu dans le chapitre pr´ec´edent, une m´ethode commune pour la visualisation de la surface libre est celle employ´ee par la recherche incr´ementale qui consiste `a avancer le long du rayon d’un pas constant puis `a proc´eder par dicho-tomie afin de trouver le point d’intersection entre un rayon et la surface, ce qui peut se r´ev´eler tr`es lent.
Fig. 2.1 – Principe du Sphere-Tracing de [Har96]
Une approche permettant de rem´edier `a ce probl`eme ´evoqu´e est celle propos´ee par le Sphere-Tracing [Har96] que nous avons vu au chapitre pr´ec´edent et qui consiste `a trouver une distance d de parcours le long du rayon sans traverser la surface. Th´eor`eme 1. Une fonction f est dite λ-lipschitzienne s’il existe un r´eel λ (appel´ee borne lipschitzienne) tel que pour deux points quelconques x et y de l’espace on a :
|f(x) − f(y)| 6 λ|x − y|
En utilisant cette propri´et´e, on peut calculer une fonction de distance d en tout points x de l’espace telle que :
d(x) = |f(x)|/λ
En supposant la fonction implicite comme ´etant lipschitzienne, l’approche du Sphere-Tracing consiste `a avancer sur le rayon d’une distance d, garantissant de ne pas traverser la surface, et en proc´edant de fa¸con r´ecursive tant que l’on n’a pas intersect´e la surface ou que la distance parcourue sur le rayon soit inf´erieure `a une distance maximale de parcours(voir figure 2.1).
Une optimisation de cette m´ethode est celle pr´esent´ee dans [HW96] pour le cas des hypertextures et pouvant s’adapter `a tout types de surfaces d´efinies `a l’aide d’une somme de fonctions, comme c’est le cas pour les surfaces repr´esent´ees par les approches spatiales ou hybrides.
Th´eor`eme 2. La borne lipschitzienne λ d’une somme de fonctions est ´egale `a la somme des constantes lipschitziennes λi de chacune des fonctions.
λ =
N
X
i=1
λi
Th´eor`eme 3. La borne lipschitzienne d’une fonction constante est nulle.
Si la fonction f est d´efinie sous la forme d’une somme de fonctions ni, on peut calculer une fonction de distance d en tout point x de l’espace en utilisant le th´eor`eme 2 : d(x) = N X i=1 ni(x) λi (2.1) avec λi la borne lipschitzienne de la composante ni.
En n´egligeant certains constantes lipschitzienne λi, on peut alors maximiser la fonc-tion de distance d. En partant de cette id´ee, les auteurs de [HW96] proposent de n´egliger certaines constantes selon la contribution de chaque primitive qui constitue la surface. Pour cela, on compare chaque niavec son minimum global. Si la diff´erence entre ces deux valeurs est proche de 0, alors cette primitive peut ˆetre approch´ee `a l’aide de son minimum. ´Etant donn´e que la constante lipschitzienne d’une fonction constante est nulle (th´eor`eme 3), la borne lipschitzienne r´esultante est plus petite dans ce cas et on peut ainsi maximiser le pas sur le rayon.
D’autres optimisations sont aussi possibles en s’appuyant sur la coh´erence spatiale et/ou temporelle, c’est `a dire en avan¸cant sur le rayon de la mˆeme fa¸con qu’un rayon voisin d´ej`a trait´e (coh´erence spatiale) ou sur celui calcul´e `a l’instant pr´ec´edent (co-h´erence temporelle).
Nous proposons ici d’´etendre cette m´ethode dans le cas de la surface de l’oc´ean en maximisant le pas sur le rayon afin d’acc´el´erer le processus du calcul d’intersection. Mod´elisation de la surface
Pour mod´eliser la surface, nous avons choisi d’utiliser le mod`ele propos´e par Thon [TDG00] afin de repr´esenter la surface de l’eau. Comme nous l’avons vu, cette approche hybride offre un compromis entre r´ealisme physique et contrˆolabilit´e utili-sateur, puisqu’il permet d’injecter des donn´ees spectrales issues de l’oc´eanographie dans une approche param´etrique. Dans ce mod`ele 1, la hauteur y d’un point de la
1Nous avons utilis´e le spectre de Pierson-Moskowitz afin de synth´etiser les caract´eristiques de chaque train de vagues.
– ωi, sa pulsation, qui peut ˆetre calcul´ee en fonction de sa fr´equence ωi = 2πfi; – φi, son d´ephasage.
Calcul de la fonction implicite
En utilisant la formule 2.2, nous pouvons d´efinir une fonction f (p) en tout point p de coordonn´ees (x, y, z) par :
f (p) = y −
N
X
i=1
Aicos(ki(x cos θi+ z sin θi) − wit + φi) (2.3) avec :
– f (p) > 0 si p est au-dessus de la surface ; – f (p) = 0 si p est situ´e `a la surface ; – f (p) < 0 si p est sous la surface.
Montrons que cette fonction est lipschitzienne.
Th´eor`eme 4. une fonction est dite lipschitzienne si et seulement si sa d´eriv´ee est born´ee
La fonction f ´etant d´efinie de R3 dans R, montrons que son vecteur gradient est born´e. Le gradient de la fonction f peut ˆetre calcul´e par :
∇f(p) =
PN
i=1Aikicos θisin(ki(x cos θi+ z sin θi) − wit + φi) 1
PN
i=1Aikisin θisin(ki(x cos θi+ z sin θi) − wit + φi) Or, ∀X ∈ R nous avons : −1 6 cos(X) 6 1 et −π
2 6sin(X) 6 π
2. Le gradient de la fonction f peut ˆetre born´e par :
−PN i=1 π 2Aikicos θi 1 −PN i=1 π 2Aikisin θi 6∇f(p) 6 −PN i=1 π 2Aikicos θi 1 −PN i=1 π 2Aikisin θi (2.4)
soit : −PN i=1π2Aiki 1 −PN i=1π 2 4 Aiki 6∇f(p) 6 −PN i=1π2Aiki 1 −PN i=1π 2 4 Aiki
Le vecteur gradient de la fonction f ´etant born´ee, on peut donc conclure que cette fonction est bien lipschitzienne.
Calcul du minimum global
En reformulant l’´equation 2.3, on obtient : f (p) =
N
X
1
y
N − Aicos(ki(x cos θi+ z sin θi) − wit + φi) soit : f (p) = N X 1 ni(p) avec : ni(p) = y
N − Aicos(ki(x cos θi+ z sin θi) − wit + φi) (2.5) Or, nous avons :
ni(p) > y N − Ai
Or, pour tout point situ´e au-dessus de la surface, on a : y >PN
j=1Ajcos(kj(x cos θj+ z sin θj) − wjt + φj) > −PN j=1Aj. On a donc : ni(p) > −Ai− ( N X j=1 Aj)/N
Le minimum global mi de chaque fonction ni peut alors ˆetre calcul´e en posant : mi = −Ai− (
N
X
j=1
Aj)/N (2.6) Calcul de la borne lipschitzienne
Comme cela est mentionn´ee dans[Har96], nous pouvons calculer la borne lipschit-zienne λ d’une fonction f en utilisant la relation suivante :
λ > k∇f(p)k
avec p un point quelconque de l’espace. En utilisant le th´eor`eme 2, nous avons : λ = N X i=1 λi > N X i=1 k∇ni(p)k
Au d´epart, nous calculons un plan horizontal d’´equation y =PN
i=1Ai situ´e au-dessus de la surface. Nous calculons alors l’intersection du rayon avec ce plan de fa¸con analytique. Si une intersection est trouv´ee, nous recherchons le point d’intersection `a la surface en maximisant le pas. Pour cela, nous proc´edons de fa¸con similaire `a la m´ethode propos´ee par [HW96]. Nous comparons la diff´erence entre la valeur de chaque fonction ni (´equation 2.5) et son minimum global mi (´equation 2.6). Si cette diff´erence est sup´erieure `a un certain seuil (choisi par exp´erimentation `a 10−1) alors cela signifie que la hauteur `a la surface engendr´ee par la pr´esence de cette primitive est non n´egligeable et sa borne lipschitzienne est calcul´ee (´equation 2.7). Dans le cas contraire, elle n’est pas retenue et sa borne est n´eglig´ee, ce qui permet de maximiser le pas sur le rayon.
La figure 2.2 montre une capture de ce processus sur une surface tr`es perturb´ee avec 30 composantes initiales. Dans cet exemple, seules 7 composantes contribuent au calcul du pas, les 23 autres n’´etant pas significatives.
Comme nous le verrons dans la partie 2.5 cette m´ethode permet d’acc´el´erer consid´e-rablement le calcul des points d’intersection par rapport `a une recherche incr´ementale usuelle.