Modifier les propriétés de matériau d'une ressource pendant le jeu est un moyen efficace de fournir au joueur des informations visuelles ou des instructions sur le déroulement du jeu, voire de renforcer l'immersion. Par exemple :
Les skins des joueurs peuvent changer pour signaler différents états.
Les objets à ramasser peuvent briller pour attirer l'attention des joueurs à proximité.
Lorsqu'il pleut, le sol sec qui devient humide peut augmenter l'immersion.
Dans ce tutoriel, vous allez utiliser les blueprints pour modifier les propriétés des matériaux à l'exécution dans une démonstration technique interactive. Dans le cadre de cette démonstration, vous allez créer un ballon d'eau qui mouille le sol lorsque le joueur le pousse dans le niveau.
Vous allez par ailleurs apprendre à utiliser des matériaux émissifs, des masques simples et des interrupteurs statiques pour créer un habillage de scène qui se reflète sur le sol humide.
Créer une ressource de sol prête à l'emploi
La première ressource que vous allez créer pour la démonstration technique est le sol. Dans la salle 3 de Lvl_Adventure, vous allez créer une ressource de sol surfacée prête à l'emploi pour remplacer le maillage de sol temporaire.
Avant de commencer, réfléchissons à l'approche que vous allez adopter. Dans le tutoriel précédent, vous avez appris que le quadrillage de textures est un moyen peu coûteux de surfacer de grands maillages tels qu'un sol. Vous avez aussi appris que les UV d'un maillage ont une incidence sur l'apparence des textures.
Le sol provisoire de la salle 3 est composé de trois maillages, chacun ayant des UV différents.
Dans la démonstration ci-dessous, vous constatez que les textures du quadrillage semblent avoir des tailles différentes en raison des incohérences d'UV entre les maillages. Cela pose un défi pour surfacer le sol de manière cohérente.
Vous allez résoudre ce défi en utilisant la projection triplanaire. La projection triplanaire est une technique de surfaçage qui ignore les UV et crée une texture alignée sur le monde. Cette méthode est utile dans les cas où vous ne pouvez pas corriger les UV, ou si vous travaillez avec une géométrie difficile à utiliser pour une texture d'UV.
Dans cette optique, vous utiliserez des expressions pour aligner M_Surfaces sur le monde. Étant donné que les instances héritent des propriétés des matériaux parents, MI_Surfaces_Floor sera également aligné sur le monde. Ensuite, vous appliquerez MI_Surfaces_Floor dans un blueprint qui remplacera les maillages temporaires.
Afin d'éviter tout problème lié aux UV, nous vous recommandons de redimensionner vos UV de manière appropriée sur l'ensemble des ressources modulaires lorsque vous les créez dans un logiciel de modélisation.
Créer un matériau aligné sur le monde
Pour aligner votre matériau parent sur le monde, procédez comme suit :
Dans le navigateur de contenu, accédez à Tout > Contenu > AdventureGame > Artiste > Matériaux et ouvrez
M_Surfaces.Sélectionnez tous les nœuds dans la boîte de commentaire Quadrillage UV, la texture diffuse et la texture de normales. Supprimez-les.
Faites un clic droit sur le graphique et recherchez Objet de texture. Créez deux de ces nœuds.
Sélectionnez le premier objet de texture. Dans le panneau Détails, définissez sa texture sur DefaultDiffuse.
Faites un clic droit sur l'objet de texture et sélectionnez Convertir en paramètre. Nommez le nouveau paramètre
Diffuse.Sélectionnez le deuxième objet de texture. Dans le panneau Détails, définissez sa texture sur DefaultNormal.
Faites un clic droit sur l'objet de texture et sélectionnez Convertir en paramètre. Nommez le nouveau paramètre
Normal.Faites glisser la sortie du nœud Diffuse et ajoutez un nœud World Aligned Texture.
Reliez la sortie XYZ Texture à l'entrée A du nœud Multiply (dans la boîte de commentaire Teinte diffuse).
Faites glisser la sortie du nœud Normal, puis ajoutez un nœud World Aligned Normal.
Reliez la sortie XYZ Texture à l'entrée Normal du nœud racine du matériau M_Surfaces.
Faites un clic droit sur le graphique et recherchez Paramètre scalaire. Nommez-le
Texture Scaling.Définissez sa valeur par défaut sur
214.Reliez la sortie de Texture Scaling aux entrées TextureSizeV3 des deux nœuds WorldAligned.
Enregistrez votre matériau.
Votre graphique de matériau devrait maintenant ressembler à ceci :
Vous allez maintenant créer un blueprint qui remplacera le sol temporaire.
Créer un blueprint de sol
Pour créer le blueprint, procédez comme suit :
Dans le navigateur de contenu, accédez à l'emplacement Tout > Contenu > AdventureGame > Artiste, puis faites un clic droit et sélectionnez Nouveau dossier.
Nommez le dossier
Blueprints.Faites un clic droit sur le dossier Blueprints, sélectionnez Classe de Blueprint et sélectionnez Acteur comme classe parente.
Nommez le blueprint
BP_Flooret double-cliquez dessus pour l'ouvrir dans l'éditeur de blueprint.Dans le navigateur de contenu, sélectionnez le dossier Tout et recherchez
SM_Cube.Faites glisser SM_Cube dans le panneau Composants de l'éditeur de blueprint, en tant qu'enfant de BP_Floor.
Nommez le SM_Cube
Floor.Dans le panneau Détails, assurez-vous que l'option Échelle est définie sur
1,0, 1,0, 1,0.En regard de Matériaux > Élément 0, définissez le matériau sur
MI_Surfaces_Floor.Dans l'onglet Composants, sélectionnez DefaultSceneRoot, cliquez sur Ajouter, puis ajoutez une
collision de boîte.Nommez la collision de boîte
Trigger.Dans le panneau Détails, définissez l'option Échelle du déclencheur sur
1,5, 1,5, 1,5.Définissez l'emplacement du déclencheur sur
50, 50, 55.Enregistrez et compilez votre blueprint.
Faites glisser une instance de BP_Floor dans votre niveau et déplacez-la. Notez que, lorsque vous déplacez le maillage, la texture reste à sa place. Si vous essayez de le mettre à l'échelle, le maillage change, mais pas la texture.
Vous allez ensuite remplacer le sol temporaire de la salle 3 par des instances de BP_Floor.
Remplacer les maillages temporaires
Vous pouvez désormais remplacer les maillages temporaires de la pièce 3 par BP_Floor selon la disposition de votre choix. Nous avons créé le sol temporaire suivant :
Si vous préférez utiliser le niveau ci-dessus, vous pouvez le copier en procédant comme suit :
Vérifiez que vous avez mis à jour
M_Surfaceset crééBP_Flooren suivant le tutoriel ci-dessus.Dans l'organiseur, sélectionnez tous les éléments dans le dossier de la pièce 3 et appuyez sur la touche Suppr.
Copiez l'extrait suivant.
Console OutputBegin Map Begin Level Begin Actor Class=/Script/Engine.StaticMeshActor Name=StaticMeshActor_2 Archetype="/Script/Engine.StaticMeshActor'/Script/Engine.Default__StaticMeshActor'" ExportPath="/Script/Engine.StaticMeshActor'/Game/SFEFWFWEEEWEF.SFEFWFWEEEWEF:PersistentLevel.StaticMeshActor_2'" Begin Object Class=/Script/Engine.StaticMeshComponent Name="StaticMeshComponent0" Archetype="/Script/Engine.StaticMeshComponent'/Script/Engine.Default__StaticMeshActor:StaticMeshComponent0'" ExportPath="/Script/Engine.StaticMeshComponent'/Game/SFEFWFWEEEWEF.SFEFWFWEEEWEF:PersistentLevel.StaticMeshActor_2.StaticMeshComponent0'" End Object Begin Object Name="StaticMeshComponent0" ExportPath="/Script/Engine.StaticMeshComponent'/Game/SFEFWFWEEEWEF.SFEFWFWEEEWEF:PersistentLevel.StaticMeshActor_2.StaticMeshComponent0'" StaticMesh="/Script/Engine.StaticMesh'/Game/LevelPrototyping/Meshes/SM_Cylinder.SM_Cylinder'" StaticMeshImportVersion=1 bUseDefaultCollision=False StaticMeshDerivedDataKey="STATICMESH_FD1BFC73B5510AD60DFC65F62C1E933E_228332BAE0224DD294E232B87D83948FQuadricMeshReduction_V2$2e1_6D3AF6A2$2d5FD0$2d469B$2dB0D8$2dB6D9979EE5D2_CONSTRAINED0_100100000000000000000000000100000000000080FFFFFFFFFFFFFFFFFFFFFFFF000000000000803F00000000000000803F0000803F00000000000000003D19FC1626C9B2485E57DB4B8EC731318B8215AE8D46FAD400000000010000000100000000000000010000000100000000000000000000000100000001000000400000000000000001000000000000000000F03F000000000000F03F000000000000F03F0000803F00000000050000004E6F6E65000C00000030000000803FFFFFFFFF0000803FFFFFFFFF0000000000000041000000000000A0420303030000000000000000_RT00_0"Dans le hublot, appuyez sur Ctrl + V.
Vous allez maintenant créer le ballon d'eau et utiliser des instances de matériaux dynamiques pour rendre le sol sec ou humide.
Changer les matériaux via l'interaction de joueur
Le ballon d'eau est un objet basé sur la physique qui déclenche un changement de propriété dans le sol, le faisant paraître humide.
Créer un ballon d'eau
Pour créer et surfacer le ballon d'eau, procédez comme suit :
Dans le navigateur de contenu, accédez au dossier Blueprints et faites un clic droit dessus pour créer une nouvelle classe de blueprint.
Sélectionnez Acteur comme classe parente.
Nommez le nouveau blueprint
BP_WaterBallet ouvrez-le dans l'éditeur de blueprint.Dans l'onglet Composants, cliquez sur Ajouter, puis recherchez
Sphère.Dans le panneau Détails, définissez Matériaux > Élément 0 sur
M_Water.Toujours dans le panneau Détails, sous Physique, cochez la case Simuler la physique.
Enregistrez et compilez votre blueprint.
Faites glisser une instance de
BP_WaterBalldans votre niveau.
Testez le ballon d'eau dans votre niveau en faisant un clic droit dans le hublot et en sélectionnant Jouer à partir d'ici. Le ballon doit rebondir sur le sol lorsque vous le heurtez.
Si votre niveau comporte des ennemis, réglez leur vitesse maximale sur 0 pour éviter qu'ils ne vous poursuivent, ou supprimez-les.
Vous utiliserez ensuite la logique de BP_Floor pour créer une instance de matériau dynamique.
Créer une instance de matériau dynamique
Une instance de matériau dynamique est une instance de matériau générée par un script (p. ex., un blueprint) qui peut modifier ses propriétés à l'exécution.
Dans cette section, vous allez créer une logique de blueprint qui fait référence au matériau affecté au maillage de sol (MI_Surfaces_Floor), génère une instance de matériau dynamique à partir de celui-ci et attribue la nouvelle instance au sol. L'instance de matériau dynamique modifie alors les propriétés que vous avez exposées dans le tutoriel précédent, à savoir la rugosité et la teinte diffuse, pour imiter un sol humide.
Lors de l'exécution, ce changement donne l'impression que le sol est recouvert d'une fine couche d'eau.
Procédez comme suit pour créer une instance de matériau dynamique :
Dans le navigateur de contenu, double-cliquez sur
BP_Floorpour l'ouvrir dans l'éditeur de blueprint.Dans le graphique d'événements, supprimez tous les nœuds hormis Event BeginPlay.
Dans l'onglet Composants, faites glisser une instance de Sol dans le graphique d'événements.
Faites glisser la broche de sortie du nœud Floor et recherchez Get Material.
Faites glisser la sortie Return Value de Get Material et ajoutez un nœud Create Dynamic Material Instance dont la cible est la bibliothèque de matériaux Kismet.
Reliez la sortie de Event BeginPlay à la broche d'entrée Exec de Create Dynamic Material Instance.
Faites glisser la broche Return Value de Dynamic Material Instance, puis sélectionnez Promouvoir vers la variable.
Dans le panneau Détails, renommez cette variable
Dynamic Mat Ref.Faites glisser une autre instance de Floor dans le graphique d'événements.
Faites glisser la sortie de Floor et recherchez Set Material.
Reliez la broche de sortie Exec blanche du nœud Set à la broche d'entrée Exec du nœud Set Material.
Reliez la sortie bleue du nœud Set à l'entrée Material du nœud Set Material.
Pour que votre graphique reste organisé, sélectionnez tous les nœuds et appuyez sur C. Nommez la boîte de commentaire
Créer un matériau dynamique.Enregistrez et compilez le blueprint.
Votre graphique d'événements doit maintenant ressembler à ceci :
Événements d'appel
Pour déclencher l'aspect humide du sol, vous devez disposer d'un événement qui vérifie si BP_Floor chevauche BP_WaterBall et d'un événement qui appelle l'aspect correct en conséquence.
La logique est la suivante :
Lorsqu'un acteur chevauche
BP_Floor:Vérifiez si l'autre acteur est (égal à)
BP_waterBall. Si la valeur est (true) :Appelez l'aspect humide de
BP_Floor.
Si la valeur est (false) :
Ne faites rien.
Pour créer cette logique, procédez comme suit :
Faites un clic droit dans le
graphique d'événementsde BP_Floor et recherchez Ajouter un événement personnalisé. Nommez ce nœudCall Wet Look.Dans l'onglet Composants, faites un clic droit sur Déclencheur et cliquez sur Ajouter un événement > Ajouter OnComponentBeginOverlap.
OnComponentBeginOverlap recherche la collision.
Faites glisser la sortie Other Actor du nœud OnComponentBeginOverlap, puis créez Get Class.
Faites glisser la sortie Return Value et créez un nœud Equal.
Faites un clic droit sur l'entrée Select Class et sélectionnez Promouvoir vers la variable.
Nommez la variable
WaterBallet compilez votre blueprint.Dans le panneau Détails, définissez la valeur par défaut de WaterBall sur
BP_WaterBall.Faites glisser la broche de sortie du nœud Equal et créez un nœud Branch.
Faites glisser la sortie True du nœud Branch et recherchez Call Wet Look.
Reliez la sortie Exec de OnComponentBeginOverlap à l'entrée Exec du nœud Branch.
Votre graphique d'événements doit maintenant ressembler à ceci :
Contrôler les propriétés des matériaux
À présent, vous allez créer la version humide de votre sol. Étant donné que le sol est similaire à de la pierre et poreux, il doit s'assombrir lorsqu'il absorbe l'eau (Teinte diffuse). Dans la mesure où une fine couche d'eau recouvre le sol, la surface doit avoir un aspect brillant (Rugosité).
Pour créer une logique pour l'aspect humide, procédez comme suit :
Faites glisser la variable Dynamic Mat Ref dans le graphique d'événements et sélectionnez Obtenir dans la liste.
Faites glisser la broche de sortie et créez un nœud Set Scalar Parameter Value.
Faites glisser la même broche de sortie et créez un nœud Set Vector Parameter Value.
Souvenez-vous des paramètres que vous avez exposés dans
M_Surfaces. Rugosité est un paramètre scalaire (valeur simple) et Teinte diffuse est un vecteur (trois valeurs : RVB).Sur le nœud Set Scalar Parameter Value, faites un clic droit sur Nom du paramètre et sélectionnez Promouvoir vers la variable. Nommez la variable
Roughness.Sur le nœud Set Vector Parameter Value, faites un clic droit sur Nom du paramètre et sélectionnez Promouvoir vers la variable. Nommez la variable
Diffuse Hue.Compilez le blueprint et saisissez les valeurs pour chaque nom de paramètre :
Sélectionnez la variable de rugosité et saisissez
Roughnesscomme valeur par défaut.Sélectionnez la variable de teinte diffuse et saisissez
Diffuse Huecomme valeur par défaut.Les valeurs par défaut doivent correspondre aux paramètres associés dans
M_Surfaces.
Reliez la broche de sortie Exec du nœud Set Scalar Parameter Value à la broche d'entrée Exec du nœud Set Vector Parameter Value.
Outre le passage de l'état sec à humide, vous pouvez utiliser la logique pour contrôler la rapidité avec laquelle ce changement se produit. Étant donné que la saturation d'une substance prend du temps, vous transmettrez progressivement les propriétés d'un matériau à l'autre. Vous pouvez pour cela utiliser un nœud Lerp (interpolation linéaire).
Un nœud Lerp fusionne ou interpole deux valeurs de façon fluide. Ce nœud est utile pour passer d'une couleur, d'une texture ou d'un effet à un autre.
Pour créer un nœud Lerp, procédez comme suit :
Faites glisser l'entrée Value du nœud Scalar Parameter, puis créez un nœud Lerp. Celui-ci contrôle la rugosité.
Sur le nœud Lerp, définissez la valeur A sur
1,0. Il s'agit de la valeur de rugosité pour l'aspect sec. Laissez la valeur B sur0,0. Il s'agit de la valeur de l'aspect humide.Dans le tutoriel précédent, vous avez appris qu'une rugosité de 1 est mate et qu'une rugosité de 0 est brillante. Vous souhaitez que l'eau ait un aspect brillant.
Faites glisser l'entrée Value du nœud Set Vector Parameter Value, puis créez un nœud Lerp (Linear Color). Vous contrôlez ainsi la teinte diffuse.
Faites glisser la valeur A du nouveau nœud Lerp et sélectionnez Promouvoir vers la variable (couleur linéaire). Nommez la variable Unsaturated.
Faites glisser la broche B du nœud Lerp et sélectionnez Promouvoir vers la variable. Nommez la variable
Saturated.Compilez votre blueprint. Dans le panneau Détails, définissez la valeur par défaut de Insaturated sur
CDDAFFFF.Dans le panneau Détails, définissez la valeur par défaut de Saturated sur une valeur plus sombre, par exemple
656C7FFF.
Votre graphique d'événements doit maintenant ressembler à ceci :
Vous avez maintenant créé un tout nouvel aspect pour le sol grâce à la logique de blueprint. Il vous manque cependant un élément essentiel pour mettre en œuvre cette logique : une chronologie.
Mettre en œuvre la logique grâce aux chronologies
Tout comme la chronologie dans un logiciel d'animation, les nœuds Timeline déterminent les valeurs entre les images clés au fil du temps. Vous utiliserez ce nœud pour mettre en œuvre l'interpolation entre les aspects sec et humide pendant une durée spécifiée.
Pour créer une chronologie, procédez comme suit :
Faites un clic droit dans le graphique d'événements, puis recherchez et créez Add Timeline.
Double-cliquez sur le nœud Timeline pour ouvrir l'onglet Timeline_Template.
Cliquez sur Piste, puis sélectionnez Ajouter une piste de virgule flottante dans la liste.
Nommez la piste
Alpha. Le nom de cette piste apparaîtra en tant que broche de sortie sur le nœud Timeline.Définissez la durée de la chronologie sur
3,0secondes.Faites un clic droit dans la chronologie et sélectionnez Ajouter une clé.
Une fois la clé sélectionnée et mise en surbrillance en bleu, définissez le temps et la valeur de cette clé sur
0,0.Créez une deuxième clé et définissez le temps et la valeur sur
1,0.Faites un clic droit sur la première clé et sélectionnez Utilisateur.
Enregistrez et compilez le blueprint.
Cette chronologie produit désormais une valeur qui subit une fusion de 0 à 1 en trois secondes. Vous pouvez maintenant relier les nœuds restants à la chronologie :
Revenez au graphique d'événements et reliez la sortie Call Wet Look à l'entrée Play du nœud Timeline.
Reliez la sortie Update du nœud Timeline à l'entrée Exec du nœud Set Scalar Parameter Value.
Reliez la sortie Alpha du nœud Timeline aux entrées Alpha des deux nœuds Lerp.
Sélectionnez les nœuds et appuyez sur C pour ajouter un commentaire. Nommez la boîte de commentaire
Lerp Dynamic Materials.Enregistrez et compilez le blueprint.
Votre graphique d'événements complet doit maintenant ressembler à ceci :
Pour tester votre travail, faites un clic droit sur votre niveau et sélectionnez Jouer à partir d'ici. Lorsque vous déplacez le ballon d'eau dans la pièce, le sol doit s'inonder.
La réflectivité de la surface humide est un peu difficile à voir de jour. Pour bien visualiser la réflectivité du sol, vous allez obscurcir le niveau et y ajouter un éclairage à l'aide d'un matériau émissif.
Matériaux émissifs
Les matériaux émissifs sont un moyen peu coûteux de créer une auto-illumination. Ils permettent de créer une lueur intégrée à des matériaux plus complexes, comme des LED sur l'armure d'un personnage de science-fiction ou les feux de stop d'une voiture.
Les matériaux émissifs peuvent également interagir avec le système Illumination globale et reflets Lumen, autrement dit avec l'environnement qui les entoure.
Vous pouvez contrôler la luminosité d'un matériau émissif avec des valeurs float comprises entre 0 (pas d'éclairage) et 1 (éclairage émissif), ou supérieures à 1 (éclairage émissif créant un flou lumineux).
Les reflets et les matériaux émissifs sont plus visibles dans les niveaux sombres. Pour modifier l'éclairage global de votre niveau, procédez comme suit :
Dans l'organiseur, sélectionnez Éclairage directionnel.
Dans le hublot, appuyez sur Ctrl + L, puis déplacez votre souris pour ajuster la position de l'éclairage directionnel et le moment de la journée dans votre niveau.
Les matériaux émissifs ne sont généralement pas recommandés pour l'éclairage du décor. L'utilisation de matériaux émissifs comme sources lumineuses peut produire des résultats imprévus. Nous vous conseillons plutôt d'utiliser des sources lumineuses pour les décors.
Créer un matériau émissif
Dans le cadre de ce tutoriel, vous allez créer des enseignes lumineuses qui se reflètent sur la pierre humide lorsqu'elles sont placées autour du niveau. Pour ce faire, vous allez créer un matériau parent flexible capable de propager les paramètres suivants à ses instances enfants :
Couleur émissive
Luminosité émissive
Masque de texture
Pour créer un matériau émissif, procédez comme suit :
Dans le navigateur de contenu, accédez à l'emplacement Tout > Contenu > AdventureGame > Artiste > Matériaux, puis créez un nouveau matériau.
Nommez le matériau
M_EmissiveSignet double-cliquez dessus pour l'ouvrir dans l'éditeur de matériau.Dans le graphique de matériau, faites glisser l'entrée Emissive Color du nœud racine du matériau et ajoutez un nœud Multiply dans la liste de sélection.
Faites glisser l'entrée A du nœud Multiply et ajoutez un nœud Constant3Vector.
Faites un clic droit sur Constant3Vector et sélectionnez Convertir en paramètre.
Renommez le paramètre
Color.Double-cliquez sur l'échantillon de couleur et choisissez une couleur pour votre matériau émissif.
Faites glisser l'entrée B du nœud Multiply et ajoutez un nœud Constant dans la liste de sélection.
Convertissez la constante en paramètre, nommez-la
Brightness, puis définissez sa Valeur sur25.
Votre graphique de matériau devrait maintenant ressembler à ceci :
Limiter les paramètres avec des valeurs seuil
Bien que la luminosité émissive n'ait pas de limite supérieure, vous pouvez définir vos propres limites de luminosité minimale et maximale dans le matériau parent à l'aide d'une valeur seuil. La limitation peut faciliter le paramétrage des valeurs à l'aide d'un curseur, surtout lorsqu'il s'agit de valeurs faibles et d'ajustements sensibles.
Comme les autres paramètres, les valeurs seuil sont propagées aux instances de matériau.
Pour limiter la constante de luminosité, procédez comme suit :
Dans le graphique de matériau, sélectionnez le paramètre Luminosité.
Dans le panneau Détails, définissez Valeur max. du curseur sur
50.
Vous allez ensuite attribuer un contenu à vos enseignes en utilisant des masques de texture.
Créer un masque simple
Un masque de texture est une texture en niveaux de gris (alpha) ou à canal unique, qui sert à révéler ou à masquer certaines zones d'un matériau. Vous pouvez imaginer les masques alpha comme des couches ; la zone blanche du masque révèle des informations sur une couche inférieure, tandis que la zone noire les masque.
Dans votre matériau émissif, vous utiliserez un masque alpha pour révéler ou masquer des zones de lueur émissive afin de créer le contenu de l'enseigne lumineuse.
Pour créer un masque à l'intérieur du matériau parent M_Emissive, procédez comme suit :
Sans sélectionner de nœuds, accédez au panneau Détails. En regard de Mode de fusion, cliquez sur le menu déroulant et sélectionnez Masqué.
Faites un clic droit dans le graphique d'événements et créez un nœud Texture Sample.
Dans le panneau Détails, en regard de Texture, recherchez
T_UE_Logo_M.Cette texture est fournie avec l'Unreal Engine ; vous n'avez donc pas à la télécharger ou à la créer.
Reliez la sortie RGB du nœud Texture Sample à l'entrée Opacity Mask du nœud racine du matériau.
Faites un clic droit sur Texture Sample et sélectionnez Convertir en paramètre. Nommez le paramètre
LED Sign.
Votre graphique de matériau devrait maintenant ressembler à ceci :
Vous venez de créer un matériau qui imite une enseigne lumineuse. Vous allez ensuite augmenter encore davantage la flexibilité de votre matériel parent et le nombre de ressources uniques que vous pouvez créer en inversant le masque :
Pour cela, il vous suffit de créer des instances de matériau uniques pour les masques inversés et non inversés. Vous utiliserez plutôt un interrupteur statique pour activer/désactiver l'inversion depuis n'importe quelle instance de matériau créée à partir de M_EmissiveSign.
Activer/désactiver les paramètres avec des interrupteurs statiques
Dans le tutoriel précédent, vous avez découvert la hiérarchie de propagation des matériaux, selon laquelle les instances enfants héritent des propriétés des matériaux parents.
Une instance peut personnaliser un paramètre hérité, mais ne peut pas l'ignorer complètement, sauf si vous utilisez un interrupteur statique. Les interrupteurs statiques, configurés dans le matériau parent, permettent aux instances enfants d'activer ou de désactiver les paramètres.
Étant donné que les paramètres désactivés ne sont pas compilés, les interrupteurs statiques peuvent améliorer les performances à l'exécution. Toutefois, chaque booléen crée une nouvelle permutation de shader, ce qui peut considérablement augmenter le temps de compilation (en fonction de la complexité du matériau). La valeur des interrupteurs dépend de la façon dont vous les utilisez et des besoins de développement de votre projet.
L'exécution désigne la période pendant laquelle un jeu est en cours d'exécution. La compilation désigne l'étape au cours de laquelle un jeu est en cours de compilation, avant l'exécution.
Pour créer un interrupteur statique qui contrôle l'inversion du masque, procédez comme suit :
Dans le graphique de matériau, sélectionnez le nœud LED Sign et dupliquez-le en appuyant sur Ctrl + D.
Renommez le nouveau nœud
Screen.Faites glisser la sortie RVB du nœud Screen, puis recherchez One Minus.
Faites un clic droit sur le graphique et recherchez Paramètre de commutateur statique. Nommez l'interrupteur
Flip Mask?Reliez la sortie de One Minus à l'entrée False de l'interrupteur.
Reliez la sortie RGB de LED Sign à l'entrée True de l'interrupteur.
Reliez la sortie de l'interrupteur à l'entrée Opacity Mask du nœud racine du matériau.
Enregistrez votre matériau.
Votre graphique de matériau devrait maintenant ressembler à ceci :
Vous pouvez désormais créer des instances de matériau à partir de M_EmissiveSign qui contrôlent de façon unique la luminosité, la couleur, la texture ou l'inversion de masque.
Appliquez des instances de M_EmissiveSign à des nouveaux maillages ou à des maillages existants dans votre niveau pour créer une scène de votre choix. Lorsque vous faites rouler le ballon d'eau sur le niveau, vos enseignes se reflètent sur le sol humide grâce au système Illumination globale et reflets Lumen, qui est activé par défaut. Vous en apprendrez davantage sur Lumen et d'autres systèmes de reflet dans le prochain tutoriel.
Pour continuer
Dans le prochain tutoriel, vous en apprendrez davantage sur les reflets dans les volumes de post-traitement et les systèmes d'illumination, et découvrirez comment appliquer divers effets intégrés à la caméra dans votre niveau.