Kévin Boulanger a récemment mis en ligne sa thèse sur le rendu temps réel d'espaces naturels : herbe, arbres.
Le sujet peut sembler assez banal, d'autant plus que les derniers jeux 3D tels que Crysis ou le futur Far Cry 2 présentent des effets assez réalistes à ce niveau. En pratique, le résultat est assez bluffant, un gros travail sur la qualité de l'éclairage ayant été fait.
En 2005 et 2006, Kévin Boulanger a travaillé sur le rendu d'étendues d'herbes.
La difficulté principale de ce type de décor est le nombre de brins d'herbe nécessaires pour obtenir un résultat réaliste. Il est impensable de représenter chaque brin séparément à perte de vue, à moins de vouloir faire fondre sa carte graphique.
Une méthode classique consiste alors à utiliser des billboards :on utilise des textures 2D pour simuler les objets 3D, comme sur l'image suivante.
source : Nvidia (1)
L'image du bas montre l'envers du décor : de simples quads (des quadrilatères) sont placés dans la scène ; en affichant sur ces rectangles des textures avec un effet de transparence, on va simuler la présence d'herbe, en utilisant peu de polygones. Si on déforme dynamiquement les quads, on peut même simuler l'effet du vent.
Kevin Boulanger - Simulation d'herbe en temps réel
Le travail de Kévin Boulanger reprend un peu ce principe, mais avec utilisation de LOD (level of detail), une technique qui consite à détailler plus ou moins les objets en fonction de leur distance à la caméra : pour les zones très proches, on représente les brins d'herbe de façon géométrique. Dans les zones intermédiaires, des plans verticaux sont employés, un peu comme dans l'illustration issue de NVIDIA. Enfin, pour les zones lointaines, de simples plans horizontaux sont utilisés.
La simulation ne se limite pas là : l'ombrage entre brins d'herbes voisins est rendu de façon efficace (l'auto ombrage est lui laissé de côté car coûteux et peu utile), l'ambient occlusion est prise en compte via une texture prédéfinie : les zones d'herbe sous un arbre ou un banc seront donc plus sombres.
La vidéo qui suit montre le résultat obtenu en temps réel :
Au niveau performances, la méthode décrite par Kévin lui permet de simuler 627 millions de brins d'herbe virtuels à 20 images par seconde minimum (pire cas) sur un terrain de foot, avec une configuration qui n'a rien d'extraordinaire (GeForce 7800 GTX, 1024x768, antialiasing 4X).
Kévin Boulanger - éclairage temps réel d'arbres prenant en compte l'éclairage indirect
Depuis 2007, Kévin Boulanger s'intéresse aussi au rendu réaliste d'arbres, avec une méthode qui permet de prendre en compte non seulement la lumière solaire directe, mais aussi l'éclairage renvoyé par le sol, l'éclairage global du ciel et même la lumière transmise ou réfléchie par les feuilles voisines !
La méthode est plus intéressante que l'utilisation d'une texture prédéfinie ou qu'un précalcul, dans le sens où elle permet d'utiliser un éclairage dynamique et potentiellement de l'animation, tout en conservant un résultat cohérent.
Le principe est d'utiliser pour les calculs une modélisation simplifiée du feuillage, représenté comme une enveloppe convexe ; on considère notamment que les feuilles sont réparties de façon relativement uniformes à l'intérieur, et qu'elles sont de tailles semblables et petites par rapport à l'enveloppe globale (il serait d'ailleurs intéressant de tester les résultats sur des arbres ne vérifiant pas ces hypothèses).
Voyons plutôt le résultat en images :
Au niveau performances, une centaine d'arbres de 98 000 polygones est rendue à 27 fps dans le pire des cas sur une 8800 GTX.
Pour la suite, je vous invite à aller voir directement sur le site de Kévin Boulanger sa page consacrée au rendu d'arbres en temps réel, vous y trouverez de nombreuses captures, mais aussi des documents explicatifs.
Commentaires
Poster un nouveau commentaire