Los mapas normales son una de las técnicas más potentes en el renderizado en tiempo real. Permiten que superficies de polígonos planos muestren detalles complejos de superficie — protuberancias, ranuras, arañazos, poros — sin añadir ni un solo triángulo extra a la malla. Un mapa normal es una imagen RGB donde cada píxel codifica la dirección que una superficie enfrenta en ese punto, y el renderizador usa esta información para calcular la iluminación como si la geometría fuera mucho más detallada de lo que realmente es.
Cómo los mapas normales codifican la dirección
Cada píxel en un mapa normal almacena un vector de dirección 3D empaquetado en tres canales de color. El canal Rojo codifica el eje X (inclinación izquierda-derecha), el canal Verde codifica el eje Y (inclinación arriba-abajo), y el canal Azul codifica el eje Z (cuánto apunta la superficie directamente hacia afuera). Una superficie plana que apunta directamente hacia la cámara tiene una normal de (0, 0, 1), que en el espacio de color RGB se mapea a (128, 128, 255) — ese color azul-morado característico que se ve en todos los mapas normales.
La fórmula de mapeo es sencilla: cada canal almacena valores de 0 a 255, representando el rango −1.0 a +1.0. Un valor de 128 significa 0 (sin inclinación), 0 significa inclinación completa en la dirección negativa, y 255 significa inclinación completa positiva. El renderizador desempaqueta estos valores de vuelta a vectores de punto flotante y los usa en los cálculos de iluminación en lugar de la normal geométrica.
Espacio tangente vs. espacio de objeto
Mapas normales en espacio tangente
Los mapas normales en espacio tangente son, con diferencia, el tipo más común. Definen la perturbación de superficie relativa a la orientación del propio polígono, usando un sistema de coordenadas construido a partir del tangente, bitangente y normal geométrica de la superficie. Como las direcciones son relativas, el mismo mapa normal en espacio tangente funciona correctamente en cualquier orientación de superficie — puede aplicarse a un suelo, una pared o un objeto curvo y la iluminación responderá correctamente.
Los mapas en espacio tangente siempre parecen predominantemente azules porque la mayoría de los píxeles apuntan aproximadamente hacia afuera (eje Z dominante). Las pequeñas variaciones en rojo y verde codifican los detalles finos de la superficie.
Mapas normales en espacio de objeto
Los mapas normales en espacio de objeto almacenan direcciones absolutas relativas al sistema de coordenadas local del objeto. Parecen multicolores porque las normales apuntan en todas las direcciones. Los mapas en espacio de objeto son más simples de renderizar (sin cálculo del marco tangente) y evitan artefactos del espacio tangente en las costuras UV, pero están bloqueados a una malla específica. Deformar o reutilizar la malla rompe la iluminación. Se usan ocasionalmente para arquitectura estática o terreno.
Mapas normales vs. mapas de desplazamiento
Los mapas normales solo afectan a la iluminación — no mueven la geometría. Esto significa que los bordes de la silueta permanecen perfectamente suaves, y los efectos de paralaje están ausentes. Una pared de ladrillo con un mapa normal parece con relieve de frente pero tiene un perfil plano en ángulos rasantes. Los mapas de desplazamiento mueven realmente los vértices, creando profundidad geométrica real con siluetas correctas y auto-oclusión. La contrapartida es el coste: el desplazamiento requiere teselación densa y es costoso en el renderizado en tiempo real.
Para la mayoría de las aplicaciones en tiempo real, los mapas normales proporcionan la mejor relación calidad-rendimiento. Usa el desplazamiento solo para superficies principales de primer plano donde la precisión de la silueta importa, o en renderizadores offline como Cycles o Arnold donde el coste de teselación es aceptable.
Generación de mapas normales a partir de mapas de altura
Un mapa de altura (escala de grises, blanco = alto, negro = bajo) puede convertirse a un mapa normal calculando el gradiente de superficie en cada píxel. El algoritmo muestrea los píxeles vecinos para determinar la pendiente en X e Y, y luego construye un vector normal a partir de esas pendientes. La herramienta de mapa normal de Texturize hace exactamente esto — sube cualquier mapa de altura en escala de grises o textura, y genera un mapa normal en espacio tangente con intensidad ajustable.
El parámetro de intensidad controla cuán pronunciadas parecen las protuberancias percibidas. Los valores de intensidad bajos producen variación superficial sutil (buena para materiales lisos como el mármol pulido), mientras que los valores altos crean ranuras profundas y protuberancias pronunciadas (ideal para piedra rugosa o corteza).
Errores comunes
- Espacio de color incorrecto — Los mapas normales deben importarse como datos lineales (Non-Color), nunca como sRGB. El espacio de color incorrecto produce iluminación desvaída o exagerada.
- Canal verde invertido — OpenGL y DirectX usan convenciones del eje Y opuestas. Si tu mapa normal parece invertido (las protuberancias aparecen como hendiduras), voltea el canal verde. Blender y la mayoría de las herramientas DCC usan la convención OpenGL; Unreal Engine usa DirectX.
- Bakeo a resolución incorrecta — Los mapas normales bakeados de mallas de alta a baja resolución necesitan resolución suficiente para capturar detalles finos. Los bakeos de baja resolución producen normales de aspecto blocky.
- Uso excesivo de la intensidad — Aumentar demasiado la intensidad del mapa normal hace que las superficies parezcan artificialmente rugosas y crea facetado visible bajo iluminación especular.
Consejos prácticos
Combina una textura base del Generador de ladrillo o Generador de adoquín con un mapa normal derivado para una configuración de material completa. En Blender, conecta el mapa normal a través de un nodo Normal Map configurado en Tangent Space. En Unreal Engine, conéctalo a la entrada Normal del material después de muestrearlo con una expresión de Normal Map. Prueba tus mapas normales bajo múltiples ángulos de iluminación — rotar una luz direccional alrededor de la superficie revela cualquier error de bakeo o problema de canal.