Sites


Blender pour le jeu video

Introduction aux matériaux et textures

Les matériaux et leurs textures sont les futures couleurs du monde de notre jeu ! Et, puisque nous devons limiter le nombre de polygones pour des raisons de performance du moteur de jeu, les matériaux et textures seront donc très importants pour habiller nos objets et personnages. Nous allons voir dans ce chapitre deux approches pour donner à nos surfaces des aspects variés et enrichir l'aspect global de notre environnement.

De manière générale, matériaux et textures sont intimement liés. Il est possible d'avoir des matériaux sans textures, mais cela limite fortement les effets visuels possibles. Par contre, il n'existe pas de texture visible sans qu'elle soit au moins attachée à un matériau.

Il est important de noter aussi que la gestion des matériaux et textures pour le Game Engine se fait différemment qu'en mode de rendu Blender classique. Les différences sont tant dans la gestion des nodes, pour ceux qui ont l'habitude d'aborder cette pratique sous cet angle, que dans les possibilités offertes par le mode de texture plus ancien, sans utilisation de nodes.

 

Les deux façons de créer des matériaux

Les matériaux dans le Game Engine peuvent être définis de deux manières différentes, qui se complètent d'une certaine façon. Ceci est dû à l'historique du logiciel.

  • La méthode ancienne, héritant de la méthode des versions 2.4x, est de définir le matériau dans les panneaux des onglets matériaux et textures. C'est aussi la seule méthode qui fonctionnera lorsque nous serons en mode de rendu Multitextures.
  • La méthode actuellement développée utilise le système des nœuds de matériaux, qui tire utilement parti des capacités de calcul des cartes graphiques modernes. Pour utiliser ce dernier système, il faudra néanmoins initialiser certains paramètres dans les panneaux de matériaux et textures. Cette méthode est la méthode conseillée, permettant de construire des textures complexes et dynamiques au besoin. Cette méthode ne fonctionne que si le mode de rendu GLSL est activé.

Les paramètres d'affichage des matériaux

Nous allons décrire dans cette partie les différents panneaux présents dans l'onglet Material de la fenêtre Properties.

Les options Diffuse, Specularet Shading  sont a priori connues. Rien de mystérieux concernant leurs utilisations, car elles ne diffèrent pas de Blender Internal ou de Blender Cycle.

Une des spécificités du mode Game Engine, c'est que nous avons maintenant un panneau Game Settings avec quelques options importantes.

Le Backface Cullingsert uniquement à calculer les faces dont la normale pointe vers la caméra. Techniquement, si l'on coche cette option, si une normale est dans le même sens que la caméra elle n'est pas affichée et donc l'objet devient transparent. On peut utiliser cette méthode pour le cas où la caméra entre dans un objet afin de ne pas avoir un écran noir.

Le paramètre Invisible, quant à lui, fait disparaître totalement le matériau en jeu et tous les objets auxquels il est appliqué.

Le bouton Textsert uniquement à afficher le matériau sur un objet texte, mais seuls les objets textes sont concernés.

Les modes d'Alpha Blend indiquent de quelle manière gérer la transparence :

  • Opaque : c'est l'option par défaut. Dans ce mode, toutes les faces sont opaques.
  • Add: la transparence de la face dépend de sa couleur, plus elle est proche du blanc, plus le matériau est opaque et plus elle est proche du noir, plus il est transparent.
  • Alpha clip : ce mode supporte un canal de transparence Alpha (RGBA). On l'utilise pour avoir de la transparence quand on utilise les textures. Cependant, la transparence est limitée : on a soit complètement transparent (0), soit complètement opaque (1).
  • Alpha : sûrement le mode le plus adapté pour la transparence car il gère les textures qui ont une transparence avec un canal alpha et supporte la semi-transparence (de 0 à 255). Par contre, ce mode demande plus de calculs, et n'est pas conseillé pour des faces trop nombreuses.

Les paramètres des textures

Comme nous le disions plus haut, il est très rare d'avoir un matériau qui n'est pas lié à une texture. De manière générale, une texture donnera toujours au minimum une couleur plus complexe à notre objet, que simplement la présence de l'option Diffuse dans l'onglet Material.

Notez que les textures procédurales ne sont pas supportées par le Game Engine. Si vous les avez utilisées pour modifier l'apparence de votre objet, il vous faudra passer une technique nommée baking qui permet de faire la conversion de ces textures en images bitmap. Cette technique est d'ailleurs décrite au chapitre Pre-calcul des textures et de la lumière de la section Travailler sur le rendu.

Vous l'aurez compris, le travail se fera donc uniquement avec des textures image ou par une programmation plus complexe en GLSL.

Concernant les images et pour des raisons de performance, il sera toujours préférable de limiter le nombre de textures utilisées ainsi que leur taille. Par défaut, une image dans Blender est un carré de 1024 pixels de côté. Le Game Engine n'est cependant pas restreint à l'affichage d'images carrées pour les textures. Mais il est recommandé de prendre cette habitude pour faciliter les calculs liés à leur affichage. Une texture idéale sera donc un carré dont la longueur de côté, en pixel, sera une puissance de 2 (exemple: 128x128, 256x256, 512x512,…).

Créer une nouvelle texture

La création des textures de type Image liées à un matériau pour le Game Engine est identique au Blender Internal, mais nécessite la connaissance de quelques subtilités pour qu'elle s'affiche correctement dans le jeu.

Pour les utilisateurs de Cycles, une petite explication s'impose. Par défaut, les matériaux du Blender Internal et du Game Engine n'utilisent pas de nodes. Donc, contrairement à Cycles, il n'y a pas un système nodal commun aux textures et aux matériaux. Dans le Node Editor, les nœuds des textures et les nœuds de matériaux sont donc différents. Ils ont chacun leur propre onglet. Le nœud Texture permet d'introduire une texture créée de façon traditionnelle et de la lier avec un nœud matériau. Il est donc impératif d'initialiser une texture à la manière de Blender Internal(avec l'onglet Texturede la fenêtreProperties) avant de pouvoir l'utiliser dans les nodes de matériaux.

De façon traditionnelle (à la manière de Blender Internal), les textures sont donc disposées dans une liste où l'ordre détermine la priorité d'une texture par rapport à une autre. Ci-dessous, voici la méthode pour ajouter une texture à cette liste :

  1. Sous cette liste, cliquez sur le bouton New pour créer une nouvelle texture image. À la place du bouton New, apparaît son nom.
  2. En dessous du nom, il faut préciser le type Image ou Movie. C'est le seul type fonctionnel dans le Game Engine.
    Depuis la version 2.72 de Blender, il s'agit du type par défaut à la création d'une texture.
    Comme on vous le disait plus haut, les textures procédurales ne sont pas supportées.
  3. Cliquez alors sur le bouton Opendans l'ongletImageplacé en dessous de manière à pouvoir charger une image.



Définir le mode de projection

Le panneau Mappingest configuré par défaut en mode coordonnées automatiques Generated pour mapper la texture selon une projection plane (Flat), mais une bonne pratique est d'utiliser systématiquement des coordonnées UV pour tout mesh (volume ou plan). Seule la projection de type Flat fonctionne dans le Game Engine, les autres types de projections ne sont pas supportées.

Définir l'influence

Le panneau Influence indique comment la texture va influencer les paramètres du matériau. Ce panneau ne s'affiche que si on n'utilise pas le mode node pour gérer la texture de notre matériau.

Dans notre capture d'écran, nous avons activé le slider Color et Alpha. Ce qui veut dire que notre image de texture influence l'apparence colorée de notre objet et joue aussi sur sa transparence. Nous aurions pu activer uniquement l'influence Alpha. La couleur n'aurait alors pas été affectée, juste la transparence de l'objet. Il est ainsi possible d'activer ou de désactiver un seul ou tous les réglages du panneau. Il n'est pas rare aussi d'affecter la géométrie de manière à utiliser les variations de luminosité de notre image pour simuler du relief et rendre le résultat plus réaliste.

Les autres panneaux de l'ongletTexture sont des notions supposées connues.

Lors de l'utilisation de textures répétées, il est important de bien travailler l'image initiale de manière à ce que les raccords ne soient pas visibles dans le jeu. La fonction Filtres > Mappage > Rendre raccordable de Gimp permet d'aider et marche parfaitement sur les textures de matériaux. Dans Krita, appuyer sur V après une sélection fera un remplissage automatiquement raccordé de la sélections sur toute sa surface.

Création d'une texture depuis le mode de peinture

Depuis la version 2.72 de Blender, le mode de peinture ou Texture Paint Mode est devenu très intéressant et vous serez peut-être plus tenté de l'utiliser plutôt que de passer par un logiciel tiers pour créer vos textures.
Dans ce cas vous pourrez directement y créer vos textures.

Dans l'onglet Tools de la nouvelle colonne d'outils de ce mode, il y a un premier bouton Add simple UVs qui créera automatiquement des coordonnées UVs faisant se répéter l'image peinte sur chaque face du mesh.
Le dépliage UVs du maillage en Edit Mode sera donc toujours une phase indispensable si vous souhaitez texturer un objet plus complexe qu'un plan ou un cube.

En dessous, le menu déroulant Add Paint Slot est plus intéressant.
Il crée, paramêtre et nomme directement une texture Image avec un mapping UVs agissant sur le paramètre d'Influence choisi comme expliqué précédemment.


Dès qu'une texture est correctement paramêtrée pour être peinte; l''onglet Tool change d'aspect et n'affiche plus que le brush actif.

Pour créer une seconde texture, il faut afficher l'onglet Slots de la colonne d'outils.
Vous pouvez alors préciser l'UV Map et le Blend Type de l'influence de la future texutre, puis désormais utiliser le menu nommé Add Texture Paint Slot.

Le Painting Mode Material permet donc de peindre les textures en pensant à leur influence sur le matériau.
Cette démarche d'une texture par paramêtre sied mieux à un rendu Blender Render qu'à un jeu. Cependant, cela reste pertinent si l'on envisage d'en faire une seule texture issu d'un baking  ou rendu en texture. Vous êtes toujours libre de modifier le panneau Influence après coup. La création automatique d'une texture vous facilitera le travail même si vous souhaitez l'exploiter avec les nodes. Il vous suffira de la supprimer du matériau standard avant de le changer utilisant des  noeuds et de la réutiliser en tant que noeud Texture.
Si vous souhaitez peindre une image sans l'intégrer immédiatement au matériau, il faudra alors utiliser le Painting Mode Image. Dans ce cas, il faudra ensuite faire le paramêtrage de la texture vous-même comme indiqué précédemment.
Alors au lieu de charger la texture en cliquant sur le bouton Open, il suffira de la récupérer depuis la liste des images présentes dans le fichier .blend à côté du bouton New.

Les nœuds matériaux

Pour gérer nos matériaux et textures, nous pouvons aussi utiliser les nodes: une pratique qui tend à se généralise peu à peu dans l'ensemble de Blender. Nous vous encourageons d'ailleurs à utiliser cette méthode parce que nous pensons que les nœuds de matériaux exposent une arborescence de matériau et textures plus simple à comprendre que les relations établies par l'ordre de la liste et les panneaux Influencede chaque texture (méthode plus attachée à une pratique de Blender 2.4x).

Nous tenons à rappeler que cette façon de travailler ne fonctionne que si vous avez GLSL activé.

Un matériau simple avec des nœuds

Voici un exemple simple de matériel fait avec les nodes.

Ici, un nodeRGB envoie une donnée de couleur vers l'entrée couleur du matériau, dont la sortie nourrit un nodeOutput qui donnera le résultat sur l'objet.

Matériau avec une texture dans le Node Editor

Voici, en détail, la procédure pour créer des nodes de matériaux et les lier avec des textures :

  1. Affichez les nœuds de matériaux dans le Node Editor.
  2. Activez les nœuds de matériaux en cochant la case Use Nodes dans le Header du Node Editor. Une fois réalisé, l'objet devient complètement noir et les panneaux changent dans le panneau Material.
  3. Cliquez sur le bouton Newpour donner un nouveau matériau au nœud Material. L'objet n'est plus noir. Si le matériau à utiliser avait déjà été créé, il suffit de le choisir dans la liste des matériaux du Material.
  4. Appuyons ensuite sur Maj+A pour créer un nœud Input > Texture. Assignons-lui une texture créée au préalable en la choisissant dans la liste.
    Référez-vous au sous-chapitre Créer une texture décrit plus haut si vous ne savez pas comment faire, mais ne tenez pas compte du panneau Influence qui n'aura effectivement aucune influence ici.
  5. Une fois que nous avons créé notre nœud Texture et que nous lui avons assigné notre bloc de données Texture,nous devons supprimer ce bloc de donnée de la liste qui se trouve dans l'ongletTexturede la fenêtreProperties, sinon la texture sera appliquée de façon traditionnelle en plus de son utilisation par les nodes
  6. Le paramétrage de notre nœud texture est accessible dans l'onglet Texturesà chaque fois que vous sélectionnez le nœud correspondant. L'absence de liste indique bien que la texture affichée est celle d'un nœud Texture.
  7. Pour appliquer votre texture en mode UVsur votre objet, vous devez maintenant connecter au minimum un nœud Geometry à partir de sa sortieUV dans l'entrée Vectorde notre nœud Texture. Comme dans Cycles, nous pouvons aussi utiliser un nœud Mapping qui permet de modifier la taille, la rotation et les décalages de la projection de la texture. Les coordonnées de Mapping sont précisées grâce au nœud Geometry.
L'information essentielle est que les textures doivent avoir une des coordonnées UVs pour s'afficher. Les autres modes de Mapping ne fonctionnent pas dans le Game Engine.

Il y a une erreur de communication avec le serveur Booktype. Nous ne savons pas actuellement où est le problème.

Vous devriez rafraîchir la page.