top of page
  • Foto del escritorKreaktivate

MONORAIL STATION

Actualizado: 23 nov 2023

Juan Chavarria, un artistazo TOP que actualmente busca un nuevo challenge a nivel laboral, nos ha dejado un breakdown detallado de su environment, el cual lo está petando de tal manera que hasta Kirill Tokarev (80 lvl) se ha quedado prendado de éste, no os liamos aqui, aqui lo teneis.

 

Introducción

¡Buenas! Mi nombre es Juan Chavarria, soy un artista autodidacta que de bien pequeño le encantaba ver películas y series anime y que siempre me inspiraban a dibujar cosas de todo tipo hasta que un día descubrí los videojuegos y desde entonces me ha atraído la idea de dedicarme profesionalmente a ese mundillo. Me encantan el arte digital, modelar, esculpir y aprender nuevas técnicas y programas. He trabajado en el estudio de videojuegos Life Zero y también en la empresa de apps para VR Amelia Virtual Care, mi objetivo es poder trabajar en la industria del videojuego cómo Environment Artist.


CONCEPT

El environment está basado en el concepto creado por Pip Loresco para el Artstation Challenge: Medieval Back and Forth; soy un gran fan de géneros como la ciencia ficción, fantasía y steampunk, así como de juegos como Bioshock y el concepto me cautivó de primeras. Me gustó mucho el mood que Pip creó para la escena, la estación no es muy vieja pero tiene ya un uso y se ven desgastes aquí y allá. También llamó mi atención detalles como los papeles en el suelo, como si el mantenimiento del lugar fuese mejorable.


PLANNING

Lo primero que hice es una planificación en base al concepto y estudié cuántos Trim Sheets, texturas tileables y cantidad de assets únicos va a necesitar el environment.


El Texel Density que usé para este escenario es de 1024px/m, suficiente para mostrar un buen detalle en planos cercanos si esto fuese un juego en primera persona.


REFERENCIAS, BLOCKOUT Y 1ST PASS

A partir de ahí busqué referencias adicionales que me sirvan de apoyo para llevar a cabo el trabajo, eso es, materiales, arquitectura, objetos y fotos que me ayuden a captar el ambiente que Pip plasmó en el concepto, sean tipos de superficies o detalles como el óxido generándose en ciertas partes, etc.

Empecé el environment con un primer blockout muy sencillo en Blender y que importé en UE5 y en el que ubiqué una cámara, puse una Directional Light y una Skylight y comencé a montar la composición. Luego de eso hice un update del mismo con más objetos en escena y con colores sólidos aplicados en varios objetos.


En ese punto ya hice el blockout de todos los assets que posteriormente iría reimportando a medida que hacía cambios en ellos.


Aquí Lumen me ayuda a conseguir un ambiente muy rápidamente y a definir qué objetos es importante que tengan protagonismo frente a otros, cambiando la rotación de la Directional Light y viendo en tiempo real como luces, sombras y los rebotes de luz cambian dinámicamente en todas las superficies dando muchos matices a la escena sin necesidad de hacer ningún Bake.


Sobre la organización de proyectos, en Blender suelo tener Collections por tipo de objeto, por ejemplo, las estructuras modulares están metidas en una y los props en otra, y a su vez dentro de estas hago lo propio con los mismos assets, así como de objetos booleanos o copias que pueda necesitar en un futuro.


En UE5 organizo todo por carpetas con contenidos específicos y sus consiguientes subtipos de contenido: Materiales, modelos, blueprints, texturas, cinemáticas…

KITBASHING Y MODELADO DE PROPS

Aunque siga las medidas y tamaños de Blender siempre añado un modelo de humano a escala que me sirve de referencia y me ayuda a ubicarme a la hora de crear assets.


En la fase de modelado sigo un workflow no destructivo para poder hacer cambios rápidamente en caso de que sea necesario, haciendo uso de booleanas, objetos instanciados y modificadores como Mirror o Array. Todo ello será importante para luego aprovechar mejor el espacio en el UV layout.


Aunque los assets no tengan gran cantidad de polys, no escatimo en añadir geometría para definir adecuadamente bordes y esquinas en lugar de simularlas usando modelos en alta para generar mapas de normales. En un ejemplo sencillo abajo, uso un modificador Array que utiliza el valor de rotación de un Empty para definir la estructura entera y a su vez modifico el offset en las coordenadas UV en un eje específico de forma que las UVs se desplacen en ese valor dentro del Trim.






En el panel de arriba utilicé curvas Bezier para hacer los ornamentos y una vez satisfecho con como quedaban las convertí a Mesh. Otro comparativa blockout vs modelado final.




Hay assets en los que no fue necesario un modelo en alta, pues la carga poligonal es suficiente para conseguir unos buenos bakes de los mapas en Substance Painter. Hacer High Polys dependerá de la prioridad del asset y del tipo (hard surface vs orgánico) o la distancia y escala a la que vamos a estar respecto a los mismos.


Hubo assets en los que sí fue necesario usar ZBrush para conseguir esquinas desgastadas lo suficientemente creíbles que solo se pueden conseguir esculpiendo. Para ello utilicé pinceles como Standard, Move, Polish y Trim Dynamic. Finalmente añadí un Noise para los desgastes.

En el caso de los ladrillos, decidí hacer un KitBash de unos cuántos, esculpiéndolos, haciendo Low Polys con el Decimation Master y luego bakeándolos en un material a 2048x2048 para luego distribuirlos, rotarlos y moverlos para conseguir la estructura, decidí usar este método en lugar de esculpir la estructura entera en ZBrush y bakear todo en una sola geometría con mapas a 4K de resolución para que se no se vea pixelado.


Las texturas ocupan mucho espacio en memoria y en ese caso el polycount sube a 50.000 triángulos para el soporte entero y un asset que se ve solo dos veces en la escena. La escena no es muy compleja ya que dominan las superficies rectas y además utilizo Nanite, que puede renderizar grandes cantidades de polígonos y genera el LOD automáticamente. Creo que con este método conseguí un buen equilibrio entre uso de textura/polycount.

En muchos assets hice un segundo canal de UVs. Pues quería usar máscaras RGB para añadir suciedad y desgaste a las mismas. Esto se utilizó en todas las barandillas y paneles. En la parte de texturizado miraremos esto más a fondo.


CREACIÓN DE MATERIALES Y TEXTURIZADO

En esta ocasión hago los materiales tileables en Substance Designer y los Trim Sheets en Painter, siento que tengo más control trabajando con Layers en el caso de los Trims.

Después de haber hecho el material de madera en Substance Designer, lo exporté a Painter y me sirvió para los Trims Sheets que requerían dicho material; para dar variedad en los objetos de madera, en los mismos Trims añadí Fill Layers con máscaras y variaciones de color.

Para desglosar como hice un material, por ejemplo el de baldosas de color azul y marrón, empecé creando el patrón con el nodo Shape y usé el Tile Sampler para extenderlo, luego deformé un poco las juntas con Slope Blur Grayscale con el Grunge Fractal Sum 4 para simular desgaste.

Para el patrón de cerámica utilicé Cells 2 cuya escala cambié con Transformation 2D y lo deformé con un Directional Warp, también utilicé el Tile de las baldosas como máscara con Flood Fill y un deformador Warp para que distribuya de forma no continua en las baldosas

Para las grietas utilicé un Polygon que se distribuye aleatoriamente con el nodo Splatter, remarqué volumen con un Bevel y de ahí saqué la curvatura y subí el contraste con Histogram Scan hasta conseguir unas grietas que luego deformé con un Warp y añadí un Grunge como máscara para que las grietas no se repartieran equitativamente por todo el Tile.

Para el color utilicé el Gradient Map que combiné con varios Grunges y el Tile original para darle color a las juntas de las baldosas, finalmente le apliqué un nodo Sharpen para “afilar” el detalle.


En el Roughness usé mayoritariamente el Grunge Clouds 1 y el patrón del Tile original desenfocado para conseguir que las esquinas tengan menos rugosidad.

Abajo, casi todos los materiales tileables y Trim Sheets usados en la escena.

Los Trim Sheets me permitieron texturizar múltiples objetos usando instancias que parten de un Master Material en UE5, como son los assets en la imagen de abajo, a los que adaptamos el UV layout en base al Trim habiendo planeado de antemano la escala teniendo en cuenta el Texel Density.

Para texturizar todo en Substance Painter sigo el workflow siguiente (orden invertido en Painter):


- Base Color: Empiezo con una Fill Layer con todo lo que necesito de primeras para el material, defino color, rugosidad, si el material es metálico o no…


- Variedad de Roughness: Experimento con distintos Grunges y máscaras para darle variaciones a la rugosidad, juego con los bordes y esquinas, quitando o añadiendo rugosidad en ellos y cambio la rotación de la luz en Painter para ver cómo va quedando. Intento siempre moverme entre valores de 0.2 y 0.8.


- Variación de Color: Para que las superficies no queden siempre en monocolor, añado toques sutiles de color, funciona especialmente bien en superficies grises o muy apagadas.


- Detalles de Height: Aquí creo paneles, botones, juntas, telas y otros que puedan dar credibilidad a superficies. En según qué casos se puede requerir de floaters en lugar de recurrir a esta técnica.


- Desgaste en esquinas (Edge Wear): Para esto siempre combino varios Grunges y presto atención a la escala de las mismas para que el desgaste no quede continuo y monótono.


- Suciedad: Prácticamente toda superficie se ensucia de una forma u otra (salvo que se quiera hacer un objeto completamente nuevo, salido de fábrica) así que añado algo de suciedad, sea sutil o más acentuada, según el objeto.


- Otros (Emisivo, alpha, otros efectos…).


Los Anchor Points me ayudan a experimentar con efectos como la suciedad y el desgaste a partir de Fill Layers con información de Height.


Me gusta meter Storytelling en el texturizado, sean papeles desgarrados y sucios fruto de pisadas o la lluvia, esquinas y bordes que se desgastan en objetos o decoloración u oscurecimiento que transmite el paso del tiempo.


Al igual que en Designer, le añado un filtro Sharpen con un valor que puede variar entre 0.5 y 0.7 a la carpeta que contiene todas las capas, para así remarcar más todo el detalle.

Ejemplos de assets texturizados en Painter:

Para las banderas pinté los símbolos en Photoshop y los importé a Painter, hice una simulación rápida en Blender para las arrugas más grandes y luego hice un Bake y añadí las más pequeñas en Painter.

Respecto a la planificación inicial y el tren más específicamente, surgieron algunos cambios según desarrollaba el proyecto, terminé usando 3 Trim Sheets, uno para la parte superior y algunas superficies metálicas, otro para los laterales y otro para la base y un solo Decal para el símbolo en la parte lateral. Es el asset más importante de la escena y ello me hizo replantear como lo iba a texturizar.

Para los papeles y la flecha en el suelo usé un material con alpha. En la flecha quería que los bordes quedasen algo despegados del suelo, fruto del desgaste y de las pisadas, así que añadí algo de geometría y la deformé un poco.

Como había mencionado en un punto anterior, para añadir suciedad y desgaste en bastantes de los props utilicé la técnica de las máscaras RGB en el que a cada canal de color se le asigna una textura que apuntará al segundo canal de UVs en assets como por ejemplo, las barandillas.


En Painter, creamos un nuevo proyecto, importamos el mesh y vamos a Texture Set Settings, en Channels crearemos 3 nuevos canales, clicamos en el símbolo “+”, User Channels y escogemos por ejemplo, User 0, User 1 y User 2- renombraremos cada canal con cada letra R, G y B en el orden en el que los hemos creado. Podemos eliminar las que había, no necesitaremos Color, Normales, Roughness ni nada de eso.

Vamos a Layers y creamos 3 Fill Layers, cada una las nombraremos así:


- R - Variación de color

- G - Suciedad

- B - Desgastes


Seleccionamos cada una de ellas y en Properties las asignamos su correspondiente material.


Ponemos una máscara vacía en cada una de ellas y metemos una Smart Mask que corresponda con lo que queremos, en la de Suciedad puede encajar bien una Sharp Dirt, en Desgastes podría ir bien Edge Damage… y luego experimentamos con Grunges adicionales.


Creamos otra Fill Layer que pondremos abajo de las tres y en la que NO activaremos ningún Material, la dejaremos tal cual.

Una vez estemos satisfechos y queramos exportar, vamos a File, Export Texture, vamos a Output Templates y creamos un nuevo Template clicando en el símbolo “+”, le ponemos un nombre al Template, luego en Output Maps, Create, clicaremos en RGB y en cada canal arrastraremos el user que corresponde. Vamos a Settings y seleccionamos la Template que acabamos de crear en Output Template, comprobamos que la resolución de la textura es correcta, escogemos formato y le damos a Export, luego importaremos la máscara a UE5.


MATERIAL SETUP EN UNREAL ENGINE 5

En UE5 empecé montando un Master Material en el que se pudiese modificar los parámetros que necesitaba, como por ejemplo, poder cambiar mapas de textura, aumentar la intensidad de la suciedad o los desgastes, poder cambiar el color, modificar la intensidad del Normal Map, añadir Alpha, poder cambiar la máscara RGB para el segundo canal de UVs…

Una forma muy útil de aprender sobre materiales es echar un vistazo a las muestras que vienen con el Starter Content y hay muchísima información en Internet sobre el tema, Youtube mismamente.

Uno de las instancias de material en el que se ven algunos de los parámetros que se pueden cambiar:

Para el suelo en el que reposan los bancos quise hacer uso del Vertex Paiting, para ello primero modifiqué el material en Designer, desgastándolo más y con partes en las que se pierde un poco el color


Luego monté un Blending Material con los mapas de textura de ambos materiales.

Me apoyé también de Decals de Megascans en ciertas partes del escenario para romper repetitividad de texturas. Como la grieta en la pared, la suciedad en la plataforma o en el suelo

ILUMINACIÓN FINAL, EFECTOS Y POST-PROCESADO

En un primer vistazo, la parte frontal del tren no se percibía bien, se confundía con el escenario que hay detrás, así que puse una Spotlight como “luz falsa” adicional para que destacase y también para que ayude a guiar al ojo en esa parte.

También añadí efectos de lighshafts y niebla usando contenido de un proyecto gratuito llamado Particle Effects de la Epic Store, de ahí migré a mi proyecto tanto el FogSheet como los LightShafts. Estos Blueprints permiten modificar la intensidad del brillo, la velocidad del efecto, el tamaño del Noise, entre otras cosas.

Dado que quería darle vida al escenario pensé en hacer que las banderas se movieran al viento así que importé las banderas a motor y activé la casilla de Skeleton antes de clicar en Import, con eso pude editar el skinning de la geometría para decirle a UE5 que partes de la geometría quería que fuesen influenciadas por el viento y cuáles no; puse un Wind Direction Source y cambié ciertos parámetros hasta conseguir el efecto que quería.

Quería resaltar los highlights en la escena, así que añadí Bloom mediante el post-pocesado de forma controlada pero sin que la imagen tenga brillos excesivos, no vi necesario cambiar contraste o saturación de color.


Abajo, capturas de settings en el post-procesado y la Directional Light.






Finalmente monté una cinemática con todo en Sequencer y exporté vídeo.

CONCLUSIONES

El uso del Vertex Paiting fue esporádico (aunque no requirió de un uso más extenso) y podría haber implementado un mejor efecto de viento, con papeles volando y algo por el estilo; aun así estoy satisfecho con el resultado final y la muestra me permitió ponerme a prueba y trabajar más rápidamente con lo que había aprendido previamente en otros trabajos.


Desde un principio buscaba una muestra para el portfolio que tuviese un setting que se alejase de lo contemporáneo/fantasía y con esta logré dicho objetivo.


Y por último, quiero agradecerle a Juan Olea y Kreaktivate por haberme dado la oportunidad de hacer el breakdown de este trabajo personal.

 

JUAN CHAVARRIA


Si queréis saber más de Juan, de su proyecto o qué tal trabaja este talentazo os dejamos un par de enlaces por aquí:




 


118 visualizaciones0 comentarios

Entradas relacionadas

Ver todo

The Fauness

Comments


bottom of page