Ermita de la Humosa 2.0 con TR3js


La ermita de la Humosa fue modelizada mediante dron (RPA) como trabajo de fin de grado titulado: Levantamiento y modelización de una ermita mediante aeronave controlada remotamente (RPA) y algoritmos de estructura a partir de movimiento (SFM) por Javier Gabás Jiménez, quien ha compartido el modelo para poder integrarlo con los mapas 3D de terre3.


1. Introducción

En un proyecto tan joven como TR3js es fundamental la revisión y evolución continua, estableciendo estratos de mejora a cada oportunidad pasando por el filtro de la experiencia de usuario y la crítica constructiva.

En este caso lo aplicamos sobre la experiencia de la Ermita 1.0 que ya sufrió una importante evolución de Ermita 0.0 para encontrarnos en la Ermita 2.0 actual.

Ilustración 1: Ermita 0.0


2. Revisión 1.0

Ilustración 2: Ermita 1.0

En este caso encontramos varias cuestiones que nos ofrecían márgenes de mejora y era necesario acometer:

  • El mapa 2D ocupa mucho espacio en pantalla.
  • El mapa 3D tiene poco tamaño de exploración.
  • La API falla al integrar texto 3D.

3. Evolución 2.0

Con esto procedemos a generar la siguiente versión.

3.1. Reducción de mapa 2D

Este paso fue relativamente sencillo ya que con reducir el tamaño de la ventana de diálogo junto con el mapa 2D estaba solucionado, además de introducir un botón para minimizar la ventana. Pero esto afectaba al mapa 3D directamente reduciendo incluso más su tamaño de exploración, con lo que necesitamos una mejora importante en ese aspecto.

3.2. Espacio de exploración 3D

La ampliación del espacio 3D requirió romper la uniformidad del tamaño de la ventana de diálogo con la del mapa 2D. Esto requirió recomponer la distribución del mapa para que igualmente permanezca centrado en su ventana, pero con sencillos cálculos podríamos ampliar el contexto 3D todo cuanto quisiéramos.

Con esta técnica logramos una ventana de 300px de mapa 2D obtener 800px de cobertura 3D.

3.3. API y texto 3D

Descubrimos con esto un fallo en la API de coordinación, ya que TR3js es un algoritmo con una fuerte carga de elementos asíncronos, que tienen que recogerse según la petición se resuelva, y el texto es un elemento síncrono que se ejecuta al iniciar el contexto 3D.

Cuando la API inicia no tiene una referencia de coordenadas todavía y la Z en el sistema de coordenadas modelo no permite ubicar el elemento, lo que necesitaba asignar sus coordenadas cuando tal referencia en la Z modelo se cumpliera. Así que sí se puede crear el elemento al inicio pero ha de ubicarse de forma asíncrona para ajustar su posición. Así que finalmente se crea una función para revisar coordenadas en el momento adecuado y el texto síncrono se hace realidad.

Ilustración 3: Ermita 2.0

4. Revisión 3.0

El proceso continúa y la evolución constante sigue su curso hasta lograr la siguiente versión que mejora de forma constante.

  • Interactividad en el cartel de texto.
  • Adaptación móvil del diálogo mapa 2D.
  • Mensaje de carga de mapa 3D.

5. Conclusión

Siempre hay formas de revisar, adaptar y mejorar un programa, para ello la experiencia usuario y la validación es un camino que hay que recorrer, y siempre con la satisfacción de haber logrado un paso más en la dirección adecuada. Para ello en este caso el esmero de Javier Gabás e ingenio de Agustín Costa han llevado la experiencia de la ermita y la API TR3js a un nuevo nivel.




Sobre el Autor


Agustin Costa Cimadevilla

Desarrollador de web en entornos geoespaciales desde 2010 con una larga trayectoria profesional vinculado a proyectos del Instituto Geográfico Nacional y el Centro Nacional de Información Geográfica en proyectos como la fototeca o iberpix.

Mi experiencia ligada a proyectos de I+D e inquietud por los recursos gráficos como WebGL me ha llevado a crear proyectos personales como https://terre3.es donde trato de innovar libremente y aportar prototipos a la comunidad que resuelvan nuevas maneras de aplicar la información geoespacial en 3D.

Involucrado en el análisis estadístico espacial mediante Big Data y el estudio de algoritmos de aplicación para Data Science.


¿Eres desarrollador? Únete a la red