Pour effectuer le rendu complet, nous devons maintenant calculer la couleur des pixels, et corriger l'erreur que nous avons commise en approximant la variation de profondeur des points. Ceci est effectué en extrayant ces informations des images de référence de la scène complexe de base.
Un petit nombre d'images de référence de la scène complexe est pris durant la phase de précalculs. Ces points de vue de référence stockent d'une part les couleurs de la scène, mais également la profondeur des points (le tampon de profondeur) ainsi que les normales de la surface, soit trois textures :
Les points de vue sont positionnés par l'utilisateur, de façon à couvrir le plus possible la surface de la scène. Ils ne sont pas obligatoirement positionnés sur la trajectoire. Le but idéal serait de disposer d'une méthode automatique de placement de point de vue permettant d'obtenir un recouvrement maximal, mais le placement à la main n'est pas très contraignant et en pratique, quelques points de vue suffisent à couvrir la scène de façon satisfaisante.
L'interpolation s'effectue au niveau du pixel, avec le concours de la carte graphique. Etant donnée la profondeur du point calculée avec la segmentation précédemment décrite, l'algorithme permettant d'extraire le meilleur pixel parmi les pixels des points de vue de référence se déroule comme suit.
[Interpolation de deux points de vue.]
![]() ![]() |
Etant donné un point à l'écran, de profondeur segmentée
, nous le transformons dans le repère de la scène, ce qui
donne le point 3D
(figure 4.3(a)).
Ce point est projeté sur le plan de projection des points de vue de
référence. Nous obtenons donc un ensemble de points 2D sur les caméras
de référence ( et
sur la figure). Chacun de ces points
correspond, par rétroprojection, à un point 3D dans l'espace de la
scène (
et
). Parmi ces points 3D, le meilleur est
celui qui est le plus proche de
. Dans l'exemple, le point de
vue 1 est le meilleur point de vue pour le pixel
: la distance
entre
et
est inférieure à la distance entre
et P. Nous attribuons donc au pixel
les attributs stockés dans
les textures du point de vue
, aux coordonnée 2D de
:
couleur, normale et profondeur.
En pratique, à cause des limitations en taille des shaders, nous n'effectuons les comparaisons de cette façon qu'avec au maximum trois des plus proches points de vue par rapport à la caméra virtuelle (sur la trajectoire).
Porquet Damien 2005-03-02