Este documento es una visión general del flujo de trabajo original de los Materiales por capas, que utiliza Funciones materiales para crear mezclas de capas complejas. Para obtener información sobre la nueva función Capas de materiales del Editor de Instancias de Materiales, lee esta página.
Los Materiales por capas permiten crear un único Material con una serie de subMateriales (o capas) que puedes colocar sobre la superficie de tus objetos mediante operaciones por píxel, como máscaras. Son perfectos para manipular mezclas complejas entre tipos de superficie singulares. En la imagen siguiente de los cohetes, el cohete del extremo derecho utiliza una capa separada para las piezas de cromo, aluminio y cobre. Se mezclan en el Material por píxel.
Como función, los Materiales por capas son una extensión de las Funciones materiales (designing-visuals-rendering-and-graphics/materials/material-functions/overview). Las Funciones materiales son redes de nodos autónomas que ejecutan una operación específica, como una ecuación matemática compleja. Puedes reutilizar estas funciones cuando quieras, en cualquier cantidad de Materiales. Con los nodos Crear atributos de material y Romper atributos de material, puedes definir un conjunto completo de atributos de material en el seno de una Función material. Luego puedes llamar a estas Funciones materiales en un Material base, y mezclarlas entre sí con Funciones de mezcla de capas de material.
La imagen anterior muestra un simple Material de cromo definido por completo en el seno de una Función material mediante el nodo Crear atributos de material. Puedes utilizar esta función como capa en tu Material base y mezclarla con otras Funciones materiales (capas).
Es importante tener en cuenta que, como las Funciones materiales no pueden aplicarse directamente a una superficie, debes introducir cada capa de Función material en un Material base estándar, que luego podrás aplicar a mallas estáticas. Puedes utilizar las Funciones materiales para crear tantas capas como desees, mezclándolas entre sí como mejor te convenga.
A alto nivel, el flujo de trabajo es el siguiente:
- Crea una nueva Función material y edita el grafo de nodos a la perfección. Esta función actuará como una capa cuando la llames en tu Material base.
- Conecta tu red de nodos a un nuevo nodo Crear atributos de material y vincúlalo a la salida de la Función.
- Guarda la Función material.
- Repite este proceso para cualquier otra capa de Función material que desees crear.
- Crea un nuevo Material y ábrelo en el Editor de materiales.
- Arrastra tus Funciones materiales desde el Explorador de contenido hasta el nuevo Material para utilizarlas como capas.
- Mezcla varias Funciones materiales con las funciones Mezcla de capas de material.
Tu objeto final puede tener ahora varios Materiales distintos mezclados sobre su superficie.
Ventajas principales
Los Materiales por capas te permiten crear composiciones que, de otro modo, serían muy complicadas, y mantener una manejabilidad mucho mayor de cara a modificaciones futuras.
Por ejemplo, es posible crear el efecto de Materiales por capas con un grafo de Material convencional (sin capas ni funciones). Sin embargo, ello requeriría redes complejas para mezclar diferentes texturas y valores para cada entrada de Material. Como la mayoría de los Materiales usan varias entradas, la complejidad de un Material de este tipo aumentaría significativamente.
Considera la complejidad de la red siguiente, que no utiliza capas de Material y mezcla un efecto de cromo y uno de cobre, como se ve en el cohete anterior.
Grafo de Material tradicional sin capas.
Haz clic en la imagen para ampliarla.
Con un Material por capas, cada tipo de Material distinto está contenido en su propio nodo. De este modo, la mezcla es mucho más sencilla y mucho más fácil de editar y depurar para un creador. Con los nodos Crear atributos de material y Romper atributos de material, puedes conectar directamente cada una de las capas de la Función material, sin preocuparte de vincular propiedades individuales.
La red siguiente consigue el mismo resultado que la anterior, pero los Materiales cromo y cobre están modularizados en sus propias Funciones materiales.
Este es el mismo Material, pero utilizando Funciones materiales como capas.
Haz clic en la imagen para ampliarla.
Otra ventaja de utilizar Materiales por capas es que, como se usan Funciones materiales, cada capa es reutilizable. Así puedes crear una biblioteca de arquetipos materiales, es decir, Materiales que definen un tipo de superficie básica del mundo real. Por ejemplo, puedes crear capas que representen superficies genéricas como aluminio, acero, cuero, plástico, goma, etc. Luego puedes utilizar un Material por capas para mezclarlas. Lo anterior es muy útil cuando se quiere crear un objeto detallado, como un personaje, sin crear un conjunto inmenso de Materiales para aplicarlos por separado a la superficie.
Tipos de mezcla
Dentro de la lista de Funciones materiales de la paleta del Editor de materiales hay una lista de varias funciones de Mezcla de capas de materiales. Su misión es ayudarte a mezclar Materiales sin necesidad de recrear complejos grafos de nodos cada vez. Los distintos tipos permiten mezclas especializadas, como la posibilidad de anular características específicas de los Materiales.
| Funciones de mezcla de capas de material | |
|---|---|
| MatLayerBlend_AO | Mezcla un mapa de oclusión ambiental (AO) sobre la superficie para eliminar reflejos. |
| MatLayerBlend_BaseColorOverride | Permite reemplazar el Color base. |
| MatLayerBlend_BreakBaseColor | Arroja el Color base de una capa de material entrante. |
| MatLayerBlend_BreakNormal | Arroja la Normal de una capa de material entrante. |
| MatLayerBlend_Decal | Mezcla una hoja de proyección sobre el material utilizando el segundo canal UV. |
| MatLayerBlend_Decal_UV3 | Mezcla una hoja de proyección sobre el material utilizando el tercer canal UV.. |
| MatLayerBlend_Emissive | Mezcla una textura Emisiva sobre la capa de material. |
| MatLayerBlend_GlobalNormal | Mezcla una textura Normal sobre la capa de material. |
| MatLayerBlend_LightmassReplace | Sustituye el Color base en la Masa de luz, lo que permite cambios en los resultados de la iluminación indirecta. |
| MatLayerBlend_ModulateRoughness | Multiplica la Rugosidad de la capa de material por una textura entrante. Es útil para conseguir un aspecto "grasiento". |
| MatLayerBlend_NormalBlend | Mezcla una textura Normal a lo largo de la superficie, pero mediante una textura de máscara, lo que permite controlar dónde aparecerá la normal. |
| MatLayerBlend_NormalFlatten | Disminuye el efecto del mapa de Normales. |
| MatLayerBlend_RoughnessOverride | Reemplaza la textura de Rugosidad de una capa de material. |
| MatLayerBlend_Simple | Proporciona una solución de mezcla simple de interpolación lineal (Lerp) para 2 capas de material. No mezcla la Normal, sino que conserva la Normal del Material base. |
| MatLayerBlend_Stain | Mezcla el Material superior sobre el Material base como mancha, lo que significa que solo se utilizan los valores de Color base y Rugosidad del Material superior. |
| MatLayerBlend_Standard | Mezcla todos los atributos de dos capas de material. |
| MatLayerBlend_Tint | Permite tintar una capa de material con un color de tinte y una máscara para controlar la ubicación del tintado. Es útil para hacer cambios parciales de color. |
| MatLayerBlend_TintAllChannels | Similar al Tinte, pero también afecta a Especular. Se trata de una función muy especial; por lo general, no la necesitarás. |
| MatLayerBlend_TopNormal | Mezcla todos los atributos de ambos Materiales, pero solo utiliza la Normal del Material superior. |
Instanciar materiales por capas
Dado que los Materiales por capas son esencialmente Funciones materiales, parametrizarlos para crear instancias requiere cierta previsión adicional. Para hacer un mejor uso de los Parámetros escalares y Parámetros vectoriales, puedes crear una expresión Entrada de función como parte de una capa de Material. A continuación, puedes conectar un parámetro a esta entrada desde el Material de nivel superior. Para obtener más información, consulta la descripción general de las funciones materiales (designing-visuals-rendering-and-graphics/materials/material-functions/overview).
El flujo es más o menos como sigue:
- Parámetro de material (Parámetro escalar, Parámetro vectorial, etc.)
- Capa de material (Función)
- Expresión de una Entrada de función
- Una red para definir la Capa de material
- Salida de función
- Material final
Consejos útiles:
- Al pegar tus Expresiones materiales en una función para crear tu capa, sustituye todos los parámetros por nodos de Entrada de función con el nombre adecuado.
- Cuando incorpores tu nueva Función material a un Material, conecta nuevos nodos de parámetros a las entradas.
- Ahora puedes instanciar el Material final, y tus parámetros controlarán los aspectos apropiados de tus capas.
- Asegúrate de proporcionar valores por defecto a tus Entradas de función. Así se acelera el flujo de trabajo cuando no es necesario hacer cambios.
Inconvenientes
Aunque los Materiales por capas son útiles para manejar configuraciones multimaterial, debes tener cuidado al emplearlos. Pueden resultar pesados en términos de rendimiento, sobre todo si los Materiales utilizados en las funciones de capa son complejos de por sí.
Ten en cuenta que todas tus capas se renderizan simultáneamente y luego se mezclan. Por ejemplo, si tienes cuatro capas en un Material, por cada píxel de tu objeto el motor debe comprobar cuál de las cuatro está mezclada y luego rechazar las que no estén en uso. Este cálculo añadido hace que el Material requiera un mayor rendimiento.
Tu idea inicial puede ser utilizar Materiales por capas cada vez que desees tener varios tipos de superficie en un objeto. Por ejemplo, en un automóvil, podría interesarte tener una capa distinta para la pintura, otra para el acero, el caucho, el cristal, etc. En cambio, es más eficiente separar muchas de esas capas a nivel de geometría. Así se crean más elementos de Material en tus objetos, lo que aumenta las llamadas de trazado, pero en general es mucho más eficiente. En resumen, si puedes aplicar varios Materiales en lugar de utilizar un Material por capas, hazlo. Si necesitas tener control por píxel para colocar los Materiales, utiliza las Funciones materiales por capas o capas de Material.
Aunque condensar varios Materiales en uno solo reducirá las llamadas de trazado, el Material por capas resultante suele ser demasiado pesado para utilizarlo en plataformas móviles.