Le pseudo-parallax mapping présenté ci-dessus n'a rien a voir avec le vrais parallax mapping que je vais présenter juste après ce message, il ne s'agit ni plus ni moin qu'une astuce visuel utilisant le concept du
- Qu'est-ce que le parallax mapping?
Le Parallax Mapping est une
amélioration du
Bump Mapping et du
Normal Mapping.
Il consiste en un traitement des textures par le processeur graphique afin accentuer leur réalisme.
Concrètement, cette technique permet de restituer encore plus précisément l’illusion du relief d’une surface plane.
Selon l’angle de vue, le rendu de la texture sera différent, donnant ainsi une impression de relief encore plus prononcée et réaliste.
Exemple sur cette textures de roche :
Voyez-vous l'effet de relief généré ?
- Comment ça marche ?
Le
parallax mapping est généré selon une carte de niveau, appeler
"heightmap" ou "displacemap"
Exemple :
Les creux sont en noir, les sommet en blanc, le reste des niveau de gris fond la fusion entre les sommet et les creux
Le moteur 3D va découper selon l'heightmap plusieurs tranche de la texture, en commençant par les sommet, plus il y auras de tranche de textures superposé, plus le
parallax mapping sera convainquant.
Voici une représentation grossière des différente tranches de textures générer par un moteur 3D :
image extraites du site
de jerome jouvie
- Où rencontre-ton le parallax mapping ?
On trouve du
parallax mapping dans tout les jeux récent (environs supérieur au année 2004), mais aussi dans certain jeux libre comme Xreal, Nexuiz, Quake World, cela même si le
parallax mapping est une technologie plutôt ancienne, venant directement de l'offset mapping qui date d'aussi loin que le simple bump mapping.
Le
parallax mapping est un effet visuel qui n'a rien d'une déformation de polygone en 3D, c'est pour cela qu'on la préfère au
displacement mapping qui est très lourd a supporter en temps réel car cette fois si, la texture se déforme bel et bien réellement.
Cela dit, étant donner que le nombre de textures afficher est multiplié par 10 ou 20, une carte graphique récente est conseiller pour ne pas "lagger" lors de l'affichage de texture en
parallax mapping.
- Quel rapport avec Urban Terror qui ne gère même pas correctement le bump mapping ?
Le rapport c'est que c'est fun, sympathique visuellement et surtout, que c'est possible, et rien que pour ça, ca vaut le coup de tenter !
Voyez plutôt ces images que j'ai passer la journée à sortir :
- Mouai, pas très beau ton truc....
He oui malheureusement, à coté d'un vrais
parallax mapping + bump + specular c'est moche mon pseudo-parallax ! mais c'est le maximum qu'on puisse faire !
De toutes façon, le principe c'est qu'il faut un maximum de tranche pour obtenir un effet correct, moi je me suis arrêter à 5 tranche, forcément, l'effet est moin présent...mais est quand même visible
- Comment fait-on ?
Tout d'abord, si vous ne l'avez pas encore compris, le but est d'empiler des tranches d'image :
Pour cela il nous faut une texture qui se prête facilement au
parallax mapping :
Ensuite, avec un logiciel tel que The Gimp ou Photoshop, on va appliquer du noir en dégradé sur les joints de ce pavage :
Et encore et encore :
Ensuite, on ajoute un masque alpha (transparence) sur chaque image puis on retire ce noir pour ne laisser que la transparence :
En enregistre l'image au format
.tga car le tga gère la transparence, et Urt gère le tga.
Puis on créer un shader pour les 4 images, la 5eme image sera simplement opaque puisqu'elle représentera le fond du sol en pavé, donc pas de shader pour la 5e.
Exemple de shader :
Code : Tout sélectionner
//Sol 3D fake parallax 01
//---------------------------------------------
textures/3D_testShader/Sol_3D_fakeParalax_tranche01
{
qer_editorimage textures/3D_test/Sol_3D_fakeParalax_tranche01.tga
surfaceparm alphashadow
surfaceparm trans
cull none
nopicmip
nomipmaps
{ //GLASS BORDER
map textures/3D_test/Sol_3D_fakeParalax_tranche01.tga
blendfunc GL_ONE GL_ZERO
alphafunc GE128
depthwrite
rgbGen identity
}
{ //LIGHTMAP
map $lightmap
rgbGen identity
blendFunc GL_DST_COLOR GL_ZERO
depthFunc equal
}
}
Copier/coller ce shader autant de fois que vous avez de tranche.
Dans GTK Radiant cela ce présente de cette façon :
Créez un brush et passer-le intégralement en "player clip" ou "full clip", surtout pas en "no draw no solid"
Ajuster une grille de 0.5 ou encore plus petit si vous le désirez et réduisez le brush à l'épaisseur minimum de votre grille.
Sur une des façe, appliquer votre texture n°5, celle qui n'est pas shaderisé : le fond
Copier/coller ce brush et avancer le d'un carreaux devants la n°5, puis appliquer sur la même façe la couche n°4 :
Dupliquez à nouveau, et appliquez la couche n°3 et recommencez pour chaque couche qui compose votre parallax :
Ce qui donne ceci :
Une fois en jeu :
Et voila comment on fait du
parallax mapping dans Urban Terror 4.1 !
Évidement, vous l'avez compris, plus il y a de tranche, plus c'est beau, et plus les tranches sont serrez, plus l'effet d'escalier sera absent !
- Conclusion
Pour conclure je dirais que l'effet visuel a quand même de la gueule pour un jeu comme Urban terror, bien qu'évidement, le subterfuge saute au yeux
Sachez quand même que le
vrais parallax mapping est une des amélioration graphique tant attendu sur la version 4.2 / 4.3 d'urban terror, donc cet artifice visuel, que dis-je, cette bricole ne vous servira plus à rien amis mappeur, lors de l'avènement de la 4.2 / 4.3 !
Pour la suite je compte sortir prochainement une map de
démonstration technique entièrement en pseudo-
parallax mapping, juste pour les yeux et pour marquer la version 4.1 d'une map en avance sur son temps
Et c'est parce que je trouve que le
parallax mapping est une technologie formidable, que j'ai voulut vous faire partager ma découverte toute simple qui consiste à reproduire
manuellement du
parallax mapping dans Urban Terror !
Bon parallax mapping !