• Aucun résultat trouvé

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.

Documents relatifs