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

Textures Repte02 – Sergi Sánchez Centelles

Publicat per

Textures Repte02 – Sergi Sánchez Centelles

*Aquesta és una versió reduïda de l’entrega. La memòria completa es troba com a document pdf en el lliurament original. Resultat final:…
*Aquesta és una versió reduïda de l’entrega. La memòria completa es troba com a document pdf en el lliurament…

*Aquesta és una versió reduïda de l’entrega. La memòria completa es troba com a document pdf en el lliurament original.

Resultat final:

Enllaços a Sketchfab

https://skfb.ly/pCKow

https://skfb.ly/pCM7q

Textures

Cada robot té una textura de color base, emissiva i de metàl·lics respectivament.


 

Debat0el Textures Repte02 – Sergi Sánchez Centelles

No hi ha comentaris.

Publicat per

Actividad R2. Media

Publicat per

Actividad R2. Media

Robot 1 Proceso de obtención del mapa UV Como en la práctica anterior, se ha utilizado Blender como programa de modelado 3D.…
Robot 1 Proceso de obtención del mapa UV Como en la práctica anterior, se ha utilizado Blender como programa…

Robot 1

Proceso de obtención del mapa UV

Como en la práctica anterior, se ha utilizado Blender como programa de modelado 3D.

El proceso de despliegue de texturas en Blender es el siguiente: Primero se selecciona el objeto, luego se marcan como “seams” (costuras) las aristas por las que se quiere separar el UV, se seleccionan todas las caras y se hace la acción “unwrap” (desplegar).

En este proceso he seleccionado automáticamente las aristas por ángulo y las he marcado como costuras. Después he ido quitando las costuras innecesarias y añadiendo otras necesarias. Por ejemplo: El torso (las líneas rojas son la costura):

Una vez añadidas todas las costuras de todo el objeto, y comprobado que quedan bien con una textura de referencia, se han seleccionado todos los objetos y se han desplegado, esto hace que los UVs de cada parte se distribuyan en un mismo mapa. En las opciones de desplegado se ha seleccionado una distancia entre las distintas islas para que el proceso de texturizado resulte más sencillo. El mapa UV resultante es el siguiente:

En Blender existen dos tipos de textura de referencia, la utilizada en los tutoriales de la asignatura (en color) y un patrón de tablero de ajedrez (en blanco y negro). Principalmente he utilizado la segunda:

Proceso de texturización

El proceso de texturización del primer robot se ha realizado completamente en Blender mediante materiales “baked” en texturas. Una de las fortalezas de Blender como programa de modelado 3D es el sistema de texturas basadas en nodos y he querido utilizar esto para texturizar el primer robot. He utilizado algunos componentes de materiales de www.blenderkit.com, que ofrece, entre otras cosas, materiales para Blender basados en texturas y nodos. Estos materiales tienen una licencia “Royalty Free”.

Por ejemplo, el torso tiene los siguientes nodos:

Y el plástico de los brazos tiene un sistema mucho mas complejo para detectar las aristas y aportar mas detalles:

Una vez asignados materiales a todos los objetos, se han “bakeado” a un mapa de texturas, quedanto como resultado las siguientes tres texturas (albedo, roughness y normales):

     

 

Robot 2

Proceso de obtención del mapa UV

El proceso de obtención del mapa UV en el segundo robot ha resultado mas sencillo, ya que sabía como hacerlo. Se ha realizado el mismo proceso que el anterior robot, pero intentando optimizar mejor el desplegado:

La imagen final del mapa UV:

Y con las texturas de referencia:

Proceso de texturización

Para este proceso de texturización he querido utilizar Gimp para modificar las texturas “bakeadas”. Esta imagen es con solamente materiales de Blender:

En Gimp he importado el mapa UV, la textura y una textura con la localización de los polígonos:

He añadido una textura, una imagen de dominio público (por Calipper en Wikipedia), de la parte trasera de una nevera:

Por último, he dibujado en el editor de texturas de Blender las separaciones objetos para dar una sensación de desgaste y suciedad. El resultado final es (con un mapa de roughness):

 

Dificultades encontradas

Una de las partes que mas me ha costado ha sido “bakear” las texturas, la opción se encuentra en un submenú muy escondido y el proceso no es nada intuitivo. Hay que tener un nodo de imagen seleccionado en cada uno de los materiales para que se renderice en esa textura. Esto estaba sobrescribiendo alguna textura de arañazos y no sabía por qué.

Otro problema ha sido, a la hora de subir el primer robot, se exportaba a fbx con 2 o 3 mapas UVs diferentes, lo que evitaba que se pusieran bien las texturas. Lo he conseguido solucionar dejando solamente un material por objeto y exportándolo.

Comentarios

Crear mapas UV es un proceso que lleva mucho tiempo, a lo largo de la práctica he notado que ganaba mas entendimiento de como se iba a comportar el mapa al añadir y quitar costuras. El primer modelo, ahora que he hecho el segundo, me parece que se puede mejorar en varias partes, la mayoría de los objetos rectangulares es mejorable, pero como tenía la intención de “bakear” al final y no editar la textura a mano los he dejado así (y falta de tiempo). Por último, comentar que el espacio entre las islas es necesario para que el proceso de “bake” funcione de manera correcta, además, pintar es más sencillo.

Links a sketchfab:

 

Debat0el Actividad R2. Media

No hi ha comentaris.

Publicat per

Actividad R2 – Media para videojuegos

Publicat per

Actividad R2 – Media para videojuegos

Mapas UV Comencé generando el mapa de los robot en un solo mapa, pero al final opte por separar en diferentes mapas…
Mapas UV Comencé generando el mapa de los robot en un solo mapa, pero al final opte por separar…

Mapas UV

Comencé generando el mapa de los robot en un solo mapa, pero al final opte por separar en diferentes mapas UV. Ya que se podía generar formas más uniformes al generarlos de manera manual, opté por mesclar el método automático y en algunos casos usar la opción de desplegar su forma base.

Robot A:

 

Robot B

Textura

La textura para el Robot A fue se saco de Textura y fue buscado como Licencias Creative Commons, en cambio las texturas para los detalles de los oxido( Oxido ) solo se logro encontrar con fondo transparente pero con derechos de autor, por ello si se desea desarrollar los personajes para un videojuego comercial se cambiaría por texturas propias.

   

Y para el Robot B, para intentar algo nuevo se optó por crear un diseño propio con la ayuda de la aplicación de Krita, ya que es un softeware libre.

 

Comentarios

Se tuvo algunos problemas con los vértices y aristas cuando se creo a los robots la primera vez, teniendo que limpiar parte de los modelos, además que a veces al volver a abrir los archivos se eliminaban o se movían algunas partes de los robots. Se busco texturas metálicas acorde al material que están compuestos los robots, de ahi para darle mas realismo se edito otras texturas de oxido para que encajara. Para el segundo robot se pensó en realizar la labor de realizar texturas desde cero usando el programa Krita.

Debat0el Actividad R2 – Media para videojuegos

No hi ha comentaris.