Les materials - comment ça marche ?
Les notions de bases
Dans ce chapitre, nous parlerons des materials. Un material, c'est un asset qui contrôle l’apparence d’un objet dans votre niveau. La création d’un material ne nécessite pas de savoir coder ou d’avoir la moindre connaissance en algorithmique. Ce type de codage se nomme script visuel. Vous interconnectez des éléments afin de réaliser quelque chose, c’est donc le même principe que Blueprint.
![Exemple d'un material basique](https://sdz-upload.s3.amazonaws.com/prod/upload/0007.jpg)
Avant de créer votre premier material, je vais rapidement vous expliquer comment cela fonctionne. Pour le moment, essayez de comprendre la logique mais ne touchez à rien dans l’éditeur. Au moment de la création, vous serez moins perdus.
Pour réaliser des couleurs en informatique, nous utilisons le système appelé RVB (littéralement « Rouge, Vert, Bleu »). À partir de ces 3 vecteurs de couleurs, nous sommes capables de réaliser presque toutes les couleurs. Chaque vecteur de couleur est égal à un octet, ce qui fait donc 3 octets pour une couleur.
Si vous lancez un logiciel comme Paint ou Photoshop et que vous choisissez une couleur afin de peindre une image, votre logiciel vous fournira la valeur de rouge, de vert et la valeur de bleu qui la compose.
Dans l’exemple ci-dessus, Paint m’indique que la couleur saisie est composée de 41 de rouge, 41 de vert et 201 de bleu.
Si nous prenons chaque vecteur de couleur possible, nous avons environ 17 millions de couleurs possibles car
= 16,8 millions. Oui, ça fait beaucoup de couleurs ...
Si vous souhaitez saisir une couleur dans les materials, vous devez choisir une couleur entre 0 et 1. Pour transformer votre nombre compris entre 0 et 255 il suffit de diviser ce nombre par 255. C'est ni plus ni moins un produit en croix. ;)
Dans mon exemple, j’avais 41 de rouge dans ma couleur. Pour obtenir cette valeur comprise entre 0 à 1 je dois donc faire :
Les additions avec les materials
Oui, nous allons vraiment apprendre à additionner. :p Nous allons effectuer un court exercice dans lequel nous allons additionner deux couleurs entre elles.
Soit les deux couleurs suivantes :
R = 1, G = 1, B = 0
R = 0, G = 0, B = 1
Pour additionner ces deux couleurs, nous devons additionner chaque vecteur de couleurs entre eux. En d’autres termes, le R s’additionne avec le R , le G avec le G et le B avec le B.
R = 1 + 0 donc R = 1 ;
G = 1 + 0 donc G = 1 ;
B = 0 + 1 donc B = 1.
Le résultat de cette addition nous donnera du Blanc. On peut démontrer ce résultat avec le material Editor qui, de la même façon que le Sound Cue Editor permettait de modifier des sons, permet de modifier le rendu visuel de vos objets..
Il s’agit d’une synthèse additive des couleurs qui obéit à des règles différentes de la synthèse soustractive à laquelle on nous a habitué en cours d’art plastique.
Maintenant que nous avons vu la théorie, que dites-vous de passer à la pratique ?
Votre premier material
Nous allons maintenant créer notre material. C’est-à-dire un type de rendu visuel que vous pourrez ensuite appliquer aux objets de votre choix.
Pour y voir plus clair, nous allons commencer par créer un nouveau niveau et le nommer « Material ». Pour cela :
Rendez-vous dans le menu File et sélectionner New Level ;
Choisissez le template Default ;
Sauvegardez (CTRL+SHIFT+S) sous le nom « Material » dans le dossier de votre choix.
Ensuite, vous allez pouvoir créer un fichier intitulé MyMaterial dans ce niveau :
Cliquez sur le dossier StarterContent du Content Browser puis sur le dossier Materials ;
Faites ensuite Add New puis Material ;
Renommez le « Material » en « MyMaterial » ;
Double-cliquez dessus pour ouvrir le Material Editor. Et voilà, vous y êtes !
Voici une petite liste des différentes fenêtres disponibles dans l’éditeur de Material :
Graph : c’est ici que vous créerez vos materials. Pour en créer, vous devez interconnecter des blocs entre eux.
Palette : cette fenêtre est située à droite. C’est ici que se trouvent l’intégralité des fonctions que vous utiliserez pour créer un material.
Viewport : cette fenêtre permet de visualiser votre material.
Detail : vous avez déjà eu affaire à elle. Cette fenêtre vous permet de définir les différentes caractéristiques.
Avant d’utiliser l’outil de création de material, voyons ce qu'est le Physically Based Materials.
Physically Based Materials
Le Physically Based Materials (PBR) a pour but de reproduire au mieux les comportements réels des lumières sur les différentes surfaces. En d’autres termes, il s’agit de simuler la réalité en appliquant des techniques d’ombrages basées sur des lois de la physique.
Concrètement, ça donne quoi?
Le PBR inclut quatre principales propriétés qu’Epic Games a surnommé :
Base Color (albédo) ;
Roughness ;
Metallic ;
Specular.
Les plus curieux d’entre vous auront observé que ces quatre propriétés sont déjà visibles dans le Material Editor.
Je vais à présent essayer de vous définir très brièvement les caractéristiques de ces quatre propriétés. Cela n’a pas pour but d’être exhaustif mais de vous donner une idée de leurs utilités.
Base Color : comme son nom l’indique, son but est de fournir la couleur de votre material.
Roughness : ce paramètre contrôle la netteté (rugosité) de la surface.
![Valeur de la Base Color de 0 à 1](https://sdz-upload.s3.amazonaws.com/prod/upload/075.png)
Metallic : celui-ci a pour but de contrôler le taux de métal sur votre surface.
![Valeur de Metalic de 0 à 1](https://sdz-upload.s3.amazonaws.com/prod/upload/093.png)
Ces différents paramètres permettent aux artistes de réaliser à peu près n’importe quel rendu.
![Exemple de materials basé sur le PBR](https://sdz-upload.s3.amazonaws.com/prod/upload/1023.png)
Vous aussi, vous pouvez utiliser ces PBR pour créer les rendus de votre choix. Pour vous le prouver, rendez-vous dans l’éditeur !
L’éditeur de material
Revenons-en à nos moutons ! Avant de faire une parenthèse sur les PBR, nous étions en train de réaliser notre premier Material à partir du Material Editor. Il nous reste à manipuler les différentes options pour obtenir un effet précis puis à appliquer ce material à un mesh.
Pour passer à la pratique, je vous propose de réaliser un material qui donne à un mesh l’apparence de l’or. Rien que ça ! De retour dans notre material editor avec notre fichier MyMaterial ouvert, nous allons commencer par importer une texture dans notre material. Pour cela, vous avez deux solutions :
Faites un glisser-déposer de votre texture de la Palette du Content Browser au Material Editor.
Faites un clic droit en plein milieu du Material Editor. Quand l'interface s'ouvre, saisissez dans la barre de recherche « Texture Sample » et cliquez dessus. Ensuite, dans la fenêtre Details, cherchez la propriété Texture. Par défaut, aucune texture n’est appliquée mais il suffit de cliquer sur None pour la changer.
Dans notre cas, vous pouvez saisir la texture T_Metal_Gold_ D qui correspond le mieux à l’effet recherché.
Refaites la même manipulation pour saisir la texture T_Metal_Gold_N . Vous pouvez aussi saisir une texture en appuyant sur la touche T de votre clavier et en effectuant un clic gauche au milieu de la fenêtre . Normalement, vous devriez avoir deux textures dans votre Material Editor.
Reliez votre première texture à Base Color et la deuxième à Normal.
Ces deux textures ont des caractéristiques différentes. La première a pour fonction de définir la couleur et la seconde texture (appelée Normal map) a pour but de donner du relief à un material. Si vous voulez voir à quoi ressemble votre Normal map, je vous invite à cliquer dessus (à partir de la fenêtre Details) pour ouvrir le Texture Editor.
Comme dit précédemment, le but de cette texture est de donner du relief (de la profondeur) à votre material. À présent, je vous invite à cliquer sur le bouton View qui se trouve en haut à gauche puis de désactiver tous les vecteurs de couleur sauf le Bleu.
Mais euh… C'est pas bleu ça… C’est en blanc et noir !
Eh oui ! Quand on veut avoir la valeur d’un vecteur de couleur on nous l’indique uniquement en noir et blanc mais c’est la même chose ! Plus c’est blanc et plus c’est proche de 1. Plus c’est proche du noir et plus c’est proche de 0. Cette image vous montre donc les variations de bleu.
Il me semblait important de vous montrer cette technique afin de pouvoir analyser plus facilement la quantité de couleur que comporte un vecteur de couleur. Si vous souhaitez réaliser vos propres textures, c’est une information importante.
Est-ce que la Normal map est vraiment utile ?
Bien sûr que c’est utile ! :p Voici une petite image vous montrant la différence d’un material avec et sans Normal map.
![Sur la gauche sans et sur la droite avec. Ce n’est peut être pas le meilleur exemple mais on voit une nette amélioration sur le material de droite tout de même !](https://sdz-upload.s3.amazonaws.com/prod/upload/2152.jpg)
Nous allons rajouter deux choses à notre material. En plein milieu du graph, faites un clic droit et saisissez dans la barre de recherche Constant. Une constante est une valeur fixe qu’on peut affecter aux PBR de notre material
Cliquez sur Constant pour l’ajouter au graph. Reliez-la ensuite à Metallic puis recliquez sur la Constant pour définir sa valeur sur 0.9 dans la fenêtre Details. Ensuite, créez encore une nouvelle constante puis branchez-la à Roughness et donnez-lui une valeur de 0.
Vous l’avez sans doute compris, vous venez de définir la proportion métallique (Metallic) de votre material ainsi que sa rugosité (Roughness). Si vous regardez le Viewport dans le Material Editor vous devriez voir quelques changements notables par rapport à tout à l’heure.
Votre material reflète énormément la lumière et il reflète les nuages qui se trouvent dans le Skybox.
On a réalisé un material or avec pas grand-chose. Il serait peut-être temps de l’utiliser, non ? :) Appuyez sur Apply tout en haut à gauche et fermez cette fenêtre.
Appliquez un material
Rendez-vous dans le Content Browser et dirigez-vous dans le dossier Starter Content puis Props pour ensuite saisir le meshSM_MatPreviewMesh_02
. Faites un glisser-déposer de ce mesh dans votre Level, il servira d’exemple. Pendant que nous y sommes, placez une Sky Light dans votre niveau (dans la fenêtre en haut à gauche).
Maintenant, en saisissant votre mesh dans le Level, vous devriez observer dans la catégorie materials deux éléments (Element 0 et Element 1). Il s’agit des deux materials déjà appliqués sur ce mesh. Cliquez sur le premierM_MaterialSphere_Plain
. Une nouvelle fenêtre vous demandera de saisir le nouveau material qui le remplacera : choisissez le materialMyMaterial
(celui que vous venez de faire).
Vous devriez ensuite avoir un rendu similaire au mien.
Félicitation, vous venez d'apprendre à réaliser votre premier material ! Effectuons un petit récapitulatif de vos nouvelles compétences :
Vous êtes capables de créer un material.
Vous avez utilisé des textures dans un material.
Vous savez utiliser les fonctions de bases pour un material.
La création de material n'a plus de secret pour vous !
Cette partie s'achève, la suite sur les materials se nomme "Les Materials Instances". Allez, c'est parti !