En esta página encontrarás información detallada sobre las funciones que aparecen tanto en Unreal Engine como en Unreal Editor for Fortnite (UEFN).
La página se creó en un principio para Unreal Engine, por lo que es posible que algunas descripciones y capturas de pantalla no se correspondan exactamente con la interfaz de UEFN.
Haz clic aquí para volver a la página de inicio de la documentación de UEFN.
Las instancias de materiales en Unreal Engine se utilizan para cambiar la apariencia de un material sin tener que realizar una recompilación costosa del material.
Si bien no es posible cambiar un material típico sin recompilar (algo que se debe realizar antes de jugar), es posible editar un material parametrizado en una instancia del material sin dicha recompilación. Esto aporta numerosas ventajas para los flujos de trabajo y puede mejorar el rendimiento de los materiales.
Instancia de un material abierta en el editor de instancias de materiales. Es posible personalizar los atributos enumerados den Grupos de parámetros desde esta interfaz.
Algunos tipos de materiales instanciados incluso se pueden cambiar durante el juego como respuesta a los acontecimientos que se producen en el juego (como un árbol cuyo material se ennegrece y se carboniza cuando se quema). Esto aporta una gran flexibilidad en los elementos artísticos.
Herencia de materiales
La relación entre los materiales y las instancias de materiales es una relación jerárquica padre-hijo. Una instancia de material hereda todos sus atributos del material padre (o maestro). Por ejemplo, este es el grafo de material de una de las sillas de atrezo que aparecen en el contenido de inicio:
Todas las instancias de materiales creadas a partir de M_Chair heredan todos los atributos del grafo que se muestra arriba.
Observa las convenciones de nomenclatura que se utilizan arriba. Adoptarlas es una práctica recomendada, ya que permite identificar fácilmente a los materiales padre y a sus instancias en el explorador de contenido.
- El prefijo M_ indica un material padre, como en M_Chair.
- El prefijo MI_ indica una instancia de material, como es el caso de los dos ejemplos que se muestran a la derecha.
Puesto que heredan sus atributos del padre, las instancias de un material recién creadas son idénticas al material padre cuando se aplican a los objetos de un nivel. En la imagen siguiente, la silla del extremo izquierdo tiene el material padre aplicado, mientras que las del centro y de la derecha utilizan instancias del material sin ninguna modificación.
La ventaja clave para el flujo de trabajo de las instancias de materiales es que se pueden personalizar muy rápidamente en el editor de instancias de materiales sin tener que editar el grafo de nodos ni recompilar el material.
En el vídeo siguiente, se abren las dos instancias del material desde el explorador de contenido y se editan en el editor de instancias de materiales. Los cambios aparecen en el visor principal inmediatamente, mientras que la recompilación de un material estándar podría tardar hasta un minuto, en función de su complejidad.
Parametrización de materiales
Es importante saber que no es posible editar todas las características de una instancia de un material de forma predeterminada. Para poder editar los atributos de un material en una instancia, es necesario designarlos como parámetros en el material padre. A esto se le llama parametrizar el material.
Un parámetro se crea igual que cualquier otro nodo de datos del editor de materiales y contiene la misma información que su homólogo no parametrizado.
Por ejemplo, una expresión Constante contiene un solo valor con coma flotante y, con frecuencia, se utiliza para controlar entradas del material como Rugosidad y Metálico. La versión parametrizada de este nodo se llama Parámetro escalar.
Expresión de material constante (1) y parámetro escalar (2).
El parámetro escalar también se convierte en un valor con nombre que sirve como conducto para enviar valores de datos hacia una instancia de un material. Es importante asignar un nombre único y descriptivo al parámetro en el panel Detalles. Selecciona el nodo en el grafo del material para acceder a sus propiedades en el panel de detalles.
En el ejemplo anterior, el parámetro se llama Rugosidad y su valor predeterminado es 0.25.
En el material parametrizado simple que se muestra a continuación, hay un parámetro vectorial conectado a la entrada Color de base y parámetros escalares conectados a Metálico y Rugosidad.
Para ilustrar con más detalle la idea de la parametrización, también se pasa un valor constante 0.5 a la entrada Especular.
Al abrir el editor de instancias de materiales, los tres parámetros están expuestos y son editables, pero la constante, no. Los valores que quieras exponer a los artistas deben ser parámetros y los valores que no quieras que nadie cambie deben permanecer como constantes.
Los parámetros de Color de base, Metálico y Rugosidad son editables en el editor de instancias de materiales, mientras que el valor constante no está expuesto a los artistas.
Tipos de parámetros
Es posible utilizar parámetros en cualquier parte de un grafo de un material para aplicar una amplia gama de efectos de materiales.
A continuación, se documentan algunos de los tipos de parámetros clave y aquí puedes consultar una lista completa de las expresiones de parámetros.
Parámetros escalares
Un parámetro escalar es un parámetro que contiene un solo valor expresado en coma flotante. Los parámetros escalares pueden servir para cualquier efecto basado en valores únicos, como sucede con los ejemplos Rugosidad y Metálico anteriores.
Los parámetros escalares también se utilizan, con frecuencia, para controlar el factor multiplicador de un atributo.
En este grafo, se multiplica un parámetro escalar por un color sólido y el resultado se envía a una entrada de Color de emisión. El valor del parámetro escalar controla la intensidad del efecto de emisión. Cuanto mayor es el valor, mayor es el brillo de la emisión.
Parámetros vectoriales
Un parámetro vectorial es un parámetro que contiene un valor vectorial de 4 canales, o cuatro valores expresados en coma flotante.
Por lo general, estos se utilizan para proporcionar colores configurables, pero también se pueden utilizar para representar datos de posición o controlar cualquier efecto que requiera más de un valor.
Parámetros de textura
El parámetro de textura que se utiliza con más frecuencia es TextureSampleParameter2D, que permite cambiar texturas dentro de una instancia de material.
Existen varios tipos adicionales de parámetros de textura disponibles. Cada uno es específico del tipo de textura que acepta o de la forma en que se utiliza. Por ejemplo:
- TextureSampleParameterCube acepta un TextureCube o Cubemap.
- TextureSampleParameterFlipbook acepta una FlipbookTexture.
- TextureSampleParameterMeshSubUV acepta una Texture2D que se utiliza para efectos sub UV con un emisor de malla.
- TextureSampleParameterMeshSubUV acepta una Texture2D que se utiliza para efectos de mezcla sub UV con un emisor de malla.
Consulta la Referencia sobre expresiones de materiales para obtener una lista completa de parámetros de textura.
Parámetros estáticos
Los parámetros Estáticos se aplican en tiempo de compilación, de modo que se pueden editar en el editor de instancias de materiales pero no desde ningún script ni en tiempo de ejecución.
Se pueden utilizar para enmascarar ramas de un material. Por ejemplo, un parámetro de conmutador estático acepta dos entradas. Envía el primer valor hacia la salida si el valor del parámetro es true y el segundo en caso contrario. Esto da lugar a un código mejor optimizado, ya que la rama enmascarada por el parámetro estático no se ejecuta en tiempo de ejecución.
Consulta parámetro de conmutador estático y parámetro de máscara de componente estático para obtener información sobre los tipos de parámetros estáticos específicos.
Un nuevo material se compila para cada combinación de parámetros estáticos del material de base que las instancias utilizan.
Esto puede dar lugar a un número demasiado elevado de sombreadores que es necesario compilar. Intenta minimizar el número de parámetros estáticos del material y el número de permutaciones de estos materiales que se utilizan realmente.
Constantes e instancias dinámicas
Existen dos tipos de instancias de materiales disponibles en Unreal Engine:
- Instancia de material constante: solo se calcula antes del tiempo de ejecución.
- Instancia de material dinámica: se puede calcular (y modificar) en tiempo de ejecución.
Instancia de material constante
Una Instancia de material constante es una instancia de material que se calcula una sola vez, antes del tiempo de ejecución. Esto significa que no puede cambiar durante el juego. Aunque permanece constante a lo largo del juego, para el rendimiento, todavía presenta la ventaja de que no requiere compilación.
Por ejemplo, si un juego contiene varios coches con distintos acabados de pintura cuyos colores no van a cambiar durante el juego, el mejor enfoque es crear un material maestro que represente los aspectos básicos de una pintura de coche genérica. A continuación, puedes crear instancias de material constantes para representar las variaciones de los distintos tipos de coche, como distintos colores, niveles variables de rugosidad, etc. Este enfoque se ha mostrado con el ejemplo de las sillas anteriormente en esta página.
Las instancias de material constantes se crean en el explorador de contenido y se editan en el editor de instancias de materiales.
Instancia de material dinámica
Una instancia de material dinámica (MID) es una instancia de material que se puede calcular durante el juego (en tiempo de ejecución). Esto significa que, durante la partida, se puede usar un script (código compilado o script visual de blueprint) para cambiar los parámetros del material, con el fin de alterar el material a lo largo del juego. Las posibles aplicaciones de este proceso son infinitas, desde mostrar distintos niveles de daños hasta cambiar los colores de pintura en una visualización arquitectónica.
Las MID se crean dentro de un script, ya sea a partir de un material parametrizado o una instancia de material constante. En un blueprint, tomaríamos un material determinado con propiedades parametrizadas y lo utilizaríamos en un nodo Crear instancia de material dinámica. A continuación, el resultado de ese nodo se aplicaría al objeto en cuestión con un nido Establecer material. Esto genera un material nuevo que se puede cambiar durante el juego.
Crear y usar instancias de materiales
Crear y usar instancias de materiales es un proceso en dos pasos. En primer lugar, es necesario crear un material padre que utilice expresiones paramétricas para las propiedades que quieras anular en una instancia del material. A continuación, se puede crear una instancia de material y personalizar las propiedades en el editor de instancias de materiales.
Para ver cómo se crea un material parametrizado y se utiliza en una instancia de material, consulta Crear y usar instancias de materiales.