Saltar al contenido principal

Unity - Shaders + Addon - Vertex Paint - TrimSheets

Descripción General

El vertex paint es un método de texturizado y control de materiales que consiste en asignar información de color directamente a los vértices de una malla 3D, en lugar de depender únicamente de mapas de texturas tradicionales. Cada vértice almacena valores de color (generalmente en formato RGBA), y el software se encarga de extender esos valores a lo largo de las caras interpolando entre ellos, es decir, calculando transiciones suaves entre los colores de cada vértice. De esta manera, una cara cuyos vértices tienen distintos colores se rellenará automáticamente con un degradado continuo que mezcla esos valores. Esto permite utilizar la propia topología del modelo para definir zonas de color, máscaras o variaciones de material.

En Blender, el vertex paint se gestiona a través de Color Attributes, lo que facilita pintar colores personalizados o máscaras de control sin necesidad de crear imágenes UV. Estos datos luego pueden exportarse y aprovecharse en motores de render en tiempo real.

image-20251127-170242.png

En Unity, los vertex colors pueden leerse dentro de un shader (por ejemplo, en Shader Graph a través del nodo Vertex Color). De esta manera es posible utilizarlos para:

  • Mezclar diferentes texturas dentro de un mismo material.
  • Aplicar variaciones de color y efectos sin necesidad de múltiples materiales.
  • Controlar propiedades como rugosidad, metalicidad o transparencias de manera localizada.

Este flujo permite optimizar la producción, ya que con un solo material se pueden obtener múltiples variaciones visuales, reduciendo draw calls y simplificando la gestión de assets. Además, combinado con herramientas personalizadas (como el addon en Blender para aplicar colores rápidamente a vértices seleccionados), se convierte en una técnica práctica y flexible para proyectos en tiempo real.

Motivación para el desarrollo del addon en Blender

De forma nativa, Blender ofrece herramientas de Vertex Paint, pero no permite un control directo de aplicar colores únicamente a los vértices seleccionados en Edit Mode. Esto obliga al artista a trabajar siempre en modo pintura, donde es más difícil tener precisión al delimitar áreas específicas, especialmente en modelos de tipo hard surface (con geometría definida, ángulos rectos y superficies planas).

Con el fin de agilizar y simplificar el flujo de trabajo, se desarrolló un addon personalizado que permite:

  • Aplicar colores predefinidos (R, G, B, Alpha) con un solo clic sobre la selección activa de vértices.
  • Usar la selección en Edit Mode como método más intuitivo para marcar áreas, evitando la necesidad de pintar a mano con el pincel.
  • Optimizar el proceso en modelos hard surface, donde las transiciones suelen ser más claras y no requieren degradados suaves, sino asignaciones de color directas en zonas definidas.
  • Integrarse con el pipeline de Unity, al generar máscaras o controles directamente sobre los vértices que luego se utilizan en shaders para mezcla de materiales o variaciones visuales.

Este addon busca cubrir una necesidad concreta: dar más control y rapidez al artista, eliminando pasos intermedios y permitiendo que el vertex paint sea una herramienta práctica incluso en escenarios donde, de forma nativa, resultaba poco flexible.

Guía de trabajo

A continuación se describe el flujo de trabajo que integra el pintado de vértices en Blender, utilizando un addon desarrollado en conjunto con ChatGPT, y su posterior aplicación mediante un shader en Unity.

Consideraciones

  • Asignar color base Es recomendable pintar de rojo todas las partes del objeto que usarán la textura por defecto. Esto asegura que, en caso de no definir otro color, no se mezclen datos con otros canales de vertex paint.

  • Aplicar color sólido en Blender Para lograr un pintado uniforme en una zona específica de la malla, lo más práctico es:

    • Separar temporalmente la parte de la geometría que se desea colorear.
    • Aplicar el color de manera sólida sobre esa sección.
    • Volver a unirla a la malla principal y fusionar los vértices, manteniendo una topología limpia.
    • Volver aplicar el smooth.

Enlaces de descarga

Comentarios

En Maya se puede seleccionar fácilmente vértices y pintarlos, en este video podemos ver el proceso:

https://youtube.com/shorts/psVS6ZbvKKE?si=k8sgSKbTFl9AEzjg

Ventajas

  • Optimización de materiales: un solo material puede adaptarse a múltiples variaciones visuales, reduciendo el número de materiales y draw calls.
  • Control artístico directo: permite al artista marcar zonas de mezcla de texturas, tintes o efectos sin depender de mapas adicionales.
  • Integración con shaders personalizados: el vertex paint puede vincularse no solo al color base, sino también a parámetros como rugosidad, metalicidad, transparencia u otros efectos visuales.
  • Rapidez de iteración: pintar sobre la malla es más inmediato que preparar y exportar mapas intermedios.

Desventajas

  • Dependencia de la densidad de vértices: la resolución del color está determinada por la cantidad de geometría; un modelo con pocos vértices ofrece menor precisión de detalle.
  • Exportación y compatibilidad: no todos los formatos soportan de la misma manera los vertex colors, lo cual puede requerir ajustes al exportar o importar.
  • Visualización en motores: requiere configurar shaders personalizados o adaptados para aprovechar efectivamente esta información.

Elaboró

Cassandra Rodríguez