20/08/2009
En el mundo del desarrollo de videojuegos, el realismo y la inmersión son dos de los pilares fundamentales para capturar la atención del jugador. Uno de los elementos técnicos más poderosos y versátiles para lograrlo es el cubemap. Aunque su nombre pueda sonar intimidante, se trata de una técnica increíblemente útil para simular reflejos, crear cielos convincentes (skyboxes) y mejorar la iluminación general de una escena. Si alguna vez te has maravillado con el brillo de una armadura metálica o has sentido que el cielo de un juego te envolvía por completo, es muy probable que un cubemap estuviera trabajando tras bambalinas. En esta guía definitiva, desglosaremos qué es un cubemap y te enseñaremos varios métodos para crearlos, desde el más sencillo dentro de Unity hasta procesos más avanzados para profesionales.

¿Qué es Exactamente un Cubemap y por qué Debería Importarte?
Imagina que te encuentras en el centro de una caja gigante. Si pintaras una imagen diferente en cada una de las seis caras interiores de esa caja (frente, atrás, izquierda, derecha, arriba y abajo), habrías creado un cubemap. En esencia, un cubemap es una colección de seis texturas cuadradas que, unidas, forman el entorno completo visto desde un único punto. Esta sencilla pero ingeniosa estructura es la base de varias técnicas gráficas cruciales:
- Skyboxes: La aplicación más común. El cubemap actúa como el cielo y el horizonte distante del juego. Al envolver toda la escena, crea la ilusión de un mundo vasto y abierto sin necesidad de modelar geometría lejana, ahorrando una cantidad enorme de recursos.
- Reflejos Estáticos: Para superficies reflectantes como metales, cristales o agua, los cubemaps son una solución eficiente. Un objeto puede usar un cubemap para simular el reflejo del entorno. Aunque no son reflejos en tiempo real (no reflejarán objetos en movimiento), son perfectos para dar un aspecto pulido y realista a los materiales sin el altísimo coste de rendimiento del ray tracing.
- Iluminación Basada en Imagen (IBL): Los cubemaps también pueden almacenar información de iluminación de una escena. El motor de juego puede usar los colores y la intensidad de la luz del cubemap para iluminar los objetos de forma más natural y coherente con el entorno, integrándolos perfectamente en el mundo.
Método 1: Creando un Cubemap Directamente en Unity
Este es el método más directo si ya tienes tu escena construida dentro de Unity y quieres capturarla para usarla en reflejos o como skybox. Es ideal para generar reflejos precisos de una ubicación específica en tu nivel.
Paso 1: La Herramienta Esencial
Unity no incluye una herramienta para renderizar cubemaps desde el editor de forma nativa en su menú principal, pero podemos añadirla fácilmente con un script. Necesitarás un script llamado RenderCubemapWizard.cs. Puedes encontrarlo fácilmente en foros de Unity o repositorios de código. Una vez que lo descargues, sigue estos pasos:
- En la pestaña "Project" de Unity, haz clic derecho y crea una nueva carpeta llamada
Editor. Es crucial que tenga exactamente ese nombre, ya que Unity trata las carpetas "Editor" de una manera especial, ejecutando los scripts que contienen solo dentro del editor y no en el juego final. - Arrastra y suelta el script
RenderCubemapWizard.csdentro de esta carpeta.
Paso 2: Definir el Punto de Captura
El cubemap es una captura de 360 grados desde un punto específico. Debemos decirle a Unity desde dónde mirar. Para ello, crea un objeto vacío en tu escena:
- Ve a
GameObject > Create Emptyen el menú superior. - Nombra este objeto como "PosicionDeRenderizado" o algo similar para identificarlo fácilmente.
- Mueve este objeto al punto exacto desde el cual quieres capturar tu entorno. Por ejemplo, en el centro de una habitación o al nivel de los ojos del jugador en un espacio abierto.
Paso 3: Crear y Configurar el Asset del Cubemap
Ahora necesitamos crear el archivo que contendrá las seis texturas de nuestro cubemap.
- En la pestaña "Project", haz clic derecho y ve a
Create > Legacy > Cubemap. - Nómbralo como "MiPrimerCubemap" o un nombre descriptivo. Verás que se crea un asset gris sin texturas.
- Selecciona tu nuevo cubemap. En el Inspector, verás varias opciones. Dos son extremadamente importantes:
- Readable: ¡Debes marcar esta casilla! Habilitar esta opción permite que los scripts (como el que añadimos) accedan y modifiquen los datos de píxeles de la textura. Sin esto, el proceso fallará.
- Face Size: Define la resolución de cada una de las seis caras del cubemap. Un valor más alto significa mayor calidad y detalle, pero también más memoria. 512px es un buen punto de partida para la mayoría de las aplicaciones, mientras que 1024px o 2048px son ideales para PC de gama alta o cuando el detalle de los reflejos es primordial.
Paso 4: ¡A Renderizar!
Con todo preparado, es hora de la magia. Gracias al script que añadimos, ahora tendrás una nueva opción en el menú:
- Ve a
GameObject > Render into Cubemapen el menú superior. - Aparecerá una pequeña ventana. Tiene dos campos que debes rellenar:
- Render From Position: Arrastra y suelta aquí tu objeto vacío ("PosicionDeRenderizado").
- Cubemap: Arrastra y suelta aquí tu asset de cubemap ("MiPrimerCubemap").
- Haz clic en el botón "Render!". ¡Listo! Verás cómo tu asset de cubemap gris se llena con la captura de 360 grados de tu escena. Ahora puedes asignarlo a un material, a la configuración de skybox o a una sonda de reflexión.
Método 2: Convertir una Imagen Panorámica 360°
A veces no tienes una escena 3D, sino una imagen panorámica (también conocida como imagen equirectangular), como las que se toman con cámaras 360° o se renderizan en software de modelado. Convertir estas imágenes en un formato de cubemap es un proceso común.
Existen numerosas herramientas online y offline para esto. El proceso general suele ser muy simple:
- Busca un conversor: Utiliza términos como "360 panorama to cubemap converter" o "equirectangular to cubemap" en tu buscador. Encontrarás muchas opciones web gratuitas.
- Sube tu imagen: Carga tu imagen panorámica en formato JPG o PNG.
- Procesa la imagen: La herramienta procesará la imagen y la proyectará en las seis caras de un cubo.
- Descarga las caras: Generalmente, la herramienta te permitirá descargar las seis imágenes por separado (frente, atrás, arriba, abajo, izquierda, derecha) o en una sola imagen dispuesta en un formato de "cruz" o "fila".
Una vez que tengas las seis imágenes, puedes importarlas a Unity y asignarlas manualmente a las ranuras correspondientes de un asset de Cubemap.

Método 3: Kubi, la Herramienta para Profesionales y Automatización
Para desarrolladores y artistas técnicos que necesitan procesar grandes cantidades de imágenes o integrar la creación de cubemaps en un pipeline automatizado, una herramienta de línea de comandos como Kubi es la solución ideal. Kubi es un generador de cubemaps extremadamente rápido y flexible basado en la potente librería de procesamiento de imágenes `libvips`.
Sus principales ventajas son la velocidad y la capacidad de ser controlado por scripts. Por ejemplo, podrías convertir cientos de fotogramas de una animación panorámica en cubemaps en un tiempo récord.
Características Principales de Kubi:
- Instalación sencilla: Se instala a través de pip, el gestor de paquetes de Python:
pip install git+https://github.com/indus/kubi.git. - Flexibilidad de formatos: Soporta todos los formatos que `libvips` puede manejar (JPEG, PNG, TIFF, WEBP, etc.).
- Diferentes layouts: Puede exportar las caras del cubemap como archivos separados, o en una sola imagen en formato de fila, columna o cruz.
- Rendimiento superior: Como muestran sus benchmarks, es significativamente más rápido que otras alternativas.
Tabla Comparativa de Rendimiento (Ejemplo)
Conversión de una imagen equirectangular de 4096x2048px a un cubemap en formato de cruz.
| Tamaño de Cara | kubi | Otras Herramientas (Ej. py360convert) |
|---|---|---|
| 1024px | ~0.9 segundos | ~2.6 segundos |
| 2048px | ~1.6 segundos | ~8.6 segundos |
| 4096px | ~4.7 segundos | ~32.2 segundos |
Preguntas Frecuentes (FAQ)
¿Cuál es el mejor "Face Size" para un cubemap?
Depende completamente de tu objetivo. Para reflejos en objetos pequeños o en juegos para móviles, 512x512px puede ser suficiente. Para un skybox en un juego de PC o consola, 1024x1024px es un estándar de buena calidad. Si quieres reflejos nítidos en superficies grandes y de alta calidad, 2048x2048px es la mejor opción, pero ten en cuenta el impacto en la memoria VRAM.

¿Por qué mi cubemap se ve borroso o pixelado?
Las causas más comunes son un "Face Size" demasiado bajo para la resolución a la que se está mostrando, o una configuración de compresión de textura demasiado agresiva. Intenta aumentar el tamaño de la cara y asegúrate de que la configuración de compresión en Unity (por ejemplo, "High Quality") sea la adecuada.
¿Puedo crear un cubemap de forma dinámica durante el juego?
Sí, es posible. Esta técnica se llama "real-time reflections" y consiste en renderizar la escena en un cubemap cada fotograma o a intervalos regulares. Se utiliza para crear reflejos perfectos que incluyen objetos en movimiento. Sin embargo, es un proceso extremadamente costoso en términos de rendimiento, ya que implica renderizar la escena seis veces adicionales por cada sonda de reflexión.
¿Qué es una imagen equirectangular?
Es el formato estándar para las fotos panorámicas de 360°. Es una proyección que aplana la esfera de visión en un rectángulo con una relación de aspecto de 2:1. Es el punto de partida para la mayoría de los conversores a cubemap.
Conclusión
Los cubemaps son una herramienta de un poder visual inmenso y, como hemos visto, crearlos no tiene por qué ser complicado. Ya sea capturando directamente tu escena en Unity para obtener reflejos perfectos, convirtiendo una espectacular foto 360° para un skybox inmersivo, o automatizando el proceso para una producción a gran escala con herramientas como Kubi, ahora tienes el conocimiento para elegir el método que mejor se adapte a tus necesidades. Experimenta con ellos y verás cómo la calidad visual de tus proyectos da un salto espectacular.
Si quieres conocer otros artículos parecidos a Creación de Cubemaps: Guía Completa y Fácil puedes visitar la categoría Juegos.
