Mon premier material

☝🏼

Un gros merci à Zach Hunter (Unreal Sensei) pour ses assets et ses tutos, avec son aimable permission!

  • Allez dans “Content→MyLevel” et créer un dossier nommé “Materials”.
  • Dans ce dossier, cliquez droit et choisissez Material. Nommez votre material comme vous voulez.

  • Double cliquer sur ce nouveau Material.
  • Un material Editor va apparaître.

  • Au milieu, le “Material Graph”. En haut à gauche, un viewport montrant le material.
  • On peut choisir la forme qui recevra le material.
  • Un peu de navigation (rmb, lmb, scroll wheel, etc.)
  • Complètement à droite, la palette, qui vous montre tous les nodes qu’on peut utiliser.
  • Right-click fait la même chose.
  • Choisir un “Constant3Vector”, il s’agit d’un noeud qui contient 3 valeurs, tel un vecteur 3D (X, Y, Z), ou une couleur (R, G, B).
  • On va s’en servir comme couleur.

☝🏼

Vous pouvez double cliquer sur le carré de couleur sur le noeud, ou le rectangle de couleur du côté “Details”, pour changer la couleur de manière plus conviviale.

  • Essayez de connecter juste la sortie rouge, verte, ou bleue à “Base Color”. D’après-vous, pourquoi ça ne fonctionne pas?

  • C’est parce que Base Color s’attend à 3 valeurs, mais si on connecte seulement la composante bleue, verte ou rouge du noeud Constant3Vector, il s’agira alors d’un scalaire, i.e. une seule valeur, pas un vecteur.

  • Cliquez sur le bouton “Apply” du Material Editor pour compiler le Material.

  • Save!

  • Maintenant on peut faire un drag and drop de ce material sur nos objets.

  • Tada!

  • Amusez-vous à changer les paramètres suivants:

☝🏼

Il faut cliquer sur Apply pour voir l’effet dans la scène.

- [ ] Base Color
- [ ] Roughness (utilisez le noeud Constant.
- [ ] Metallic (typiquement, metallic est soit 0, soit 1)
- [ ] Ajoutez des noises (e.g., ajoutez, à partir de StarterContent, dans Textures, faire un drag and drop dans le Shader Graph du Material Editor de la texture “T_Perlin_Noise_M” par exemple)
    - [ ] Vous pouvez cliquer droit dans le shader graph, choisir le noeud Texture Sample, et dans les détails, choisir la bonne texture.

☝🏼

  • Pour tous les objets, dans les détails, vous pouvez double cliquer sur son Material pour l’éditer. La loupe va vous amener au dossier où se trouve le materiel.

☝🏼

Lerp = Linear interpolation. Ça va interpoler linéairement entre deux valeurs. C’est un peu comme un noeud “Color Ramp” dans Blender.

  • Mais on peut faire mieux:
    • La couleur de “rouille”, pourrait être une texture, comme par exemple “T_Metal_Rust_D”.
    • Ouvrez cette texture. Si vous ne voyez que le fond en damier, désactivez le Alpha Channel:
  • On va utiliser cette texture au lieu de la couleur brune pour le Lerp et on va réduire l’intensité du jaune:

☝🏼

Entrez votre nom et courriel Rubika pour télécharger les assets

  • Unzip dans un dossier de votre choix
  • Quelque part dans votre content Drawer dans Unreal, créez un dossier “Textures”.
  • Drag and Drop, du dossier BeginnerAssets, les 3 assets qui commencent par “Spanish”

  • Vous connaissez les PBR, on a la base color, la normal map et la roughness map.
  • Vous remarquez qu’elles ont un astérisque, cela indique qu’elles ont besoin d’être sauvegardées. Sélectionnez les 3, right-click et faire save. Ou cliquer sur Save All en bas à droite.
  • UE est assez smart pour désactiver sRGB pour la normal map, mais pas pour la roughness map.
  • Ouvrir la roughness map et désactiver sRGB

  • Pour la Normal Map, si jamais la détection n’a pas fonctionné, assurez-vous que Compression Setting est à “Normal Map” et que sRGB est à off

  • Dans le content drawer, au même niveau que Textures, créez un dossier “Materials”.

☝🏼

Le dossier devrait déjà être là si vous avez suivi depuis le cours dernier.

  • Créer un material nommé “M_SpanishFloor”

  • Double-cliquer sur le Material pour ouvrir le Material Editor

  • Du content Drawer, drag and drop les 3 textures Spanish* dans le Material Graph
  • Connecter Base Color et Roughness comme ceci (on s’occupera du normal map un peu plus tard).

☝🏼

P.S., aucune idée pourquoi la texture n’apparaît pas dans les nodes, mais bon, si vous cliquez sur un des Texture Sample, dans les Details à gauche, vous allez voir la texture en question (comme ici, la normal map).

  • Appliquons le Material sur le plancher de notre scène (drag and drop du Material sur l’objet plancher)

☝🏼

Remarquons que le tiling est trop petit et qu’il n’y a pas de profondeur (la normal map n’est pas encore appliquée),

  • Ainsi donc, connecter la normal map à l’entrée Normal du noeud M_SpanishFloor.

  • Observez que maintenant les crevasses projettent de l’ombre, même si le maillage est bien plat; c’est la puissance des normal maps, ça fait “semblant” que la normale à la surface varie dans les crevasses!
  • ajoutez une lampe (une Point Light) près de l’ombre portée de l’objet, déplacez-là, et voyez l’effet de l’ombre et lumière dans les crevasses.

  • Maintenant on va régler le problème de tiling.

  • Ajoutez un noeud Texture Coordinates

  • Appuyer sur M et left-click, ça va ajouter un noeud Multiply

☝🏼

Rappelez les shortcuts suivants

L + lmbAdd a Lerp node in Material Editor
1 + lmbAdd Scalar Node in Material Editor
3 + lmbAdd Vector constant in Material Editor.
M + lmbAdd a Multiply Node in Material Editor.
T+lmbTexture Sample Node
  • Multiplier la sortie de TextureCoordinates par 0.35 et connecter la sortie du noeud Multiply aux 3 entrées UV des textures.

  • Allez voir le résultat (faites Apply et Save), le plancher a l’air mieux!

  • On peut modifier la couleur avec un noeud Multiply:

☝🏼

Quelques shortcuts:

Alt-lmb on noodle or socketRemove a noodle
Ctrl-lmb on socketGrab noodle at socket and move it
  • À gauche de l’entrée Base Color du noeud M_SpanisFloor, ajouter un noeud Multiply (M-lmb).
  • Faire 3-lmb pour connecter une constante de type Vecteur dans le socket A du noeud Multiply.
  • Connecter la texture Base Color dans le noeud B.
  • Changez les valeurs RGB du noeud Constant 3 pour affecter la couleur du plancher.

☝🏼

Vous pouvez cliquer sur la zone de couleur (le carré qui ne devrait pas être noir) pour modifier la couleur visuellement.

  • Tiens, justement, j’ai envie de lui donner une teinte un peu plus bleutée, mais subtile:

  • Paramètres et Material Instance
  • On veut créer un Material instance à partir du Material M_SpanishFloor. Pour ce faire, cliquez sur l’objet dans la scène, et choisir le dossier avec la loupe dans la section Details, sous Material.
  • Ça va vous amener vers le bon dossier.

  • Cliquer droit sur le Material et choisir “Create Material Instance”.

  • Cliquez-droit sur le socket 0.35 du Multiply après les noeud TextureCoordinates et choisir “Promote to Parameter”.
  • Nommez-le “Size”.
  • C’est maintenant un paramètre “exposé”, qu’on verra dans le Material Instance et qu’on pourra modifier. On a même mis sa valeur par défaut à 0.35.
  • Cela permet de ne pas avoir à recompiler des materials à chaque fois qu’on change une petite chose et, surtout, de pouvoir créer facilement plusieurs variantes du même Material.

  • Il faut appliquer le Material Instance sur le plancher, et non pas le Material.

  • Donc Drag and drop du Material Instance

☝🏼

Je préfère nommer mon material instance “MI_blahblah” plutôt que “M_blahblah_inst” comme le propose UE.

  • Si maintenant vous ouvrez l’éditeur du Material Instance, vous verrez le paramètre Size que vous pourrez, à votre guise, modifier dans l’instance et cela modifiera la scène en temps réel sans avoir à faire “Apply”.
  • Cela se fait en activate Size et en modifiant la valeur. Size se trouve dans la section “Global Scalar Parameter Values”.

☝🏼

Essayer le noeud MF Tiling plutôt que Texture Coordinates. Pas besoin du Multiply dans ce cas là.

  • À votre tour maintenant, exporter la teinte.

  • Maintenant, on voudrait contrôler la profondeur de la normal map.

  • Il existe un noeud “FlattenNormal” Connectez-le et paramétrez la valeur de flatness (laisser la valeur par défaut à 0).

  • Vous pouvez maintenant jouer également avec la profondeur des crevasses.

  • À vous de jouer, ajoutez un noeud Mutiply qui prendra comme entrée la roughness et paramétrez avec une valeur par défaut de 1. Nommez le paramètre “Roughness Strength”.

  • On peut maintenant contrôler la rugosité du Material.

  • Et comme d’habitude, les valeurs par défaut étaient mieux, donc cliquer sur les flèches Undo à droite des paramètres.