Cambiar las propiedades de los materiales de un recurso durante el juego es una forma útil de proporcionar al jugador comentarios visuales, información sobre el juego o crear inmersión. Por ejemplo:
La apariencia de los jugadores puede cambiar de aspecto para señalar distintos efectos de estado.
Los objetos recogidos pueden brillar para llamar la atención de los jugadores cercanos.
Cuando llueve, el cambio del suelo de seco a mojado puede aumentar la inmersión.
En este tutorial, usarás blueprints para cambiar las propiedades de los materiales en tiempo de ejecución en una demostración técnica interactiva. En esta demostración, crearás una bola de agua que empapará el suelo cuando el jugador la empuje por el nivel.
También experimentarás con materiales emisivos, máscaras simples e interruptores estáticos para crear escenografías que se reflejen en el suelo mojado.
Cómo crear un recurso de suelo listo para el juego
El primer recurso que crearás para la demostración técnica será el suelo. En la sala 3 de Lvl_Adventure, crearás un recurso de suelo con superficie listo para el juego para que reemplace la malla de suelo del marcador de posición.
Antes de empezar, hagamos una pausa para considerar tu enfoque. En el tutorial anterior, aprendiste que las texturas en teselado son una forma económica de crear superficies con mallas grandes como el suelo. También has visto que los UV de una malla afectan al aspecto de las texturas.
El suelo de marcador de posición de la sala 3 está formado por tres mallas y cada una tiene UV distintos.
En la demostración de abajo, fíjate en que las texturas de teselado parecen tener tamaños distintos debido a las incoherencias de los UV entre las mallas. Esto plantea un desafío para crear una superficie coherente para el suelo.
Resolverás este desafío usando la proyección triplanar. La proyección triplanar es una técnica de creación de superficies que descarta los UV y hace que las texturas estén alineadas con el mundo. Esto es útil para los casos en los que no puedes corregir los UV o cuando trabajas con geometría que es difícil de mapear en UV.
Con este enfoque en mente, usarás expresiones para alinear M_Surfaces con el mundo. Dado que las instancias heredan las propiedades de los materiales padre, MI_Surfaces_Floor también se alineará con el mundo. Después, aplicarás MI_Surfaces_Floor a un blueprint que reemplazará a las mallas de marcador de posición.
Para evitar problemas de UV de antemano, te recomendamos escalar los UV adecuadamente en los recursos modulares cuando los crees en el software de modelado.
Cómo crear un material alineado con el mundo
Para hacer que tu material padre esté alineado con el mundo, sigue estos pasos:
En el explorador de contenido, ve a Todo > Contenido > AdventureGame > Artista > Materiales y abre
M_Surfaces.Selecciona todos los nodos de la caja de comentarios Teselado de UV, el mapa difuso y el mapa normal. Elimínalos.
Haz clic derecho en el grafo y busca Objeto de textura. Crea dos de estos nodos.
Selecciona el primer objeto de textura. En el panel Detalles, establece Textura como DefaultDiffuse.
Haz clic con el botón derecho en el objeto de textura y selecciona Convertir en parámetro. Dale al nuevo parámetro el nombre
Difuso.Selecciona el segundo objeto de textura. En el panel Detalles, establece Textura como DefaultNormal.
Haz clic con el botón derecho en el objeto de textura y selecciona Convertir en parámetro. Dale al nuevo parámetro el nombre
Normal.En el nodo Diffuse, arrastra desde la salida y añade un nodo World Aligned Texture.
Desde la salida Textura XYZ, conéctala a la entrada A del nodo Multiply (dentro de la caja de comentarios Matiz difuso).
En el nodo Normal, arrastra desde la salida y añade un nodo World Aligned Normal.
Desde Textura XYZ, conéctalo a la entrada Normal del nodo raíz del material M_Surfaces.
Haz clic derecho en el grafo y busca Parámetro escalar. Dale el nombre
Escala de texturas.Establece su valor por defecto en
214.Conecta la salida de Escala de texturas a las entradas de TextureSizeV3 en ambos nodos WorldAligned.
Guarda tu material.
Ahora tu grafo de material debería tener este aspecto:
A continuación, crearás un blueprint que sustituirá al suelo del marcador de posición.
Cómo crear un blueprint de suelo
Para crear el blueprint, sigue estos pasos:
En el explorador de contenido, en la ruta Contenido > AdventureGame > Artista, haz clic derecho y selecciona Nueva carpeta.
Dale a la carpeta el nombre
Blueprints.Haz clic derecho en la carpeta Blueprints, selecciona Clase de Blueprint y Actor como clase padre.
Dale al blueprint el nombre
BP_Floory haz doble clic sobre él para abrirlo en el editor de blueprints.En el explorador de contenido, selecciona la carpeta Todo y busca
SM_Cube.Arrastra SM_Cube al panel Componentes del editor de blueprints como hijo de BP_Floor.
Dale a SM_Cube el nombre
Suelo.En el panel Detalles, asegúrate de que tu escala sea
1.0, 1.0, 1.0.Coloca el material en
MI_Surfaces_Floorjunto a Materiales > Elemento 0.En la pestaña Components, selecciona DefaultSceneRoot, haz clic en Añadir y añade una
colisión de caja.Dale a la colisión de caja el nombre
Activador.En el panel Detalles, fija la escala de Activador en
1.5, 1.5, 1.5.Establece la ubicación del activador en
50, 50, 55.Guarda y compila tu blueprint.
Arrastra una instancia de BP_Floor a tu nivel y muévela. Fíjate en que, al mover la malla, la textura permanece en el mismo lugar. Si intentas cambiar la escala, la malla cambia, pero la textura no.
A continuación, reemplazarás el suelo del marcador de posición de la sala 3 por instancias de BP_Floor.
Cómo sustituir las mallas de marcador de posición
Ahora puedes reemplazar las mallas de marcador de posición en la sala 3 con BP_Floor en la disposición que prefieras. Hemos creado un suelo que coincide con los marcadores de posición:
Si prefieres usar lo que se muestra arriba, puedes copiar el nivel siguiendo estos pasos:
Verifica que hayas actualizado
M_Surfacesy creadoBP_Floorsegún el tutorial anterior.En el esquematizador, selecciona todo lo que haya dentro de la carpeta Sala 3 y pulsa Supr.
Copia el siguiente fragmento.
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"En el visor, pulsa Ctrl + V.
A continuación, crearás la bola de agua y usarás instancias de materiales dinámicos para que el suelo pase de seco a mojado.
Cómo cambiar materiales usando la interacción de los jugadores
La bola de agua será un objeto con física habilitada que provoca un cambio de propiedad en el suelo, haciéndolo parecer mojado.
Cómo crear una bola de agua
Para crear y sacar a la superficie la bola de agua, sigue estos pasos:
En la carpeta Blueprints del explorador de contenido, haz clic derecho para crear una nueva clase de blueprint.
Selecciona Actor como la clase padre.
Dale al nuevo blueprint el nombre
BP_WaterBally ábrelo en el editor de blueprints.En la pestaña Componentes, haz clic en Añadir y busca
Esfera.En el panel Detalles, define Materiales > Elemento 0 como
M_Water.En el panel Detalles, en Física, selecciona Simular física.
Guarda y compila tu blueprint.
Arrastra una instancia de
BP_WaterBalla tu nivel.
Para probar la bola de agua en tu nivel, haz clic derecho en el visor y selecciona Jugar desde aquí. La bola debería rebotar por el suelo cuando te topes con ella.
Si hay enemigos en tu nivel, fija su velocidad máxima en 0 para evitar que te persigan o elimínalos.
A continuación, usarás la lógica dentro de BP_Floor para crear una instancia de material dinámico.
Cómo crear una instancia de material dinámico
Una instancia de material dinámico es una instancia de material generada por una secuencia de comandos (como un blueprint) que puede cambiar sus propiedades en tiempo de ejecución.
En esta sección, crearás una lógica de blueprint que hace referencia el material asignado a la malla del suelo (MI_Surfaces_Floor), generará una instancia de material dinámico a partir de él y asignará la nueva instancia al suelo. Después, la instancia de material dinámico altera las propiedades que expusiste en el tutorial anterior, la rugosidad y el matiz difuso, para imitar un suelo mojado.
Durante el tiempo de ejecución, este cambio hará que parezca que el suelo se empapa con una fina capa de agua.
Para crear una instancia de material dinámico, sigue estos pasos:
En el explorador de contenido, haz doble clic en
BP_Floorpara abrirlo en el editor de blueprints.En el grafo de eventos, elimina todos los nodos excepto Event BeginPlay.
En la pestaña Components, arrastra una instancia de Floor al grafo de eventos.
Desde el pin de salida del nodo Floor, arrastra y busca Get Material.
En la salida Return Value de Get Material, arrastra y añade un nodo Create Dynamic Material Instance donde el objetivo sea Kismet Material Library.
Conecta la salida de Event BeginPlay al pin de ejecución de entrada de Create Dynamic Material Instance.
Desde la salida Return Value de Dynamic Material Instance, arrastra y selecciona Promote to Variable.
En el panel Detalles, cámbiale el nombre a esta variable y nómbrala
Dynamic Mat Ref.Arrastra otra instancia de Floor al grafo de eventos.
Desde la salida de Floor, arrastra y busca Set Material.
Conecta el pin de salida de ejecución de color blanco del nodo Set con el pin de entrada de ejecución del nodo Set Material.
Conecta la salida azul del nodo Set a la entrada Material del nodo Set Material.
Para mantener tu grafo organizado, selecciona todos los nodos y pulsa C. Dale a la caja de comentarios el nombre
Crear material dinámico.Guarda y compila.
Tu grafo de eventos debería tener este aspecto:
Eventos de llamada
Para activar el aspecto mojado del suelo, necesitarás un evento que compruebe si BP_Floor se solapa con BP_WaterBall y un evento que llame al aspecto correcto como resultado.
Hagamos un borrador de la lógica:
Cuando un actor se solapa con
BP_Floor:Comprueba si el otro actor es (igual que)
BP_WaterBall. Si lo es (verdadero), entonces:Llama al aspecto mojado de
BP_Floor.
De lo contrario, si no es verdadero (falso):
No hagas nada.
Para crear esta lógica, sigue estos pasos:
Haz clic derecho en el nodo EventGraph de
BP_Floory busca Add Custom Event. Nombra este nodoCall Wet Look.En la pestaña Components, haz clic derecho en Activador y crea Añadir evento > Añadir OnComponentBeginOverlap.
OnComponentBeginOverlap busca colisiones.
Desde la salida de Other Actor en OnComponentBeginOverlap, arrastra y crea Get Class.
Desde la salida Return Value, arrastra y crea Equal.
Haz clic derecho en la entrada Select Class y selecciona Promote to Variable.
Dale a la variable el nombre
WaterBally compila tu blueprint.En el panel Detalles, establece el valor por defecto de WaterBall en
BP_WaterBall.Desde la salida del nodo Equal, arrastra y crea un nodo Branch.
Desde la salida True de Branch, arrastra y busca Call Wet Look.
Conecta la salida de ejecución de OnComponentBeginOverlap a la entrada de ejecución del nodo Branch.
Tu grafo de eventos debería tener este aspecto:
Control de las propiedades de los materiales
Ahora construirás la variante mojada de tu suelo. Dado que el suelo es pétreo y poroso, debería oscurecerse a medida que absorbe agua (Matiz difuso). Debido a la fina capa de agua que la cubre, la superficie debería tener un aspecto brillante (Rugosidad).
Para compilar la lógica del aspecto mojado, sigue estos pasos:
Arrastra la variable Dynamic Mat Ref hasta el grafo de eventos y selecciona Obtener en la lista.
Desde el pin de salida, arrastra y crea Set Scalar Parameter Value.
Desde el mismo pin de salida, arrastra y crea Set Vector Parameter Value.
¿Recuerdas los parámetros que expusiste en
M_Surfaces? La rugosidad es un escalar (valor único) y el matiz difuso es un vector (tres valores; RGB).En el nodo Set Scalar Parameter Value, haz clic derecho en Parameter Name y selecciona Promote to Variable. Dale a la variable el nombre
Roughness.En el nodo Set Vector Parameter Value, haz clic derecho en Parameter Name y selecciona Promote to Variable. Dale a la variable el nombre
Diffuse Hue.Compila el blueprint e introduce valores para cada nombre de parámetro:
Selecciona la variable Roughness e introduce
Roughnesscomo valor por defecto.Selecciona la variable Diffuse Hue e introduce
Diffuse Huecomo su valor por defecto.Los valores por defecto deben coincidir con los parámetros correspondientes en
M_Surfaces.
Conecta el pin de ejecución de salida del nodo Set Scalar Parameter Value con el pin de ejecución de entrada del nodo Set Vector Parameter Value.
Además de pasar de seco a mojado, puedes usar la lógica para controlar la rapidez con la que se produce ese cambio. Dado que saturar una sustancia lleva tiempo, las propiedades de un material irán cambiando gradualmente. Puedes hacer esto con un nodo lerp (interpolación lineal).
Un nodo Lerp mezcla o interpola sin problemas entre dos valores. Es útil para pasar de un color, textura o efecto a otro.
Para crear un lerp, sigue estos pasos:
Desde la entrada Value del nodo Scalar Parameter, arrastra y crea un Lerp. Esto controlará la rugosidad.
En la interpolación lineal, establece el valor A en
1.0. Será el valor de la rugosidad del aspecto seco. Deja el valor de B en0.0. Este será el valor del aspecto mojado.En el tutorial anterior, aprendiste que al ajustar la rugosidad en 1, se obtiene un efecto mate, y al fijarla en 0, un efecto brillante. Lo que buscas es que el agua parezca brillante.
Desde la entrada Value del nodo Set Vector Parameter Value, arrastra y crea un Lerp (color lineal). Esto controlará el matiz difuso.
Arrastra y selecciona Promote to Variable (color lineal) en el valor A del nuevo Lerp. Dale a la variable el nombre Unsaturated.
Arrastra y selecciona Promote to Variable en el valor B del Lerp. Dale a la variable el nombre
Saturated.Compila tu blueprint. En el panel Detalles, fija el valor por defecto de Unsaturated en
CDDAFFFF.En el panel Detalles, fija el valor por defecto de Saturated en un valor más oscuro, como
656C7FFF.
Tu grafo de eventos debería tener este aspecto:
Ya has creado un nuevo aspecto para el suelo usando la lógica de blueprints. Sin embargo, lo que falta es un motor que potencie esta lógica: un cronograma.
Cómo potenciar tu lógica con cronogramas
Al igual que el cronograma en el software de animación, los nodos Timeline controlan los valores entre fotogramas clave a lo largo del tiempo. Usarás este nodo para potenciar la interpolación entre el aspecto seco y mojado durante un periodo de tiempo especificado.
Para crear un cronograma, sigue estos pasos:
Haz clic derecho en el grafo de eventos, busca y crea Añadir cronograma.
Haz doble clic en el nodo Timeline para abrir la pestaña Timeline_Template.
Haz clic en Track y selecciona Add Float Track en la lista.
Adale a la pista el nombre
Alpha. El nombre de esta pista aparecerá como pin de salida en el nodo Timeline.Establece la duración del cronograma en
3.0segundos.Haz clic derecho en el cronograma y selecciona Añadir clave.
Con la clave seleccionada y resaltada en azul, fija los parámetros Tiempo y Valor de esta clave en
0.0.Crea una segunda clave y establece Tiempo y Valor en
1.0.Haz clic derecho en la primera clave y selecciona Usuario.
Guarda y compila.
Este cronograma ahora genera un valor que mezcla de 0 a 1 en tres segundos. Ahora puedes conectar los nodos restantes al cronograma:
De vuelta en el grafo de eventos, conecta la salida Call Wet Look a la entrada Play en el nodo Timeline.
Conecta la salida Update del nodo Timeline con la entrada Exec de Set Scalar Parameter Value.
Conecta la salida Alpha del nodo Timeline a las entradas Alpha de ambos Lerp.
Selecciona los nodos y pulsa C para comentar. Dale a la caja de comentarios el nombre
Lerp Dynamic Materials.Guarda y compila.
Tu grafo de eventos completo debería tener este aspecto:
Para probar tu trabajo, haz clic derecho en tu nivel y selecciona Reproducir desde aquí. Cuando empujes la bola de agua por la sala, el suelo debería «inundarse».
La reflectividad de la superficie húmeda es un poco difícil de ver a la luz del día. Para resaltar la reflectividad del suelo, oscurecerás el nivel y añadirás iluminación con un material emisivo.
Materiales emisivos
Los materiales emisivos son una forma económica de crear autoiluminación. Pueden usarse para crear un brillo que se incorpore a materiales más complejos, como los LED de la armadura de ciencia ficción de un personaje o las luces de freno de un coche.
Los materiales emisivos también pueden interactuar con el sistema Iluminación global y reflejos de Lumen, lo que significa que interactúan con el entorno que los rodea.
El brillo de un material emisivo se puede controlar con valores float que van de 0 (sin luz) a 1 (luz emisiva) o superiores a 1 (luz emisiva que crea bloom).
Los materiales emisivos y los reflejos se notan más en los niveles oscuros. Para cambiar la iluminación general de tu nivel, sigue estos pasos:
En el esquematizador, selecciona Luz direccional.
En el visor, pulsa Ctrl + L y mueve el ratón para ajustar la posición de la luz direccional y la hora relativa del día en tu nivel.
Por lo general, no se recomiendan materiales emisivos para la iluminación ambiental. El uso de materiales emisivos como fuentes de luz puede producir resultados no deseados. Lo que recomendamos es usar fuentes de luz para los entornos.
Cómo crear un material emisivo
En este tutorial, construirás letreros de neón que se reflejen en la piedra mojada al colocarlos por el nivel. Para ello, crearás un material padre flexible que pueda propagar los siguientes parámetros a sus instancias hijo:
Color del emisor
Brillo emisivo
Máscara de texturas
Para crear un material emisivo, sigue estos pasos:
En el explorador de contenido, en la ruta Todo > Contenido > AdventureGame > Artista > Materiales, crea un nuevo Material.
Dale al material el nombre
M_EmissiveSigny haz doble clic sobre él para abrirlo en el editor de materiales.En el grafo de material, arrastra la entrada Emissive Color del nodo raíz del material y añade un nodo Multiply de la lista de selección.
Arrastra desde la entrada A del nodo Multiply y añade un Constant3Vector.
Haz clic derecho en Constant3Vector y selecciona Convertir en parámetro.
Cambia el nombre parámetro a
Color.Haz doble clic en la muestra de color y elige un color para tu material emisivo.
Arrastra la conexión de la entrada B del nodo Multiply y añade un nodo Constant desde la lista de selección.
Convierte la constante en un parámetro, dale el nombre
Brightnessy fija su Valor en25.
Ahora tu grafo de material debería tener este aspecto:
Cómo limitar los parámetros con acotaciones
Aunque el brillo emisivo no tiene límite superior, puedes establecer tus propios límites personalizados para el brillo mínimo y máximo en el material padre usando una acotación. La acotación puede facilitar el ajuste de los valores con un control deslizante, sobre todo cuando se trata de números pequeños y ajustes delicados.
Al igual que otros parámetros, las acotaciones se propagan a las instancias del material.
Para fijar la constante de brillo, sigue estos pasos:
En el grafo de material, selecciona el parámetro Brillo.
En el panel Detalles, fija el valor de Máx. control deslizante en
50.
A continuación, añadirás contenido a tu cartelería usando máscaras de textura.
Cómo crear una máscara simple
Una máscara de textura es un mapa de texturas en escala de grises (alfa) o de un solo canal, que se utiliza para mostrar u ocultar ciertas áreas de un material. Imagina una máscara alfa como si fueran capas; el área blanca de la máscara revela información sobre una capa inferior y el área negra la oculta.
En el material emisivo, usarás una máscara alfa para revelar o bloquear áreas de brillo emisivo y crear el contenido del letrero de neón.
Para crear una máscara dentro del material principal M_Emissive, sigue estos pasos:
Sin seleccionar ningún nodo, ve al panel Detalles. Junto a Modo de mezcla, haz clic en el menú desplegable y selecciona Enmascarado.
En el grafo de eventos, haz clic derecho y crea una muestra de textura.
En el panel Detalles, junto a Textura, busca
T_UE_Logo_M.Esta textura se incluye con Unreal Engine, así que no tienes que descargarla ni crearla.
Conecta la salida RGB de la muestra de textura a la entrada Opacity Mask en el nodo raíz del material.
Haz clic derecho en la muestra de textura y selecciona Convertir en parámetro. Dale al parámetro el nombre
LED Sign.
Ahora tu grafo de material debería tener este aspecto:
Ya has creado un material que imita a un letrero de neón. A continuación, aumentarás aún más la flexibilidad de tu material padre y la cantidad de recursos únicos que puedes crear invirtiendo la máscara:
Para conseguirlo, podrías crear instancias de material únicas para máscaras invertidas y no invertidas. Pero es mejor usar un interruptor estático para alternar la inversión desde dentro de cualquier instancia de material creada desde M_EmissiveSign.
Cómo activar/desactivar parámetros con interruptores estáticos
En el tutorial anterior, aprendiste sobre la jerarquía de propagación de materiales; las instancias hijo heredan propiedades de los materiales padre.
Una instancia puede personalizar un parámetro heredado, pero no puede ignorarlo por completo, a menos que uses un interruptor estático. Los interruptores estáticos, fijados en el material padre, dan a las instancias hijas la capacidad de activar o desactivar parámetros.
Dado que los parámetros que se desactivan no se compilan, los interruptores estáticos pueden mejorar el rendimiento en tiempo de ejecución. Sin embargo, dado que cada valor booleano crea una nueva permutación de sombreador, esto tiene el potencial de aumentar drásticamente el tiempo de compilación (dependiendo de la complejidad del material). El valor de los modificadores depende de cómo los uses y de las necesidades de desarrollo de tu proyecto.
Tiempo de ejecución se refiere al periodo en el que un juego está en funcionamiento. Tiempo de compilación se refiere a la etapa en la que un juego se está compilando, antes del tiempo de ejecución.
Para crear un interruptor estático que controle la inversión de máscaras, sigue estos pasos:
En el grafo de material, selecciona el nodo LED Sign y duplícalo pulsando Ctrl + D.
Cambia el nombre del nuevo nodo a
Screen.En la salida RGB de Screen, arrastra y busca One Minus.
Haz clic derecho en el grafo y busca Static Switch Parameter. Dale al interruptor el nombre
Flip Mask?.Conecta la salida de One Minus a la entrada False del interruptor.
Conecta la salida RGB de LED Sign a la entrada True del interruptor.
Conecta la salida del interruptor a la entrada de Opacity Mask del nodo raíz del material.
Guarda tu material.
Ahora tu grafo de material debería tener este aspecto:
Ahora puedes crear instancias de material a partir de M_EmissiveSign que controlen de forma exclusiva el brillo, el color, el mapa de texturas o la inversión de máscaras.
Aplica instancias de M_EmissiveSign a mallas nuevas o existentes en tu nivel para crear la escena que quieras. A medida que muevas la bola de agua por el nivel, los letreros se reflejarán en el suelo mojado con el sistema de iluminación global y reflejos de Lumen, que está activado por defecto. Aprenderás más sobre Lumen y otros sistemas de reflejos en el próximo tutorial.
Siguiente
En el siguiente tutorial aprenderás más sobre los reflejos dentro de los volúmenes de posprocesamiento, los sistemas de iluminación y cómo aplicar distintos efectos de cámara a tu nivel.