Simulation réaliste de ruisseaux en temps réel Stage de M2R IVR 2005 Frank Rochet sous la direction de Fabrice Neyret GRAVIR / IMAG-INRIA
Ruisseaux
Principe de la simulation (1) ● Basée sur le stage de Natalie Praizelin « Phenomenological Simulation of Brooks » [NP01] ● Approche phénoménologique ● Ondes de choc (Obstacles) – Ondes de Froude
Principe de la simulation (2) ● Carte du ruisseau (image 2D) ● Construction géométrique des ondes de choc ● Remous perturbateurs
Objectifs ● Produire une visualisation 3D réaliste – Surface de l’eau ● Très haute résolution possible (capillaires) – Rendu avec effets optiques – Haute résolution + qualité visuelle + temps réel => Niveaux de détail
Plan 1.Construction de la surface de l’eau – État de l’art – Notre approche – Profil d’onde – Maillage 3D – Bump mapping – Normales – Croisements 2.Effet optiques 3.Résultats
État de l'art : Construction de surfaces de fluides – Maillage à partir d'une grille de simulation – Maillage statique déformé à la volée par le GPU – Système de particules – Bump mapping
Construction de la surface de l’eau : Notre approche (1) ● Vectoriel: résolution selon besoin – indépendant de la simulation ● Haute résolution juste la où nécessaire (plan d'eau: 1 quad) ● Les bandelettes – Avec méthode classique : plein de sommets, aliasing géométrique – Peu de sommets, pas d'artefacts
Construction de la surface de l’eau : Notre approche (2) ● Les bandelettes : – Habillage des données vectorielles de la simulation 2D – Extrusion en bandelettes + un profil précalculé => – géométrie ou bump (+ multi-résolution)
Construction de la surface de l’eau : Notre approche (3) ● Génération d'un maillage 3D à la volée – Indépendant de la résolution de la simulation – Multi-résolution – Plans rapprochés, angles rasants ● Bump mapping – Profil statique – Déformation dynamique ● Difficultés – Croisement des bandelettes
Profil d'onde Profil normalisé ● Normalisation en x et y ● Déformable ● Continuité/Raccord ● Précalculé dans un tableau ● Normales précalculées ● Déformation => Réinterprétation ● Précalculées dans un tableau
Maillage 3D (1) – Génération ● Le long de l'axe de la vague ● Échantillonnage du profil – Pour le rendu ● Normales ● Calcul optique par vertex
Affichage 1.Dessin du décor (lit de la rivière, obstacles) 2.Rendu des vagues 3.Rendu du plan d’eau – Problème :
Maillage 3D (2) ● Profil z=f(x) normalisé ● Extrusion de long de l’axe ● LOD : on sous-échantillonne le long de T et B
Bump mapping (1) ● Profil d'onde=>bump1D ● Rendu: Environment bump mapping ● Limitations (classiques) – Problème de parallaxe – Pas d'occultation
Bump mapping (2) ● La bandelette se déforme: distorsion dynamique du bump
Normales ● On peut adapter les normales analytiquement à la volée ● Mise à l'échelle (Np est précalculée) ● Transformation dans le repère T,N,B ● Normalisation avec
Plan 1.Génération de la surface de l’eau – Principe du rendu – Génération de la surface de l'eau – Profil d’onde – Maillage 3D – Bump mapping – Croisements – Principe – Maillage 3D – Occultation – Bump mapping / Normales 2.Effet optiques 3.Résultats
Croisements : Principe ● Détection : calculs hiérarchiques ● Maillage 3D ou Bump mapping en combinant 2 profils 1D ● Normales : calcul spécifique
Croisements : Maillage 3D
Croisements : Occultation
Croisements : Bump / Normales ● Bump : bump 2D = profil 1D x profil 1D ● Notre formule de construction : ● A normaliser
Plan 1.Génération de la surface de l’eau 2.Effet optiques – Optique physique – Sur GPU 3.Résultats
Effets optiques : optique physique ● Réflexion ● Réfraction ● Fresnel
Effets optiques : sur GPU ● Réflexion, Réfraction, Fresnel : Shaders programmables – Fresnel : – Environment mapping – Textures projectives ● Caustiques ● Light Scattering (volume de l'eau, impuretés) ● Écume,...
Plan 1.Génération de la surface de l’eau 2.Effet optiques 3.Résultats – Vidéos – Implémentation – Performance – Travaux futurs
Résultats : Vidéos (1)
Résultats : Vidéos (2)
Implémentation View Frustum culling : Boîtes englobantes Niveau de détails : maillage 3D, Bump, Auto
Performance
Travaux futurs 1.Niveaux de détails 2.Anti-aliasing spécifique 3.Amélioration des croisements d'ondes 4.Revisiter/améliorer la simulation 5.Représentation des remous perturbateurs 6.Effets visuels : écume, light scaterring, caustiques, tourbillons, …
Questions ?