Can I use MapTiler basemaps in Unity engine?

Mapas 3D en Unity: Tu Guía para Mundos Reales

19/04/2018

Valoración: 4.23 (1537 votos)

Crear mundos vastos y realistas es uno de los mayores desafíos en el desarrollo de videojuegos y aplicaciones interactivas. ¿Y si pudieras usar el mundo real como tu lienzo? Gracias a la evolución de las herramientas de desarrollo, integrar datos geoespaciales, terrenos en 3D y mapas satelitales detallados en tus proyectos de Unity ya no es ciencia ficción. Es una realidad accesible que puede llevar tus creaciones a un nuevo nivel de inmersión, ya sea para un simulador de vuelo, un juego de mundo abierto basado en una ciudad real o una aplicación de visualización arquitectónica. En esta guía completa, te llevaremos de la mano para que aprendas a implementar mapas del mundo real en Unity, utilizando principalmente el poderoso plugin de Cesium y los servicios de MapTiler.

How do I create a normal map in Unity?
Índice de Contenido

¿Por Qué Usar Mapas del Mundo Real en Unity?

La integración de datos geoespaciales abre un abanico de posibilidades que antes estaban reservadas para producciones con presupuestos enormes. Al utilizar mapas reales, obtienes beneficios inmediatos:

  • Realismo sin Precedentes: Recrea ubicaciones exactas con su topografía, carreteras y edificios. Esto es invaluable para simuladores, aplicaciones educativas o juegos que buscan una conexión con lugares conocidos.
  • Escala Masiva: Olvídate de crear terrenos procedurales limitados. Con estas herramientas, puedes tener el planeta entero a tu disposición, permitiendo a los usuarios explorar libremente desde el Monte Everest hasta las calles de Tokio.
  • Ahorro de Tiempo y Recursos: Modelar terrenos y ciudades a mano es una tarea titánica. Aprovechar los datos existentes te permite centrarte en la jugabilidad y la experiencia del usuario en lugar de en la creación de activos de entorno a gran escala.
  • Nuevas Mecánicas de Juego: Abre la puerta a juegos basados en la localización (como Pokémon GO, pero en 3D), aplicaciones de turismo virtual o herramientas de planificación urbana interactivas.

Herramientas Clave para Integrar Mapas en Unity

Para lograr esta hazaña, nos apoyaremos en un ecosistema de herramientas diseñadas para trabajar juntas. Las dos soluciones más destacadas que exploraremos son:

  1. Cesium for Unity: Es un plugin de código abierto que actúa como puente entre Unity y el ecosistema de datos geoespaciales 3D. Permite transmitir y renderizar conjuntos de datos masivos, como terrenos globales, ciudades en 3D y nubes de puntos, directamente en tu escena de Unity en tiempo real.
  2. MapTiler: Es un proveedor de datos de mapas de alta calidad. Ofrece desde mapas base estilizados hasta imágenes satelitales de alta resolución y, lo más importante para nosotros, un servicio de terreno 3D global compatible con Cesium.
  3. Mapbox: Es otra potente plataforma que ofrece un SDK específico para Unity, permitiendo la integración de mapas personalizables y datos vectoriales, ideal para aplicaciones que requieren una gran personalización visual de los mapas.

Guía Paso a Paso: Integrando Mapas de MapTiler con Cesium for Unity

A continuación, te presentamos un tutorial detallado para que puedas tener un terreno 3D del mundo real corriendo en tu proyecto de Unity en cuestión de minutos.

How do I create a normal map in Unity?
Unity can create a normal map from a simple greyscale image where white is the highest and black is the lowest. That means the albedo texture you have there might already serve as a simple normal map. Just create a copy of the image file, go back into the unity editor and drag the image into the "normal map" slot of the standard shader.

1. Requisitos e Instalación del Entorno

Antes de empezar, asegúrate de tener todo listo.

  • Instala Unity: Necesitarás la versión 2021.3.2f1 o una posterior. Puedes descargarla desde el Unity Hub.
  • Crea un nuevo proyecto: Al crear tu proyecto, es crucial que elijas una plantilla basada en Scriptable Render Pipeline, como la Universal 3D (URP) o la High Definition 3D (HDRP). El plugin de Cesium no es compatible con el renderizador integrado (Built-in Renderer) de Unity.
  • Configura el Package Manager: Una vez abierto tu proyecto, ve a Edit > Project Settings. En la sección Package Manager, añade un nuevo 'Scoped Registry' con los siguientes datos:
    • Name: Cesium
    • URL: https://unity.pkg.cesium.com
    • Scope(s): com.cesium.unity

    Guarda los cambios.

  • Instala Cesium for Unity: Ahora, abre el Package Manager desde Window > Package Manager. En el menú desplegable de la parte superior, selecciona 'My Registries'. Deberías ver 'Cesium for Unity' en la lista. Selecciónalo y haz clic en 'Install'. El editor descargará e instalará el plugin y todas sus dependencias.

2. Añadiendo Terreno 3D Global a tu Escena

Con el plugin instalado, es hora de traer el mundo a Unity.

What is the maps SDK for unity?
Maps and location data optimized for Unity. Written from the ground up in C#, the Maps SDK for Unity unlocks global data to generate custom 3D worlds, power location lookup, and incorporate traffic-based directions in your next Unity project.
  1. Abre la ventana de Cesium desde el menú superior: Cesium > Cesium.
  2. En la ventana de Cesium que aparecerá, haz clic en el botón para añadir un 'Blank 3D Tiles Tileset'. Esto creará un nuevo objeto en tu jerarquía.
  3. Selecciona este nuevo objeto 'Cesium3DTileset' y mira su Inspector. Cambia la opción 'Tileset Source' de 'From Cesium Ion' a 'From URL'.
  4. Ahora necesitas la URL del servicio de terreno de MapTiler. Ve a la web de MapTiler Cloud, regístrate si no lo has hecho (ofrecen un plan gratuito generoso), y busca la sección de 'Terrain 3D'. Copia la URL que se proporciona. Debería tener un formato similar a este: https://api.maptiler.com/tiles/terrain-quantized-mesh-v2/tiles.json?key=TU_API_KEY.
  5. Pega esa URL en el campo 'URL' del Inspector en Unity, reemplazando 'TU_API_KEY' con tu propia clave de API de MapTiler.

Al hacer esto, notarás que se ha creado automáticamente un objeto llamado 'CesiumGeoreference'. Este objeto es fundamental, ya que gestiona la posición y orientación de tu escena en el globo terráqueo.

How can I add real Unity3D maps?
Add real Unity3D maps to your Unity game or application in minutes with the Mapbox SDK. It's free to get started and easy to implement and customize.

3. Superponiendo Mapas Satelitales (WMTS)

Ahora mismo tienes el modelo 3D del terreno, pero se ve de un color plano. Necesitamos aplicarle una textura, como imágenes satelitales, para que cobre vida.

  1. Selecciona el objeto 'Cesium3DTileset' en tu jerarquía.
  2. En el Inspector, haz clic en 'Add Component' y busca y añade un 'Cesium Web Map Tile Service Raster Overlay'. Este componente se encargará de proyectar una imagen de mapa 2D sobre tu terreno 3D.
  3. Este nuevo componente necesita una URL de un servicio WMTS (Web Map Tile Service). Vuelve a MapTiler Cloud, ve a la sección de 'Maps' y elige el que más te guste (Satellite, Outdoor, etc.). Busca la opción para usarlo como WMTS y copia la URL.
  4. Pega esta URL en el campo 'Base URL' del componente en Unity. Asegúrate de que la proyección esté configurada como 'Web Mercator'.

4. Georreferenciación: Ubicando tu Escena en el Mundo

Tu escena ahora contiene el planeta entero. Para empezar en un lugar específico, debemos ajustar el origen de la georreferenciación.

How do I create a normal map in Unity?
  1. Selecciona el objeto 'CesiumGeoreference' en la jerarquía.
  2. En el Inspector, busca la sección 'Origin (Longitude Latitude Height)'.
  3. Cambia estos valores a las coordenadas del lugar que quieras visitar. Por ejemplo, para ir al Lago Louise en Canadá, puedes usar:
    • Latitude: 51.395879
    • Longitude: -116.261587
    • Height: 3000.0 (Esta es la altitud en metros sobre el nivel del mar)

5. Configurando la Cámara para la Exploración

La cámara por defecto de Unity no está preparada para manejar las enormes distancias de un mundo a escala real. Cesium nos proporciona una solución.

  1. Abre de nuevo la ventana de Cesium (Cesium > Cesium).
  2. Haz clic en 'Add Dynamic Camera'. Esto añadirá un prefab de cámara optimizado a tu escena.
  3. Desactiva o elimina la 'Main Camera' original de tu escena para evitar conflictos. La 'DynamicCamera' se convertirá en la cámara principal.
  4. Esta cámara es un objeto georreferenciado. Para asegurarte de que empieza en el punto de origen que definiste, selecciónala y resetea su 'Transform' a la posición (0, 0, 0).

6. ¡A Explorar tu Mundo!

¡Todo está listo! Pulsa el botón 'Play' en la barra de herramientas de Unity. Ahora puedes moverte por el mundo con las teclas W, A, S, D. Usa Q y E para moverte verticalmente y la rueda del ratón para ajustar tu velocidad de vuelo. ¡Disfruta explorando el mundo que acabas de crear!

Tabla Comparativa: MapTiler vs. Mapbox para Unity

CaracterísticaMapTiler (con Cesium)Mapbox (con su SDK)
Método de IntegraciónA través del plugin Cesium for Unity.Mediante su propio SDK nativo para Unity.
Foco PrincipalStreaming de datasets 3D masivos (terreno, fotogrametría) a escala planetaria.Mapas vectoriales altamente personalizables y capas de datos.
Tipo de Datos3D Tiles (terreno, ciudades), WMTS/TMS (imágenes raster).Tiles vectoriales, datasets personalizados, imágenes raster.
Ideal ParaSimuladores, visualizaciones a gran escala, juegos de mundo abierto realistas.Juegos basados en localización, mapas estilizados, aplicaciones con mucha interacción de datos.

Preguntas Frecuentes (FAQ)

¿Necesito saber programar para seguir este tutorial?
No. Todo el proceso descrito se realiza directamente en el editor de Unity, sin necesidad de escribir una sola línea de código. La programación sería necesaria si quisieras añadir interacciones más complejas con el mapa.
¿Es gratis usar MapTiler y Cesium for Unity?
Cesium for Unity es un plugin de código abierto y completamente gratuito. MapTiler ofrece un plan gratuito que incluye una generosa cantidad de solicitudes de mapas y terreno, suficiente para desarrollar y probar tu proyecto. Para un lanzamiento comercial con alto tráfico, necesitarías un plan de pago.
¿Funciona con la renderización integrada (Built-in RP) de Unity?
No. Como se mencionó, es fundamental usar un proyecto configurado con el Universal Render Pipeline (URP) o el High Definition Render Pipeline (HDRP) para que Cesium funcione correctamente.
¿Puedo usar mis propios mapas o datos geográficos?
¡Sí! Tanto MapTiler como Mapbox permiten subir tus propios datasets. Con herramientas como MapTiler Engine, puedes incluso crear tus propios servicios de tiles a partir de imágenes georreferenciadas y alojarlas tú mismo.
¿Qué es un 'Normal Map' y tiene que ver con esto?
Es una excelente pregunta que puede generar confusión. Un 'Normal Map' es un tipo de textura usada en renderizado 3D para simular detalles de alta resolución en una superficie de baja poligonalidad (como arrugas, poros o remaches). Aunque también se llama 'mapa', no tiene relación con los mapas geográficos. Su función es puramente visual para añadir detalle a los modelos 3D.

Si quieres conocer otros artículos parecidos a Mapas 3D en Unity: Tu Guía para Mundos Reales puedes visitar la categoría Juegos.

Subir