|

¿Por qué tus texturas se ven diferente en Unreal Engine que en Substance Painter? Guía de Color Space

Si alguna vez exportaste tus texturas de Substance Painter, las cargaste en Unreal Engine 5 y tu modelo se veía completamente diferente, más oscuro, más brillante, con colores incorrectos, no estás solo. Este es uno de los problemas más comunes entre artistas 3D que empiezan el pipeline de producción. La causa en el 99% de los casos: Color Space mal configurado.

¿Qué es el Color Space y por qué importa?

El Color Space (espacio de color) define cómo se almacenan y se interpretan los valores numéricos de color en una imagen. Dos espacios de color son los que necesitas dominar como game artist:

  • sRGB: Espacio de color diseñado para monitores. Los valores se almacenan con una curva gamma aplicada (~2.2). Es lo que ven tus ojos en pantalla.
  • Lineal (Linear): Los valores se almacenan de forma matemáticamente exacta, sin corrección gamma. Es el espacio que usan los motores de render y shaders para calcular iluminación correctamente.

El problema surge porque Substance Painter trabaja en sRGB (para que lo que ves en pantalla se vea “correcto”) pero Unreal Engine procesa la iluminación en espacio lineal. Si no haces la conversión correcta al exportar, los valores de tus texturas llegan “dos veces corregidos” o “sin corregir” a UE5, y el resultado es un material que no se parece en nada a lo que diseñaste.

Cómo interpreta Unreal Engine cada tipo de textura

No todas las texturas deben tratarse igual. Unreal Engine diferencia entre texturas de color y texturas de datos:

TexturaTipoConfiguración en UE5¿Por qué?
Albedo / Base ColorColorsRGB: ONEs una imagen de color visual, necesita corrección gamma
RoughnessNon-ColorsRGB: OFFSon datos numéricos, no color visual, sRGB los distorsionaría
MetallicNon-ColorsRGB: OFFIgual que Roughness, valor binario 0 o 1
Normal MapNon-ColorsRGB: OFF + Normal MapAlmacena direcciones de vectores, no colores
AO (Ambient Occlusion)Non-ColorsRGB: OFFMáscara de sombreado, valor lineal puro
EmissiveColorsRGB: ONColor de emisión visual, mismo tratamiento que Albedo
Opacity / AlphaNon-ColorsRGB: OFFMáscara binaria o de gradiente, espacio lineal

Unreal Engine 5 por defecto activa sRGB en todas las texturas al importarlas. Si importas tu mapa de Roughness y dejas sRGB activo, UE5 aplicará una conversión gamma que no debería estar ahí, alterando completamente los valores de tu material.

Configuración correcta en Substance Painter al exportar

Cuando exportas desde Substance Painter hacia Unreal Engine, usa la plantilla oficial “Unreal Engine 4 (Packed)” o “Unreal Engine 5” si está disponible. Esta plantilla ya maneja el color space correctamente para cada canal.

Si exportas de forma manual, estas son las reglas:

  • Base Color: Exportar en sRGB
  • Roughness, Metallic, AO: Exportar en espacio lineal (desactiva sRGB en el export)
  • Normal Map: Exportar en lineal, formato DirectX (Y invertida para UE5)

En Substance Painter ve a File → Export Textures y verifica que el output template esté configurado como Unreal Engine 4 (Packed). Este template empaca Roughness + Metallic + AO en los canales R, G, B de una sola textura (el famoso ORM), ahorrando memoria de VRAM.

Los valores seguros: por qué nunca debes usar negro o blanco puros

Otro error frecuente es usar negro puro (valor 0) o blanco puro (valor 255) en tus mapas de Roughness y Metallic. En la realidad física no existen materiales con estas propiedades extremas:

  • Roughness 0 (negro puro) = espejo perfecto, absolutamente liso. No existe en la naturaleza.
  • Roughness 255 (blanco puro) = superficie completamente difusa sin ningún reflejo. Tampoco existe.
  • Metallic 255 (blanco puro) = metal 100% puro sin ninguna imperfección. Irreal.

El rango recomendado por Epic Games para PBR físicamente correcto es:

CanalRango recomendadoEquivalente 0–255Notas
Roughness 0.1, 0.9 ≈ 25, 230 [!] Evita 0 (espejo perfecto) y 1 (mate absoluto)
Metallic 0 o 1 únicamente 0 o 255 Valores intermedios solo en máscaras de transición
Base Color, Metales 180, 255 180, 255 Reflectancia alta por naturaleza del metal
Base Color, No metales 50, 240 50, 240 [!] Evita negro puro y blanco puro

Normal Maps: DirectX vs OpenGL

Otro problema clásico: el normal map se exporta correcto en color space pero el modelo tiene un relieve invertido en UE5. Esto se debe al sistema de coordenadas del normal map:

  • Substance Painter usa por defecto OpenGL (canal Y verde apunta hacia arriba)
  • Unreal Engine usa DirectX (canal Y verde apunta hacia abajo)

La solución es simple: en Substance Painter ve a Edit → Project Configuration y cambia el Normal Map Format a DirectX. O bien, en el material de UE5 puedes invertir el canal G del normal map conectando un nodo Multiply con valor -1.

Checklist: 6 pasos antes de exportar tus texturas

  1. [01] Usa la plantilla Unreal Engine 4 (Packed) en el export de Substance Painter
  2. [02] Verifica que tu Base Color esté en sRGB y el resto en lineal
  3. [03] Configura el Normal Map en formato DirectX (no OpenGL)
  4. [04] Al importar en UE5, desactiva sRGB en Roughness, Metallic, AO y Normal
  5. [05] Mantén tus valores de Roughness y Metallic dentro del rango PBR (evita 0 y 255 puros)
  6. [06] Valida tu material bajo diferentes condiciones de iluminación en UE5 antes de cerrar

Conclusión

El Color Space no es un detalle técnico menor, es la base sobre la que descansa todo tu pipeline de texturizado. Entender la diferencia entre sRGB y lineal, y configurar correctamente cada textura al importar en Unreal Engine, es lo que separa un material que “se ve raro” de uno que se ve profesional bajo cualquier condición de iluminación.

¿Quieres dominar este y otros fundamentos del pipeline AAA de forma estructurada? En PropGon Academy estamos construyendo el primer Game Art Track en español con metodología de producción real. Asegura tu lugar aquí →

Entradas similares