TF2D : Transformée de Fourier 2D

Introduction à la synthèse d'un océan

Réaliser la simulation de fluides à grande échelle est un challenge qui a suscité de nombreuses études. Pour avoir un résultat réaliste, des procédés complexes ont été mis en oeuvre, chacun exploitant des théories relativement différentes. Nous allons nous pencher sur l'utilisation de la Transformée de Fourier pour synthétiser la surface d'un océan.

Présentation

On connaît plusieurs méthodes pour la simulation de fluides :

  • Domaine spatial
    • Approche physique : méthode numérique qui se base sur les équations de Navier-Stokes [CFD (Computation Fluid Dynamics)]. La méthode est appliquée sur une grille eulérienne 2D ou 3D mais reste limitée à des zones de taille réduite car elle impose un grand nombre de calculs. L’usage des logiciels CFD actuels s’avère gourmand en temps et nécessite une attention particulière (concernant les géométries correctes et les conditions aux limites).
    • Approche des particules hydrodynamiques : [ SPH (Smoothed Particle Hydrodynamics)]

    • CFD
      SPH
      Approche CFD
      Approche SPH
  • Domaine fréquentiel
    • Approche réduite/ Approche spectrale : celle que nous présentons ici pour ne modéliser que la surface de la mer.

En choisissant de ne modéliser que la surface de la mer, on s'affranchit de nombreux calculs et on gagne un temps précieux (utile pour des applications en temps réel).

La surface de la mer

La surface de la mer est constituée de vagues produites par le vent. On définit la longueur d'onde comme la distance entre deux crêtes de vagues. La hauteur des vagues est aléatoire. On définit aussi la notion de champ :

Un champ contient une somme d'octaves (fréquences harmoniques) de "vagues" sinusoïdales. Plus on ajoute de sinusoïdes au modèle, plus la surface paraîtra réaliste. Ainsi, on a déjà l'intuition que la formule de la transformée de Fourier (TF) qui contient une somme de sinusoïdes peut nous aider.

Grâce à la transformée de Fourier et notamment sa propriété de périodicité, nous allons voir comment animer un champ 2D

  • raccordable dans l'espace et le temps (on peut créer puis dupliquer un seul champ de manière continue)
  • facilement contrôlable (taille, résolution)

On utilisera plus précisément la transformée de Fourier inverse qui, à partir d'un champ de fréquences, permet de retrouver le champ spatio-temporel. Rappelons que nous travaillons dans le cas discret.

Définition de la transformée de Fourier 2D dans notre étude

Pour une modélisation d'une mer, on va considérer une grille 3D pour laquelle la hauteur au point X(x,y)est une valeur h(x,t) au temps t et dont la définition est :

 h(x,t)

où :

  • X(x,y) est la position d'un point
  • kappaest un vecteur 2D kappa_definitionpointant dans la direction de la vague de vitesse k, vecteur vitesse
  • t est le temps
  • h est la hauteur d'une vague à la position X en fonction de t dans le domaine spatial
  • h_tilde est la valeur du signal dans le domaine fréquentiel

Le champ 3D est créé à partir d'un champ fréquentiel. Il faut donc créer ce champ (amplitudes et phases).

Note : Cette technique a été utilisée pour la modélisation de la mer dans des films tels que Titanic de James Cameron, ou Waterworld de Kevin Reynolds.

Titanic, extrait ocean