Materiales en Unreal Engine

publicado en: Tutoriales | 1

El proceso de crear materiales en el motor Unreal Engine es muy fácil. El motor como tal ofrece un entorno de clic y arrastre para crear un material de manera amable. Este proceso nos aleja de la programación de gpu conocido como Shaders.

Entonces, la pregunta es: ¿Qué es un material?, para dar respuesta a esta pregunta piense en los objetos del mundo real. Estos objetos se caracterizan por tener un aspecto visual, un color, una forma. Y por lo tanto esto los diferencia unos de otros.

Cuando diseñamos un proyecto multimedia, en un aspecto virtual deseamos creer materiales para pintar objetos en el escenario, esto se puede pensar como un cubo de pintura, con el cual pintamos objetos.

El motor hace toda la magia en la creación de un material, tras bambalinas crea toda la programación necesaria y esto suele ser muy atractivo para personas artistas que nos aben programación. Además esta enfocado directamente en favorecer la productividad.

Creando nuestro primer material

Primero que todo analizarmos la siguiente imagen.

Creación de materiales en Unreal Engine
Material de acolchado creado en Unreal Engine

El creador de materiales permite tener de manera muy facil estos materiales. Tenemos un matearial de de acolchado que muy bien puede servir para un mueble. El realismo de los materiales depende de su proyecto, si es un juego en determinados casos, esto no tiene que tener mucha importancia, pero si es la simulación de un entorno de arquitectura, posiblemente si.

El primero paso entonces para crear material es identificar primero que todo la vista denominada “Contend Browser”.

Vista de contenido de activos del proyecto
Vista Content Browser

Es aquí donde se almacenan nuestros “Assets” ( Activos ) de nuestro proyecto, que pueden texturas, mallas, materiales etc.

En esta área de clic derecho y en el menú flotante de en clic izquierdo en crear material.

Creación de materiales en Unreal Engine
Creando materiales

El resultado es que en la vista de contenido de nuestros recursos de juego se crea un archivo de material, que como nombre en este caso le pondremos Master_Material.

Nuestro primer material creado
Nuestro primer Material

Y eso es todo, ya tenemos nuestro primero material creado, si da doble clic sobre el mismo, entrará al editor de materiales y podrá visualizar en primer lugar su aspecto, y su composición visualizada en un blueprint de material. Además verá el código Shader con el que se crea este material, algo que de seguro si no es un experto valorará mucho en temas de productividad.

Editor de materiales en Unreal Engine
Blueprint de Materiales

Ahora bien, en este punto podremos asignar nuestro material a algún objeto de la escena, por ejemplo una esfera, y tendría ese color por defecto con ese brillo suave. Esto se hace arrastrando directamente el material sobre el objeto que deseamos en la ventana del escenario.

Implementando nuestro material en el escenario
Nuestro material en escena

Personalizando nuestro material

En este punto, queremos que nuestro material sea mas atractivo, tenga un color y un efecto de brillo como el plástico o el metal. Esto indudablemente sería un efecto muy agradable.

Para configurar nuestro material debe entrar al editor del mismo, y en la ventana “Palette” va a buscar un nodo llamado Const de tres vectores. Y lo va arrastrar a la vista de el editor de materiales, el Blueprint.

Como resultado tendrá lo siguiente en pantalla.

El siguiente paso es conectar la salida del nodo constante de tres vectores, con la entrada base color de nuestro material. Tras realizar esta operación debe dar clic en el botón “Aplicar” o en “Guardar” de la barra de herramientas superior.

Compilando Materiales
Compilando Material

Cuando damos en el botón “Apply”, el motor compila código de lenguaje de programación Shader. El proceso puede ser demorado de acuerdo a la complejidad de nuestro material. Y es bueno tener esto en cuenta para lo que explicare mas adelante.

Una constante de tres vectores, recibe solo tres valores que va en números flotantes de 0.0 a 1.0, al estar conectado a la entrada de Base Color, lo que se desea es que este material tenga otro color. Así que para un color normalizado, por ejemplo rojo, usamos valores 1.0,0.0,0.0, y estos se ingresan en la vista “Details” del nodo constante.

Estableciendo color a nuestro material.

Recuerdo tener activado el nodo constante, para ver los detalles del mismo. Al dar clic sobre “Constant”, nos aparece una paleta de colores y en los formatos R ( Rojo ) ingresamos 1.0, y en los otros dos G ( Verde ) y B ( Azul ) los dejamos como están. Entonces el resultado es que nuestro material cambia de Color. No olvide guardar los cambios.

El resultado es que nuestro material cambia su color.

Cambiando el color de nuestro material

Ahora es hora de ir pensando en otro material con otro color, por ejemplo amarillo y con otras propiedades, como por ejemplo plástico o metal. Usted puede recrear el proceso usado para nuestro material, pero es importante recordar algo, y es que al dar en el botón guardar, el material se compila y esto puede llegar a ser muy demorado en cada creación de materiales que pueden ser muy complejos.

Cuando hablamos de complejos, es que pueden tener texturas, efectos de degradado, oxido etc. Y por ende el tiempo de compilación aumenta. Esto aunque se puede hacer en cada material, lo mas correcto es usar un material base para crear otros.

Materiales padre en Unreal Engine

Los materiales padres se caracterizan por ser como una especie de molde de los cuales se crean otros materiales. En estos materiales se definen características que se modifican en la creación de sus materiales hijos, como el color, el brillo etc.

Lo anterior esta muy enfocado a lo que realmente hace el motor en su interior, programación orientada a objetos, así que un material padre, es una clase, de la cual se crean hijas, que heredan características de la clase superior de donde se instancian.

Ahora bien, cree su material o modifice que material master que hemos creado, pongo sus valores de color en 0.0, 0.0, 0.0, que equivale a un color negro mate. Posteriormente agregue otro nodo Constante, pero de un solo vector. Este segundo nodo constante de un solo valor conéctelo con la entrada de “metallic” de nuestro material. Posteriormente agregue otro nodo de este mismo valor, una constante de un solo valor y lo conecta a “Roughness”. El resultado debe ser muy parecido al siguiente.

Creando las propiedades de los materiales. ( Nota : El nodo Brillo se conecta a “Roughness” )

El siguiente paso y el mas importante, es permitir que esos valores, tanto de color, como de brillo y metal se hagan públicos, es decir que puedan ser modificados en los objetos hijos que se crean en base de el material master.

Para hacer eso, seleccione cada nodo de constante asignado y conviértalo en “Parámetro”. Esto lo hace seleccionado el nodo y dando clic derecho para elegir la opción en el menú flotante.

Creando parámetros en los materiales.

Un parámetro es muy similar a una variable que se pasa a una función en programación y se establece un valor en el momento en que se usa esa función. Ese parámetro debe tener un nombre, en este caso usaremos “Color” para la constante de tres vectores, y para las otras dos de un solo vector, brillo y metal en consecuencia a donde se conectan entre nodos.

Para establecer el nombre de un parámetro lo hacemos, lo hacemos en el momento de crearlo, o en la vista detalles del nodo, podemos poner el nombre o modificarlo si lo creemos conveniente.

Nuestros parámetros personalizados en nuestro material. ( Nota : El nodo Brillo se conecta a “Roughness” )

Algo para anotar, es que nuestra propiedad color, se ha convertido en una constante de cuatro vectores, esto ha sucedido en el proceso de crear ese parámetro Color. Donde los valores serían RGBA ( Rojo, Verde, Azul, Alfa ), el último valor es alusivo a la transparencia del color.

Para finalizar guarde o aplique los cambios en el material y cierra el editor de materiales.

Creando un material hijo del material master

En beneficio de ganar productividad, vamos a crear materiales hijos del material Master que hemos creado. Claro se podría crear cada material como el material padre, sin embargo esto no beneficia nada la productividad ya que en cada compilación se puede perder tiempo en el diseño del proyecto.

Esto sucede debido a que cuando creamos un material, se tiene que crear un código de shacer, y por ende tiene que compilar cada cambio que hagamos en el mismo. Así que si mirá con detenimiento el código que se crea, notará a simple vista todo el trabajo duro que nos hemos evitado.

Ahora bien, cuando creamos una instancia del material padre, se hace una copia en memoria del material padre, mucho más rápido y por ende solo modificamos sus parámetros y podemos tener diferentes materiales de diferetnes colores y estados visuales.

Para crear una instancia de un material, seleccione el material “Master” que hemos creado con clic derecho y seleccione en el menú flotante “Create Material Instance”. Esto se hace desde la vista de “Assets” donde hemos creado el material padre.

Creando una instancia de un material padre

Como resultado tendrá una copia del material identica, pero en realidad es otro objeto instanciado del material padre. Ponga un nombre a ese material, por ejemplo “Rojo”.

Ahora bien, cuando ingrese a a ese material hijo para ver su contenido, no verá el código script con que se creo, más bien verá que es una instancia del padre, y que sus parámetros se pueden modificar a su antojo para crear el material rojo.

Parámetros en los materiales instanciados
Modificando una instancia de un un material

Como verá en la ventana “Detalles” verá los parámetros que necesitamos modificar, el color, brillo y el metal. Juegue con estos parámetros y vea los posibles resultados. Algo que que recordar es que esos parámetros son normalizados, van desde 0.0 a 1.0. Por ejemplo para un material rojo metálico yo he puesto la siguiente configuración.

Material Rojo metalico
Material Rojo Metálico

Con lo anterior, ya tenemos un material, basado en una clase padre. Puede probar diferentes tipos de valores para crear diferentes materiales.

Tres tipos de materiales creados
Creación de materiales en Unreal Engine

Existe muchos otros materiales complejos que puede crear. Estos materiales se pueden basar en texturas, en efectos de protuberancia, detalles etc. Mas adelante hablaremos de ellos a profundidad.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *