Lorsque vous créez des ressources 3D, vous pouvez avoir besoin de définir différents types de surface au sein d'un même matériau. Un moyen simple et bon marché d'y parvenir est d'utiliser un Masque de texture qui définit quelles parties d'une surface doivent être affectées par quelle section du matériau.
Ce didacticiel explique comment utiliser le masquage de texture dans vos matériaux Unreal Engine.
Masques de texture
Un Masque de texture est une texture en niveaux de gris, ou un seul canal (R, G, B ou A) d'une texture, utilisée pour limiter la zone d'un effet à l'intérieur d'un Matériau.
Les masques sont souvent contenus dans un seul canal d'une autre texture, comme le canal Alpha de la carte de diffusion ou de la carte normale. Dans d'autres cas, un seul fichier image contient souvent les masques Rugosité, Métallique et Occlusion ambiante, chacun occupant un seul canal.
C'est ce qu'on appelle le channel packing, et c'est un bon moyen d'améliorer les performances du matériau en réduisant le nombre d'échantillons de texture requis par le matériau. Techniquement, tout canal de toute texture peut être considéré et utilisé comme un masque de texture.
Voici un exemple de ce à quoi ressemble le masque de texture pour le maillage statique SM_Chair du contenu de base.

En fait, ce fichier image contient un masque noir et blanc différent dans chacun des quatre canaux de couleur (RGBA).

Création d'un masque de texture
Vous pouvez créer un masque de texture dans n'importe quel programme de manipulation d'images 2D. Vous pouvez également créer des masques directement à partir de la géométrie dans votre programme de création de contenu préféré, ou avec un outil de texturation dédié comme Marmoset Toolbag, Xnormal ou Substance Painter/Designer.
Lorsque vous créez des masques à la main, vous commencez généralement par une image qui montre la disposition des UV de votre maillage. Dans cet exemple, l'intention est de masquer les coussins des sièges. Les UV correspondants sont mis en évidence dans l'image ci-dessous. Pour masquer une partie spécifique du modèle, vous devez peindre cette région de l'image en blanc pur, tout en laissant toutes les autres zones en noir.

Comme indiqué ci-dessus, cela vous permet d'appliquer des propriétés de surface spécifiques à la zone masquée. Dans ce cas, le masque est utilisé pour donner aux coussins une couleur orange.

Lorsque vous créez un masque de texture, vous devez toujours utiliser du noir ou du blanc pur et jamais d'informations en couleur. L'utilisation de tout autre type de couleur pourrait entraîner des artefacts étranges lors de l'utilisation du masque dans Unreal.
Exportation d'un masque de texture
Lorsque vous avez terminé de peindre votre texture de masque, vous pouvez soit l'exporter comme une seule image, soit regrouper plusieurs masques dans les canaux R, G, B et A d'une seule image et l'exporter. C'est ce que l'on appelle communément le channel packing RVB et c'est la méthode préférée lors de la création de masques, car elle permet de réaliser des économies considérables en termes de performances et de mémoire, avec très peu de travail supplémentaire.
Si vous insérez quelque chose dans le canal alpha d'une texture, n'oubliez pas d'activer l'exportation alpha dans le logiciel de manipulation d'images 2D que vous utilisez. Sinon, vous courez le risque que le canal alpha ne soit pas exporté avec la texture.
Utilisation de masques de texture
Vous pouvez utiliser les textures de masque de différentes manières dans l'Éditeur de matériaux d'Unreal. Les utilisations courantes comprennent la définition d'une source de lumière émissive, la définition des parties d'un maillage qui sont métalliques et non métalliques, ou le mappage de différentes couleurs à différentes parties d'un modèle, comme le montre l'exemple de la chaise.
La section suivante présente quelques-unes des façons les plus courantes d'utiliser le masquage de texture dans Unreal Engine.
Masque émissive
L'une des utilisations les plus courantes d'une texture de masque consiste à contrôler les sections émissives d'un matériau. Cela se fait généralement en créant d'abord une texture de masque émissif, qui utilise du blanc pur pour définir les sections du matériau qui doivent émettre de la lumière. Deux paramètres accompagnent généralement un masque émissif :
- Pour modifier la couleur de l'émission lumineuse, vous pouvez multiplier le masque émissif par une couleur définie par un Paramètre vectoriel.
- Pour modifier l'intensité de la lumière émissive, vous pouvez la multiplier par un Paramètre scalaire. Augmentez la valeur du paramètre Scalaire pour accroître la luminosité de l'émission.
Les quatre nœuds mis en évidence dans le graphique ci-dessous montrent un masque émissif multiplié par des paramètres qui contrôlent la couleur et la brillance de la lumière. La sphère n'émet de la lumière que dans les zones qui correspondent aux parties blanches du masque émissif. Le reste de la sphère affiche la texture de la couleur de base.
Masque de matériau
Une deuxième utilisation courante des masques de texture consiste à stocker différents types d'informations de texture dans les canaux individuels R, G, B et Alpha. Le matériau du maillage statique SM_Chair fourni avec le contenu de démarrage est un parfait exemple de cette technique.
Vous pouvez trouver SM_Chair et tout le contenu qui va avec en sélectionnant d'abord le dossier Contenu pour débutants dans le Navigateur de contenu, puis en saisissant « chair » dans le champ de recherche. Cela affichera tout le contenu lié à la chaise. Si vous ne voyez pas la chaise, cela signifie probablement que vous n'avez pas inclus le contenu de démarrage avec votre projet. Pour résoudre ce problème, vous devrez soit créer un nouveau projet, soit utiliser [Outils de ressources de migration] (understanding-the-basics/assets-content-packs/migrating-assets) pour déplacer le contenu lié à la chaise depuis un autre projet. dans celui-ci.
En ouvrant le matériau de la chaise, M_Chair, nous pouvons voir un parfait exemple de mappage de texture en action.

Dans ce matériau, la texture de masque, T_Chair_M, est utilisée pour affecter des propriétés de surface spécifiques à différentes zones du maillage. Le masque de texture permet de définir quelles sections sont métalliques ou non métalliques, et est également utilisé pour attribuer des valeurs de rugosité et de couleur différentes aux différentes parties de la chaise.
Dans l'image suivante, vous pouvez voir une répartition de l'utilisation de chaque canal de la texture du masque. Sur la gauche se trouve l'image RVB composite, ou ce à quoi ressemble l'image si vous la voyez comme une texture. La colonne du milieu montre les masques noir et blanc contenus dans chaque canal de couleur (R, G, B, A de haut en bas). Les images à l'extrême droite montrent quelle partie de la chaise est visée par le masque ; les parties blanches de la chaise correspondent à la section blanche du masque.
Voici un aperçu du type d'informations stockées dans chaque canal de la texture du masque de chaise.
-
Canal rouge : Information sur l'occlusion ambiante Dans le matériau, cette fonction est utilisée pour ajouter des ombres de contact subtiles lorsque deux surfaces sont proches l'une de l'autre.
-
Canal vert : Masque métallique. Dans le matériau, il est utilisé pour définir les zones qui sont censées être en métal. Ceci est également utilisé pour aider à définir la couleur du métal. !
-
Canal bleu : Masque non métallique. Dans le matériau, il est utilisé pour définir les pièces qui ne sont pas en métal. Ce masque permet également de définir la couleur des parties non métalliques.
-
Canal Alpha : Masque de l'objet complet. Il n'est pas utilisé actuellement par le matériau.
Dans son ensemble, la chaise ressemble à ceci dans un niveau Unreal :

Conseils relatifs au masquage
Le masquage de texture est un outil très puissant, surtout lorsqu'il est combiné à d'autres outils dans Unreal Engine. La section suivante présente quelques conseils et astuces pour tirer le meilleur parti du masquage de texture dans votre travail.
Masquage des textures et séparation des matériaux
L'utilisation conjointe du masquage de texture et des instances de matériau est un excellent moyen d'ajouter une variété presque infinie à vos ressources. Par exemple, vous pouvez utiliser un masque de texture pour définir les zones qui doivent avoir certaines propriétés, comme la couleur, puis utiliser différentes instances de matériau pour personnaliser ces propriétés dans l'éditeur d'instance. Pour en savoir plus sur l'instanciation du matériau ici.

Lorsque les masques de matériau sont utilisés avec l'instanciation de matériau, vous pouvez permettre aux artistes de modifier rapidement et facilement la couleur et d'autres valeurs dans le matériau. Cette approche permet d'obtenir des ressources hautement personnalisables, comme le montre la chaise SM_Chair dans l'image ci-dessus.
Artéfacts de masquage et de canal
En raison d'une bizarrerie de DirectX, le canal vert d'une texture offre souvent la meilleure compression. Si l'un de vos masques souffre beaucoup d'artefacts de compression, essayez d'abord de placer l'information dans le canal vert de l'image pour voir si cela aide. Si cela ne résout pas le problème, essayez d'utiliser le canal Alpha pour stocker le masque.
Soyez prudent lorsque vous essayez d'utiliser le canal Alpha d'une texture pour stocker des informations sur le masque. L'ajout d'un canal Alpha à une texture augmentera considérablement l'empreinte mémoire de cette texture et si vous le faites suffisamment, vous risquez de perdre toutes les économies réalisées en plaçant différents masques dans les canaux RVB de la texture.
sRVB et texture du masque
Lorsque vous regroupez plusieurs textures de masques en une seule texture, vous devez décocher la case sRGB dans l'éditeur de textures, car les masques ne doivent pas subir de correction gamma.

Si vous désactivez sRGB pour une texture qui a été précédemment échantillonnée dans un matériau, le type d'échantillon n'est pas automatiquement mis à jour dans les nœuds d'échantillonneur de texture 2D existants. Vous devez vous assurer que vous ajustez le type de nœud dans tous les nœuds d'échantillonneur de texture 2D existants. Si vous ne modifiez pas le Type d'échantillonneur, votre matériau ne se compile pas et le message suivant s'affiche dans le journal des statistiques.

Pour corriger cette erreur, il suffit de changer le type d'échantillonneur, qui est par défaut de couleur, en couleur linéaire, et l'avertissement disparaîtra. Pour faire bonne mesure, vous devriez recompiler le matériel pour vous assurer que les changements ont été correctement effectués. Une fois l'opération terminée, l'avertissement disparaîtra.
Conclusion
Le masquage de texture est un concept très puissant qui, une fois maîtrisé, vous permet de créer une quantité presque infinie de variations avec très peu de contenu source. N'oubliez pas que vous ne disposez que de quatre canaux disponibles dans un fichier image pour les masques de texture, alors utilisez chaque canal judicieusement. N'oubliez pas de désactiver sRGB sur les textures de vos masques, car cela peut grandement contribuer à augmenter la netteté du masque.