Les textures - Présentation
Informations sur l'article
- Auteur : stilobique
- Créé : le 16 Jan 2008 à 22:34
- Modifié : le 15 Nov 2008 à 13:08
- Visualisations : 2347
Introduction :
Une texture est une image 2D qui a pour but d'habiller un objet 3D ou bien des plans 2D afin de pouvoir représenter l'univers selon les artistes. Il peut s'agir d'images dessinées directement sur un ordinateur ou bien d'une photo retouchée ; bref, encore une fois selon les besoins.
Les textures requièrent cependant de respecter certaines normes technique afin de donner un maximum de fluidité au programme. De plus, le non respect de ces quelques règles peuvent empêcher le programme de fonctionner correctement sur diverses machines.
Une texture est généralement composé de 3 couches qui sont le Rouge, le Vert et le Bleu, cependant on compte parfois une 4éme couche qui est la couche alpha, généralement employé pour mettre des effets 3D ou un effet de transparence/translucidité sur une texture.
Respect des résolutions :
L'un des points les plus importants pour une texture lorsque l'on en créer une c'est de suivre des résolutions « standard ». C'est à dire l'utilisation d'une résolution de puissance de 2, par exemple, 8x8 ; 32x32 ou encore 1 024x1 024. Pourquoi cela me dirait vous ? À cela 2 raisons précise. Tout d'abord, la première qui est la moins importante et est une questions de compatibilité ; en effet certain ancien hardware ne peuvent pas supporter des divisions autre qu'un multiple de deux. Cependant il est maintenant très rare de tomber sur du matériel aussi ancien. L'autre raison est elle est tout simplement matérielle là aussi, mais pour un réel gain de performances. En effet de nombreux hardwares actuels supportent des calculs de façon automatique, disposant d'information dans leur architecture qui évitent de faire le calcul (car connaissant déjà la réponse), le gain est plus qu'important !
Donc maintenant, pensez bien à régler vos images en conséquences. Il faut savoir qu'il est possible bien évidement de créer une texture ayant pour résolution 2 multiples de 2 différents, par exemple 256x512 reste dans les contraintes données.
Les cartes graphiques actuelles obtiennent des résultats plus rapides grâce à leurs architectures basées sur ces calculs.
Des formats à suivre :
Maintenant passons au format d'image. Il existe de nombreux formats d'image ! Le BMP, le GIF, le PSD ou encore le TIFF. Cependant tous ces formats sont différents alors, lequel choisir ? L'un des critères important est déjà de définir si le format supporte une compression, le nombre de couleurs dont on aura besoin, l'utilisation de couche alpha ou autre... Bref, il faut définir une certaine charte de son format afin d'avoir le meilleur format possible.
Formats non comprimés :
Les formats non comprimés sont relativement peu nombreux, et pour cause, lorsqu'une image n'est pas comprimé cette dernière devient volumineuse très rapidement ! Cependant c'est un format qui possède un avantage assez particulier, puisque il n'utilise pas d'algorithme de compression le processeur n'a aucun calcul à faire ! On peut ainsi facilement afficher de nombreuses imagse très rapidement sans perte de performance. On trouve comme formats non compressés le .BMP ainsi que le .TIFF. Ces deux formats étant compatibles toute plateformes, il sont utilisables universellement, le BMP reste un format lisible par n'importe qu'elle éditeur d'image et n'importe quelle librairie ; tandis que le TIFF reste lui reste plus difficile à inclure dans un programme, mais aussi dans sa construction.
Comme je l'ai dit précédemment, ces formats d'images ont tendance à devenir rapidement volumineux, et pour cause, par exemple n'importe qu'elle image en BMP ayant une résolution de 800 par 600 pixel avec 24 bits (soit 16,8 millions de couleurs) fera un poids de 1,4 Méga octet ! Tandis qu'un JPEG lui ne ferrait que quelque kilo octet ! Il est donc conseillé de n'utiliser se format d'image que pour un jeu en 2D type RPG Maker, par exemple, cela permettant de conserver toutes les couleurs de l'image (mais sera cependant très rapidement volumineux, donc) et ne demandera que très très peu de ressources.
Formats comprimés :
Les formats comprimés sont nombreux, on trouve surtout le JPEG, le PNG et de nombreux dérivés du PNG. Cependant rien que ces 2 formats sont extrêmement différents ! L'un utilise un algorithme de compression destructif, l'autre non ce qui évite les pertes de données, mais la plus grosse différence et que le format PNG supporte une couche alpha. La couche alpha est une couche supplémentaire aux autres couches (qui sont le Rouge, le Vert et le Bleu), cependant le JPEG, lui, permet d'obtenir un meilleur rapport qualité/poids tout en gardant une qualité correcte ! Le PNG lui est aussi très bon mais sur des images généralement plus grandes et autre que des photos, un de ses avantages étant donc qu'il gère la transparence, cependant les librairies graphiques ne le gère pas forcément toutes non plus !
Le JPEG est donc un format d'image relativement utile pour pour créer des textures à partir de photo.
Formats spéciaux :
Il existe encore d'autres formats, mais qui sont utilisés de façons particulières, il s'agit du format DDS et du Targa. Ce sont des formats d'image particulier car possède différent atout qu'on ne trouve pas notamment sur le format JPG.
DDS
Le format DDS est un format de texture créé par Microsoft, on l'utilise pour divers jeu comme Call of Duty ou encore Unreal Tournament, c'est un format relativement lourd mais compatible aussi pour la Xbox et la Playstation 3. Linux ne prend pas en charge ce format.
Un point fort de ce format est la prise en charge des mipmaps ; alors qu'est ce donc que cette chose ? Pour faire simple il s'agit de différentes version de la texture en différentes résolutions afin de pouvoir réduire la taille de ces dernières in-game. Des images valent mieux que des belles paroles alors voici en illustration l'utilité de cette fonction. Voici une textures classique et ses mipmaps :
On remarque donc que la texture est répétée 8 fois, mais toujours de façon décrescendo ; il s'agit en faite d'une version de la texture pour son LOD. Plus elle est loin, plus elle est dur à comprendre visuellement. La seconde image est la même, cependant l'on à changé les couleurs afin de mieux voir le rendu in game, pour une meilleur compréhension de cette technique, ainsi on pourra remarquer facilement la différence selon la distance.
Voici le rendu sous le jeu, on peut donc remarquer que la couleur change selon la distance du joueur par rapport au texture. Ce genre de procédé permet de gagner en fluidité pour un jeu mais emploie un fichier plus volumineux.

Voici quelque lien utile pour le DDS :
[list=]DDS Utilites[/list]
[list=]Plug-in 3DSMax[/list]
[list=]Plug-in Adobe Photoshop normal map et DDS[/list]
[list=]Miniature DDS[/list]
Targa
Le format Targa est un format d'image spécial qui possède une couche alpha. Généralement c'est un format utilisé pour utiliser des effets de relief sur des textures comme dans des effets type bump mapping ou encore le normal map.
Son extension est le TGA.
Comparaison de formats :
Voici une comparaison en image (c'est le cas de le dire) des formats d'image.
Résolution : 1618 x 1 203, c'est une résolution sorti d'une image scanné les résultats reste non pas faussé mais plus parlant !
| | | |
| Format JPEG : 1,05 Mo | Format PNG : 2,28 Mo | Format BMP : 5,57 Mo |
Résumé des formats :
Voici un tableau récapitulatif des formats de textures conseillées et utilisés.
| Nom | Extension | Conseil |
| Windows Bitmap | .bmp | Conseillé pour de petites images comme des sprites d'un jeu type RPG Maker, car permet de conserver au mieux les couleurs, cependant devient vite lourd. Son principal avantage est aussi une lecture très rapide de l'image ; une feuille complète de sprites permet ainsi de s'afficher très rapidement ! |
| Joint Photographic Expert Group | .jpeg ou .jpg | Un format à utiliser pour des textures photo-réalistes ou bien pour une grande image comme du 1 024 x 1 024 par exemple. Format léger et gardant une bonne qualié photo, inconvénient n'utilise que les couches RVB. |
| DirectDraw Surface | .dds | Alternative entre le JPEG et le format Targa, cependant il requiert l'utilisation de Direct X, ce qui le rend non portable ! En contrepartie il possède l'utilisation des mipmaps ! |
| Targa | .tga | Images volumineuse mais de très bonne qualité et contient une couche alpha. |
Relief dans les textures
Les jeux actuels utilisent divers procédés afin de limiter le nombre de polygones. Pour ce faire, ils passent par des textures avec plusieurs couches afin de créer de la fausse 3D. On peut ainsi citer le bump mapping, l'alpha blending, le displacement mapping, la lumière spéculaire...
Bump Mapping
Le bump mapping est un vieux procédé qui consiste à donner du volume à un objet 3D (ou même 2D) en utilisant moins de polygone grâce à une texture spéciale, c'est aussi utile pour créer encore une fois l'effet de volume sur des textures. Ici un objet 3D texture avec une texture metal + sa texture bump. On parle parfois aussi de placage de rugosité et texture par perturbation de la lumière. Pour utiliser cette méthode on utilise généralement une superposition d'image, par exemple une image JPEG avec une image en TGA qui contient les information requise pour donner le faux volume.
L'inconvénient majeur de cette technique réside simplement dans le fait qu'il s'agit d'une fausse 3D ; je vous conseille donc de l'utiliser pour des objets peu visible ou en arrière plan, elle permet ainsi d'augmenter le réalisme tout en évitant d'être trop gourmande.
Pour expliquer rapidement son fonctionnement il faut juste savoir que l'oeil humain perçoit le volume grâce à la lumière, ici donc les textures sont juste reflétées avec la lumière qui donne les effets d'ombres.
Plus d'informations sur Wikipédia France ou Wikipédia Anglais.
Normal Map
Le but du normal map est tout comme le Bump Mapping, il consiste en réalité a diminuer la aussi le nombre de polygones grâce à la lumière ! C'est une technique relativement efficace qu'on retrouve par exemple dans Half-life 2, sur les personnages, ou bien dans Doom 3.
Cette technique à l'avantage et l'inconvénient de réellement modifier les polygones. On gagne en réalisme mais aussi en gourmandise, à utiliser avant tout pour des objets en 1er plan ou qui ont besoin d'être mis en avant.
Plus d'information sur Wikipédia Anglais.
Pour mettre en place cette technique, il existe plusieurs solution. Lorsqu'il s'agit d'utiliser cette technique sur une texture créée a partir d'une photo, on peut partir avec un plug-in de Photoshop ou bien un logiciel adapté tel que Texture Maker (logiciel payant) ou encore Crazy Bump (qui lui est gratuit). Gimp possède un plug-in permettant de créer facilement du Normal Map à partir d'une photo, voir l'article "Normal Mapping sous Gimp".
Displacement mapping
Le displacement mapping est une technique qui permet d'augmenter provisoirement la géométrie des objets, afin d'augmenter le détail du rendu graphique. Pour ce faire, cette technique utilise une image qui donne des valeurs selon sa couleur, une hauteur est ainsi définie selon cette couleur.
C'est une technique très efficace mais aussi assez onéreuse dans sont coût niveau ressources du fait de la création de nouveau points géométrique dans l'espace.
Plus d'information sur Wikipédia France ou Anglais.
Occlusion
Il s'agit d'une technique de précalcul qui permet d'illuminer en un point un objet selon la position de son objet voisin, sans tenir compte de l'éclairage extérieur ou à venir. Cette technique ne donne cependant pas toujours des résultats très corrects, mais permet de donner plus de réalisme a une scène 3D.
L'apha Blending
L'alpha blending est une technique qui consiste à mélanger plusieurs textures afin d'obtenir un fondu. C'est une technique utile par exemple pour créer des extérieurs, voici un exemple sous le moteur de Wolfenstein Enemy Territory. A gauche les textures ne sont pas mélangées, à droite les deux textures sont mélangées, grâce à l'Alphamod du moteur graphique.
Il est aussi possible d'utiliser cette technique dans les jeux 2D, une librairie comme la SDL ou encore la SFML gère l'affichage par transparence. On peut ainsi faire facilement disparaitre un sprite ou tout autre image 2D de l'écran.
Quelques liens.
Nous voilà à la fin de cet article, cependant je ne vais pas vous laissez comme ça ! C'est bien beau d'avoir compris tout cela, cependant il faut pouvoir appliquer toute ces connaissances, voici donc plusieurs liens pour vous donner plus de précision sur certaine technique.
Vous pouvez trouver ce document sur le site Gamecorp dans la catégorie « Culture du jeu vidéo ».
La définition de Textures sur Wikipédia France et Wikipédia Anglais.
Enfin, voici quelques sites de textures et d'outils :
Sites de textures
[list=]Beaucoup de textures.[/list]
[list=]D'autre textures, format photo.[/list]
[list=]Lemog : des textures format puissance de 2, très bonne qualité et tout simplement géniales ![/list]
[list=]CG Textures : Photo très haute qualité pour créer vos textures.[/list]
[list=]Des textures, tout plein.[/list]
Logiciels de textures
Il il y beaucoup de logiciel qui peuvent aider à traiter les images, bien évidement il existe les références ultime (Adobe Photoshop et The Gimp) que je ne cite pas, mais il existe aussi des logiciel plus pros et dédiés a la création des textures même !
[list=]Greffon Gimp pour faciliter la création de vos textures : Resynthetizer ou encore The Texturize.[/list]
[list=]Crazy Bump : Logiciel dédié à la création des textures, notamment pour la mise en place de textures dédiés au relief.[/list]
[list=]Texture Maker : Logiciel dédié à la création des textures, logiciel payant et de très bonne facture.[/list]








