Sous-sections


Imposteurs

Toujours dans le but d'obtenir une grande complexité visuelle au moindre coût, il existe une classe de techniques regroupées sous le terme d'imposteurs. Toutes ces méthodes effectuent un pré-rendu hors-écran (off-screen) d'une partie de la scène. L'image créée est utilisée par la suite en temps que texture plaquée sur un rectangle positionné au sein de la scène. Ainsi, à la place de l'objet complexe est affiché son image : un imposteur [MS95].


Billboards et Sprites

Les plus simples des imposteurs sont les billboards (litt. ''Panneau d'affichage'') et les sprites (litt. ''lutin''). Un billboard est un plan texturé placé dans la scène, représentant un objet complexe. Typiquement, les billboards sont employés pour représenter des objets tels que des nuages ou des arbres, très difficiles à modéliser explicitement. On distingue les billboards toujours parallèle à l'écran, ceux toujours orientés vers l'observateur et ceux qui sont de simples plans fixes dans l'espace de la scène. Chacun de ces types de billboards est adapté au rendu de certains types d'entités. Ceux toujours parallèles à l'écran ou orientés vers l'observateur servent par exemple pour représenter des nuages ou de la fumée. Un arbre, par contre, est souvent approximé par deux billboards perpendiculaires positionnés dans la scène.

Les sprites se différencient du billboard par l'utilisation qui en est faite et leur mise en oeuvre : un sprite est généralement plus petit, en mouvement dans la scène et appliqué directement à l'écran. En résumé, un billboard est un plan 3D tandis qu'un sprite est un rectangle 2D toujours parallèle à l'écran quelle que soit l'orientation de la caméra.

Dans [HAA97], Horry et al. utilisent des billboards extraits de photographies dans le cadre de leur méthode nommée ''Excursion dans une image'' (Tour Into the Picture). Le principe est de déformer une image (voir la section 1.4.4 traitant du morphing) en fonction de son point de fuite. Le point de fuite sert de repère pour la création (par l'utilisateur) d'un maillage recouvrant la scène, et la séparant en différentes zones (arrière plan, sol, bords, ...) (figure 1.23 page [*]). Les billboards sont utilisés pour modéliser les objets aux premiers plan de l'image et sont déplacés lors de l'animation afin d'accompagner le mouvement de pénétration dans l'image. Leur technique, très artistique, a été utilisée dans de nombreux vidéoclips : le déplacement des billboards, combiné à une légère déformation de l'image donne l'impression de pénétrer dans l'image.

Figure 1.23: Horry et al. [HAA97]
[Image de référence]\includegraphics[%
width=0.25\columnwidth,
keepaspectratio]{eps/ea-TIP1.eps}[Maillage de l'image]\includegraphics[%
width=0.25\columnwidth,
keepaspectratio]{eps/ea-TIP2.eps}[Image obtenue ]\includegraphics[%
width=0.25\columnwidth,
keepaspectratio]{eps/ea-TIP3.eps}


Plus récemment, Décoret et al. [DDSD03] ont utilisé le principe des billboards pour effectuer l'affichage d'objets géométriques complexes. Le principe de leur méthode est de remplacer l'objet par la combinaison de plusieurs billboards représentant l'objet sous différents angles. Leur méthode permet de répartir automatiquement un certain nombre (fixé par l'utilisateur) de plans recouvrant l'objet de façon optimale. Cet ensemble de billboards (polygones à texture transparente) est simplement affiché lors du rendu, les plans se superposant et se combinant à l'aide de la composante de transparence des textures (figure 1.24 page [*]).

Figure 1.24: Décoret et al. [DDSD03]
[Modèle original]\includegraphics[%
width=0.23\columnwidth,
height=3cm,
keepaspectratio]{eps/decoret-1.eps}[Billboards l'approximant]\includegraphics[%
width=0.23\columnwidth,
height=3cm,
keepaspectratio]{eps/decoret-2.eps}[Textures]\includegraphics[%
width=0.18\columnwidth,
height=3cm,
keepaspectratio]{eps/decoret-4.eps}[Modèle reconstruit]\includegraphics[%
width=0.23\columnwidth,
height=3cm,
keepaspectratio]{eps/decoret-3.eps}

Le modèle géométrique ainsi remplacé est approximé visuellement, ainsi la méthode est elle particulièrement adaptée à la simplification ''grossière'' d'objets. De plus, un grand nombre de textures sont nécessaires pour obtenir une qualité visuelle acceptable, et l'espace mémoire de la carte graphique est une ressource critique. Néanmoins, l'affichage est extrêmement rapide car il se fait à l'aide du simple placage de texture. De plus, l'éclairement peut varier (utilisation d'une carte de normales) et la projection d'ombre est également possible.

Dans [YSK+02] Yamazaki et al. utilisent des billboards, comme Décoret et al., pour effectuer le rendu en temps réel d'un objet très complexe, obtenu à l'aide d'un dispositif d'extraction de forme à partir de photographies effectuées autour du modèle (réel). L'objet, une peluche, est très difficile à modéliser explicitement, à cause de la fourrure. Pour chaque photographie, la coque englobante de l'objet, photographiée sur un ''fond bleu'', est extraite et sert à récupérer un version approchée de sa géométrie (figure 1.25(a)).

Ces photographies servent de texture pour le nuage de billboards qui sont positionnés à l'aide la géométrie approximée (figure 1.25(b)). Ainsi, une texture permet de générer tout un ensemble de billboards, au lieu d'un seul, d'où le terme de billboarding en microfacettes (microfacet billboarding). Chaque microfacette est toujours affichée perpendiculairement à la direction d'observation et est texturée avec du placage de texture dépendant du point de vue, de façon à mélanger les meilleures images de référence de l'objet (figures 1.25 (c) et (d)).

Le rendu final est très rapide. De plus, le modèle de base peut être un modèle réel, ce qui permet un grand réalisme. Le problème principal de cette méthode est que l'éclairement ne peut varier, du fait de l'emploi de placage de texture dépendant du point de vue.

Figure 1.25: Yamazaki et al. [YSK+02]
[Images de référence]\includegraphics[%
width=0.50\columnwidth,
height=2.5cm,
keepaspectratio]{eps/microfacet-r3.eps}[Microfacettes]\includegraphics[%
width=0.17\columnwidth,
height=2.5cm,
keepaspectratio]{eps/microfacet-4.eps}[Choix des images de référence par microfacettes]\includegraphics[%
width=0.17\columnwidth,
height=2.5cm,
keepaspectratio]{eps/microfacet-3.eps}[Interpolation dépendante du point de vue]\includegraphics[%
width=0.17\columnwidth,
height=2.5cm,
keepaspectratio]{eps/microfacet-1.eps}[Image reconstruite]\includegraphics[%
width=0.17\columnwidth,
height=2.5cm,
keepaspectratio]{eps/microfacet-2.eps}

Imposteurs statiques

Maciel et Shirley [MS95] ont introduit les imposteurs pour la visualisation interactive dans un environnement virtuel extrêmement complexe. Ils définissent un imposteur comme une entité qui est plus rapide à dessiner que l'objet réel, tout en gardant ses principales propriétés visuelles. Ainsi, ils remplacent des parties complexes de la scène par un modèle simplifié texturé englobant permettant d'obtenir un taux d'affichage élevé et approximativement constant. En utilisant en plus la technique des niveaux de détails (section 1.2), ces modèles simplifiés texturés sont appelés Imposteurs.

Dans leurs travaux, la scène complète est modélisée à l'aide d'un maillage géométrique conventionnel et les textures des imposteurs sont stockées dans une structure hiérarchique précalculée. Lors du rendu, la hiérarchie est traversée de haut en bas afin de trouver le meilleur compromis visuel pour le point de vue : au pire, quand il y a trop de modèles à afficher en temps réel, une simple boîte englobante texturée est dessinée. Ainsi, le problème principal de cette méthode est de savoir quel imposteur dessiner pour maximiser la qualité visuelle de l'image sans dépasser le temps d'affichage maximum fixé par l'utilisateur.

Imposteurs dynamiques

A la différence des imposteurs statiques, tous pré-générés, Shaufler [Sch95] a introduit les imposteurs dynamiques. Dans cette méthode, un imposteur est toujours représenté par une image de l'objet plaquée sur un polygone transparent (cf. figure 1.26 page [*]). Ce qui a motivé ce travail est le fait que l'approche avec des imposteurs précalculés devient rapidement inutilisable dès que le nombre de d'objets augmente car l'espace mémoire nécessaire pour stocker les textures est limité. De plus, la définition des textures ne peut pas être déterminée précisément à l'avance ce qui oblige à toujours prévoir le pire des cas : un imposteur vu de près, nécessitant une haute définition, donc beaucoup de mémoire, alors qu'il est possible que cet objet apparaisse toujours au dernier plan de la scène. Pour finir, l'ensemble discrétisé des directions de vue pour lesquelles les textures de l'imposteur statique sont générées limite les points de vue pour lesquels l'imposteur est visuellement valide.

Figure 1.26: Imposteur. A gauche, l'objet original, à droite, l'imposteur.
\includegraphics{eps/ea-imposteur.eps}

Schaufler propose donc de générer un imposteur par objet, et ce, lors du rendu. La scène et ses imposteurs est stockée dans une structure hiérarchique appelée ''three dimensional image cache''. Durant le rendu, les imposteurs sont utilisés pour remplacer les objets complexes. Pour déterminer la validité visuelle d'un imposteur, l'angle maximal en dessous duquel tous les points de la surface de l'objet sont aussi dans l'image est évalué. Tant que l'angle de vue de l'imposteur est inférieur à ce seuil, l'imposteur est considéré valide. Si le point de vue n'est pas translaté mais que seule la direction de vue change, l'imposteur reste valide. Ainsi les imposteurs peuvent être réutilisés d'une image à l'autre lors de l'animation, et ne sont régénérés que si ils deviennent invalides, accélérant ainsi le rendu.

Shade [SLS+96] a proposé une méthode similaire à celle de Schaufler. Durant une phase de précalculs, un arbre BSP qui partitionne hiérarchiquement les primitives géométriques de la scène est construit. Lors du rendu, les images de la géométrie stockée dans chaque noeud sont mises en cache pour être réutilisées par les images suivantes de l'animation. Un telle image mise en cache est réutilisée en la plaquant sur un simple rectangle qui remplace la géométrie du noeud.

Nailboards et imposteurs en couche

Les précédentes méthodes traitent toutes les images comme des polygones texturés. Une valeur de profondeur est assignée à chaque imposteur afin de déterminer ceux destinés à être en avant plan, des autres. Ce système en couche ne résoud pas les problèmes de visibilité en général étant donné qu'un imposteur ne peut être que soit devant, soit derrière un autre. L'utilisation de polygones transparents texturés provoque également des problèmes de visibilité car les polygones peuvent s'intersecter ou intersecter la géométrie de la scène. De plus, ces images planes ne prennent pas en compte les effets de parallaxe et d'occlusion quand elles sont vues d'un point de vue différent du point de vue de capture.

Nailboards

Pour résoudre ces problèmes, Schaufler a proposé une nouvelle primitive graphique nommée nailboard [Sch97], qui étend les imposteurs dynamiques. Un nailboard est un polygone sur lequel est plaqué une texture de type $ RVB\Delta$ , représentant un objet complexe. Pour chaque texel, la composante $ \Delta$ représente la distance entre le polygone de l'imposteur et l'objet réel. Quand cette texture est générée à partir de l'objet réel, la valeur de $ \Delta$ est récupérée directement à partir du tampon de profondeur. Ensuite, lors du rendu, cette valeur est utilisée pour changer la profondeur du polygone de l'imposteur. Schaufler décrit les transformations nécessaires pour pouvoir intégrer ce nailboard au tampon de profondeur standard et ainsi obtenir une visibilité correcte. Avec cette méthode, un nailboard peut être mélangé au rendu conventionnel.

Imposteurs en couches

Une autre extension des imposteurs dynamiques à été proposée par Schaufler dans [Sch98], appelée imposteurs en couche (layered impostors). Un imposteur dynamique remplace un objet complexe par un polygone transparent sur lequel est plaquée une image de l'objet. Un imposteur en couches est composé de plusieurs de ces polygones. Tous les pixels d'une couche sont à une distance identique de l'observateur, c'est à dire que les pixels d'une image sont distribués sur plusieurs calques en fonction de leur profondeur (cf. image 1.27 page [*]). Comme les imposteurs en couche contiennent une profondeur (approximative), il est possible de résoudre correctement les problèmes de visibilité lors des changement de point de vue. Une mesure d'erreur visuelle identique aux imposteurs standard est utilisée pour savoir quand régénérer l'imposteur. Avec cette technique, un imposteur a une durée de vie supérieure aux imposteurs monocouches.

Figure 1.27: Imposteurs en couches ([Sch98])
\includegraphics[%
width=0.70\columnwidth,
keepaspectratio]{eps/ea-layers.eps}


Imposteurs maillés

Jusqu'ici, les méthodes à base d'imposteurs plaquent une image sur un plan (quadrilatère ou polygone). Néanmoins, la durée de vie (le nombre d'images de l'animation pour lesquelles l'imposteur est valide) de ces imposteurs est courte à cause des effets de parallaxe. Afin d'augmenter ce temps de vie, un certain nombre d'algorithmes utilisent une géométrie plus complexe. Ils n'utilisent plus seulement une image pour remplacer la géométrie distante de l'observateur mais un maillage de triangles. Cette classe d'imposteurs est appelée imposteurs maillés (meshed impostors). Le principe est de trianguler la scène en fonction de zones approximativement planes, durant une phase de précalculs. Lors du rendu, l'affichage du maillage sur lequel est plaqué l'image capturée est effectué.

Darsa et al. [DCV97] proposent une technique de rendu basée image pour la naviguation dans un environnement 3D virtuel complexe. Un ensemble de cartes d'environnement cubiques sont pré-affichées à partir d'un certain nombre de points de vues fixés dans l'environnement. Ensuite, un maillage polygonal est créé par triangulation des six cartes de profondeurs ainsi obtenues. Lors du rendu, une vue de la scène pour un point de vue arbitraire est créée en plaquant la texture d'environnement sur les maillages créés. Plusieurs cartes d'environnement avec leur maillage de triangles sont mélangés pour remplir les trous et éliminer les artéfacts1.22 visuel (déformation, étirement des triangles sous des point de vues différents des points de vue de capture1.23) en combinant les images de profondeurs issues de la structure à l'aide d' $ \alpha$-blending, du stencil buffer ou de l'accumulation buffer1.24.

Sillion et al. [SDB97] utilisent ce principe pour la visualisation en temps réel d'environnement urbains. A chaque image de l'animation, la ville est découpée en deux parties : la partie distante (arrière plan) et la partie proche de la géométrie (premier plan). La géométrie au premier plan est affichée normalement, tandis que les parties distantes sont remplacées par des imposteurs maillés. Une image de la partie distante est générée une seule fois pour un point de vue donné et est stockée dans une texture (la texture de l'imposteur). Le contour externe de la scène distante est construit à partir de l'image de profondeur (issue du z-buffer) : le maillage de triangles associé à la texture constitue alors l'imposteur (cf. figure 1.28 page [*]). Un des problèmes avec cette approche est que la séparation imposteur/géométrie réelle est visible lorsqu'on s'en rapproche.

Figure 1.28: Imposteurs maillés de Sillion ([SDB97]).
[Texture de l'imposteur]\includegraphics[%
width=0.30\columnwidth,
keepaspectratio]{eps/ea-sillion1.eps}[Tampon de profondeur]\includegraphics[%
width=0.30\columnwidth,
keepaspectratio]{eps/ea-sillion2.eps}[Imposteur maillé]\includegraphics[%
width=0.30\columnwidth,
keepaspectratio]{eps/ea-sillion3.eps}

Chen et al. [CSKK99] ont proposé une méthode similaire pour accélérer le rendu de terrain : un image est générée à partir de toute la géométrie du terrain à chaque position clé. Cette image est réutilisée par placage de texture sur une version simplifiée de la géométrie durant l'intervalle entre deux positions clés.

Porquet Damien 2005-03-02