Aller au contenu

[CG] Textures, FSAA, Aniso, quézako?


Charles.w

Messages recommandés

  • Réponses 70
  • Créé
  • Dernière réponse

:DPréambule

Avant que vous commenciez la lecture de ce topic, je voudrais préciser plusieurs choses :

  • Le texte de ce topic m’a été inspiré en grande partie par le livre de Jean-Pierre Couwenberg «La Synthèse d’image» ainsi que par la série d’articles « Comprendre la 3D » publiée sur Onversity.
  • Les image illustrant ce topic proviennent (pour les images en noir et blanc) du livre de Jean-Pierre Couwenbergh sur « La Synthèse d’images », les autres images venant de sources diverses, mais j’ai oublié de noter l’adresse des sites où je les ait trouvées :mdr2: . J'essayerait de retrouver les copyright le plus tôt possible...
  • Ce topic a pour but de faire découvrir quelques notions de texturage et de filtrage des textures. L’idée m’est venue de créer ce topic suite aux nombreuses questions que j’ai pu lire sur divers forum concernant les méthodes de filtrage des texture (Qu’est ce l’aniso, le trilinéaire …).

Lien vers le commentaire
Partager sur d’autres sites

:mdr2:Introduction

En imagerie de synthèse, la couleur seule ne saurait définir de manière réaliste l’aspect des objets qui composent une scène. De fait, pour reproduire de manière réaliste des objets réels, il est indispensable de compléter l’information de couleur avec d’autres caractéristiques. Les textures et les propriétés de surface en sont de bons exemples, mais elles nécessitent des opérations de filtrage et d’antialiasing afin de produire un résultat probant.

Lien vers le commentaire
Partager sur d’autres sites

:mdr2:Les différents types de textures

  • Les textures planes
    Les textures planes sont des images qui sont en quelques sortes collées à la surface des objets. Les textures planes sont très utilisées, car il est facile de les créer et de les utiliser. Elles peuvent cependant faire surgir des problèmes de raccords.
  • Les textures volumiques
    Un objet utilisant des textures volumiques apparaissent comme étant directement sculptés dans la matière. La texture étant indépendante de la forme de l’objet, il n’y a plus de problèmes de raccords. Ce type de texture n’est que peu utilisé dans les jeux vidéos et par conséquent, nous n’en parlerons plus.
  • Les textures numérisées
    Ce type de texture est obtenu assez facilement, car elles sont obtenues à l’aide de textures préexistantes. Elles peuvent être obtenues avec un appareil photo numérique (enfin de préférence), un scanner ou une caméra numérique. Ce procédé permet d’obtenir des textures réalistes relativement facilement, cependant, des problèmes dans l’habillage des objets. De plus, ces textures sont extrêmement lourdes. Ce type de texture est beaucoup utilisé dans les jeux vidéo.
  • Les textures synthétisées
    Ce type de texture est issu de calculs mathématiques, elles peuvent représenter des motifs géométriques, comme des briques, des tuiles, etc. ou des motifs, pseudo aléatoire, tels que des rochers, de l’écorce, des feuilles, etc.. Ce type de texture est surtout utilisé dans des démos, ou des jeux comme kkrieger.
    full1.jpg
    full2.jpg

Lien vers le commentaire
Partager sur d’autres sites

:mdr2:Les textures planes

Préambule

Le texte de ce topic a été partiellement inspiré par le livre de Jean-Pierre Couwenbergh sur « La Synthèse d’images » parut en 1998 aux éditions Marabout. Les images en noir et blanc proviennent de ce livre.

Introduction

Dans le cas de textures planes, on parlera principalement de « plaquage » de textures (mapping en anglais). Le plaquage de texture consiste à appliquer une texture 2D sur un objet 3D. Il faut donc faire attention au repérage. En effet, l’objet est défini dans un espace à trois dimensions de coordonnées (X,Y,Z), la texture étant définie dans un espace a deux dimensions de coordonnées (u,v). L’image finale quand a elle se trouve aussi dans un espace à deux dimension (celles de l’écran par exemple) de coordonnées (x,y). Le calcul de la visualisation d’une texture via la technique du mapping est donc le résultat d’une transformation texture-objet et objet-image finale, comme le montre la figure ci-dessous.

imgintrotxtplane.jpg

Types de mapping

Introduction

Il existe essentiellement trois types de mapping, le mapping de texture, plus général, le mapping lié au point de vue, pour afficher l’environnement, et le bump mapping.

orgamapping.jpg

Le bump mapping consiste a perturber la surface apparente à l’aide d’une autre texture, comme le montre le schéma ci-dessous.

bumpsignal.jpg

  • Le mapping de texture simple
    Le mapping de texture simple est la méthode de mapping la plus utilisée. Elle consiste à projeter une image 2D sur un objet 3D. On peu ainsi facilement simuler un tableau, un tapis…Ce type de mapping est largement utilisé dans les jeux videos.
    Ici, dans cette scène de Max Payne, le mapping de texture simple est utilisé sur le sol
    MaxPayne010.jpg
  • Le bump mapping
    Les aspérités ont un intérêt certain en synthèse d’image car elles permettent d’accroître le réalisme de certains revêtements. Leur seul gros défaut est d’être très gourmandes en polygones et nécessitent donc un temps de modélisation et de rendu relativement élevé. Elles sont de fait, impossibles à utiliser dans le cadre d’applications en temps réel comme les jeux vidéo. De plus, une bonne texture et un bon mapping permettent de faire aussi bien et pour moins cher.
    Ainsi, au lieu d’essayer de les modéliser, il est souvent bien plus simple et bien plus rapide d’avoir recours au bump mapping. Cette méthode consiste à simuler des creux et des bosses en jouant sur les niveaux de luminosité de l’image considérée en noir et blanc. La technique du bump mapping consiste a modifier légèrement en hauteur et en orientation les normales (droite perpendiculaire a la surface) des facettes de l’objet, le blanc indiquant la normale la plus haute, le noir la plus basse. Le blanc est alors utilisé pour donner l’illusion d’une bosse et le noir l’illusion d’un creux. Il est cependant essentiel d’éviter les écarts de hauteur trop important, car comme l’illustre la théière ci-dessous, celles-ci ne sont qu’illusion et n’affectent pas le contour des objets.
    bumpmappingbig.jpg
    (On peut voir ici que les contours de la théière sont lisses, alors que le texte apparait en relief)
    Le bump mapping est généralement utilisé en combinaison avec le mapping de texture. Par exemple pour un mur de brique, on a :
    - la brique = un niveau de gris = partie plus élevée
    - le joint = un autre niveau de gris = partie plus renfoncée
    On a donc :
    Brkrun.jpg + Brkrun_b.jpg = murbump.jpg
    (cliquez sur les images pour aggrandir)
    Je ne donnerais pas d'exemple de jeu vidéo utilisant cette technique, car il faudrait citer la grande majorité des jeux d'action en 3D.
  • Le mapping d'environnement
    Le mapping d’environnement a été inventé pour remédier aux problèmes posés par le calcul de la réflexion de la lumière sur certaines surfaces. Cette technique de mapping permet de simuler facilement la réflexion d’un décor complet sur un ou plusieurs objets, en plaquant l’image de ce décor en surimpression sur les objets. Il devient alors assez aisé de simuler des objets réfléchissants comme par exemple des miroirs ou certains types de verres.
    Le mapping d’environnement est fixé a la vue plutôt qu’a l’objet, ce qui fait que si l’on se déplace autour de l’objet, la vue réfléchie, représentée par le bitmap reste fixe, comme elle le ferait dans la réalité.
    Ce type de mapping a cependant des limites, ainsi, un objet dynamique venant s’intercaler entre la scène est la surface réfléchissante ne sera pas visible dans le reflet, ce qui explique certains bugs d'Unreal II.
  • Le mapping d'opacité
    Ce type de mapping permet de simuler assez facilement des objets partiellement opaques (vitre sale, grillages, feuillage,…). Comme dans le cas du bump mapping, la texture est considérée en noir et blanc, le blanc correspondant aux zones transparentes, le noir aux zones opaques.
    shot04.jpg
    Sur cette capture d'écran de Medal of Honor, on peut voir que ce type de mapping est utilisé pour les barbelés et les branchages.
  • Le mapping de reflet
    Le mapping de reflet fonctionne comme le mapping de texture, cependant, il n’est visible que dans les zones de reflet. Il affecte la couleur du reflet et est surout visible dans les zones les plus éclairées de l’objet.
  • Le mapping de brillance
    Ce type de mapping modifie l’intensité du reflet basée sur l’intensité du bitmap. Les pixels blancs du mapping de brillance produisent un reflet, tandis que les pixels noirs suppriment complètement celui-ci. Si le mapping de reflet affecte la couleur du reflet, le mapping de brillance affecte son intensité.
  • Le mapping d'auto-illumination (ou Lightmap)
    Le mapping d’auto illumination permet d’appliquer des effets d’auto illumination basés sur l’intensité des pixels de l’image bitmap correspondant a l’image considérée en noir et blanc. Ainsi, plus les valeurs des pixels du bitmap sont proches du blanc, plus l’auto illumination est importante. Ce type de mapping donne l’impression que l’objet génère sa propre lumière. Ce type de mapping a été utilisé pour la première fois dans Quake II afin d’améliorer la qualité de rendu des éclairages de manière significative sans pour autant vampiriser les ressources de la machine. Depuis lors tous les jeux utilisent cette méthode d’éclairage peu ou prou.
    Une capture d'écran de Quake II
    quake2_2.jpg
    Les lightmap sont ici utilisée pour le néon et les lumières rouge au fond de la cage.

Modes de projection

Le type de mapping étant maintenant déterminé, reste à définir le manière dont on va plaquer les textures sur les objets 3D. « Cette opération s’effectue en choisissant la forme de la surface de projection. Chaque image est ainsi attachée à une primitive de surface, telle le cube, la sphère, le cylindre ou le plan. La surface de projection est ainsi paramétrée, ce qui veut dire que les points de la surface sont liés aux coordonnées (u,v) de l’image » (JP. Couwenbergh). De plus, il est également possible de déplacer et de changer la taille de l’image sur la surface de projection elle-même, par un contrôle ultérieur. Il existe cinq types de projections différentes:

  • La projection planaire
    En projection planaire, l’image la texture est appliquée sur un plan et est projetée perpendiculairement à ce plan sur l’objet. Ce type de projection permet de garder une mappe plane, mais des distorsions peuvent apparaître. Ce type de projection est surtout utilisé dans les jeux vidéo afin de simuler une surface un sol.
    Une image illustrant la méthode de projection planaire sur un cylindre.
    projplanaire.jpg
  • La projection cylindrique
    La projection cylindrique permet d’arrondir la mappe en cylindre pour l’envelopper autour d’un objet de la même manière qu’une étiquette enveloppe une bouteille. Ce type de projection est particulièrement utile pour les objets cylindriques. Ce type de projection est assez utilisé dans les jeux vidéo, en association avec d’autres méthodes de projections, afin d’éviter les problèmes de raccords, comme ceux qui peuvent exister dans la figure ci-dessous.
    Une image illustrant la méthode de projection cylindrique sur un cylindre.
    projcylindre.jpg
  • La projection sphérique
    « Ce type de projection permet d’arrondir la mappe en sphère pour l’envelopper autour d’un objet pour l’envelopper autour d’un objet de la même manière qu’un planisphère entoure une sphère pour créer un globe terrestre. » (JP Couwenbergh).
    Un exemple de projection sphérique sur un cylindre.
    projspherique.jpg
  • La projection cubique
    La méthode de projection cubique est une proche cousine de la projection planaire. En effet, une projection cubique correspond a six projections planaires arrangée en parallélépipède. Elle est très utilisée dans les jeux vidéo pour simuler les pièces d’une maison. Par exemple, une pièce a un mur recouvert d’un papier peint et la pièce voisine qui possède un mur mitoyen possède un autre papier peint, alors qu’en réalité, c’est le même objet. Nous pouvons voir sur le cylindre ci-dessous que ce mode de projection a été utilisé afin de rendre les raccords invisibles.
    projcubique.jpg
  • La projection automatique
    Dans le cas de la projection automatique, un algorithme utilise la normale de chaque polygone pour mapper la texture. Ce type de projection peut être utilisé sur des objets complexe.

Lien vers le commentaire
Partager sur d’autres sites

:mdr2:Le texturage en 3D

Le texturage en 3D revient a peindre directement sur la surface des objets 3D. Pour ce faire, on peu projeter une image 2D du maillage de l’objet dans un logiciel de dessin puis littéralement « peindre » cette image 2D tout en visualisant le résultat sur l’objet dans une fenêtre séparée. On peu également peindre directement la surface des objets. Cette technique et de plus en plus utilisée car elle permet une approche plus facile de la création 3D en la rendant abordable a des gens ayant une formation de peintre. Cette méthode plus simple et plus rapide que d’autres modes de texturage permet de travailler plus rapidement et donc de gagner plus d’argent.

Lien vers le commentaire
Partager sur d’autres sites

:mdr2:Filtrage des textures

Préambule

Tout d’abord, je tiens à préciser que je ne suis pas l’auteur des lignes qui vont suivre. Onversity avait publié il a quelque temps de cela un excellent article sur le filtrage des textures. J’en ai retiré les passages les plus complexes et les plus techniques afin de faciliter la lecture. Les modifications apportées a l’article originel seront signalées par la présence de crochets. Les images quand a elles ont été modifiée et enregistrées au format jpg, le format png de images originelles pouvant poser problèmes avec des navigateurs un peu anciens.

Introduction

Si vous êtes utilisateur de logiciels de jeux ou de dessin, vous avez certainement du lire ou entendre parler de bilinéaire, trilinéaire, bicubique, d'anisotropie, de MIP mapping, ... et vous vous posez un certain nombre de questions sur leur utilité et comment ils fonctionnent.

Toutes ces fonctions ont pour but d'améliorer la qualité d'affichage des textures, et plus particulièrement la qualité de rendu des couleurs, la couleur étant l'information de base de toutes les textures.

Bonne lecture.

:DQu'est-ce que signifie : filtrage de texture ?

:roll:A quoi ça sert le filtrage ?

:arrow:Représentation en perspective

:arrow:Filtrage bilinéaire

:arrow:MIP mapping

:arrow:Filtrage trilinéaire

:arrow:Explications de l'expression : LOD bias

:arrow:Filtrage anisotropique

Si vous vous posez des questions sur les sujets cités ci-dessus, lisez l'article d'Onversity sur le filtrage des textures

Conclusion

D'un point de vue technique, les filtrages ou le MIP mapping ne sont pas des obligations, mais d'un point de vue esthétique c'est impératif. Toutefois on peut encore trouver des jeux qui ne gèrent pas de MIP mapping sur les PC comme 'Ghost Recon'. A chacun d'apprécier l'aspect visuel, mais si sans MIP mapping on peut avoir l'impression d'une plus grande netteté, il ne s'agit là que d'une impression qui se fait dans tous les cas au dépend d'autres aspects, tels que le scintillement.

Concernant le filtrage anisotropique, on peut le considérer comme une forme d'aboutissement du filtrage de texture. D'ici 2 à 3 ans, la majorité des cartes graphiques qui seront vendues dans le commerce pourront faire du filtrage anisotropique de grande qualité sans perte de performance notable. Il est à noter que le filtrage anisotropique n'est plus seulement une solution au flou généré par la technique de MIP mapping, mais aussi au flou généré par les techniques de FSAA (antialiasing sur une scène 3D complète). Attention, par solution il faut comprendre que le filtrage anisotropique ne corrige pas les défauts du FSAA, mais en proposant une texture mieux filtrée, plus nette, le résultat du FSAA sera moins flou. Mais bon, ceci est une autre histoire et le FSAA fera l'objet d'un article bien distinct.

Je tiens à remercier tout particulièrement Mr Fautré Tanguy qui a accepté de faire office de comité de relecture pour cet article. Ceci dit, que cela n'empêche pas d'autres esprits avisés d'en faire autant :).

P.S: J'ai eu les plus grandes difficultés à collecter des informations sur les filtrages anisotropiques. J'invite donc toute personne ayant une expérience, ou des documents pertinents sur le sujet à prendre contact avec moi afin d'améliorer cet article.

Lien vers le commentaire
Partager sur d’autres sites

:mdr2:Antialiasing

Origine du phénomène d’aliassage

L’œil humain est très sensible aux effets de discontinuités. Il est donc nécessaire d’appliquer des traitements spécifiques aux images de synthèse afin de produire un meilleur rendu, plus naturel.

Les discontinuités sont généralement liées au phénomène que nos amis anglo-saxons appellent aliassage. Ce phénomène se produit lors de l’affichage du contour ou de certaines arêtes obliques des objets ou lors du passage entre deux couleurs très contrastées. L'image ci-dessous illustre de manière flagrante le phénomène d'aliasing lors du passage brusque d'une couleur a une autre avec des angles différents

fsaa.jpg

Antialiasing

Il existe deux grandes méthodes d’antialiasing :

  • Le supersampling, consiste a augmenter la taille de l’image afin d’augmenter la fréquence d’échantillonnage de l’image, limitant ainsi, de fait, le phénomène d’escalier. Cette méthode d’antialiasing fournit de très bons résultats, mais est très gourmande en mémoire. Des dérivés de cette méthode d’antialiasing sont utilisés dans les cartes graphiques moderne. Pour en savoir plus sur ces techniques, je vous invite a regarder ici
  • Une autre méthode d’antialiasing consiste a appliquer un filtre sur l’image considérée, afin de jouer sur la luminosité des pixels adjacents a une ligne ou une frontière entre deux couleur.

Pour aller plus loin...

http://www.firingsquad.com/print_article.a...article_id=1157

Lien vers le commentaire
Partager sur d’autres sites

:mdr2:Annexe : Caractéristiques des surfaces

Introduction

Pourquoi parler de la caractéristique des textures ? Tout simplement parce que celle-ci influe grandement la perception des objets d’une scène en image de synthèse. Dans ce chapitre, nous aborderons les divers types de surface ainsi que les propriétés de ces surfaces.

Types de surfaces

Les principaux types de surface sont :

  • Les surfaces transparentes
    Une surface transparente laisse passer la grande majorité des rayons lumineux qui la frappent. Les rayons lumineux ne sont que peu réfléchis par les surfaces transparentes. Les milieux transparents les plus cités sont l’eau, le verre ou l’air.
  • Les surfaces translucides
    Une surface est qualifiée de translucide si elle ne laisse passer que certains rayons lumineux et réfléchit les autres. Les surfaces translucides les plus connues sont le verre opaque ou certains types de plexiglas.
  • Les surfaces opaques
    Une surface est qualifiée d’opaque si elle réfléchit certaines longueurs d’ondes et en absorbe d’autres. Une surface opaque est en quelque sorte l’opposé des surfaces transparentes.
  • Les surfaces rugueuses
    Une surface rugueuse est une surface qui comporte de nombreuses aspérités. Les surfaces rugueuses ont la propriété de réfléchir la lumière dans toutes les directions de l’espace.
  • Les surfaces lisses
    Une surface est qualifiée de lisse lorsqu’elle ne comporte pas la moindre aspérité. Ce type de surface n’existe pas dans la réalité.
  • Les surfaces métalliques
    Une surface métallique est une surface opaque particulière. Elle réfléchit la couleur de la source de lumière qui l’éclaire lorsque celle-ci est proche de la normale à sa surface. Lorsque la source lumineuse s’écarte de la normale à la surface, celle-ci réfléchit sa propre couleur.
  • Les surfaces miroir
    Une surface miroir est une surface qui réfléchit la quasi-totalité des rayons lumineux qu’elle reçoit. Ce type de surface possède la couleur des sources de lumières qui l'éclairent.

Propriétés des surfaces

Les objets du monde qui nous entoure sont caractérisés par de nombreuses propriétés visuelles, comme par exemple la couleur, la texture ou la transparence de ces objets. En imagerie de synthèse, les facteurs décrits ci-dessous permettent dans la plupart des cas de simuler ces propriétés visuelles.

  • Couleur
    Les objets réels ne possèdent pas une couleur uniforme. En effet, celle-ci change selon l’éclairage de l’objet. Prenons par exemple le cas d’une sphère éclairée par une seule source de lumière. Il est facile de constater que la moitié la plus proche de la source de lumière apparaît plus claire que la moitié la plus éloignée. Si cette sphère était métallique, nous verrions apparaître un reflet blanchâtre du coté le plus éclairé de la sphère. En imagerie de synthèse, la couleur du reflet est appelée couleur de reflet, la couleur de la partie sombre est appelée couleur ambiante et enfin la couleur de la partie la plus éclairée de l’objet et appelée couleur diffuse.
  • Texture
    Les textures permettent de donner un aspect plus réaliste aux surfaces. Elles peuvent être obtenues de différentes manières, comme nous l’avons vu en introduction.
  • Transparence
    Ca peut paraître évident, mais la transparence est un paramètre qui sert a déterminer la transparence des objets.
  • Brillance
    La brillance sert à déterminer la taille et l’intensité du reflet présent sur une surface.
  • Radiance
    La radiance correspond à la lumière émise par une surface indépendamment de toute source de lumière externe.
  • Réflectance
    La réflectance sert a caractériser la fraction de lumière incidente réémise par réflexion.
  • Flou
    Le facteur de flou est un paramètre qui permet de déterminer la netteté des bitmaps de réflexion. L’effet de flou peut aussi être obtenu avec des systèmes de particules.

Lien vers le commentaire
Partager sur d’autres sites

Si vous constatez des erreurs, ou si vous avez des choses a ajouter, n’hésiter pas a m’envoyer un MP.

A ce propos, merci à :

- MmoulinexX, pour m'avoir signalé une erreur au niveau de l'une des images que j'avait postée. En effet, j'avais mis une image de Quake, en sous titrant Cette image est tirée de Quake II.

Lien vers le commentaire
Partager sur d’autres sites

Très bon topic :mdr:

Bon courage et ... :D

:D

Surtout bon courage en fait :D

Demain, je termine les textures planes et le texturage en 3D...Je pense aussi pouvoir commencer le filtrage...c'est d'ailleurs ce qui risque de me prendre le plus de temps...j'espère que je n'aurais pas de problèmes avec le nombre max de balises dans un post. On verra et puis demain est un autre jour...

Lien vers le commentaire
Partager sur d’autres sites

Surtout bon courage en fait :francais:

Demain, je termine les textures planes et le texturage en 3D...Je pense aussi pouvoir commencer le filtrage...c'est d'ailleurs ce qui risque de me prendre le plus de temps...j'espère que je n'aurais pas de problèmes avec le nombre max de balises dans un post. On verra et puis demain est un autre jour...

Tu sous éstimerai la force d'iNpact ? :francais:

Sinon oué ça risque d'être cahud pour le nombre de balises , enfin ça va c'est en plusieurs post , si tu l'avais fait en un seul là t'aurais été vraiment dans la merde

Lien vers le commentaire
Partager sur d’autres sites

Bon ben je viens de finir les points suivants :

- Introduction

- Textures planes

- Textures 3D

Si vous avez des remarques, des corrections ou des screenshots a mettre, n'hésitez pas.

Sur ce je part a la fac pour essayer de trouver des bouquins sur les méthodes de filtrages, histoire de ne pas se contenter que de Onversity.

Lien vers le commentaire
Partager sur d’autres sites

C'est super chouette. Chapeau ! Vivement le filtrage, c'est le truc que je comprend le moins bien.

Niveau remarque, je suppose que tu es au courant que ta photo de Quake II vient en fait de Quake premier du nom...

Possible, je vais voir ca...ca fait longtemps que je n'ai pas touché a Quake 2. J'ai retrouvé mon CD et je fais un ou deux screenshots

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.


×
×
  • Créer...