matériaux instanciés

Dans Unreal Engine 4, l'instanciation matérielle est utilisée pour modifier l'apparence d'un matériau sans nécessiter une recompilation coûteuse du matériau. Alors qu'un matériau typique ne peut pas être édité ou modifié sans recompilation, un matériau instancié peut être modifié sans une telle recompilation. Certains types de matériaux instanciés peuvent même changer pendant le jeu en réponse à des événements du jeu (comme un arbre dont le matériau noircit pendant qu'il brûle). Cela permet une grande flexibilité visuelle dans vos éléments artistiques.

Instances et paramètres

Même si le but d'une instance de matériau est d'ajouter un moyen peu coûteux d'éditer l'apparence d'un matériau, il est important de garder à l'esprit que vous n'êtes pas en mesure d'éditer chaque caractéristique d'un matériau par défaut. Avant qu'une instance de matériau ne soit réellement modifiable, vous devez d'abord sélectionner les propriétés de l'article original que vous souhaitez modifier dans l'instance et les désigner en tant que paramètres. C'est ce qu'on appelle le paramétrage de votre matériel.

Un paramètre est vu comme un noeud de données dans l'éditeur de matériaux. Techniquement, il s'agit d'une valeur nommée qui sert de conduit pour envoyer des valeurs de données dans une instance de matériau. Ces paramètres sont exposés dans l'éditeur d'instance de matériau ou dans un script (Blueprints ou code) et peuvent ensuite être modifiés.

Supposons, par exemple, que vous souhaitiez créer un matériau dont la couleur peut être modifiée à la volée. Au lieu d'attribuer simplement une valeur à la couleur, comme le rouge, vous affecteriez plutôt un paramètre Vector à la propriété Couleur de base du matériau. Vous fournirez un nom pour ce paramètre. Lorsque vous créez une instance de ce matériau, vous trouverez votre paramètre vectoriel nommé dans les propriétés de l'instance, et vous pourrez ainsi définir la couleur sur tout ce que vous souhaitez, sans avoir à recompiler.

Ici vous pouvez voir les paramètres mis en place dans un matériau
Ici vous pouvez voir les paramètres mis en place dans un matériau.
Et nous voyons ici les paramètres exposés résultants dans une instance matérielle
Et nous voyons ici les paramètres exposés résultants dans une instance matérielle.

Instances constantes et dynamiques

Il existe 2 types d'instances de matériau disponibles dans Unreal Engine 4:

  • Material Instance Constant - Seulement calculé avant l'exécution.
  • Material Instance Dynamic - Peut être calculé (et édité) à l'exécution.

Material Instance Constant

Un Material Instance Constant est un matériau instancié qui ne calcule qu'une seule fois avant l'exécution. Cela signifie qu'il ne peut pas changer pendant le jeu. Cependant, bien qu'ils restent constants tout au long de votre partie, ils ont toujours l'avantage de ne pas nécessiter de compilation.

Par exemple, si vous avez un jeu avec une variété de voitures, toutes avec des peintures individuels, mais dont les couleurs ne changeront pas pendant le jeu, la meilleure approche consisterait à créer un matériau de base représentant les aspects de base d'une peinture automobile générique, puis à créer des Material Instance Constants pour représenter les variations des différents types de voitures, telles que les différentes couleurs, les différents niveaux de métallicité, la brillance, etc.

Material Instance Dynamic

Un Material Instance Dynamic (MID) est un matériau instancié pouvant être calculé pendant le jeu (lors de l'exécution). Cela signifie que lorsque vous jouez, vous pouvez utiliser un script (soit du code compilé ou un script visuel Blueprint) pour modifier les paramètres de votre matériel, modifiant ainsi votre matériel tout au long de la partie. Les possibilités d'application sont infinies, allant de la mise en évidence de différents niveaux de dommages à la modification d'une peinture, en passant par l'intégration de différentes textures de peau en réponse aux expressions faciales.

Les MID sont créés dans un script, à partir d'un matériau paramétré ou d'un Material Instance Constant. Dans un Blueprint, on prendrait un matériau donné qui avait des propriétés paramétrées, et on l'introduirait dans un nœud Create Dynamic Material Instance. Le résultat de ce nœud est ensuite appliqué à l'objet en question via un nœud Set Material, ce qui donne un nouveau matériau qui peut être modifié pendant le jeu.

Résultat du Blueprint utilisant un nœud Create Dynamic Material Instance
Résultat du Blueprint utilisant un nœud Create Dynamic Material Instance.

Application technique

Pour permettre l'application de matériaux non-instanciés aux primitives, la classe de base abstraite MaterialInterface est utilisée. Cette classe est une interface à la fois pour les expressions et les valeurs de paramètres d'un matériau appliqué. La classe Material est une sous-classe de MaterialInterface qui définit les expressions et les valeurs de paramètre par défaut. Ces types héritent tous deux de leurs expressions et valeurs de paramètres de leur parent, éventuellement en surchargeant ou en animant certaines des valeurs de paramètre.

Instancier un matériau dans l'éditeur

Deux méthodes principales peuvent être utilisées pour créer une instance d'un matériau dans l'éditeur.

Cliquez sur le bouton Add New dans le Content Browser et choisissez l'option Material Instance
Cliquez sur le bouton Add New dans le Content Browser et choisissez l'option Material Instance.
Attribuez un nom à la nouvelle instance de matériau
Attribuez un nom à la nouvelle instance de matériau.
L'éditeur d'instance de matériau
L'éditeur d'instance de matériau.

Double-cliquez sur votre nouvelle instance de matériel. Cela ouvre l'éditeur d'instance de matériau. Utilisez le Content Browser pour sélectionner et affecter le matériau à instancier à la propriété Parent pour la nouvelle instance de matériau. Si vous connaissez déjà le matériau pour lequel vous souhaitez créer une instance, vous pouvez également cliquer avec le bouton droit de la souris sur ce matériau dans le Content Browser et choisir Create Material Instance.

Groupes de paramètres

Les expressions de paramètre ont une propriété Group qui leur permet d'être organisées lorsqu'elles sont affichées dans l'éditeur d'instance de matériau. Des paramètres associés peuvent être ajoutés au même groupe, ce qui facilite la recherche et la modification rapides de tous les paramètres contrôlant un effet ou un aspect spécifique du matériau parent. Les paramètres n'appartenant pas à un groupe par défaut, seront affichés dans le groupe None.

Groupes de paramètres
Groupes de paramètres.

Créer des matériaux paramétrés

Pour ajouter un paramètre à un matériau, utilisez l'un des types d'expression de paramètre dans l'éditeur de matériaux. Plusieurs types de paramètres peuvent être utilisés, notamment ScalarParameter, VectorParameter, divers paramètres de texture et des paramètres statiques. Attribuez un nom unique au paramètre, attribuez-le à un groupe et attribuez-lui une valeur par défaut.

Paramètres scalaires

Un ScalarParameter est un paramètre qui contient une seule valeur à virgule flottante. Ceux-ci peuvent être utilisés pour piloter des effets basés sur des valeurs uniques telles que la puissance spéculaire, l'alpha d'une interpolation linéaire, l'opacité, etc.

Paramètres vectoriels

Un paramètre VectorParameter contient une valeur vectorielle à 4 canaux ou 4 valeurs à virgule flottante. Ils sont généralement utilisés pour fournir des couleurs configurables, mais peuvent également être utilisés pour représenter des données de position ou pour piloter un effet nécessitant plusieurs valeurs.

Paramètres de texture

Il y a plusieurs paramètres de texture disponibles. Chacun est spécifique au type de texture qu'il accepte ou à la façon dont il est utilisé. Du fait que le code de shader généré est différent en fonction du type de texture, une expression distincte est requise pour chaque type de texture spécifique.

  • TextureSampleParameter2D accepte une Texture2D de base.
  • TextureSampleParameterCube accepte un TextureCube ou un cubemap.
  • TextureSampleParameterFlipbook accepte un FlipbookTexture.
  • TextureSampleParameterMeshSubUV accepte une Texture2D qui est utilisé pour les effets sub-uv avec un émetteur de mesh.
  • TextureSampleParameterMeshSubUV accepte une Texture2D qui est utilisé pour les effets de fusion sub-uv avec un émetteur de mesh.
  • TextureSampleParameterMovie accepte un MovieTexture (bink movie).
  • TextureSampleParameterNormal est une Texture2D qui est utilisé comme une normal map.
  • TextureSampleParameterSubUV accepte une Texture2D qui est utilisé pour les effets sub-uv avec un émetteur de sprite.

Paramètres statiques

Les paramètres statiques sont appliqués au moment de la compilation, de sorte qu'ils produisent un code plus optimal car des branches entières du matériel qui sont masquées par un paramètre statique seront compilées et non exécutées au moment de l'exécution. Comme ils sont appliqués au moment de la compilation, ils ne peuvent être modifiés qu'à partir de MaterialInstanceEditor et non d'un script.

les réactions

Pour laisser un avis, vous devez être inscrit et connecté

Se connecter