FLASH INFORMATIQUE FI

FI spécial été 2007 - Images


Simulation de foules d’humains virtuels en temps réel




Jonathan MAIM

Barbara YERSIN


Introduction

Ces dernières années, l’industrie cinématographique a développé de nouveaux effets spéciaux dans le but de représenter des foules convaincantes. Dans des films tels que Le Seigneur des Anneaux, nous avons pu observer d’immenses foules de guerriers réalistes qui nous ont littéralement scotchés sur nos fauteuils. Pour produire ces images impressionnantes, les studios d’effets spéciaux ont fait appel à une puissance de calcul considérable. En effet, une unique image peut demander plusieurs minutes, voire plusieurs heures de calcul pour être créée. Pour les professionnels des effets spéciaux, la contrainte de temps réel n’est donc pas le principal problème. Au VRlab, par contre, nous nous intéressons à ce challenge afin de créer des foules réactives à l’utilisateur. Pour satisfaire cette contrainte, les algorithmes utilisés doivent être capables d’être exploités plusieurs dizaines de fois par seconde. Les modèles développés peuvent ainsi être utilisés directement dans les jeux vidéo ou, par exemple, pour prévisualiser une séquence de film d’effets spéciaux de foules avant le coûteux rendu final. Dans cet article, nous décrivons plusieurs concepts qui nous permettent d’obtenir des foules imposantes et variées en temps réel, sur des ordinateurs conventionnels munis de GPU (Graphics Processing Unit).
Dans un monde idéal, les GPU seraient capables d’effectuer le rendu d’une infinité de triangles, chacun d’eux muni d’un ombrage complexe, et ceci pour chaque image. Pour visualiser des foules d’humains virtuels, nous utiliserions simplement des milliers de différents maillages de triangles déformables très détaillés (suffisamment pour, par exemple, animer le visage et les mains). Malheureusement, en dépit des avancées technologiques dans le domaine du hardware graphique programmable, nous sommes toujours limités par un certain budget de triangles à dépenser pour chaque image. Les maillages polygonaux très détaillés sont donc exploités en nombre limité et seulement s’ils sont proches de la caméra. De plus, il n’est pas envisageable de créer un maillage par humain virtuel composant la foule, car cela nécessiterait, d’une part, un travail énorme requérant une armée d’artistes habiles et, d’autre part, un stockage considérable en mémoire. Nous utilisons donc seulement une série limitée d’humains qui nous servent de modèles. À partir de ces modèles, grâce à différentes techniques de variété que nous décrirons plus loin dans cet article, nous générons des milliers d’instances uniques. Un exemple de foule variée est montré dans la figure 1.


JPEG - 10.8 ko
fig.1
six modèles d’humains virtuels sont utilisés pour générer une foule. Des techniques de variété de couleur ainsi que des accessoires sont appliqués pour obtenir de la diversité.

Représentations d’humains virtuels

Le concept des niveaux de détails est très utile pour effectuer un rendu efficace de la foule. Lorsqu’un humain virtuel s’éloigne du point d’intérêt, typiquement la caméra, nous allons progressivement remplacer son maillage détaillé par d’autres maillages, de plus en plus grossiers, puis ensuite encore par des représentations alternatives d’humains virtuels plus économiques en temps de calcul. Ceci nous permet d’afficher des foules imposantes de plusieurs milliers de personnes.
Parmi les représentations alternatives d’humains virtuels, citons les maillages rigides. Ceux-ci possèdent exactement la même apparence que les maillages déformables, la seule différence étant que les déformations dues à l’animation ont été précalculées. Les temps de calcul sont donc considérablement réduits. Il est possible d’afficher environ dix fois plus de maillages rigides que de maillages déformables. En contre-partie, le catalogue d’animation jouable en ligne est limité à celui préalablement calculé. Par exemple, des animations procédurales telles que les mouvements faciaux ne sont plus envisageables.
Finalement, les imposteurs sont souvent utilisés dans les simulations de foules en temps réel. Un imposteur représente un humain virtuel avec seulement deux triangles texturés formant un rectangle, donnant ainsi l’illusion voulue à une certaine distance. Similairement à un maillage rigide, les animations d’un imposteur sont précalculées, car la création en ligne serait trop fastidieuse. En effet, chaque posture de l’animation est stockée sur le GPU dans une texture différente et contient tous les points de vue nécessaires pour conserver l’illusion lorsque la caméra ou l’humain bouge. Un exemple de posture est montré dans la figure 2. Chaque texture est composée de deux parties distinctes :

JPEG - 8.2 ko
fig. 2
une texture 1024X1024 stockant l’UV map et la normal map d’une posture d’un imposteur sous plusieurs points de vue.
  • une normal map, qui stocke dans chacun de ses triplets RGB les normales de l’humain virtuel. La composante x de la normale est stockée dans le canal R, la composante y dans le canal G, et la composante z dans le canal B. Cette normal map est nécessaire pour appliquer un ombrage correct sur les humains virtuels rendus comme imposteurs ;
  • une UV map, laquelle stocke dans ses texels les coordonnées U et V des textures dans ses canaux R et G. Cette information supplémentaire est très importante, car elle permet d’appliquer sur chaque pixel de l’humain virtuel la texture correcte. Sans elle, il serait nécessaire de stocker une posture par texture d’humain virtuel disponible, et cela entraînerait un coût prohibitif en mémoire.

Comme les imposteurs sont simplement des rectangles 2D, leur affichage est très rapide. Par exemple, il est possible d’afficher une foule de 20’000 personnes grâce aux imposteurs et ceci 30 fois par seconde. Leur désavantage principal est le stockage des animations qui est très coûteux, à cause du nombre élevé d’images qu’il faut garder sur le GPU.

JPEG - 9.5 ko
fig. 3
une foule virtuelle dans un parc d’attractions exploitant les différentes représentations d’humains virtuels pour afficher un nombre conséquent d’individus

Techniques de Variété

Chaque modèle d’humain virtuel est utilisé pour instancier plusieurs milliers d’individus. Il est ainsi nécessaire de pouvoir varier les couleurs et la forme de chaque instance. La variation de couleur est basée sur l’idée de segmenter un humain virtuel en plusieurs parties. Cette segmentation peut se faire dans un des canaux d’une texture. Plus précisément, chaque partie de corps est représentée par un niveau d’intensité défini dans ce canal. Sachant que l’intensité dans un canal varie de 0 à 255, la partie de corps cheveux, par exemple, pourrait être attribuée à la valeur d’intensité 32, et ainsi de suite pour les autres parties de corps. Nous avons repris cette idée et l’avons appliquée à l’exploitation des segmentation maps pour obtenir une plus grande variété d’apparence. Par exemple, des transitions douces entre les parties de corps permettent d’obtenir une meilleure qualité de rendu pour les humains du premier plan. Les effets subtils de maquillage pour les personnages féminins, les motifs variés de textile, et les effets spectaculaires différents sur chaque partie de corps ne sont pas en reste comme on le voit dans la figure 4.

JPEG - 4.9 ko
fig. 4
exemples d’effets envisageables avec les segmentation maps : maquillage, taches de rousseur, motifs sur textiles, etc. Les valeurs de spécularité par partie de corps permettent d’obtenir par exemple des chaussures cirées ou des lèvres brillantes.

Il est important de rappeler que créer des modèles d’humains virtuels demande beaucoup de temps à un artiste. C’est pourquoi l’ajout des accessoires nous permet de varier encore l’aspect des instances générées. En effet, dans la vie réelle, les gens ont des coupes de cheveux différentes, portent des lunettes et des sacs, utilisent des téléphones portables, etc. Ces particularités sont des détails tout aussi importants que la variété de couleur, car la somme de ces détails permet de rendre uniques les humains virtuels composant la foule. Nous travaillons essentiellement avec des accessoires simples, c’est-à-dire des accessoires pouvant être juste posés sur l’humain virtuel et n’impliquant aucun changement dans son comportement. Par exemple, un chapeau posé sur la tête du personnage, ou une montre à son poignet, un sac à dos à ses épaules.
Pour l’affichage des accessoires, la technique utilisée pour les maillages déformables et rigides est similaire. Chaque accessoire est attaché à un endroit spécifique de l’humain virtuel. Prenons l’exemple d’un chapeau : il est généralement attaché au crâne des personnages et peut être orienté différemment selon le modèle d’humain virtuel le portant. Pour les imposteurs, les accessoires sont générés à l’avance, car ils sont eux aussi des imposteurs comme l’illustre la figure 5.

JPEG - 6.1 ko
fig. 5
un maillage de chapeau de cow-boy est transformé en imposteur. Des parties d’images sont échantillonnées tout autour du maillage pour créer les textures qui seront stockées sur le GPU.

Un problème important survient lorsque l’on exploite un imposteur humain et un imposteur accessoire : les occlusions. En effet, représenter chaque humain virtuel et chaque accessoire avec un rectangle 2D uniquement implique qu’on ne peut les afficher que de deux manières : soit l’accessoire est devant l’humain virtuel, soit c’est l’humain virtuel qui est devant l’accessoire. Cela peut créer d’importantes anomalies. Heureusement, grâce aux parties programmables du pipeline des cartes graphiques d’aujourd’hui, il est possible de traiter ce problème (cf. fig. 6).

JPEG - 6.6 ko
fig. 6
problèmes d’occlusion dus aux imposteurs ; à droite : occlusions traitées grâce au GPU

Une des actions prépondérantes des foules est la locomotion. C’est pourquoi nous nous sommes aussi intéressés à pouvoir y introduire de la variété. Pour cela, nous utilisons un moteur de locomotion capable de générer des cycles de marche et de course à vitesses variables. Cela donne déjà une impression de variété, car les gens ne marchent pas tous au même rythme. Pour accentuer encore la variété de mouvement des individus composant la foule, les cycles de locomotion sont passés au travers d’un moteur de cinématique inverse à priorités pour créer des animations secondaires telles que celles illustrées dans la figure 7.

JPEG - 5.9 ko
fig. 7
exemple de variété de mouvements introduite dans les foules  : mains dans les poches, appel téléphonique, main sur la hanche, etc.

Conclusion

La simulation de foules en temps réel est un domaine de recherche qui propose de nombreux défis, notamment, car elle demande l’utilisation performante des processeurs (CPU et GPU) pour obtenir des résultats convainquants. Nous avons décrit les différentes représentations utilisées couramment dans les simulations de foules en temps réel, ainsi que les différentes techniques permettant une variété accrue dans la génération des individus composant la foule. Il est pourtant très important de comprendre qu’il existe beaucoup d’autres domaines touchant aux simulations de foules en temps réel. Parmi tant d’autres, citons la planification des mouvements de foules dans différents environnements, leur comportement, leur interaction même avec l’environnement, ou encore les simulations d’évacuation, qui peuvent être exploitées pour valider de réels plans architecturaux.

Remerciements

Nous remercions Mireille Clavien pour son excellent travail sur le design des humains virtuels et des scènes.



Cherchez ...

- dans tous les Flash informatique
(entre 1986 et 2001: seulement sur les titres et auteurs)
- par mot-clé

Avertissement

Cette page est un article d'une publication de l'EPFL.
Le contenu et certains liens ne sont peut-être plus d'actualité.

Responsabilité

Les articles n'engagent que leurs auteurs, sauf ceux qui concernent de façon évidente des prestations officielles (sous la responsabilité du DIT ou d'autres entités). Toute reproduction, même partielle, n'est autorisée qu'avec l'accord de la rédaction et des auteurs.


Archives sur clé USB

Le Flash informatique ne paraîtra plus. Le dernier numéro est daté de décembre 2013.

Taguage des articles

Depuis 2010, pour aider le lecteur, les articles sont taggués:
  •   tout public
    que vous soyiez utilisateur occasionnel du PC familial, ou bien simplement propriétaire d'un iPhone, lisez l'article marqué tout public, vous y apprendrez plein de choses qui vous permettront de mieux appréhender ces technologies qui envahissent votre quotidien
  •   public averti
    l'article parle de concepts techniques, mais à la portée de toute personne intéressée par les dessous des nouvelles technologies
  •   expert
    le sujet abordé n'intéresse que peu de lecteurs, mais ceux-là seront ravis d'approfondir un thème, d'en savoir plus sur un nouveau langage.