Grillo Tools for Unity - Documentación

Unity Tool Documentation

Vertex Color Master Tool

Trabajo de vertex color desde varias aproximaciones técnicas.

Portada wiki / Vertex Color Master Tool

Demo Video

Video de demostración

El video demo puede recorrer la aplicación de vertex color y una comprobación inmediata del resultado en el debug.

Tool 06

Vertex Color Master Tool es la herramienta de pintado y procesamiento de vertex color de Grillo Tools for Unity. Está orientada a flujos técnicos y artísticos donde el color por vértice se utiliza como máscara, control de shader, mezcla de materiales, suciedad, desgaste, variación procedural o información auxiliar dentro de la malla.

Su principal fortaleza está en reunir varios modos de trabajo dentro de una única ventana: flood por canal, pintado por curvatura, ruido procedural, pintado a partir de textura y guardado de mallas seleccionadas. Además, el flujo está pensado para ser acumulativo, de manera que varias pasadas puedan construir el resultado final.

Enfoque de trabajo

Vertex Color Master Tool no se limita a pintar un único valor sobre una malla. Su enfoque es más cercano a un sistema de capas y operaciones:

  • Elegir el canal de vertex color que se quiere trabajar.
  • Definir un modo de aplicación.
  • Aplicar una operación de pintado.
  • Repetir sobre el mismo canal o sobre otros canales.

Esto la hace especialmente útil cuando el vertex color no se usa solo como color visible, sino como dato técnico para materiales o lógica de producción.

Cómo funciona

La herramienta utiliza un componente auxiliar llamado VertexColorData para almacenar los colores procesados y aplicarlos a través de Additional Vertex Streams.

Esto es importante porque define el tipo de flujo:

  • El pintado se mantiene separado de la malla base.
  • El sistema intenta preservar los colores ya existentes en el flujo de la herramienta.
  • Si el objeto no tiene VertexColorData, la herramienta lo agrega automáticamente.

Desde el punto de vista práctico, esto favorece un flujo no destructivo y acumulativo dentro del editor.

1. General Settings

General Settings

VTX color channel

Define sobre qué canal se va a pintar (R, G, B):

Importante:

  • La herramienta trabaja con estos tres canales.
  • No expone canal alpha en la interfaz actual.

Value

Es el valor que se va a aplicar al canal seleccionado en operaciones de flood y también la intensidad base usada en algunas operaciones como curvatura.

Paint Mode

Define cómo se combina el valor entrante con el color ya existente. Esto es una parte clave de la herramienta, porque permite construir máscaras por acumulación o desgaste progresivo en lugar de sobrescribir siempre el resultado.

`Normal`:

Sustituye el valor del canal por el nuevo valor.

`Additive`:

Suma el nuevo valor al existente y limita el resultado entre 0 y 1.

`Subtractive`:

Resta el nuevo valor al existente y limita el resultado entre 0 y 1.

Flood Selected Meshes

Aplica el valor actual al canal seleccionado en todos los meshes de los objetos seleccionados, incluyendo sus hijos con MeshFilter.

Cuándo usarlo:

  • Para inicializar un canal.
  • Para rellenar rápidamente una selección completa.
  • Para preparar una base antes de operaciones de detalle.

2. Curvature Painting

Curvature Painting

Esta sección permite pintar vértices en función de la curvatura detectada en la malla.

La herramienta analiza aristas compartidas, calcula el ángulo entre caras y decide qué vértices entran dentro del rango definido. Los vértices detectados pueden visualizarse en escena y después pintarse sobre el canal activo.

Min Angle y Max Angle

Definen el rango angular que se usará para decidir qué vértices deben pintarse.

Esto permite acotar el efecto a:

  • Cambios más suaves.
  • Bordes más marcados.
  • Curvaturas convexas o cóncavas según el caso.

Debug lines

Debug lines

Activa una visualización en Scene View para inspeccionar las aristas del objeto que están siendo detectadas para ser pintadas.

Cuando está activa, se pueden mostrar:

  • Líneas de debug.
  • Longitud de esas líneas mediante Lines length.
  • Información angular con Show angle info.

Apply Curvature Paint

Pinta en el canal activo los vértices que han sido detectados por el análisis de curvatura.

Comportamiento importante:

  • Respeta Paint Mode.
  • Intenta conservar los colores previos del flujo si coinciden con el número de vértices esperado.
  • Funciona mejor cuando se seleccionan directamente meshes concretos.
  • Este modo no es ideal para trabajar seleccionando solo un padre contenedor si el flujo esperado depende de una lectura directa de malla en escena.

3. Noise Painting

Noise Painting

Esta sección aplica un mapa de Noise procedural al canal de vertex color seleccionado. La herramienta muestra en la GUI un preview del ruido procesado al ser módificado cualquiera de sus parámetros, lo que ayuda a ajustar parámetros antes de aplicarlo.

Comportamiento importante:

  • Respeta el Paint Mode establecido en General Settings.
  • Permite aplicar el patrón sobre más de un elemento al mismo tiempo.
  • Usa los bounds globales de la selección para varias modalidades de proyección.

Projection Mode

Define cómo se proyecta el mapa sobre la geometría.

  • Triplanar
  • UV
  • X
  • Y
  • Z

Noise scale

Controla la frecuencia del patrón Noise.

  • Valores bajos generan variación más amplia y suave.
  • Valores altos generan detalle más fino.

Offset

Desplaza el patrón generado en su eje X o Y.

Contrast

Aumenta o reduce el contraste del ruido antes de aplicarlo.

Posterize levels

Reduce el ruido a niveles discretos, generando patrones más escalonados y útiles para máscaras estilizadas o técnicas.

Random offset per mesh

Hace que cada mesh use un offset distinto, evitando que el patrón se repita exactamente igual en todos los objetos seleccionados.

4. Map Painting

Map Painting

Esta sección transfiere información desde una textura al canal de vertex color seleccionado. Aplica el mapa sobre el canal seleccionado en los meshes de la selección actual y sus hijos con MeshFilter.

Comportamiento importante:

  • Requiere UVs válidas en la malla.
  • Respeta el Paint Mode establecido en General Settings.
  • Conserva el estado previo cuando es posible.

Requisitos de textura:

  • La textura debe tener Read/Write Enabled.
  • No puede usar Crunch Compression.

Si no cumple esos requisitos, la herramienta avisa y cancela la operación.

Map Color Channel

Permite elegir qué canal de la textura se va a leer (R, G, B).

Contrast

Aumenta el contraste del mapa antes de aplicarlo.

Threshold

Recorta la respuesta del mapa y permite concentrar el efecto en valores más altos.

Invert Map

Invierte la máscara antes de aplicarla.

Map Texture

Es la textura origen que se usará para el pintado.

Vista previa procesada

La herramienta genera un preview en escala de grises del mapa ya procesado con contraste, threshold e inversión. Esto ayuda a comprobar rápidamente si el resultado esperado es correcto antes de aplicarlo.

5. Save Options

Save Options

Current Save Path

Muestra la ruta actual donde se guardarán las mallas.

Change Save Path

Permite elegir una carpeta dentro de Assets.

Comportamiento importante:

  • La ruta debe estar dentro de Assets/.
  • Si se elige una carpeta fuera de Assets, la herramienta la rechaza.

Save Selected Meshes

Genera assets de malla para los objetos seleccionados que tengan MeshFilter directo en el objeto seleccionado.

Nota importante:

  • Esta acción trabaja sobre los objetos seleccionados y no sobre toda la jerarquía de hijos.
  • Conviene revisar la selección antes de guardar.

Componentes complementarios.

Vertex Color Master Tool funciona junto dos Scripts complementarios que optimizan su funcionamiento

VertexColorData.cs

VertexColorData

Es el componente que guarda y reaplica la información de vertex color de cada mesh. Guarda los colores pintados en storedColors, crea o reutiliza una malla auxiliar (additionalMesh) y la asigna al MeshRenderer como Additional Vertex Streams, para aplicar color sin modificar la malla base. Además, si la malla cambia de tamaño o no hay colores guardados, se reajusta y usa un fallback negro. En editor se reaplica al habilitarse o validarse, y en runtime puede configurarse para aplicarse una sola vez y desactivarse después.

VertexColorApplyQueue

VertexColorApplyQueue es una cola de aplicación en runtime. Su función es recoger los VertexColorData que se activan al entrar en juego y aplicarles sus colores poco a poco en LateUpdate, con un límite por frame (maxItemsPerFrame y maxMillisecondsPerFrame) para evitar picos de rendimiento. También evita duplicados usando un HashSet, y crea automáticamente una instancia oculta singleton si aún no existe.

Más información

Notas de comportamiento

  • La herramienta trabaja sobre la selección actual y normalmente procesa también meshes hijos.
  • Cada operación intenta conservar el trabajo previo si la topología sigue siendo compatible.
  • VertexColorData se agrega automáticamente como componente al objeto pintado cuando hace falta.
  • Las operaciones pueden registrar overrides al trabajar en Prefab Mode.

Limitaciones

  • La interfaz actual trabaja solo sobre canales R, G y B.
  • Map Painting necesita UVs válidas.
  • Map Painting no funciona con texturas en Crunch Compression.
  • Curvature Painting no es la mejor opción cuando se trabaja solo desde padres contenedores sin una selección clara de mesh.
  • Conviene tener en cuenta que la herramienta depende del número de vértices para mantener correctamente los datos acumulados.