¿Qué es Material Layering? Es una nueva característica experimental en la versión 4.19 y se trata de una nueva manera de combinar materiales de forma más potente e inteligente.
Para activar esta característica hay que ir a Project Settings > Rendering > Experimental > Support Material Layers.
Los dos ingredientes principales de Material Layering son:
- Material Layer
- Material Layer Blend
La idea es hacer distintas capas de materiales (con Material Layer) y combinarlas (con Material Layer Blend).
Crear el proyecto
Vamos a empezar con un proyecto de ejemplo.
Activamos la característica experimental Material Layering. Será necesario reiniciar el editor (quizás en versiones posteriores a las 4.19 ya no sea experimental, ¡ojo a tu versión!).
Eliminamos los props que aparecen en la escena de ejemplo y añadimos el mesh SM_MatPreviewMesh_02 del StarterContent:
Material Layers
Vamos a crear dos capas de materiales. Dos materiales muy básicos, un plástico rojo y un espejo.
Click derecho del ratón sobre el Content Browser y creamos un nuevo Material Layer:
Algunos apuntes:
- El nodo SetMaterialAttributes sirve para establecer un canal concreto (basecolor, roughness, metallic, etc.,) de un material. Si lo seleccionas puedes añadir en el panel de detalles qué canales deseas configurar.
- El atajo de teclado para crear colores es pulsar 3 y click izquierdo del ratón.
- Para crear un valor escalar pulsar la tecla 1 y click izquierdo del ratón.
Como se puede ver en el gif, para el plástico necesitamos un base color rojo, un roughness de 1 y metallic 0. ¿No sabes que significa roughness, metallic o base color? ¿O lo que son los materiales PBR? Aquí tines un post con toda la teoría.
Y para el espejo:
Master Material
Ya tenemos dos capas, vamos a usarlas. Creamos un nuevo material, en mi caso lo he llamado M_Master:
El material recien creado tiene las entradas/canales de manera individual:
Pero para usar los material layers, necesitamos que las entradas no sean individuales si no que funcionen como un conjunto de atributos del material:
Nota como se ha marcado el checkbox Use Material Attributes.
Ahora para poder usar las capas se hace uso del nodo Material Attribute Layers, en mi caso lo he llamado LayersStacks:
Teniendo listo este material es hora de crear una instancia. Desde el content browser botón derecho del ratón sobre el material y Create Material Instance:
Si abrimos este nuevo material podemos añadir las capas recientemente creadas:
Nota como al no añadir todavía ninguna forma de mezclar las capas se ve la capa más superior, en nuestro caso el material espejo.
Material Layer Blend
De serie hay muchísimos Material Layer Blend que trae Unreal: basadas en el AO del modelo, en el vertex color y muchas más. En nuestro caso vamos a hacer una personalizada.
Vamos a crear un Material Layer Blend para mezclar las capas. En el content browser Add New > Materials & Textures > Material Layer Blend.
Doble clic para abrir el editor de materiales.
Aquí la propiedad importante es Alpha que es la que hace de máscara entre dos capas de materiales.
Vamos a usar una textura como máscara. En concreto el canal Alpha de la textura T_Brick_Hewn_Stone_D que viene con el pack Content Starter.
De este modo, el Material Layer Blend quedaría así:
Ahora toca añadir el blend recien creado a la instancia del material que creamos antes:
Dando como resultado:
Y ahora con más capas...
Con todo el tinglado montado, se pueden añadir más capas, crear nuevas blend, mezclar más capas y crear variaciones de las mismas usando los botones Save Child.
Además al tener el control del material podemos sobreescribir los distintos canales (base color, roughness, etc) antes o después de aplicar las capas.
Por ejemplo, el mismo material con un pulso luminoso: