Publicat per

R2 – UVs y texturizado

Publicat per

R2 – UVs y texturizado

NOTA: En este segundo reto he experimentado bastante para comprender realmente cómo funcionan las UVs, y de qué manera afectan al baking…
NOTA: En este segundo reto he experimentado bastante para comprender realmente cómo funcionan las UVs, y de qué manera…

NOTA: En este segundo reto he experimentado bastante para comprender realmente cómo funcionan las UVs, y de qué manera afectan al baking de los normales cuando se tiene un modelo high poly y su versión optimizada. Los primeros mapas de UVs no están hechos con la intención de “realizarlos bien”, sino de probar y experimentar qué ocurría en el proceso de baking si los planteaba de distintas maneras. He querido incluir esta parte de experimentación en el documento ya que ha sido parte de mi proceso de aprendizaje, pero quería dejarlo explicado por adelantado ya que al ser un proceso experimental, es inherentemente algo caótico en comparación con la manera tradicional de hacerlo.


Software empleado

  • Blender para el proceso de UVs (seams, desplegado, recolocación…) y para comprender el funcionamiento del baking. El baking final se ha realizado en Substance Painter, pero al ser un proceso automatizado quise primero plantearlo manualmente en Blender para entender cómo funciona.
  • Substance Painter para el baking final de los normales y el texturizado de ambos modelos. A nivel de hardware, se ha usado una tableta gráfica para pintar las texturas sobre los modelos.

Experimentación inicial: UVs y Baking

Como mencioné en la nota inicial, puesto que quería comprender realmente cómo funciona el baking de normales de modelos high-poly a sus modelos optimizados, probé a realizarlo en blender, sin buscar documentación previamente ya que así es como mejor aprendo en estos casos. La primera prueba de baking fue realizando un mapa de UVs con más seams de lo necesario: al dividir el modelo en tantas partes, pude ir viendo en fragmentos más pequeños qué partes se mostraban correctamente y cuáles no, para detectar qué hacía que funcionase bien o mal el bake.

El primer mapa de normales obtenido fue este, ya que inicialmente no realicé un cage manualmente, sino que añadí una “extrusión” de 0.05 en el modelo optimizado en la opción de baking:

Al ver todos los errores en el mapa (las zonas anaranjadas y verdosas, en vez de azuladas), comprobé si tenía los normales correctamente, y al ver que sí estaban bien, fui fijándome en qué diferencias había en las partes que tenían bien el proceso de baking y aquellas que no. Observé que el principal error era que el modelo high poly, al ser del mismo tamaño del low poly, solapaba y la mayoría de detalles se traducían “invertidos”, como se puede ver en el mapa. Quise corregirlo haciendo un cage, concepto que no conocía previamente pero aprendí al ver las opciones de baking en blender, y gracias a este breve vídeo comprendí lo que era y para qué servía.

El proceso de hacer el cage manualmente en blender es algo tosco en modelos humanoides y con este tipo de detalles, ya que al escalar uniformemente un duplicado del modelo low poly, inevitablemente hay detalles que quedan fuera del cage, y hay que revisar y corregir manualmente las zonas que queden solapadas o mal alineadas.

Tras ir revisando y arreglando las zonas poco a poco, realicé varios bakes de los normales hasta que llegué al siguiente resultado:

Sigue teniendo errores y artefactos, pero es en zonas muy complejas de arreglar correctamente sin que solapen partes del bake, como el interior de la coleta o el interior de la armadura del pecho, cuya geometría solapa en ciertos puntos con la del propio cuerpo.

Una vez ya entendido cómo funcionaba y cuánto se iban a marcar los seams en el modelo, realicé una prueba de qué ocurriría si realizase lo contrario. Es decir, si en vez de realizar seams de más en el mapa de UV, hiciese seams de menos. Principalmente quería comprobar si habría los mismos errores, o si se corregirían o empeorarían. Aquí se puede ver el resultado:

El resultado es relativamente similar a la prueba anterior en cuanto a cómo se muestra en el modelo, solo que al haber menos seams (principalmente en el cuerpo), hay menos artefactos relacionados con la iluminación, pero hay más “zonas erróneas” o que se muestran invertidas.

Decidí para el texturizado dejar preparado algo intermedio, sabiendo que podría modificar las UVs más tarde si lo veía apropiado y se mantendrían las texturas igualmente en Substance Painter, gracias a su opción de “Update Mesh”. Mientras el nombre del modelo y su geometría sea la misma, se puede actualizar el mapa de UVs en Substance Painter y el propio programa adapta las texturas al nuevo mapa de UVs, simplemente hay que repetir el baking de normales, pero es un proceso bastante sencillo y rápido en Substance Painter, que además guarda la configuración una vez ya lo has realizado antes.

UV map en este momento de Player 1

UV map en este momento de Player 2

Como se puede observar, ambos mapas tienen varias islas o zonas separadas que tienen menos de 10 quads. Esto fue porque quise separar zonas que tenían un cambio de ángulo brusco, y al ser modelos relativamente detallados fue algo que tuve en cuenta en varias zonas de ambos personajes, como en los giros de la armadura del pecho, en la zona de la ingle, o en los codos y rodillas, junto a otros detalles. Esto es algo que más adelante corrijo, pero en este momento de la práctica quise dejarlo preparado de esta manera por si fuera necesario, ya que no había trabajado con Substance Painter antes y no sabía cómo iba a reaccionar a los seams y a los cambios bruscos de ángulo en el modelo.


Baking de normales

El baking de los normales en Substance Painter fue bastante sencillo: Creé un nuevo proyecto con el modelo low poly, y en “configuración de conjunto de texturas” di a generar mapas de malla. Ahí se abre una interfaz y se escoge el modelo high poly para cargar como referencia de los normales. La configuración del baking en ambos modelos fue con un tamaño de salida de 2048 píxeles (el mismo tamaño que el mapa de UVs y el resto de texturas), aplicando difusión y con una distancia frontal y trasera máxima de 0,01.

Aquí se puede ver el cage que genera Substance Painter

Una vez ajustado, se hace clic en el botón azul de “hacer el bake a texturas seleccionadas” y una vez terminado, quedó sin ningún error, siendo este el resultado:

He de confesar que el resultado me impresionó, y tuve que comprobar que el modelo que salía en pantalla fuera el low poly y no el original, porque estaba sorprendida con la calidad del detalle y lo integrado que quedaba.


Texturizado de los modelos

En primer lugar, tuve en todo momento al frente el dibujo original de ambos personajes a la hora de hacer el texturizado, para  hacerlo lo más fiel posible en cuanto a colores y formas, pero teniendo la libertad creativa de añadir manchas, detalles, óxido, y distintos aspectos relacionados con el brillo y el metal.

En el proceso de texturizado, en ambos modelos seguí un orden similar pero con cada una probé distintas máscaras, efectos y materiales.

El primer paso fue pintar los colores base en distintas capas con el material paint roll, apliqué modo espejo para agilizar el proceso y en este primer paso me fui familiarizando con el funcionamiento de las herramientas básicas de Substance. Una vez tenía los colores base, uní todas las capas de colores en una carpeta y fui probando materiales, materiales inteligentes y máscaras para ver cómo funcionaba cada uno y qué aspecto creaba.

En el caso de Player 1, la organización de capas es la siguiente:

En primer lugar añadí a la carpeta de colores pintados un blending mode “vivid light”, que altera los tonos y brillos ligeramente haciendo que los tonos morados tengan un brillo y subtono azulado que me gustó. Al tener este blending mode, usé como base un smart material tipo Machinery, y modifiqué los colores originales para que fueran más coherentes.

Encima de Machinery y colors añadí el smart material Iron Forged Old cambiándolo de normal a soft light, y también modifiqué (es decir, añadí en algunas zonas y borré en otras) detalles, cambié la opacidad de algunas capas y experimenté con los blending modes, cambiándolo de normal a multiply en las capas de dirt y dust.

Encima de este material, creé una capa a la que añadí detalles con el material carbon fiber, principalmente las gafas y las rodilleras, y encima añadí otra capa llamada Buttons and seams details, en la que añadí detalles con texturas que afectan al normal map, como botones, clavos y cables. La “opacidad” de la capa está al 0%, pero no es que no sea visible, sino que le he retirado el color y así simplemente afecta al normal map.

Posteriormente, añadí una capa para ajustar ligeramente los colores y la luminosidad, que es material metálico con una propiedad de relleno, cubriendo así todo el personaje. Puse su blending mode en division, y fui alterando el color de la capa hasta que di con el aspecto que me gustaba.

Finalmente, añadí una capa cuyo única propiedad es la de emisión, y pinté las luces del personaje. Como vi que el color que había escogido para esta capa era ligeramente más brillante y verdosa de lo que quería, añadí una máscara de ajustes para los niveles. Tras este proceso, el resultado es el siguiente:

Para Player 2, el proceso fue similar pero quise probar otra forma distinta de aplicar los colores. La organización de las capas es la siguiente:

Lo primero que hice fue pintar los colores base, pero en vez de dejarlos en una carpeta separada, añadí un smart material Machinery y sustituí la capa de paint que contiene por la carpeta de colores que hice, poniéndola en blending mode overlay. De esta manera, los colores se ven con la textura de metal base, y se aplican los detalles de suciedad, polvo y óxido encima de esta carpeta directamente.

Además de Machinery, quise darle un efecto distinto a este personaje, con un metal más brillante y más corrosión. Por eso, añadí un smart material Steel Medieval Stylized con blending mode value en 29%. Esto lo que hace es añadir las texturas, respetando y adaptándolas a los tonos de la carpeta Color que tiene debajo.

Encima, añadí Iron Forged Old igual que en Player 1, con blending mode soft light, a un 48% esta vez.

Posteriormente, añadí la capa de emisión, la capa de detalles con el material carbon fiber (llamada Eye mask aquí) y algunos detalles de suciedad pintados a mano en Dirt details. El resultado final es el siguiente:

 


Corrección final de UVs

Tras terminar el texturizado, comprobé que se importase bien a Sketchfab y que no hubiera errores que no hubiera detectado, y posteriormente modifiqué por última vez las UVs. De esta manera, tenía ya un modelo texturizado y sin errores, y podía probar a dejar las UVs como consideraba que sería más óptimo, y si no funcionaba bien podría simplemente usar la versión anterior, que era funcional pero algo menos limpia en UVs.

A continuación se pueden ver los mapas de UVs finales con una textura de tipo UV checker en los personajes:

Y a continuación están los modelos finales, texturizados, y con estas nuevas UVs que resultaron ser perfectamente funcionales. Se importaron a Substance Painter sin ningún problema y simplemente tuve que hacer un nuevo bake de las texturas, que es algo prácticamente automatizado por el propio software.

Modelos finales en sketchfab:

Personaje 1

Personaje 2

 


Como conclusión, hasta el momento esta ha sido mi parte favorita de la asignatura. Me ha encantado el proceso de aplicar texturas y de pensar en el posprocesado y las partículas que podré añadir en el futuro cuando se integre en Unity, y a raíz de estas dos primeras prácticas he acabado buscando por curiosidad cuáles son las ramas en videojuegos que están relacionadas con el 3D y he acabado descubriendo que me encantaría aprender y especializarme en Technical Art.

 

Las texturas de ambos modelos están en el PDF entregado a través del aula virtual.

Debat0el R2 – UVs y texturizado

No hi ha comentaris.

Publicat per

R1 – Media para videojuegos

Publicat per

R1 – Media para videojuegos

Para esta primera entrega de la asignatura Media para Videojuegos, se nos planteó el reto de diseñar dos personajes robots, realizar bocetos…
Para esta primera entrega de la asignatura Media para Videojuegos, se nos planteó el reto de diseñar dos personajes…

Para esta primera entrega de la asignatura Media para Videojuegos, se nos planteó el reto de diseñar dos personajes robots, realizar bocetos iniciales y bocetos técnicos, y finalmente traducirlos a tres dimensiones modelándolos.

Puesto que ya tenía algo de experiencia previa por haber realizado de forma autodidacta modelos lowpoly, quise ponerme el reto de realizar modelos con mayor complejidad y así aprender mejor sobre el pipeline de arte 3D empleado en la industria de videojuegos.


Software empleado

  • Krita como herramienta de dibujo y edición digital. Tiene un funcionamiento e interfaz muy similares a Photoshop, pero se trata de un programa open source.
  • Blender para el esculpido y modelado 3D. Al igual que Krita, se trata de un software open source con numerosos add-ons desarrollados por la propia comunidad.
  • En el proceso de retopología se ha empleado el add-on LoopTools en Blender, por sus herramientas “relax” y “space” que permiten gestionar el espacio e interpolación entre vértices y quads.

A nivel de hardware, tanto el proceso de dibujo como esculpido del high poly se han realizado usando una tableta gráfica.


Diseño y concept art

“Bienvenida al Nexo, aquí nos protegemos entre nosotras.”

Al plantearse el trabajo final como juego de combate entre dos robots, inmediatamente me vino a la cabeza la imagen de los combates de Tekken, que en los primeros juegos se basaba en un scroll horizontal y en las últimas entregas se ha mantenido la estética añadiendo giros manuales de cámara. También, me recordó a los rings de boxeo y los combates de distintas artes marciales como taekwondo.

Desde el comienzo he tenido claro que el enfoque que le quiero dar narrativamente no es de un combate por enfrentamiento violento, sino deportivo, con movimientos y formas inspirados en artes marciales y deportes de contacto.

Partiendo de esto, quise idear la escena con un ligero worldbuilding para facilitar el diseño. Nexo se trata de un clan subterráneo compuesto por mujeres cyborg y robots que se ocultan del peligro en un mundo cyberpunk y distópico. De esta manera, entrenan deportes de contacto y autodefensa entre ellas, preparándose para las amenazas que acechan en la calle.

Principales inspiraciones visuales.

Fuentes: Marvel (IronCat), Tekken™7 (Alisa Boskonovich), Mass Effect 3 (EDI)

Con este concepto inicial definido, resultó sencillo plantear el diseño visual de los personajes, partiendo del tipo de animaciones y combate inspirado en el boxeo, centrado en el movimiento de los brazos tanto para el ataque como la defensa.

Los primeros bocetos realizados, sin color ni texturas

Con estos bocetos pude definir las formas de los personajes y sus proporciones. Me centré en realizar diseños que complementen al elemento central que son los brazos de los personajes, con formas inspiradas en guantes de boxeo. El primer personaje tiene formas más angulares, con unas placas de protección o armadura en el pecho, y el segundo personaje tiene formas más redondeadas y un aspecto más pesado por la forma de los zapatos y brazos.

Concept art con color y texturas

Se ha optado por una paleta de colores centrada en que los personajes sean fácilmente diferenciables, incluso desde planos lejanos y con movimientos rápidos.

Antes de llegar a esta paleta de colores final, se realizó la siguiente versión, centrada en tonos complementarios:


Bocetos técnicos

Los bocetos técnicos se han realizado en blender, con formas simples para comprobar las dimensiones de los personajes y asegurar que las proporciones son correctas. Principalmente me fue útil para posicionar la armadura del primer personaje y asegurar que por su tamaño no iba a dar problemas al posicionar los brazos de distintas maneras. Al hacer esta prueba técnica en blender, pude probar distintas posiciones en ambos personajes y pude dar visto bueno al tamaño y formas iniciales del concept art.

Además, sí se mantuvo la altura de 1,95 m en el personaje 1, pero en el 2 se ajustó a 2,02 m, por la altura añadida del moño.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Bocetos técnicos en 3D de los personajes con los brazos relajados.


Escultura high-poly

En el proceso de escultura tuve mis primeros retos y dificultades, puesto que era algo nuevo para mí. La metodología que seguí fue realizar un modelo base y a partir de ese realizar detalles y diferencias para ambos personajes.

En primer lugar, hice una base con formas casi primitivas, que se ajustase al tamaño general y proporciones de ambos personajes, para poder modificarlo y adaptarlo.

Proceso de modelado inicial siguiendo las proporciones de los bocetos

Para el modelado base no realicé peinado ni puños, ya que son diferentes en ambos personajes. El proceso de este modelado fue partir de cubos con un modificador de subdivision surface, creando así formas esféricas que podría fácilmente estirar o curvar para crear las formas buscadas. Para brazos, piernas, pecho y glúteos apliqué un modificador de espejo, teniendo como eje el tronco del cuerpo.

Una vez modelada la base, uní todas las partes del cuerpo (que hasta ahora eran distintos objetos) y unifiqué la geometría de todas las partes usando el modificador remesh, que permite elegir el tamaño de voxels que va a tener el modelo. En el caso del cuerpo escogí un tamaño de 0.15 m tras probar con tamaños más grandes (0.2, 0.25 y 0.5), ya que con 0.15 podía conseguir un gran nivel de detalle sin superar los 100k triángulos en esta versión base.

La geometría original del cuerpo base con remesh tiene:

  • 46.170 caras (quads)
  • 92.340 triángulos (tris)

Una vez aplicado el remesh, trabajé en el modo escultura de blender (sculpt mode) usando principalmente las herramientas de smooth para suavizar, clay para añadir volumen y draw sharp para retirarlo.

Honestamente disfruté mucho del proceso, y mi parte favorita fue hacer los codos y las corvas, me dio la sensación de que añadir detalles en las articulaciones le daba una sensación de mayor calidad. Para hacer las axilas y los hombros busqué referencias de anatomía, y para el resto del cuerpo y detalles fui fijándome en ilustraciones de heroínas de Marvel, para poder reflejar mejor el concepto de fondo a través de la definición muscular de los personajes.

La mayor dificultad en esta etapa fue familiarizarme con las herramientas de escultura, y con todos los parámetros a tener en cuenta. Por ejemplo, el poder enmascarar zonas para trabajar de manera aislada, o aprender cuándo activar o no el modificar el tamaño de radio de la herramienta según la presión del lápiz táctil.  Al comienzo fue prueba y error, y gracias a que tenía varias versiones guardadas pude probar varias maneras de trabajar con estas herramientas y aprender, consiguiendo al final un resultado que me gustaba.

Repetí este proceso con la cabeza, dándole forma de casco, y después guardé el archivo con tres nombres distintos: uno para guardar la base, y otros dos para modelar los dos personajes a partir de esta base.

Con los dos personajes el proceso fue el mismo. En primer lugar modifiqué los cuerpos y añadí detalles grabados usando crease sharp, crease polish y pinch en el modo escultura. Después, repetí el proceso inicial de modelado + remesh + escultura con todas las herramientas que he mencionado anteriormente para las armaduras, pelo y botas.

Después de varias horas de trabajo, estos fueron los resultados:

Enlaces a sketchfab de los modelos high poly:

Personaje 1

Personaje 2


Retopología y optimización

Tras terminar los modelos high poly, empezó lo que realmente fue el grueso del ejercicio para mí. Puesto que quería aprender a hacer este tipo de modelos y dejarlos optimizados para videojuegos, una parte fundamental tras hacer el modelo high poly ha sido la retopología, para rebajar la cantidad de vértices, triángulos y quads que tiene el modelo, y poder así animar  el personaje correctamente y dejarlo preparado para que no sea pesado en un motor de videojuegos (unity, en nuestro caso).

La forma más sencilla de explicar las dificultades que he tenido con este proceso es simplemente contando las horas de trabajo. Al poder vincular Blender con Steam, puedo ver que he trabajado 32.6h en Blender en las últimas dos semanas, y solo 10 de esas 30 han sido para todo el proceso que llevaba hasta ahora contado.

Aunque haya sido muy tedioso todo el proceso de optimización y haya tenido que repetir varias zonas al principio, he aprendido muchísimo y he acabado disfrutándolo y entendiéndolo como un trabajo mecánico y tranquilo, similar a resolver puzles.

Seguramente haya mejores maneras de realizarlo, en mi caso lo hice entero manualmente, vértice a vértice, y a mitad de camino me empecé a apoyar en un add-on que me ayudaba a corregir loops con vértices mal espaciados entre sí, permitiéndome seleccionar el bucle entero y suavizar o igualar el espacio entre cada vértice del bucle. Esto me ahorró tiempo de suavizar bucles manualmente y corregir detalles, pero realmente el trabajo de retopología es muy tedioso, aunque acaba dando unos resultados muy satisfactorios.

Todo el proceso, resumido en una sola línea, sería calcar el modelo esculpido, pero creando la geometría de 0. Se aplican modificadores que ciñen la nueva geometría sobre el modelo original, como un calco en 3D, y poco a poco se va construyendo la geometría en cuadrados, evitando crear triángulos, pentágonos o distintas formas, para que no cause problemas al animar o al importar a Unity.

Primero creo un solo vértice, y voy extendiéndolo y creando más vértices hasta lograr tener bucles donde hay algún cambio anatómico. En esta imagen se puede ver que primero hice el bucle vertical del torso, luego definí cuello, hombros y pecho, y fui poco a poco creando la geometría manualmente.

En este vídeo se puede ver el proceso en un fragmento del hombro, a velocidad x 3. Al ser el comienzo del proceso iba algo más despacio, en cuanto terminé de hacer los brazos y pasé a las piernas ya había conseguido asimilar mucho mejor el proceso e ir más ágil.

En las zonas articuladas que van a sufrir más deformación procuré crear bucles que las rodeen y dejar la zona más redondeada que el resto para facilitar el rig y la animación, como se puede ver en el codo:

 

Finalmente, a continuación se puede ver la geometría de los modelos ya terminados, seguidos por la geometría original.

Con este proceso se ha reducido de 100k quads a 6k de media en ambos personajes, y en el proceso de texturizado y UVs se podrá hacer un bake de los detalles del modelo high poly sobre los modelos optimizados, logrando tener un modelo ligero, funcional y con todos los detalles del modelo original.

 

Modelos optimizados en sketchfab:

Personaje 1

Personaje 2

 

Como conclusión, agradezco muchísimo haber realizado esta práctica y haberme lanzado a hacer todo el proceso completo. Como programadora, el área que más me llama la atención son los gráficos, y considero que es fundamental comprender todo el pipeline para realmente aprender.

 

Debat0el R1 – Media para videojuegos

No hi ha comentaris.