rapport.doc

(299 KB) Pobierz
Modélisation de Nuages

Modélisation de Nuages

 

 

 

Article :

« A Simple, Efficient Method for Realistic Animation of Clouds »
Plan

 

1) Introduction

2) Modèle

a)  Champ de cellules

b) Formation de nuages

c)  Advection par le vent

d) Ellipsoïdes

3) Rendu

a)  Principe général

b) Pré-traitement

c)  Première passe

i)    Shading

ii) Ombrage

d) Deuxième passe

i)    Dessin

ii) Raies de lumières

4) Démonstration

a)  Limites

i)    De notre implantation

ii) Du modèle

b) Possibilités d’amélioration

5) Conclusion

 

 

1)          
Introduction

 

              Cet article propose une approche de simulation numérique des nuages pour des applications de synthèse d’images. Les originalités de la méthode proposée par les auteurs par rapport aux méthodes précédentes sont d’une part la rapidité relative du rendu (grâce à l’utilisation d’OpenGL) et la modélisation de l’advection par le vent, de la disparition des nuages et des rayons de lumière traversant la couche nuageuse. Enfin, la méthode de modélisation ne s’appuie pas sur les lois physiques de la mécanique des fluides, mais l’objectif est ici le résultat visuel.

Nous nous attacherons d’abord à présenter en détail le modèle utilisé par les auteurs, puis les solutions mise en oeuvre pour le rendu rapide, enfin nous expliquerons les points particuliers auxquels nous avons fait face pour notre propre implantation de cet algorithme.

2)          
Modèle

a)                       Voxels et variables d’état

 

Le modèle utilisé par l’équipe est un automate cellulaire. Chaque cellule correspond à un voxel de la subdivision de l’espace, et à ces cellules sont assignées trois variables :

-         hum, représente le degré d’humidité de l’air

-         cld, la présence de nuage

-         act, le facteur de changement de phase entre l’état gazeux et liquide

Chacune de ces trois variables est à valeur dans {0,1}.

 

hum(i,j,k,t) = 1               : il y a assez d’humidité en (i,j,k) pour former un nuage

act(i,j,k,t)   = 1              : la transition de gaz en liquide peut s’effectuer en (i,j,k)

cld(i,j,k,t)   = 1              : il y a un nuage en (i,j,k) ) l’instant t.

 

L’évolution des nuages s’obtient donc par application de simples règles de transitions (formation, extinction, advection par le vent).

 

b)                       Formation des nuages

 

Les nuages sont semblables à des bulles d’air qui se réchauffent lors du survol de terrains chauds. Rendues moins denses, elles s’élèvent dans les régions à faibles pressions puis se dilatent. Cette expansion refroidit ces bulles d’air, provoquant à l’intérieur une relative humidité. Ensuite, un phénomène de transition de vapeur en eau liquide intervient.

 

Les règles de transitions sont donc les suivantes :

hum(i,j,k,ti+1) = hum(i,j,k,ti) ET NON(act(i,j,k,ti))

cld(i,j,k,ti+1) = cld(i,j,k,ti) OU act(i,j,k,ti)

act(i,j,k,ti+1) = NON(act(i,j,k,ti)) ET hum(i,j,k,ti) ET fact(i,j,k)

 

fact est fonction de act autour de la cellule concernée :

 

fact(i,j,k) =              act(i-2,j,k,ti) OU act(i-1,j,k,tiOU act(i+1,j,k,ti) OU act(i+2,j,k,ti)                   OU               act(i,j-1,k,ti) OU act(i,j+1,k,ti) OU act(i,j+2,k,ti) OU act(i,j,k-2,ti)                   OU              act(i,j,k-2,ti) OU act(i,j,k-1,tiOU act(i,j,k+1,ti)

 

 



 

 

 

 

 

 

 

 

Evidemment, hum, cld et act valent 0 à l’extérieur de la zone nuageuse.

Initialement, hum et act sont tirés aléatoirement, et cld = 0.

 

c)                        Extinction des nuages

 

Dans le modèle de Nagel, il n’y a jamais d’extinction de nuage. Cela est dû au fait qu’une fois cld à 1, aucune règle ne peut le mettre à 0.

Dans le modèle présenté ici, un champ de probabilité pext a été ajouté pour contrôler la probabilité d’extinction d’un nuage dans une zone.

Ainsi, la règle concernant cld devient (rnd étant un nombre aléatoire) :

 

si cld(i,j,k,ti) = 1 alors cld(i,j,k,ti+1)  =              si rnd < pext

1       sinon

 

pext peut être différent pour chaque cellule afin de simuler des régions de plus ou moins forte densité nuageuse.

 

Mais ici, les nuages ne sont jamais régénérés une fois leur extinction. Pour remédier à ce problème, il suffit d’introduire phum et pact, respectivement la probabilité d’humidité et la probabilité d’activation, dans les règles précédentes. Les règles sont donc :

 

si hum(i,j,k,ti) = 0 alors hum(i,j,k,ti+1)     =              si rnd < phum

                                                                                                                     sinon

 

si act(i,j,k,ti) = 0 alors act(i,j,k,ti+1)   =              si rnd < pact

                                                                                                       sinon

 

L’évolution des nuages est ainsi contrôlée par les trois paramètres pext, phum et pact propres à chaque cellule.

 

Finalement :

 

 

cld(i,j,k,ti+1) = cld(i,j,k,ti) ET (rnd > pext(i,j,k,ti))

hum(i,j,k,ti+1) = hum(i,j,k,ti) OU (rnd < phum(i,j,k,ti))

act(i,j,k,ti+1) = act(i,j,k,ti) OU (rnd < pact(i,j,k,ti))

 

d)                       Advection par le vent

 

Les nuages bougent dans une seule direction (l’axe des x). La vitesse du vent augmente avec l’altitude, c’est donc une fonction de z (v(z)).

Pour tenir compte du vent, il suffit d’inclure les règles suivantes :

 

f(i,j,k,ti+1)    =              f(i-v(k),j,k,ti) si i-v(k) > 0

                                          0 sinon

 

avec f є{hum, cld, act}, et v est une fonction linéaire de z.

 

 

e)                       Ellipsoïdes

 

Des ellipsoïdes sont utilisés pour contrôler pext, phum et pact. Ce sont des zones de l’espace nuageux où les paramètres pext, phum et pact varient en fonction du type de nuage souhaité. Ainsi, phum et pact seront plus élevés au centre de chaque ellipsoïde qu’en son bord, et, à l’inverse, pcld...

Zgłoś jeśli naruszono regulamin