Se connecter

Informatique

Création de Jeux

Sujet : Comment faire une eau ultra réaliste ?
1
Risotalita
Niveau 9
14 juillet 2019 à 10:05:18

Hello,

Je me posais une question, comment peut-on créer une eau (océan, mer) avec vagues ultra réaliste ?

Il faut modéliser les vagues et l’eau, puis créer une animation des vagues aléatoires et enfin mettre une texture 4K ? Grosso modo c’est ça ?

Merci

Refeuh
Niveau 21
14 juillet 2019 à 10:23:21

Il n'y a pas de methode universelle unique, car il y a autant d'approches que de types d'eau ; un ocean ne ressemble pas a une riviere, qui ne ressemble pas a une plage, qui ne ressemble pas à une piscine, etc. Se rajoutent les contraintes de performances, ressources, plateformes, hardware, etc.

Mais des qu'on parle de chosess "realistes", on arrive vite dans des modeles un peu complexes du style https://www.gamasutra.com/view/feature/3036/deep_water_animation_and_rendering.php?print=1

Il y a bcp plus de choses faites dynamiquement de maniere calculatoire sur le GPU, que simeplement qq modeles avec textures.

Pour donner un ordre de grandeur; c'est la meme gamme de complexite que les techniques de scattering pour les ciels/atmospheres dynamiques dans les jeux ouverts en exterieur, et ca demande de bonnes bases en theorie de traitement du signal.

Risotalita
Niveau 9
14 juillet 2019 à 11:17:14

Pfiouuu je pensais pas que c’était aussi complexe

razakhel
Niveau 10
14 juillet 2019 à 12:23:27

Nintendo avait utilisé une technique intéressante pour Mario Sunshine

https://blog.mecheye.net/2018/03/deconstructing-the-water-effect-in-super-mario-sunshine/

Alex3112
Niveau 22
14 juillet 2019 à 15:00:07

Non, tu ne modélise pas les vagues.
Une rivière, un lac, un océan, c'est toujours un plane (un carré) déformé par le shader.

Pour un lac où l'eau est calme, le mouvement de l'eau est simulé par une normal map qu'on déplace dans une direction pour créer un courant.
Si l'eau est stagnante, on utilise généralement deux normal map de tailles différentes qui se déplacent dans des directions apposées ce qui fait que les vagues se fondent les unes dans les autres et qui donne une impression de remous. Généralement il n'y a aucune texture pour la couleur de l'eau, juste une couleur RVB

Pour les vagues d'un océan, comme dit au dessus, les techniques les plus récentes utilisent la tesselation (une subdivision créée par le GPU des polygones du plane (ce qui nécessite un plane avec un nombre suffisant de polygones) et on fait déplacer ces polygones "virtuels" par le GPU en utilisant les infos d'une heightmap dont on fait varier l'intensité (pour faire monter/descendre les vagues). Tu peux ajouter une texture d'écume.

Le mouvement c'est une toute petite partie du réalisme, le plus gros venant effectivement des réflexions et dans une moindre mesure de la réfraction (cad la déformation de l'image par l'eau, comme une paille dans un verre qui à l'air pliée).
Pour les réflexions tu as des techniques précalculées peu couteuses comme les cubemap qui créent une projection de l’environnement sur l'eau, des techniques temps réel un peu plus couteuses mais peu réalistes comme les SSR ou très couteuses mais très réalistes comme les "planar reflections"

L'eau n'est pas non plus complètement transparente mais pas totalement opaque non plus, elle absorbe la lumière en fonction de son épaisseur. Pour une eau réaliste il faut calculer son opacité en fonction de la profondeur, généralement en la récupérant dans un buffer.

Le_Tryall
Niveau 8
14 juillet 2019 à 17:23:43

Pour le jeu Sea Of thieves (ils ont un Océan de dingue, les vagues sont sync en multijoueur et tout). Ils ont très probablement utilisés Houdini.

Houdini est un logiciel de FX / 3D procédural. Tu utilise des Noeuds pour indiquer au logiciel comment tu calcule tel ou tel choses. Tu peux link houdini avec des moteurs comme Unreal (ou Unity aussi il me semble).

C'est un niveau au dessus, à utiliser que si ton gameplay est centré sur la physique des vagues ou de l'eau

zebtorax
Niveau 9
14 juillet 2019 à 20:09:44

En matière d'effet spéciaux, l'eau est ce qu'il y a de plus important, voir de plus difficile à faire.
Enfin, pas forcément ce qu'il y a de plus difficile, mais en tout cas c'est le niveau 1 dans l'étape de l'apprentissage des FX, une fois que l'on maîtrise l'eau, on a plus de facilité avec les autres éléments (et je suis bien placé pour le savoir, ayant étudié dans une école FX avec des pro très reconnus du secteur...)
Oui il y a de très nombreuses techniques, allant du simple sprite sur plane avec alpha et displace, en passant par la map de poids jusqu'aux particules pour les effets les plus réalistes.
Mais les particules sont plus utilisés dans le cinéma que dans le JV. En dehors de quelques soft particuliers, utilisant Houdini comme l'a très bien fait remarqué mon VDD...

Kelheios
Niveau 6
24 juillet 2019 à 22:05:53

Histoire de compléter ce qui a été dit, je te partage l'excellente vidéo de pause process sur l'eau dans les JV qui est assez simple à aborder :oui:

https://youtu.be/iHIBt4L9NAI

1
Sujet : Comment faire une eau ultra réaliste ?
   Retour haut de page
Consulter la version web de cette page