BASE POUR TOME 3 DE 3DSMAX7.cdr

Transcription

BASE POUR TOME 3 DE 3DSMAX7.cdr
CGItrainer.com
www.
[email protected]
BUMP MAPPING
NORMALE MAPPING
R
HO
on
???
E
I
R
É
S
S
e
r th
o
f
ly
in
Itra
CG
er ’
EN
s STUD
TS
CGI TRAINER regroupement de formateurs spécialisés
dans le domaine de l'imagerie numérique.
Note personnelle:
Je remercie tout ceux qui m’encouragent et me félicitent pour mes PDF. Je remercie aussi ceux qui les critiquent de manière constructives.
Je suis désolé de mon orthographe lamentable... C’est devenu un label d’origine ( “Arboit’s touch” ) de mes PDF.
Si je donne GRATUITEMENT certains PDF c’est que ce ne sont que des explications techniques ( du presse-bouton en sorte ! ) ; avec il
est vrai, ça et là quelques approches plus poussées. Je trouve cela lamentable que certains enseignants les utilisent
sans signaler aux étudiants la source; ainsi que la disponibilité . Les PDF que je donne gratuitement sont simplement des aides
techniques à la compréhension d’un logiciel, un enseignant digne de ce nom devrait donner des exercices orientés GRAPHIQUEMENT et
ARTISTIQUEMENT, la connaissance d’un logiciel graphique 3D n’est rien, si on oublie que c’est un outil sans plus; et non un étalage
de fonctionnalités. Le but d’un formateur est d’apprendre à apprendre; donc de faire comprendre la philosophie d’un logiciel, sans plus.
Avec en plus une orientation vers la narration de l’image et de l’animation.
Etudiants, vous qui trouvez, ou utilisez mes PDF... Donnez-les à d’autres; partagez-les, distribuez-les...et chers professeurs et formateurs,
faites la même chose !
JF Maquiné
ONVERSITY Articles
CGItrainer.com
www.
[email protected]
HISTOIRE...
Le BUMP... Le BUMP MAPPING...et le reste de la famille !.
En 1978, Jim Blinn publie un article présentant un algorithme mathématique permettant de simuler des effets de relief à une texture.
Cette technique a été appelée le bump mapping.
Historiquement, le procédé de Blinn ne servait pas à faire du bump mapping tel qu'on l'entend aujourd'hui. Blinn travaillait sur un algorithme qui
avait pour but d'accentuer les détails des images qui avaient perdu de leur qualité, soit à cause d'une mauvaise prise de vue, soit à cause de
traitements numériques répétés qui, au fur et à mesure faisaient perdre une partie de la précision à l'image (en 1970, ils ne disposaient pas de la
précision des outils informatiques d'aujourd'hui). La hauteur était générée par une fonction aléatoire. Mais rapidement, il est apparu que le procédé de
Blinn pouvait servir à générer les reliefs des textures, et donc tel a été le destin de cette invention :).
Bon alors, comment fonctionne le bump mapping de Blinn ? C'est ce que nous allons voir dans les prochains chapitres. Toutefois, avant d'y arriver,
il nous faudra voir comment est géré l'éclairage d'une surface et comment on l'applique à cette surface, ainsi que quelques notions de mathématique.
Pour terminer, je souhaite répondre à une question que certains lecteurs pourraient se poser. Pourquoi ne pas précalculer les reliefs. En fait, cette
technique existe et se nomme le bump mapping précalculé. Toutefois, elle a un gros défaut. Les reliefs sont statiques, alors que la technique de bump
mapping de Blinn permet d'avoir des effets de relief qui varient en fonction de la situation. Imaginez-vous dans un couloir sombre avec une chandelle
à la main. Seul le bump mapping permettra de faire varier les reliefs des textures au fur et à mesure que vous avancez.
Le bump mapping est une méthode mathématique destinée à produire
un effet de relief sur les textures utilisées dans les applications
d'images de synthèse. Cette méthode, conçue par Blinn en 1978,
présente l'inconvénient de nécessiter de nombreux calculs à chaque
pixel d'une texture, et ne se prête pas à l'intégration dans les
processeurs. Le bump mapping de Blinn est essentiellement une
technique destinée aux stations graphiques disposant de
microprocesseurs pouvant fournir la puissance de calcul nécessaire.
Avec l'essor de l'image de synthèse pour les marchés grand public,
la nécessité de disposer d'une telle fonction se faisait de plus en plus
pressante, mais les ordinateurs étaient dans l'incapacité de fournir la
puissance de calcul nécessaire. Pour démocratiser son utilisation, on a
développé des méthodes de bump mapping, aux qualités graphiques
légèrement inférieures à la méthode de Blinn, mais nécessitant moins
de calculs et se prêtant mieux à l'intégration dans les processeurs
graphiques. C'est le cas de l'emboss, du Dot Product et l'Environment
Mapped Bump Mapping.
L'une des clés, pour obtenir une bonne qualité de bump mapping, est l'éclairage. Je consacre donc deux chapitres sur les méthodes d'éclairage et
d'ombrage des textures.
Par extension, on a développé des techniques de réflexion bump mapping qui permettent d'appliquer au relief d'un objet l'image de son environnement.
Il suffit de penser à une théière en argent cabossée sur laquelle se reflète ce qui l'entoure. L'idée générale consiste à associer des méthodes de
réflexion comme la réflexion sphérique, double paraboloïde et cubique à des méthodes de bump mapping comme l'Environment Mapped et le Dot
product bump mapping.
CGItrainer.com
www.
HISTOIRE...
[email protected]
Le BUMP... Le BUMP MAPPING...et le reste de la famille !.
Vecteur, normale et interpolation... Et prise de tête !
Il n'est pas question ici de fournir des définitions mathématiques, des termes de vecteur, normale ou interpolation, mais les idées qu'ils représentent afin
que la majorité des lecteurs puissent suivre les explications des chapitres suivants.
Vecteur :
Lorsqu'on veut connaître le poids d'une orange, le volume d'un tas de foin, ... on utilise des grandeurs comme 5 Kg, ou 220 litres. Mais si on veut parler,
par exemple, du vent qui souffle, les grandeurs numériques sont insuffisantes. Ainsi lorsqu'on parle du vent, est-il intéressant d'avoir sa vitesse mais
aussi sa direction. C'est pour décrire ce genre de choses qu'on a créé les vecteurs.
Les vecteurs sont des grandeurs définies par un nombre et une droite orientée. Une droite orientée, ça veut dire une droite qui définit la direction
du vecteur ET son sens. Méfiez-vous, quand on parle de direction en mathématique on ne précise pas le sens, ce n'est pas comme dans le langage courant.
Graphiquement, on représente un vecteur par une flèche. A l'écrit on représente un vecteur par une lettre en caractère gras ou avec une petite flèche
au-dessus.
La longueur d'un vecteur est appelée sa norme. Il existe une formule mathématique pour la calculer.
Normale :
Normale désigne en mathématique, le vecteur perpendiculaire à une surface et partant d'un point de cette surface. Pour une surface plate
(ou plane comme on dit en math), toutes les normales sont parallèles. Par contre, sur un terrain cabossé, elles n'ont pas toutes la même direction.
Dans le cas du bump mapping, les normales jouent un grand rôle et c'est elles qui vont permettre de
définir le relief du terrain. En fonction de l'angle qu'elles présentent comparé à la base du terrain,
on saura comment le terrain est cabossé.
Interpolation :
En mathématique, les points d'un graphique sont déterminés par une fonction, mais si on n'a que les points, il peut être intéressant de trouver une fonction
qui y corresponde. C'est Lagrange (mathématicien français) qui a mis au point cet outil mathématique très utile.
L'interpolation linéaire consiste à trouver une fonction qui relie deux points. C'est l'équation d'une droite. Une fois cette équation trouvée, on va pouvoir
déterminer la valeur des points situés entre les deux points de référence ayant servi à définir l'équation de la droite.
Autrement dit, admettons que vous connaissiez la hauteur de quelques points d'une route. L'interpolation va vous permettre de trouver une fonction qui
passe par ces points et qui permettra de trouver la hauteur de tous les autres points. Par trouver, il faut comprendre estimer.
L'interpolation est une méthode d'approximation, et en règle générale, c'est une bonne méthode.
Méthode d'éclairage
Les méthodes d'éclairage sont des modèles mathématiques simulant les effets de lumière sur
une surface. On distingue deux grands groupes de modèle mathématique. Les modèles globaux
qui prennent en compte l'ensemble des interactions des effets lumineux d'une scène 3D.
Le Ray-Tracing et la radiosité sont des modèles d'éclairage global. Et les modèles locaux, qui
ne prennent en compte que les effets directs de lumière. On trouve dans ce groupe des méthodes
comme celle de Lambert, Phong, ... Ces modèles ont l'avantage d'être rapides à calculer et donc
compatibles avec les exigences de calcul en temps réel d'animations 3D comme les jeux.
CGItrainer.com
www.
HISTOIRE...
[email protected]
Le BUMP... Le BUMP MAPPING...et le reste de la famille !.
Le bump mapping utilise généralement un éclairage de Phong. Ce modèle a l'avantage de bien prendre en compte les pics d'intensité de lumière,
ce qui n'est pas le cas de la méthode de Lambert.
Lumière ambiante et diffuse ( voir PDF sur les lumières !)
La lumière ambiante est un éclairage qui s'applique uniformément à toutes les parties d'un objet et dont on ne peut pas préciser la direction de la source
de lumière. Imaginez une pièce ronde dont les murs produiraient une lumière, aucun objet au centre de cette pièce n'aurait d'ombre.
La lumière diffuse est similaire à la lumière ambiante à ceci près qu'on peut déterminer la direction de celle-ci. Ce qui implique qu'il y aura des ombres
à gérer. La lumière du soleil est un cas de lumière diffuse.
Lumière spéculaire
Elle correspond à un pic d'intensité de lumière qui peut apparaître sur une petite partie d'un objet réfléchissant et qui dépend non de la direction de la
lumière mais de la direction du regard de l'observateur. Ca vous paraît bizarre ? Quand on suit une voiture qui est éclairée par le soleil, son pare-brise
arrière peut vous éblouir, mais il ne s'agit que d'un point particulier et celui-ci persiste quelque soit votre position.
Normalement, la lumière spéculaire doit être prise en compte par les modèles d'éclairage, mais si ce n'est pas le cas, on utilise un artifice mathématique
(ou une texture précalculée) pour ajouter la lumière spéculaire.
Différence entre ombrage et ombre portée
L'ombrage est l'ombre qu'un objet produit sur lui-même, alors que l'ombre portée
est l'ombre qu'un objet produit sur un autre. Par exemple, la planète Terre est
éclairée par le soleil, mais seulement sur une partie, l'autre partie est dans l'ombre
(c'est la nuit) et cette ombre (ombrage) est produite par la planète Terre
elle-même. De même, quand vous marchez au soleil, votre ombre se projette
sur le sol, c'est l'ombre portée ou projetée.
Ce sont des méthodes d'application des modèles d'éclairage sur les objets 3D. Avant de voir un descriptif des méthodes les plus connues, il est
nécessaire d'expliquer les différences de dénomination de ces méthodes. En anglais, ces méthodes sont appelées des shading et la traduction
française est ombrage. Toutefois, il n'est pas rare de lire les expressions de lissage de Gouraud ou de Phong au lieu d'ombrage. En fait, les méthodes
de Gouraud et de Phong permettent d'effectuer non seulement un ombrage des objets 3D mais aussi un lissage de la surface composée de polygones.
On peut d'ailleurs le voir en regardant le graphique ci-dessous. Avec l'ombrage plat, on continue de percevoir nettement les différents polygones,
tandis qu'avec les autres méthodes, l'objet apparaît beaucoup plus naturel et réaliste.
CGItrainer.com
www.
[email protected]
Ombrage plat ou flat shading
Méthode la plus simple du point de vue calcul et la plus rapide. Mais elle produit un résultat de faible qualité. L'ombrage est bien réalisé, mais pas le lissage,
c'est-à-dire qu'on perçoit encore nettement les séparations entre les différents polygones. De plus, flat shading n'est pas du tout adapté pour rendre les
effets de lumière spéculaire.
Ombrage de Gouraud ou Gouraud shading
Cette technique apporte une importante amélioration au flat shading, à savoir qu'elle applique non seulement la lumière diffuse, mais permet de lisser la
surface de l'objet. Ce lissage fait disparaître les les parties anguleuses qui apparaissent à la jonction des polygones, comme on peut le voir sur le graphique
précédent. Bien sûr, cela nécessite plus de calculs, mais le résultat en vaut la peine. Voyons le principe algorithmique de Mr Gouraud.
Le problème du flat shading est qu'il considère chaque polygone composant un objet comme indépendant l'un de l'autre. C'est ça qui fait qu'on perçoit si
bien les différents polygones, et fait conserver un aspect anguleux aux objets. Pour résoudre ce problème, la première idée de Gouraud, c'est de faire la
moyenne des valeurs des couleurs des sommets de chaque polygone en contact, ce qui va avoir pour effet de niveler les différences de couleur entre chaque
polygone.
Sur le graphique ci-dessous, les points P1, P2 et P3 sont les sommets d'un polygone (ici un triangle), mais chacun de ces point est aussi sommet des autres
polygones en contact avec lui. La valeur moyenne que calcule Gouraud représentera l'intensité lumineuse à appliquer au polygone.
La seconde idée, c'est d'utiliser l'interpolation linéaire entre P1, P2, P3 pour déterminer l'ensemble des couleurs
contenues dans le polygone. En fait, il s'agit d'une interpolation bilinéaire très semblable à celle utilisée dans le
filtrage bilinéaire. Pour faire cette interpolation, on convertit d'abord les normales P1, P2, ...
En grandeur numérique représentant la couleur en ces points en calculant leur norme.
La méthode est la suivante :
1 - On fait la moyenne des normales des polygones pour chacun de leur sommet.
2 -On calcule leur norme pour obtenir la couleur moyenne des points de chaque sommet.
3 - On fait une interpolation linéaire entre P1 et P3, puis une entre P1 et P2.
4 - On détermine un point a et b dont on détermine la couleur grâce à l'interpolation.
5 - On fait une interpolation linéaire entre a et b
6 - On calcule l'intensité lumineuse pour chaque point M situé entre a et b grâce à l'interpolation linéaire.
7 - On répète les opérations 4, 5 et 6 jusqu'à avoir fait tous les points du polygone. Pour répéter ces opérations, on utilise généralement un algorithme
dit de balayage ou 'scanlines'.
La technique d'ombrage de Gouraud a été, et reste dans certains cas, l'une des plus utilisées, grâce au rapport vitesse de calcul/qualité graphique
qu'elle produit. Toutefois, elle n'est pas exempte de défauts. Ainsi, elle gère très mal la lumière spéculaire. Comme le montre le graphique, celle-ci
est bien présente, mais apparaît diffuse, ce qui ne correspond pas à ce qu'est la lumière spéculaire. De plus, elle produit un ombrage un peu trop
régulier et la conséquence est un manque de réalisme dans l'éclairage.
A quoi cela est-il du ? En transformant le vecteur normale, calculé aux sommets des polygones, en une grandeur numérique (valeur de la couleur)
avant de faire les interpolations, on présuppose que l'angle entre les normales du polygone et la direction de la lumière sera toujours la même.
C'est vrai pour les surfaces plates, mais pas pour les surfaces courbes comme celles d'une sphère. Pour résoudre ce problème, il faudrait continuer
à utiliser une normale durant l'interpolation. C'est ce que fait l'ombrage de Phong que nous allons voir à présent.
CGItrainer.com
www.
[email protected]
Ombrage de Phong ou Phong shading
Le modèle d'ombrage de Phong permet non seulement d'avoir un ombrage général plus réaliste, mais aussi de prendre en compte la lumière spéculaire
(n'oublions pas que Phong est aussi l'auteur de la méthode d'éclairage. donc ne confondez pas sa méthode d'éclairage avec sa méthode d'ombrage.
Phong reprend exactement la même technique que Gouraud à ceci près qu'au lieu de faire l'interpolation des couleurs pour chaque point du polygone, il
fait une interpolation sur les normales, pour déterminer la normale en chaque point (la valeur de la couleur est ensuite déterminée en calculant la norme
de la normale).
Donc sur le graphique ci-dessous, identique à celui décrit pour la méthode de Gouraud, les points P1, P2 , P3, a, b et M sont des normales et non des valeurs
numériques. Bien entendu, le point M sera ensuite transformé en une grandeur numérique pour définir la couleur finale.
La méthode est la suivante :
1 - On fait la moyenne des normales des polygones pour chacun de leur sommet.
2 - On fait une interpolation linéaire entre les normales P1 et P3, puis une entre P1 et P2.
3 - On détermine une normale aux points a et b grâce à l'interpolation.
4 - On fait une interpolation linéaire entre a et b.
5 - On calcule la normale pour chaque point M situé entre a et b grâce à l'interpolation linéaire.
6 - On calcule la norme de la normale au point M pour obtenir sa valeur d'éclairage.
7 - On répète les opérations 3, 4, 5, 6 jusqu'à avoir fait tous les points du polygone.
Le principal inconvénient de la méthode de Phong est le temps de calcul. Non seulement l'interpolation sur des vecteurs nécessite plus de calculs,
(un vecteur en 3 dimensions est défni par 3 grandeurs numériques ce qui implique 3 fois plus d'additions et de multiplications que lors d'une interpolation
de la couleur définie par une seule grandeur), mais il faudra aussi définir la norme des normales en chaque point. Bref l'ombrage de Phong est beaucoup plus
lourd en calculs que celui de Gouraud.
Pour faire du bump mapping, on utilise généralement l'ombrage de Phong associé à une méthode d'éclairage de type Phong ou Blinn (oui, Blinn a aussi défini
une méthode d'éclairage qui ressemble d'ailleurs beaucoup à celle de Phong)
MAINTENANT VOYONS Le bump mapping
Le bump mapping est une technique permettant de donner l'illusion de relief, sans augmenter la géométrie.
Qu'est-ce que la géométrie ? C'est l'ensemble des points qui définissent une scène 3D. Ca c'est la version courte de la définition de la géométrie,
la version longue est : c'est l'ensemble des points qui définissent les polygones, qui eux-mêmes définissent les objets, qui eux-mêmes définissent le contenu
de la scène 3D et donc la scène elle-même. En mettant en mouvement les objets, et donc les polygones, et donc les points, on produit une animation 3D.
Quel rapport entre la géométrie et le bump mapping ? En théorie, dans un espace en 3 dimensions, seuls les objets en 3 dimensions peuvent avoir un relief.
Or, une texture est un objet en 2 dimensions et les pixels qui la composent sont aussi en 2 dimensions. Pour obtenir du relief sur une texture, il faudrait
transformer chaque pixel en élément de géométrie, c'est-à-dire en point ayant des coordonnées X,Y et Z.
Cette solution est inenvisageable dans la mesure où cela augmenterait d'un facteur 100 à 1000 le travail du processeur graphique et du microprocesseur.
C'est là où l'astuce de Blinn prend tout son sens et que je vais vous décrire à présent.
Méthode générale du bump mapping
Blinn s'est inspiré de la méthode d'ombrage de Phong, en utilisant comme lui des normales. L'intérêt des normales pour Blinn est double. D'abord, elles
offrent une bonne précision pour faire des calculs entre la surface définie par les normales et l'éclairage, ensuite un vecteur normale est toujours
perpendiculaire à la surface, donc si on incline une normale, cela signifie qu'à l'endroit où la normale est inclinée, la surface l'est aussi.
Voici la méthode générale :
CGItrainer.com
www.
[email protected]
Le bump mapping
1 - On affecte à chaque point de la texture une normale.
2 - On applique aux normales de la texture une fonction de perturbation, qui correspond aux variations de la hauteur du relief qu'on veut donner à la texture.
3 - On applique une méthode d'éclairage où les normales de la surface subissent une modification de leur direction.
En fait, c'est assez semblable à la méthode d'ombrage de Phong, à ceci près qu'avant d'appliquer l'éclairage, on modifie les normales par une fonction de
perturbation.
Concernant l'interpolation qui apparaît dans la méthode de Phong et pas dans la méthode que j'ai donnée, on peut très bien l'appliquer si l'on fait du
bump mapping sur un objet composé de plusieurs polygones et donc de plusieurs textures. L'interpolation sert dans ce cas à faire un lissage entre les
différentes facettes. Voici deux exemples commentés de bump mapping.
Premier exemple : Il s'agit d'une texture appliquée à 1 ou plusieurs polygones disposés dans le même plan. C'est le cas des murs, des plafonds ...
Cette texture a subi une perturbation et l'application d'un modèle d'éclairage. On peut voir par contre que l'effet spéculaire est pris en compte.
Deuxième exemple : Il s'agit d'un objet complexe composé de plusieurs polygones et textures. L'ensemble a subi une perturbation pour donner
l'impression de relief, un ombrage de Phong associé à un modèle d'éclairage. L'effet spéculaire n'est pas présent et pourrait laisser penser qu'on utilise
le modèle d'éclairage de type Lambert, mais il ne faut pas oublier que les reflets spéculaires ne sont pas présents sur toutes les surfaces, seules les
surfaces moyennement ou fortement réfléchissantes peuvent avoir un tel effet, ce qui n'est pas vraiment le cas de la Lune.
Pour aller plus loin dans la compréhension, il faut bien saisir le mécanisme du traitement mathématique fait par les techniques d'ombrage,
d'éclairage et de perturbation. Ce sont des équations mathématiques qui travaillent sur des vecteurs définis dans un espace à 3 dimensions.
Or, une texture est un objet en deux dimensions. On a donc le schéma général de travail suivant :
CGItrainer.com
www.
[email protected]
Le bump mapping
Il y a deux choses à savoir en regardant ce schéma, la première c'est que pour des raisons pratiques et/ou d'optimisation, les développeurs regroupent
généralement les fonctions de conversion dans les algorithmes de calcul mathématique. La seconde, c'est qu'on traite un point de la texture après
l'autre, au lieu de traiter tous les points d'un coup à chaque étape.
Cette dernière remarque est très importante car si on traitait tous les points à chaque étape, on serait obligé de créer des tableaux. C'est justement
ce qu'on souhaite éviter car sinon on se retrouverait dans la même situation que si on définissait une géométrie (des coordonnées 3D) pour chaque point.
Je rappelle que cette situation n'est pas acceptable car elle augmenterait d'un facteur 100 à 1000 les temps de calcul sur l'ensemble des calculs à
effectuer pour animer la scène 3D.
Le 'True Bump Mapping'
Nous avons vu au chapitre précédent la méthode générale de bump mapping, et en début de celui-ci, qu'on ne pouvait pas coder les informations de relief
dans un tableau. La solution à ce problème associé à la méthode est la méthode pratique que Blinn a mise au point et qu'on nomme parfois le
'true bump mapping' pour la distinguer des autres méthodes qui en dérivent.
L'astuce du bump mapping de Blinn consiste à substituer le tableau des informations de relief à une texture dont la couleur des points correspond à la
hauteur du relief en chaque point.
Cette texture est appelée 'bump map' ou texture de relief. Voici un exemple de ce type de texture associée à la texture de base.
Les parties sombres de la 'bump map' représentent les points les plus bas du relief, et les parties claires, les plus hautes. La méthode générale pour
faire du bump mapping selon Blinn consiste :
1 - On associe à chaque point de la texture de base un vecteur normale, et on traite chaque point un après l'autre.
2 - On modifie la taille du vecteur normale grâce aux informations contenues dans la 'bump map'. A chaque point de la texture de base correspond un
point de la 'bump map'.
3 - On modifie l'angle du vecteur normale en appliquant une formule mathématique (méthode d'éclairage)
4 - En connaissant la taille et l'angle du vecteur normale, on peut déterminer l'intensité lumineuse à appliquer sur la couleur de la texture de base.
Et voilà ... :)
Bien sûr, les développeurs compactent tout ça et utilisent parfois certaines astuces de programmation, mais le procédé général correspond à celui
que je viens de vous décrire.
Maintenant où est le problème ? En fait, il y en a deux. Le premier est la puissance de calcul que le bump mapping implique, quoiqu'aujourd'hui les
stations graphiques professionnelles commencent à fournir la puissance nécessaire, mais ce n'était pas le cas il y a 10 ans et encore moins il y a 20 ans,
quand cette technique a été mise au point. La seconde, c'est qu'un processeur graphique est un processeur spécialisé et ne dispose pas de tout
l'éventail des fonctions mathématiques nécessaires au bump mapping. Ce qui signifie que l'utilisation du bump mapping dans un processeur graphique
ne s'improvise pas.
Pour répondre à cette double problématique, puissance de calcul nécessaire et disponibilité des fonctions pour mettre en oeuvre le bump mapping,
les constructeurs de processeurs ont tenté et tentent encore de trouver des adaptations à la méthode de base du bump mapping
CGItrainer.com
www.
[email protected]
L'emboss bump mapping
L'emboss bump mapping ou le Multi-Pass Alpha Blended Bump Mapping n'estpas à proprement parler une technique de bump mapping mais de simulation
visuelle de bump mapping, c'est-à-dire qu'elle n'utilise pas la technique mathématique du bump mapping, mais une astuce visuelle. Cette fonction est
d'ailleurs facilement simulable avec un logiciel de retouche d'image (ce que j'ai fait pour les besoins de ce chapitre) quoiqu'ils possèdent tous une fonction
nommée généralement 'Estampage' ou 'Emboss'.
Voyons à présent comment est généré le bump mapping par la technique dite 'Emboss Bump Mapping' ou EBM. On a besoin de deux textures. La texture de
base et la texture dite 'bump map' contenant les informations du relief qu'on veut donner à la texture de base.
1 - A partir du bump map, on va créer un 'bump map décalé' qui contient l'effet d'ombre du relief du bump map. Il suffit de dupliquer le bump map.
On décale la copie selon la direction, le sens de l'éclairage. Plus le décalage est important, plus on obtient un effet de relief important.
2 - On superpose le 'bump map' au 'bump map décalé' pour obtenir le 'masque de bump mapping'. Généralement, on effectue une addition ou soustraction
des couleurs de chacune de ces textures (une fonction 'ET' ou 'OU' produira le même résultat).
3 - On superpose la texture de base au 'masque de bump mapping' pour obtenir le résultat final. Comme pour l'étape précédente, on effectue une addition
ou soustraction des couleurs.
C'est tout et ça marche. On a l'impression d'un relief, mais
ce n'est pas très sophistiqué et les limitations sont
nombreuses : faible qualité d'ombrage lorsque les nuances
des différents objets sont faibles, ne rend pas
correctement compte des reliefs lors de sources lumineuses
multiples, ... Il faudra attendre l'EMBM et le Dot3 bump
mapping pour abandonner cette technique.
Pour terminer, je souhaiterais vous expliquer la signification
du terme 'Multi-pass alpha blended bump mapping'.
On associe/fusionne (blended) des textures en jouant sur
la transparence (alpha est le nom du canal couleur gérant
la transparence) et en effectuant plusieurs passes
(multi-pass).
CGItrainer.com
www.
[email protected]
Le Dot product bump mapping
Le problème du bump mapping tel que défini par Blinn, c'est ses temps de calcul et en particulier l'application d'une méthode d'éclairage. Mais le bump
mapping de Blinn est déjà optimisé. Rappelez-vous, Blinn utilise une texture nommée bump map pour stocker les informations de relief. Pourquoi ne
pas étendre cette optimisation à l'éclairage et utiliser une 'light map' ? C'est ce que fait le 'Dot product bump mapping' ou 'Dot3 bump mapping'
Entrons de suite dans le vif du sujet, voici un graphique représentant les différentes étapes du dot product bump mapping. Regardez-le bien et ensuite,
je vous dirais tout ce que vous voulez savoir sur cette technique de bump mapping.
Explications :
La 'light map' est une texture qui contient pour chaque point l'information d'éclairage, c'est-à-dire la direction et le sens de la lumière. Le 'normal map'
contient l'information de relief pour chaque point, c'est-à-dire le sens et la direction du vecteur normale perpendiculaire à la surface.
On multiplie les vecteurs de la 'light map' avec ceux de la 'normal map' point par point. Le résultat fournit l'intensité lumineuse à appliquer à la texture
de base.
Le dot product permet de gérer les effets spéculaires, mais il peut arriver, pour des raisons de précision de calcul, que cet effet ne soit pas bien rendu.
On ajoute dans ce cas une texture qui permettra
d'effectuer une correction de l'effet spéculaire.
Comme le montre l'exemple graphique, le résultat est
plutôt sympathique, et le dot product bump mapping est
considéré comme une des méthodes les plus fidèles à
l'esprit de la méthode 'true bump mapping' de Blinn.
Toutefois, malgré le fait que le dot product nécessite
moins de calculs que le 'true bump mapping', il n'en reste
pas moins gourmand pour bon nombre de cartes graphiques,
et est peu utilisé par les développeurs. Cela pourrait bien
changer dans les mois à venir avec le futur moteur 3D
d'ID-Software développé pour DOOM 3.
Voici ce que cela peut donner (âmes sensibles s'abstenir ;) ).
CGItrainer.com
www.
[email protected]
Bump map, normal map et light map
Bump map et normal map contiennent les informations détaillant le relief de la texture de base à modifier. Leur différence se situe dans la manière dont
ces informations sont codées. Grandeur numérique pour la bump map, grandeur vectorielle pour la normal map.
La light map et la normal map contiennent le même type de grandeur : des vecteurs, d'où leur ressemblance visuelle. Par contre, ces vecteurs ne décrivent
pas la même chose. La light map décrit l'éclairage que produit une source lumineuse.
Bump, light, normal map sont des textures dans lesquelles on stocke des informations autres que des couleurs. Ces textures font office de tableau de
données, mais sont manipulées par le processeur graphique comme des textures.
Structure d'une texture
Une texture est semblable à un tableau en deux dimensions dont chaque cellule contient trois informations. Chaque information représente une couleur
de base soit : rouge, vert, bleu (RVB).
L'association de ces 3 couleurs produit la couleur finale. En général, on dispose de
256 nuances pour chaque couleur de base, ce qui offre au total 256x256x256 =
16777216 couleurs finales.
Dans l'exemple ci-dessous, on peut voir la composition d'une couleur nommée
bleu dur et d'une nuance de gris. A propos du gris, on obtient toutes les nuances
de gris en affectant la même valeur aux trois couleurs de base avec les cas
particuliers : noir = 0,0,0 et blanc = 255,255,255.
Bump map
Une bump map contient des informations sur la hauteur de chaque point d'une texture et à la même taille, c'est-à-dire que si la texture dont il faut
décrire le relief a une taille de 128x128 points alors la bump map aura aussi une taille de 128x128 points.
La valeur des hauteurs varie de 0 à 255 en nombre entier soit 256 niveaux. Pour chaque hauteur correspond un point que l'on va stocker non pas dans
un seul canal couleur, mais dans les trois : rouge, vert, bleu. Mais comme il s'agit de la même valeur, visuellement une bum map apparaît comme une texture
en nuance de gris (relire structure d'une texture pour comprendre la raison des nuances de gris).
Visuellement, les points les plus clairs d'une bump map sont les hauteurs les plus importantes, et les plus sombres les moins importantes.
Normal map
Je ne décrirais ici que la structure de codage des normal map car les light map ont la même, seule la valeur de leur contenu diffère.
Une normal map contient des informations vectorielles. Chaque point décrit un vecteur. Pour ce faire, on va stocker chaque composante X,Y,Z décrivant
un vecteur, dans une composante de couleur rouge, vert, bleu. Cela donne un aspect visuel assez psychédélique à la normal map puisqu'il est rare de voir
des vecteurs, donc chaque composante, à la même taille et donc la même couleur. En fait, il y a toujours une composante dominante d'où l'apparition de
zones rouge, verte ou bleu.
La 'normal map' peut être calculée directement à partir du modèle géométrique de base ou à partir de la bump map. Dans les deux cas, ce calcul
s'effectue grâce à un utilitaire fourni par les constructeurs de cartes graphiques avec leur kit de développement, ou par les éditeurs de logiciels.
CGItrainer.com
www.
[email protected]
Environment Mapped Bump Mapping
Cette technologie a été mise au point par la société Tritech en 1997 et intégrée à DirectX 6 en 1998 par Microsoft. La première carte graphique à l'avoir
exploité se nommait Pyramide3D. Toutefois, cette technologie n'a été démocratisée que lorsque Matrox l'intégra dans sa carte graphique G400 en 1999.
Voici un des tous premiers screenshots de cette technologie fait avec la Pyramid3D.
Clarification sur la dénomination : Environment Mapped Bump Mapping
Le terme Environment Mapped Bump Mapping ou EMBM est trompeur et n'a
rien à voir avec les techniques d'environmental mapping ou aussi appelé
reflexion mapping, qui permettent d'afficher sur un objet réfléchissant
l'image des objets qui l'environnent comme une théière bien lustrée.
Le mot 'environment' de l'EMBM fait référence à l'éclairage environnant un
objet, pas aux textures elles-mêmes. Nous verrons dans les chapitres suivants
les technologies de reflexion mapping et reflexion bump mapping.
Méthode générale de fonctionnement
Contrairement à ce que laisserait penser le schéma ci-dessous, l'EMBM
fonctionne de manière très différente du Dot Product bien qu'en terme de
qualité, il soit assez proche. En premier, on utilise une environment map pour
gérer l'éclairage. En second, on utilise une bump map classique pour gérer les
reliefs, mais surtout, la manière dont on va combiner l'environment map à la
bump map n'a rien avoir avec la méthode de produit scalaire utilisée dans le
Dot product.
Dans le Dot product, à chaque point de la map des reliefs (normal map) correspond un point de texture d'éclairage (light map). Avec l'EMBM,
ce n'est pas du tout ça. Les points de la texture d'éclairage (environment map) sont choisis en fonction du résultat de la formule mathématique
qui détermine la pente du relief pour chaque point de la texture de relief de la bump map. Bon ce n'est pas simple à saisir du premier coup, alors
voici un petit schéma suivi d'une nouvelle explication.
CGItrainer.com
www.
[email protected]
Ce schéma montre (enfin il essaie ;) ) que pour le Dot product, à chaque point de la texture de relief (normal map) correspond un point précis de la light map.
C'est l'information contenue dans chacun de ces points qui va permettre de calculer l'intensité lumineuse à appliquer à la texture de base. Pour
l'environment mapped, c'est l'information contenue dans la bump map qui permet de savoir quel point de l'environment map il faut lire, et celui-ci contient
directement l'information d'intensité et de couleurs à appliquer à la texture de base.
L'algorithme général de l'EMBM est donc :
1 - On lit les informations d'un point de la bump map.
2 - Ces informations sont traitées par une formule mathématique qui va déterminer le point de l'environment map à lire.
3 - L'information contenue dans le point de l'environment map détermine l'intensité lumineuse à appliquer à la texture de base.
4 - On répète les opérations 1,2 et 3 jusqu'à avoir lu tous les points de la bump map.
POUR LA CULTURE PERSO > Algorithme vient du nom d'un mathématicien arabe : Al-khãrezmi. Un algorithme est la suite des opérations à effectuer
pour exécuter une opération précise. Principalement utilisés en mathématique et en informatique, on peut aussi trouver des algorithmes dans la vie de tout
les jours, comme les recettes de cuisine.
L'algorithmique est la science des algorithmes. Elle consiste à rechercher et à déterminer non seulement les modes de représentation des algorithmes,
mais aussi leur forme, leur fonctions, etc...
La particularité de cette technique fait que d'une part on peut gérer plusieurs sources lumineuses avec une seule 'environment map', d'autre part si on
modifie un tant soit peu l'environment map, on modifie l'éclairage final et donc l'effet de relief, ce qui permet de générer un éclairage dynamique.
On parle dans ce cas d'EMBM procédural.
La première image montre un cas d'EMBM utilisant de multiples sources lumineuses, la seconde l'utilisation d'EMBM prodédural générant un effet
de vague sur l'eau.
CGItrainer.com
www.
[email protected]
L'EMBM a l'air attrayant comme technique, et c'est effectivement
le cas, d'autant plus que la présentation des possibilités techniques
de l'EMBM que j'ai faite ne s'arrête pas là. On peut multiplier les
associations de textures pour produire des effets assez complexes.
Cependant, l'EMBM pose des problèmes lors de l'utilisation de
techniques comme le Mip mapping, ou les filtrages en général.
A présent que nous avons vu les trois principales techniques de
bump mapping, il serait peut-être intéressant de comparer leurs
avantages et désavantages.
Comparaisons des techniques de bump mapping
Pour finir, sachez que l'EMBM et le Dot product sont encore assez peu utilisés car peu de cartes graphiques peuvent les exploiter sans une perte
importante dans la vitesse d'exécution de l'animation
CGItrainer.com
www.
[email protected]
Reflexion bump mapping
La technique de reflexion bump mapping, aussi appelée environmental bump mapping, consiste à appliquer sur la surface d'un objet, le décor qui l'environne.
Dit comme ça, ça a l'air simple, mais il faut préciser 'surface d'un objet' et 'décors qui l'environnent'.
La surface d'un objet est définie par sa texture, son relief et son éclairage. Le décor qui l'environne est défini par des textures, des éclairages.
On modifie la géométrie du décor à réfléchir pour l'adapter à l'objet qui le réfléchi.
Problématiques du reflexion bump mapping
D'un point de vue technique, le reflexion bump mapping consiste donc à fusionner plusieurs types de textures et d'éclairages sur un même relief.
C'est simple non ? En fait pas du tout, les déformations de géométrie, le mélange d'éclairage et l'association de textures à un relief qui ne va pas du tout
avec, posent d'importants problèmes de précision de calcul pour obtenir un résultat un tant soit peu réaliste. D'ailleurs, c'est généralement dans les détails
qu'on s'aperçoie du haut niveau de complexité de la nature.
Un autre problème beaucoup plus prosaïque est de se demander quel est l'intérêt du reflexion bump mapping. Techniquement, c'est un problème complexe
et dans la pratique, on rencontre peu de cas de vrai reflexion bump mapping.
Cette double problématique, de la difficulté technique et de l'importance pratique, fait que le reflexion bump mapping reste un cas d'école.
Ceci étant dit, il peut être intéressant pour sa culture générale de voir les méthodes actuellement proposées. On parle évidemment des méthodes destinées
aux processeurs graphiques grand public, car il existe des modèles mathématiques beaucoup plus sophistiqués disponibles pour les gros logiciels de rendu ou
d'animation 3D. Mais ces méthodes dépassent totalement le cadre de cet article.
Pour faire du reflexion bump mapping, on va associer les techniques de bump mapping qui génèrent un relief point par point, ce qui exclut l'emboss et les
techniques de reflexion mapping comme le sphere mapping, le dual-paraboloid mapping et le cube mapping, méthodes que nous allons voir (rapidement)
à présent. Chacune de ces techniques utilise une texture précalculée de l'environnement à réfléchir.
Sphere mapping :
C'est l'une des premières techniques utilisée, elle est simple à mettre en oeuvre, voici un exemple :
Mais il y a plusieurs problèmes à cette technique. La première, la moins voyante, c'est que la position des objets l'un par rapport à l'autre qui
doivent se réfléchir est parfois mal interprétée par la formule transformant l'environnement en texture sphérique, et des aberrations visuelles
peuvent survenir, parfois subtiles mais bien présentes. La seconde, c'est que l'application d'une texture précalculée, n'est pas valide pour tous les
angles. Ainsi, dans l'exemple ci-dessous, on voit que le derrière de la sphère est incomplet. Cette méthode reste valide, mais uniquement pour 1 seul
observateur et sous un angle de vue déterminé.
CGItrainer.com
www.
[email protected]
Dual-paraboloid mapping :
Cette technique est bien plus complexe que le sphere mapping, à tel point qu'on lui préférera le cube mapping qu'on verra ensuite, qui consiste à utiliser
deux textures sphéric précalculées représentant le devant (0 à 180°) et l'arrière (180° à 360°) de l'environnement. On associe ensuite ces deux textures
pour produire la texture à appliquer sur l'objet.
Cette technique fournit de bons résultats, sauf sous certains angles où des
déformations importantes peuvent apparaître, notamment aux jonctions des
deux textures.
CGItrainer.com
www.
[email protected]
Cube mapping :
C'est actuellement la technique la plus en vogue car elle produit le meilleur résultat. L'idée générale consiste à découper l'environnement en 6 parties
représentant les faces d'un cube. On effectue ensuite une déformation de ces faces en correspondance avec l'objet sur lequel doit se réfléchir
l'environnement
L'efficacité de cette technique fait qu'elle a été préférée aux autres dès
la commercialisation de cartes graphiques la gérant comme la Geforce 256 ou Radeon
Malgré l'utilisation de textures précalculées pour le bump mapping (bump map et light/environment map) et pour le reflexion mapping (cube map),
le reflexion bump mapping reste une technique qui impose un important travail de la part de la carte graphique pour un résultat souvent peu subtil.
Voici deux exemples :
CGItrainer.com
www.
[email protected]
Le second exemple est beaucoup plus impressionnant, mais c'est un peu trop tape à l'oeil.
Toutefois, l'utilisation du Dot product a beaucoup plus d'avenir que l'EMBM à cause de la
précision des calculs point par point que cette technique permet.
Displacement mapping
La première présentera une vue d'ensemble du displacement mapping
(DM), la seconde, la méthode de displacement mapping de Matrox
appelée aussi Hardware displacement mapping (HDM).
A quoi sert le displacement mapping ?
Dans une première approche, on peut définir le displacement mapping
comme une technique permettant de donner du relief à une texture
sans augmenter la géométrie de base. Trois remarques sont à faire
sur cette définition :
- Le displacement mapping comme le bump mapping permet d'obtenir
du relief.
- On ne parle pas d'illusion de relief, mais de relief, c'est l'atout
majeur du displacement mapping.
- La précision 'géométrie de base' a son importance car la géométrie
sera modifiée mais de manière ponctuelle et temporaire.
L'image ci-contre montre deux possibilités du displacement
mapping comparé au bump mapping. La première est que le
displacement est beaucoup moins limité quant aux variations de
hauteur du relief que le bump mapping, la seconde est que les
bords de l'objet n'ont aucun relief (ou quasiment pas) avec la
technique de bump mapping.
Cette dernière remarque est plus subtile qu'elle n'y paraît et
vaut le coup qu'on s'y attarde un peu. Le bump mapping ne
produit pas de relief lorsque la direction du regard est
perpendiculaire à la normale de la surface, et c'est en général là
qu'il y a les bords de l'objet ou du personnage. Cette phrase
n'est pas forcément facile à comprendre, alors ce que vous
devez retenir c'est qu'avec le bump mapping, il n'y a pas de
possibilité pour faire un relief sur les bords d'un objet alors
qu'avec le displacement mapping, oui.
CGItrainer.com
www.
[email protected]
Dans l'exemple ci-dessous, vous pouvez voir le même objet (une tore) dessiné avec le bump mapping et avec le displacement mapping. Sur les parties pleines
de la tore, l'effet de relief est équivalent pour les deux méthodes, mais sur les bords, le relief n'est pas généré avec le bump mapping. Pour bien vous le
montrer, j'ai noirci la partie texturée pour qu'apparaissent clairement les différences des deux techniques sur les bords
Comment ça marche le displacement mapping ?
A partir de la géométrie de base, on va modifier la tesselation. Dans le cas du displacement mapping, par modification il faut entendre augmenter
le nombre de polygones, puis modifier la hauteur de chacun de leur sommet. Voici un graphique qui représente ces deux opérations.
CGItrainer.com
www.
[email protected]
Une fois la tesselation modifiée, il suffit d'appliquer les textures et un modèle d'éclairage.
Ce qu'il faut bien saisir avec le displacement mapping, c'est que les modifications de la géométrie de base qu'on effectue ne sont pas conservées, et qu'il
faut les recalculer à chaque étape. Bien sûr, cela représente une masse considérable de calculs, et c'est ce qui fait que cette technique n'avait pas été
intégrée dans des processeurs graphiques, sauf très récemment par Matrox. Toutefois, cette quantité de calculs reste largement inférieure à ce qu'elle
serait si on avait une géométrie de base aussi détaillée que le dernier schéma du graphique ci-dessus.
Pour augmenter la tesselation, on utilise généralement une technique HOS, et pour modifier la hauteur, une 'displacement map' dont le principe est assez
semblable à la 'bump map', mais ce n'est pas une obligation. Ce qui signifie qu'il existe de nombreuses variantes du displacement mapping, initialement conçu
par Cook en 1984, et que celles-ci n'utilisent pas forcément des techniques HOS et/ou de 'displacement map'.
Toutes ces variantes se basent sur la puissance de calcul que peuvent fournir les stations de calcul professionnelles, puissance qu'un processeur graphique
grand public n'est pas près d'égaler avant quelques années encore. Mais la nécessité de disposer d'une méthode de displacement mapping pouvant être
intégrée dans les processeurs graphiques se faisait de plus en plus sentir à cause de l'évolution rapide des besoins 3D grand public.
C'est la société Matrox qui propose pour la première fois un processeur graphique intégrant le displacement mapping
Toutefois, il est intéressant de noter que Matrox n'était pas les seuls à travailler sur une variante fonctionnelle d'un displacement mapping matériel.
Kautz et Seidel, du Max Planck Institut, ont proposé une méthode matérielle.
La méthode de hardware displacement mapping (HDM) utilisée par Matrox et intégrée dans ses processeurs graphiques Parhelia, a été conçue par Juan
Guardado, qui travaille actuellement pour Matrox.
Le hardware displacement mapping de Matrox :
- Deux techniques de HOS peuvent être utilisées. Un HOS linéaire ou un N-patch.
- Deux types de displacement map peuvent être utilisés. Les bump map, textures en nuance de gris représentant la valeur des hauteurs, et les normal map,
textures trois couleurs, représentant les normales des polygones.
- Tesselation adaptative permettant de faire du mip mapping sur les objets ayant subi un displacement mapping.
- Génération de multiples modèles 3D à partir d'un modèle de base
La liste ci-dessus correspond à des possibilités techniques qu'offre le displacement mapping de Matrox. J'ai préféré cela au lieu de vous faire un speach
théorique. Dans la même idée, nous allons voir directement l'utilité pratique de chaque élément contenu dans cette liste. Toutefois, avant de continuer,
je souhaite vous faire remarquer qu'il y a deux absents à cette liste. En fait, ils sont implicites au displacement mapping, raison de leur absence. Le premier
est le bump mapping, le second est l'augmentation de détails d'une surface. Ils sont implicites car à partir du moment où vous utilisez le displacement
mapping, vous faites nécessairement du bump mapping de par la modification de hauteur des sommets des polygones, et nécessairement une augmentation
de détails avec l'augmentation de la tessalation (= augmentation du nombre de polygones).
Les techniques de HOS
La technique des N-patch est une technique plus sophistiquée que la technique de HOS linéaire (voir première partie du graphique ci-dessous). Toutefois,
dans certaines situations, les N-patch produisent des effets indésirables (voir seconde partie du graphique ci-dessous), et il est intéressant de disposer
d'une technique linéaire pour palier à ces problèmes. En même temps, dans certaines situations, la technique de HOS linéaire suffit largement, comme pour
faire du displacement mapping de terrain.
CGItrainer.com
www.
[email protected]
Displacement map : bump et normal map
Le displacement mapping de Matrox implique qu'on utilise une displacement map. Le choix de celle-ci (bump map ou normal map) dépend du type d'éclairage
qu'on souhaite utiliser. Si on utilise un modèle d'éclairage de type Lambert et d'ombrage de type Gouraud, on utilise la bump map.
Pour faire du per-pixel lighting, avec des modèles d'éclairage de Blinn, Phong, et d'ombrage de type Phong (comme pour le dot product bump mapping),
on utilise une normal map.
Voici un exemple complet montrant un résultat final utilisant une displacement map et une normal map.
Tesselation adaptative et Mip mapping
L'augmentation de la tesselation (ou autrement dit du nombre de polygones) augmente le niveau de détails. Dans le cas d'un terrain, s'il est intéressant
d'avoir un niveau de détail élevé pour les parties proches de l'observateur (un joueur, dans le cas d'un jeu), pour les parties éloignées, l'augmentation de
tesselation n'a aucun sens puisque les détails sont impossibles à discerner.
Il est donc intéressant de disposer d'un mécanisme qui adapte le niveau de tesselation en fonction de la distance de l'observateur, permettant ainsi
d'éviter de calculer un surplus de détails qui ne peuvent pas être perçus. C'est ce que permet la tesselation adaptative. Elle régule le niveau de tesselation
en fonction de la distance de l'observateur.
Pour que cela soit pleinement efficace dans le cas du displacement mapping, il faut aussi réguler le niveau de détails de la displacement map.
Cette régulation est effectuée en utilisant la technique de mip mapping qui permet de déterminer le niveau de détails nécessaire pour une texture en
fonction de la distance de l'observateur. Je rappelle que même si une displacement map contient des informations autres que les couleurs d'une texture,
elle n'en reste pas moins une texture et est manipulée comme telle par le processeur graphique.
CGItrainer.com
www.
[email protected]
Le graphique ci-dessous montre deux choses. On peut utiliser la technique de mip mapping avec les displacement map, et par la tesselation adaptative.
On voit que la densité des polygones est plus faible pour les parties les plus éloignées de l'observateur.
Arborescence de modèle
Le principe du displacement mapping est de modifier la tesselation
d'objets et/ou de personnages 3D. A partir d'un même modèle 3D,
on peut très bien produire plusieurs résultats différents, si on
modifie un tant soit peu la displacement map.
Cette manière d'utiliser le displacement mapping
est illustrée par le graphique ci-contre.
CGItrainer.com
www.
[email protected]
Dans le cadre d'une utilisation pratique, cela permet de créer des classes de personnage, objet, (bipèdes, arbres, pierres, murs, tonneaux de vin, ...)
et de produire une grande diversité dans les scènes 3D d'un jeu. Imaginez un jeu où chaque combattant aurait un visage et un habillement différent.
C'est là une richesse qu'offre le displacement mapping.
Pour terminer ce chapitre, on peut affirmer que l'apparition du displacement mapping dans les processeurs de carte graphique grand public est une avancée
technique importante qui va permettre d'augmenter le niveau de détails et la richesse des scènes 3D, et donc le réalisme comme vous pouvez le constater
sur le graphique ci-dessous. Il ne nous reste plus qu'à espérer que ATI et Nvidia adopteront le displacement mapping de Matrox, ce qui est en bonne voie
puisque celui-ci a été adopté par Microsoft et intégré dans DirectX 9.0. Il faut espérer que les librairies OpenGL pourront aussi en disposer, mais cela
risque d'être plus compliqué au niveau des droits, puisque Matrox n'est pas un membre permanent de l'ARB, le consortium gérant les spécifications OpenGL.
Mais bon, là ce n'est plus du domaine technique mais commercial, ce qui dépasse le cadre de ce pdf !.
CGItrainer.com
www.
[email protected]
LEXIQUE :
Mapping : Se traduit en français par mappage. Action d'appliquer une texture à un polygone.
Normale : Vecteur toujours perpendiculaire à une surface pour un point donné.
Multiplication scalaire : Multiplication de vecteur dont le résultat est un nombre. Se dit 'Dot Product' en anglais.
Interpolation : Technique mathématique qui permet de trouver une fonction à partir de plusieurs points.
Interpolation linéaire : Interpolation n'utilisant que 2 points pour trouver une fonction correspondant à l'équation d'une droite.
Interpolation bilinéaire : Consiste à effectuer 2 interpolations linéaires pour trouver des points a et b, puis une troisième interpolation linéaire en se basant
sur a et b pour trouver le point P.
Bump mapping : Technique graphique permettant de simuler des effets de relief sur une texture devant être appliquée à un polygone.
Displacement mapping : Technique permettant d'augmenter provisoirement la géométrie des objets, afin d'augmenter le détail du rendu graphique.
Reflexion mapping : Terme regroupant les techniques visant à appliquer sur un objet réfléchissant les textures qui l'environnent. Aussi appelé environment
mapping.
Reflexion bump mapping : Techniques associant le bump mapping et le reflexion mapping.
Modèle d'éclairage : Modèle mathématique destiné à reproduire les effets lumineux sur un ou plusieurs objets. On distingue les modèles locaux qui ne
prennent en compte que l'action directe de la lumière, et les modèles globaux qui prennent en compte non seulement les effets directs mais aussi les
interactions entre les différents objets éclairés.
Modèle d'ombrage : Modèle mathématique visant à appliquer un modèle d'éclairage tout en lissant les différentes facettes composant un objet
(sauf le modèle d'ombrage plat)
Blinn : Scientifique ayant mis au point, entre autre, la méthode de bump mapping et un modèle d'éclairage portant son nom.
Phong : Scientifique ayant mis au point, entre autre, un modèle d'éclairage prenant en compte l'effet spéculaire, ainsi qu'un modèle d'ombrage basé sur
l'interpolation de vecteur.
Cook : Scientifique ayant mis au point, en autre, le displacement mapping.
Lambert : Scientifique ayant mis au point, en autre, un modèle d'éclairage.
Gouraud : Scientifique ayant mis au point, en autre, un modèle d'ombrage basé sur l'interpolation.
Bump map : Texture contenant les valeurs de relief à appliquer lors du bump mapping (EMBM).
Normal map : Texture contenant les valeurs des normales du relief d'un objet à appliquer lors du bump mapping (Dot Product).
Light map : Texture contenant les valeurs d'éclairage sous forme de vecteur (Dot Product).
Environment map : Texture contenant les variations d'intensité que la technique de bump mapping doit gérer (EMBM).
CGItrainer.com
www.
[email protected]
Conclusion
Le bump mapping est une bonne technique en ce sens qu'elle permet d'augmenter de façon considérable le réalisme des images.
Toutefois, malgré les différentes méthodes comme l'environment mapped bump mapping ou le Dot product bump mapping, il n'est pas
exploité par la majorité des jeux et lorsqu'il l'est, ce n'est que de manière limitée pour mettre en avant un objet, un personnage, mais
pas toute la scènes 3D. Pourquoi ? Parce que malgré tous les efforts faits, les techniques de bump mapping intégrées au processeur
graphique nécessitent encore trop de puissance.
Faut-il en déduire que cette technique ne sera jamais pleinement exploitée, surtout avec l'arrivée d'autres techniques plus avantageuses
comme le displacement mapping ? Non et pour deux raisons au moins. La première, c'est qu'il existe souvent un temps séparant
'apparition d'une technique et son utilisation par les développeurs. Pour le bump mapping, ce temps est assez long car les cartes
graphiques ne disposaient pas de la puissance nécessaire à l'exploiter de façon généralisée. Des jeux comme DOOM 3 l'utiliseront
pleinement, mais au moment de la sortie de ce jeu, les cartes graphiques auront une puissance que les Geforce ou Radeon premières
du nom n'avaient pas quand le bump mapping a fait sa réelle apparition. La seconde, c'est que dans certaines situations, l'utilisation du
displacement mapping, qui est un plus gros consommateur de puissance que le bump mapping, ne se justifie pas.
Concernant le displacement mapping, le problème n'est pas de savoir si cette technique est intéressante ou pas, elle l'est ! Par contre,
rien n'indique aujourd'hui qu'elle sera adoptée par les autres constructeurs come ATI ou Nvidia dans un très proche avenir
(cette année ou 2004). Il faut bien savoir que l'impact que peut avoir le displacement mapping sur la qualité visuelle des animations
3D dépasse de loin tout ce que peut offrir le bump mapping. On ne peut donc qu'espérer que les antagonismes existant entre les
constructeurs ne retardent pas trop l'adoption de cette technique.
Un dernier mot sur le pdf que vous venez de lire. Comme vous avez pu vous le constate, j'ai intégré à son début du blabla sur les
techniques d'éclairage et d'ombrage. Ces techniques sont d'une importance capitale pour un rendu réaliste et d'ici peu,
la préoccupation majeure des ingénieurs sera de trouver un moyen d'intégrer dans les processeurs graphiques des techniques
d'éclairage globales de type Ray-tracing ou Radiosité, mais pour ça, il faudra encore attendre un peu, car il ne faudrait pas moins
une carte 4 à 8 plus puissante qu'une Parhélia de Matrox.
JF Maquiné
ONVERSITY Articles
Copyrights :
Une partie des textes proviennent de diverses sources : Internet, revues, mode d'emploi,....
Les captures d'écrans, images, marques, logos,... utilisés dans ce site sont copyright par leurs auteurs respectifs
R
HO
on
E
I
R
É
S
S
e
r th
o
f
ly
in
Itra
CG
er ’
EN
s STUD
TS

Documents pareils