Formation OpenGL |
|
|
Lorsque l'on dessine les reflets des objets, il faut s'assurer qu'ils ne seront visibles qu'à l'intérieur du miroir. Sinon on obtient un effet peu crédible, comme l'illustre l'image ci-contre. |
![]() |
Dessiner dans le Tampon Chromatique les reflets des objets dans le miroir en utilisant le Tampon Stencil comme masque, avec glStencilFunc(GL_EQUAL, 1, 1) et glStencilOp(GL_KEEP, GL_KEEP, GL_KEEP) pour indiquer qu'on ne modifie pas la valeur du Tampon Stencil. |
![]() |
et Dessiner la surface du miroir dans le Tampon Chromatique, en utilisant la transparence (Blending) pour mélanger la couleur du miroir avec celle du reflet. |
![]() |
Dessiner les objets de la scène. |
| Cette situation est en effet incongrue: dans les 3 images ci-contre, la théière plonge dans le miroir, jusqu'à voir son reflet devant le miroir... | ![]() |
![]() |
![]() |
![]() |
Il faut mettre en oeuvre une solution pour n'afficher le reflet que
s'il est derrière le miroir.
|
![]() |
Et voilà que l'idée étrange nous prend de regarder
derrière le miroir : dans cette image la théière est derrière le miroir, et son reflet est donc devant le miroir par rapport à l'utilisateur, mais derrière par rapport au miroir : le plan de clipping ne le supprime donc pas... |
![]() |
On met en oeuvre une dernière astuce : lors de l'affichage du miroir dans le Tampon Stencil, on n'affiche que sa face avant, c'est-à-dire que l'on n'affiche que les polygones qui sont orientés vers la caméra. Pour ce faire, on supprime les faces arrières, c'est le Culling
: |
Le programme reflet.cpp illustre les différentes techniques présentées dans ce chapitre.
Affichez une sphère, et ajoutez un plan de clipping dont l'orientation est contrôlée interactivement.
