30 votes

OpenGL, comment créer un "polygone bosselé" ?

Je ne sais pas comment décrire ce que je cherche, alors j'ai fait un dessin pour m'aider :

OpenGL question

Ma question est la suivante : est-il possible avec OpenGL de créer l'illusion de ces bosses ressemblant à des pixels sur un seul polygone, sans avoir à utiliser de nombreux polygones ? Et si c'est le cas, quelle est la méthode ?

21voto

David C. Bishop Points 2107

Je pense que ce que vous cherchez est en fait Cartographie de la parallaxe (ou cartographie d'occlusion de parallaxe).

Démonstrations :
http://www.youtube.com/watch?v=01owTezYC-w
http://www.youtube.com/watch?v=gcAsJdo7dME&NR=1
http://www.youtube.com/watch?v=njKdLvmBl88

Le mappage parralaxe fonctionne essentiellement en utilisant la carte de hauteur pour modifier la coordonnée UV de la texture utilisée.

Le principal inconvénient de la parallaxe est que tout ce qui semble être "en dehors" du polygone sera coupé (pensez à regarder une image sur un téléviseur 3D), il est donc préférable pour les choses en retrait dans une surface plutôt que d'en sortir (bien que vous puissiez réduire cela en rendant le polygone plus grand que la zone de texture visible). Elle est également assez complexe et doit être combinée avec d'autres techniques de shaders pour obtenir un bon effet.

Le bump mapping fonctionne en utilisant une texture pour les normales, ce qui donne l'impression que l'ombrage de la lumière est en 3D, mais il ne modifie pas les données 3D en fonction de la position de l'observateur, seulement l'ombrage. Le bump mapping serait également assez inutile pour l'image d'exemple du PO puisque la surface a le même angle mais à des hauteurs différentes, le bump mapping repose sur les changements d'angles des surfaces. Vous devriez incliner les bords comme suit ce .

Le mappage/tessellation par déplacement utilise une texture pour générer plusieurs polygones au lieu d'un seul.

Il y a une vidéo qui compare les 3 ici

EDIT : Il y a aussi Cartographie du relief qui est similaire à la parallaxe. Voir Démonstration . Il y a un vidéo comparative aussi (c'est un peu de mauvaise qualité mais le relief semble donner une meilleure profondeur).

14voto

Ernest Friedman-Hill Points 56605

Je pense que ce que vous cherchez est cartographie des bosses. Le lien renvoie à un tutoriel simple.

13voto

genpfault Points 28836

Vous pensez peut-être aussi à cartographie des déplacements .

6voto

Russell Borogove Points 8423

Des techniques mentionnées dans les réponses d'autres personnes :

  • Le bump mapping est le plus facile à réaliser, mais il ne permet pas d'occlusion.
  • Le mapping parallaxe est probablement le plus complexe à réaliser, et ne fonctionne pas bien dans tous les cas.
  • Le mappage de déplacement nécessite du matériel et des pilotes haut de gamme, et crée une géométrie supplémentaire.
  • Modéliser réellement les polygones est toujours une option.

Cela dépend vraiment de la distance à laquelle vous voulez que le spectateur se trouve et de l'importance des bosses. Si vous volez dans la tranchée de l'Étoile de la Mort, vous devrez modéliser les bosses ou utiliser le displacement mapping. Si vous vous trouvez à quelques centaines de mètres, le bumpmapping devrait suffire.

3voto

Uday Points 110

Si vous disposez d'un matériel de classe DX11, vous pouvez tesséliser le polygone puis appliquer le displacement mapping. Voir http://developer.nvidia.com/node/24 . Mais ensuite, il devient un peu compliqué de le faire fonctionner et de développer quelque chose par-dessus.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X