How to create a 3D map from a heightmap?

Heightmaps: El Secreto de la Profundidad en Juegos

25/05/2015

Valoración: 4.8 (13765 votos)

¿Alguna vez te has detenido en un videojuego a admirar la increíble textura de un muro de piedra, un suelo de adoquines o la corteza de un árbol? ¿Has notado cómo esas superficies no parecen planas, sino que tienen un relieve y una profundidad que casi podrías tocar? No estás viendo polígonos extra ni modelos 3D increíblemente complejos. Lo que probablemente estás presenciando es la magia de una técnica gráfica conocida como Height Mapping o Mapeo de Altura. Es uno de los trucos más ingeniosos en el arsenal de los desarrolladores para engañar a nuestros ojos y sumergirnos en mundos virtuales cada vez más realistas, sin sacrificar todo el rendimiento de nuestro sistema.

Are heightmaps available for free?
The heightmaps available from this page, are provided for free under a CCO 1.0 Universal creative commons license. You may need to scale the height of the terrain to get the best effect. When importing the height map the edges may get stretch ed or don’t fit exactly – this can be fixed by cropping the heightmap or using available sculpt tools.
Índice de Contenido

¿Qué es Exactamente un Heightmap?

En su forma más simple, un heightmap (o mapa de altura) es una textura en escala de grises. No es una imagen colorida que vemos directamente en el juego, sino un mapa de datos que le dice al motor gráfico cómo debe comportarse la superficie de un objeto. La regla es muy sencilla: el blanco representa las áreas más altas y el negro las áreas más bajas. Todos los tonos de gris intermedios definen las alturas relativas entre esos dos extremos.

Imagina que tienes una foto de un muro de ladrillos. Es una imagen plana. Ahora, creas un heightmap para ese muro. En esta nueva imagen en escala de grises, los ladrillos serían de un color gris claro o blanco, mientras que el mortero que los une sería de un color gris oscuro o negro. El motor del juego lee esta información y entiende que los ladrillos deben "sobresalir" y el mortero debe "hundirse". Es, en esencia, un mapa topográfico para las micro-superficies de una textura.

Heightmaps vs. Normal Maps: La Batalla por el Detalle

Es muy común confundir los heightmaps con otra técnica muy popular: los Normal Maps. Aunque ambos buscan añadir detalle a superficies planas, lo hacen de maneras fundamentalmente distintas.

Un Normal Map es una textura de colores azulados y púrpuras que le dice al motor gráfico cómo debe reaccionar la luz en cada punto de una superficie. Es un truco de iluminación. Finge el relieve alterando la dirección en la que la luz rebota, creando sombras y brillos que hacen que una superficie plana parezca tener baches, arrugas o grabados. Es increíblemente eficiente y por eso se usa masivamente en todos los juegos modernos.

El Heightmap, por otro lado, va un paso más allá. Usado a través de una técnica llamada Parallax Mapping, no solo afecta a la iluminación, sino que desplaza visualmente la textura. Crea una ilusión de paralaje: los puntos de la textura que el heightmap define como "altos" se mueven de forma diferente a los puntos "bajos" cuando cambia el ángulo de la cámara. Esto genera un efecto de oclusión a nivel de superficie, donde las partes más altas de la textura tapan a las más bajas, creando una sensación de volumen y profundidad mucho más convincente que la de un normal map por sí solo.

Tabla Comparativa Rápida

CaracterísticaNormal MapsHeightmaps (Parallax Mapping)
Función PrincipalSimular la dirección de la luz para fingir relieve.Simular profundidad real y oclusión en la superficie.
Cómo FuncionaAltera los cálculos de iluminación en cada píxel.Desplaza las coordenadas de la textura según la altura y el ángulo de visión.
Coste de RendimientoBajo. Es una técnica muy optimizada.Medio a Alto. Es más costoso computacionalmente.
Efecto VisualBuena ilusión de detalle y relieve.Excelente ilusión de volumen y profundidad, con auto-sombreado y oclusión.
Mejor UsoDetalles finos: arrugas en la ropa, poros en la piel, arañazos en metal.Relieves pronunciados: adoquines, muros de roca, suelos de grava.

La Magia en Acción: Un Ejemplo Visual

Para entenderlo mejor, imaginemos de nuevo ese muro de rocas. Los desarrolladores lo implementan en tres fases:

  1. Solo con la textura de color (Albedo): Vemos un muro completamente plano. Es como una fotografía de rocas pegada sobre una pared lisa. No hay ninguna sensación de tridimensionalidad.
  2. Añadiendo el Normal Map: ¡La cosa mejora! Ahora la luz del juego interactúa con el muro. Las rocas proyectan pequeñas sombras y tienen brillos. Ya parece un muro con relieve, pero si nos acercamos y miramos desde un ángulo muy bajo, el truco se deshace. Notaremos que la superficie sigue siendo perfectamente plana y ninguna roca tapa a la otra.
  3. Añadiendo el Heightmap: ¡Este es el salto de calidad! Ahora, al movernos, las rocas más cercanas a nosotros parecen sobresalir de verdad y ocultan partes de las rocas que están detrás. El mortero se ve hundido. La superficie tiene un volumen tangible. El efecto es increíblemente convincente y es lo que marca la diferencia entre un gráfico "bueno" y uno "impresionante".

Las Limitaciones del Truco: ¿Dónde está el Límite?

A pesar de su poder, el Parallax Mapping basado en heightmaps sigue siendo una ilusión óptica. Su principal limitación es que no modifica la geometría real del modelo 3D. Esto tiene una consecuencia muy clara: no afecta a la silueta del objeto.

Imagina una esfera perfectamente lisa. Si le aplicamos un heightmap de pinchos afilados, de frente se verá increíblemente puntiaguda y peligrosa. Pero si la miramos de perfil, contra el cielo, su contorno seguirá siendo un círculo perfecto. Los pinchos no sobresaldrán de la silueta original porque, en realidad, no existen como geometría. Todo el efecto ocurre "hacia adentro" de la superficie del polígono original.

Para modificar la silueta, los desarrolladores deben recurrir a técnicas aún más avanzadas y costosas, como el Tessellation o el Displacement Mapping, que sí añaden polígonos y alteran la forma del modelo en tiempo real. Los heightmaps son el equilibrio perfecto entre realismo visual y rendimiento.

Un Vistazo a los Mapas de Oclusión

A menudo, la conversación sobre heightmaps nos lleva a otro tipo de mapa: el mapa de oclusión ambiental (Ambient Occlusion o AO map). Este es también una textura en escala de grises que añade realismo al oscurecer áreas donde la luz ambiental tendría dificultades para llegar, como las grietas, las esquinas o los puntos de contacto entre dos superficies. Añade esas pequeñas sombras suaves que dan peso y cohesión a los objetos.

Curiosamente, existe una sinergia entre ambos mapas. Las áreas más bajas de un heightmap (las negras) suelen ser las mismas grietas y recovecos que deberían estar más oscurecidas por la oclusión ambiental. Por esta razón, en muchas ocasiones los artistas 3D utilizan el propio heightmap, o una versión modificada del mismo, como base para crear el mapa de oclusión, optimizando así el flujo de trabajo.

Preguntas Frecuentes (FAQ)

¿Un heightmap cambia la forma real del objeto?

No. El Parallax Mapping, que es la técnica más común que usa heightmaps, es un efecto visual que ocurre en el renderizado y no altera la geometría subyacente del modelo. La silueta del objeto permanecerá sin cambios.

¿Todos los juegos usan heightmaps?

No necesariamente. Es una técnica más exigente en términos de rendimiento que los normal maps. Los desarrolladores la utilizan de forma estratégica en superficies donde el impacto visual es mayor y justifica el coste computacional, como suelos, paredes y objetos importantes en primer plano.

¿Es lo mismo que el Displacement Mapping?

No exactamente, aunque ambos usan un mapa de altura. El Parallax Mapping es una ilusión que desplaza los píxeles de la textura en el espacio de la pantalla. El Displacement Mapping (a menudo combinado con Tessellation) utiliza el heightmap para modificar físicamente los vértices de la malla poligonal, alterando la geometría real del objeto, incluida su silueta. Es mucho más realista, pero también inmensamente más costoso en rendimiento.

¿Por qué se usa en combinación con un Normal Map?

Ambos se complementan a la perfección. El heightmap proporciona la profundidad y el efecto de paralaje a gran escala (los adoquines), mientras que el normal map añade los detalles finos de iluminación sobre esas superficies (la porosidad y las pequeñas grietas en cada adoquín). Juntos, crean un resultado final increíblemente detallado y realista.

La próxima vez que estés explorando un mundo virtual, fíjate bien en las superficies. Intenta identificar este efecto. Muévete hacia los lados frente a un muro de piedra y observa si las rocas se ocultan entre sí. Si lo hacen, ya sabes cuál es el secreto: estás viendo un heightmap en acción, uno de los pilares silenciosos que sostienen el asombroso realismo de los videojuegos modernos.

Si quieres conocer otros artículos parecidos a Heightmaps: El Secreto de la Profundidad en Juegos puedes visitar la categoría Juegos.

Subir