Sous-sections

Résultats

La figure 2.5 montre le résultat de l'interpolation des trois points de vues. A gauche des images sont affichées les textures des points de vue de référence sélectionnés. Au centre, le triangle de couleur représente les coordonnées barycentriques de l'intersection entre le point de vue virtuel et la face de la sphère des points de vue. Dans cet exemple, 128 points de vue de référence ont été utilisés.

Figure 2.5: Mélange pondéré de couleurs de trois points de vue de référence.
\includegraphics[%
width=0.40\columnwidth,
keepaspectratio]{eps/exp-interp-couleurs-result1.eps}\includegraphics[%
width=0.40\columnwidth,
keepaspectratio]{eps/exp-interp-couleurs-result2.eps}

Comme le montre l'image de gauche, quand le point de vue virtuel est proche d'un point de vue de référence (par rapport aux deux autres), le résultat visuel est acceptable. Par contre dans le cas le plus défavorable (image de droite) où le point de vue virtuel est au centre d'une face (coordonnées barycentriques du point de vue virtuel égales à 1/3), le mélange donne les plus mauvais résultats. Ceci est dû, comme nous le montrons dans le paragraphe suivant, au trop grand écart entre le maillage simplifié et le maillage d'origine.

Dans cet exemple, le modèle du tigre fait approximativement 300 faces, et le modèle simplifié 80. La pré-acquisition des 128 points de vue de référence a pris environ 1 mn (carte graphique ATI Radeon 9700 Pro). La taille d'une texture, stockée dans la carte graphique, compressée au format DXT1 pour une définition de 512x512 pixels est de 128 Ko. Le rendu s'effectue extrêmement rapidement, car le calcul par pixel, une simple opération de mélange, est très peu coûteux. Dans cet exemple, nous obtenons plus de 300 FPS.

Dans la figure 2.6 nous avons utilisé un maillage simplifié (sous-figure (c)) dont la surface est proche de celle du modèle original (sous-figure (a)). Le résultat est meilleur en ce qui concerne les effets de flou à l'extérieur de l'image de l'objet, mais ils subsistent à l'intérieur de l'image (sous-figure (b)).

Figure: Placage de texture dépendant du point de vue. Les trois points de vue de références utilisés sont éloignés les uns des autres d'un angle supérieur à 45^&cir#circ;. La figure du centre montre les effets de ghosting qui apparaissent (principalement autour du visage).
[Modèle original (approx. 1 million de triangles)]\includegraphics[%
width=0.30\columnwidth,
keepaspectratio]{eps/exp-buddha-interp-0.ppm.eps}[Modèle simplifié avec placage de texture dépendant du point de vue]\includegraphics[%
width=0.30\columnwidth,
keepaspectratio]{eps/exp-buddha-interp-1.ppm.eps}[Vue en fil de fer du modèle simplifié (6000 triangles)]\includegraphics[%
width=0.30\columnwidth,
keepaspectratio]{eps/exp-buddha-interp-2.ppm.eps}

Ce modèle est constitué de 1,1 million de faces, et s'affiche à un taux d'environ 20 FPS de façon conventionnelle (NVIDIA GeForceFx 5600). Avec l'emploi du placage de texture, nous obtenons un taux d'affichage supérieur à 100 FPS. Dans cet exemple, nous avons utilisé trois points de vue de référence très éloignés entre eux (angle entre les axes optiques > 45^&cir#circ;).

Artefacts visuels

Afin d'isoler les problèmes, nous avons appliqué le mélange de couleurs en utilisant uniquement deux images de référence, et en interpolant les couleurs issues de chaque point de vue en fonction d'un paramètre $ t$ représentant l'angle de la caméra virtuelle entre les deux points de vue. Soit : $ I(x,y)=(1-t).I_{0}(u_{0},v_{0})+t.I_{1}(u_{1},v_{1})$, avec $ t\in[0,...,1]$. Cette manipulation correspond à considérer l'évolution du point de vue virtuel le long d'une arête d'un triangle du maillage de la sphère : seuls deux points de vues interviennent dans le calcul de l'image résultante.

Comme le montre la figure 2.7, les artefacts visuels qui apparaîssent lors de l'affichage du maillage simplifié sont d'une part du ghosting, qui correspond au fait que l'on voit les silhouettes floues des images de départ et d'arrivée lors de l'interpolation et d'autre part du blurring, c'est à dire des effets de flou dus à la superposition des deux images.

Figure 2.7: Interpolation de deux points de vue. A gauche, l'image de départ ($ t=0)$. A droite, l'image d'arrivée $ (t=1)$. A centre, le résultat de l'interpolation à $ t=0.5$.
\includegraphics[%
width=0.95\columnwidth,
keepaspectratio]{eps/exp-interpolation-deux-pvs.eps}

Les artefacts visuels sont dus aux effets de parallaxe, eux même dus à l'écart entre la surface réelle et la surface approximée. Quand cette distance est trop grande, ce qui est le cas dans nos tests avec le tigre, les effets de ghosting dégradent complètement l'image. La figure 2.8 illustre ces problèmes.

Figure 2.8: Artefacts visuels lors du mélange d'images
[Blurring (flou)]\includegraphics[%
width=1.0\columnwidth,
height=4cm,
keepaspectratio]{eps/exp-artefacts-blurring.eps}[Ghosting]\includegraphics[%
width=1.0\columnwidth,
height=4cm,
keepaspectratio]{eps/exp-artefacts-ghosting.eps}

La figure 2.8(a) montre la provenance du problème de flou (blurring). Celui-ci est dû au fait que, étant donné un point $ p$ à dessiner, la couleur résultante sera un mélange des couleurs de $ p_{0}$ et de $ p_{1}$ , au lieu de la couleur du point réel $ P_{R}$ de la surface originelle. On constate également que l'erreur (la distance entre $ p_{R}$ et $ p_{1}$ ou $ p_{0}$ ) augmente en fonction de l'écartement de la surface approchée par rapport à la surface réelle ainsi qu'en fonction de l'écart entre les points de vue de référence.

La figure 2.8(b) illustre le problème de ghosting. L'origine du problème est la même que pour le flou, mais la différence est que dans ce cas, $ p$ est coloré uniquement avec la couleur de $ p_{0}$ c'est à dire avec l'image du point de vue 0. C'est l'artefact le plus remarquable des deux. Afin d'éviter cet effet en bordure de l'image, la solution classique ([PCD+97,DTM96,PHL+98]) consiste à stocker un coefficient de pondération (en plus de la texture de couleur) en chaque pixel de chaque image de référence. Ce coefficient vaut 1 au centre de l'image et décroît vers 0 en bordure de l'image de l'objet (voir la figure 1.22), ce qui permet ''d'éliminer'' (dans ce cas) le point de vue 1 de la pondération. Néanmoins, cette solution n'est pas satisfaisante dans tous les cas car elle ne supprime que le ''ghosting extérieur'' à l'image.

Le ''ghosting intérieur'' est dû au fait que que certaines parties de l'objet sont cachées à partir d'un point de vue, mais que ce point de vue est quand même utilisé dans la pondération des couleurs. Dans la figure 2.9 nous avons mis en évidence le problème en colorant la surface du modèle de base avec une texture à motifs francs qui permet de faire ressortir les effets de ghosting.

Figure 2.9: Ghosting. (a) : les trois points de vue de référence. (b), (c) et (d) : résultat de l'interpolation de textures selon différents angles, avec éclairage fixé.
[]\includegraphics[%
width=1.0\columnwidth,
height=6cm,
keepaspectratio]{eps/exp-snap-pv012.eps}[]\includegraphics[%
width=1.0\columnwidth,
height=6cm,
keepaspectratio]{eps/exp-snap0.eps}[]\includegraphics[%
width=1.0\columnwidth,
height=6cm,
keepaspectratio]{eps/exp-snap1.eps}[]\includegraphics[%
width=1.0\columnwidth,
height=6cm,
keepaspectratio]{eps/exp-snap2.eps}

Les artefacts de flou peuvent être réduits en utilisant des points de vue de référence plus proches les uns des autres mais le pendant est que l'on augmente la taille mémoire de la structure.


Interpolation des normales

Une autre piste que nous avons suivie pour augmenter la qualité visuelle de l'interpolation a été de prendre en compte la variation de l'éclairement de la scène. En effet, l'ombrage du modèle augmente le réalisme du rendu et la variation de cet ombrage intervient pour beaucoup dans la perception qu'a l'observateur de la cohérence de l'image.

Figure 2.10: Texture de normales
0.30
\includegraphics[%
scale=0.4]{eps/exp-render-normales.eps}

Pour pouvoir faire varier l'éclairement de l'objet le principe est de pondérer l'éclairement de la surface en fonction de son orientation par rapport à la lumière. Pour cela, nous avons employé le modèle de Phong dans lequel nous avons ignoré les reflets spéculaires liés à la position de l'observateur. L'orientation de la surface est représentée par sa normale qui peut être issue directement du maillage simplifié ou précalculée à partir du modèle complet et stockée dans une texture.

Dans le premier cas, on peut utiliser une normale par face (modèle d'éclairement de Lambert) ou interpoler les normales des sommets au sein de chaque triangle (modèle de Phong). Dans le second cas, la normale utilisée est issue de la carte de normales.

Dans notre cas, la carte de normales est stockée dans une texture associée à chaque point de vue de référence. Pour l'acquérir, nous effectuons le rendu de l'objet complexe en remplaçant la sortie des composantes $ (r,g,b)$ du pixel par les cooordonnées $ (dx,dy,dz)$ de la normale à la surface interpolée au sein des faces. L'image obtenue représente alors en chaque pixel la normale à la surface (image 2.10). Les composantes de la normale étant des valeurs signées dans l'intervalle [-1.0,...,1.0], nous devons les transformer pour qu'elles puissent être stockées en lieu et place d'une texture de couleurs dont les valeurs sont représentées sur 8 bits, dans l'intervalle [0,...,255]. La perte de précision s'avère visuellement indiscernable.

La figure 2.11 montre le résultat du placage de texture dépendant du point de vue avec un éclairement variable issu d'une unique source de lumière. Dans la figure (a), nous utilisons une seule normale par face du maillage simplifié (flat shading). Dans la figure (b) les normales sont interpolées au sein des faces à partir des sommets (Phong Shading). Dans la figure (c), nous utilisons les normales issues des textures de normales des points de vue de référence.

Figure 2.11: Placage de texture avec interpolation des normales pour le calcul de l'éclairement. Le maillage simplifié utilisé est composé de 3000 faces.
[Modèle de Lambert : une normale par face.]\includegraphics[%
width=1.0\columnwidth,
height=7cm,
keepaspectratio]{eps/exp-comp0.eps}[Normales du maillage simplifié interpolées au sein des triangles (Modèle de Phong)]\includegraphics[%
width=1.0\columnwidth,
height=7cm,
keepaspectratio]{eps/exp-comp2.eps}[Normales interpolées issues des trois textures de normales des points de vue de référence.]\includegraphics[%
width=1.0\columnwidth,
height=7cm,
keepaspectratio]{eps/exp-comp-with.eps}

Les normales sont mélangées comme les couleurs, en fonction des coordonnées barycentriques du point de vue virtuel. Comme le montre cette dernière image, les effets de flou sont atténués et le relief plus apparent. Le modèle simplifié est ici composé de 3000 faces, contre 1,1 million pour le modèle complet. Le taux d'affichage est de 70 FPS dans les deux premiers cas, et de 60 FPS dans le dernier, pour une définition de 512x512 pixels sur une GeForce 5950. Bien que l'emploi de textures de normales double le coût mémoire, celui-ci reste acceptable, au vu de l'amélioration du taux d'affichage et de la qualité visuelle obtenue.

Porquet Damien 2005-03-02