Órdenes en Python en Digi3D.NET

Digi3D.NET reconoce como órdenes nativas aquellos archivos Python ubicados en el directorio de macroinstrucciones.

Tenemos en nuestra cuenta de GitHub un repositorio en el que hemos subido algún ejemplo como una orden que simula al antiguo programa FILTRAR así como una orden que elimina curvas de nivel en función de la equidistancia.

En el siguiente vídeo te explicamos cómo ejecutar estas órdenes. Siéntete libre de forkear el repositorio y hacernos algún pull-request si deseas compartir tus órdenes con la comunidad.

Ortofoto Estereoscópica

El mes pasado reescribimos desde cero el sensor Ortofoto Estereoscópica que es el que se suele utilizar para realizar restitución fotogramétrica de drones, pues únicamente cargas un modelo y no tienes que cambiar entre cientos de pares estereoscópicos.

Este sensor lleva con nosotros ya muchos años, como anécdota te puedo contar que no se desarrolló para resolver el problema de los cientos de modelos de un proyecto de drones, sino que se hizo para permitir a una empresa brasileña restituir modelos obtenidos con un radar.

El problema que tenía este sensor es que era muy lento, pues tenía que calcular por software las teselas que se muestran en pantalla, y eso requería calcular la intersección de rayos que se proyectaban desde el centro de proyección virtual de cada cámara contra el MDT o el MDS cargados. Este cálculo era muy lento y tardaban mucho en aparecer las teselas.

El mes pasado todo esto cambió: Ahora todos los cálculos se realizan en la tarjeta gráfica y gracias a dispositivos como el Space Mouse Compact de 3D Connexion, se puede incluso cambiar el punto de vista tal y como puedes ver en este vídeo que publicamos en las redes sociales para anunciar el sensor:

Bien, pues hoy presentamos otra novedad, y es que hemos añadido la posibilidad de incluir en el archivo de Ortofoto Estereoscópica tanto el Modelo Digital de Superficie como el Modelo Digital del Terreno.

Si creamos este archivo con los dos tipos de modelo, Digi3D.NET nos permitirá cambiar de uno a otro en tiempo real.

Puedes ver esta nueva funcionalidad en el siguiente vídeo:

Módulo MMS de Digi3D.NET

Presentamos el módulo MMS de Digi3D.NET con el que podrás digitalizar estereoscópicamente nubes de puntos densas.

En este vídeo (que puedes ver estereoscópicamente si dispones de unas gafas de anaglifo) comprobarás la fluidez con la que Digi3D.NET mueve una nube con 20 millones de puntos. Puedes utilizar cualquiera de los sistemas estereoscópicos soportados por Digi3D.NET además de cualquier dispositivo de entrada como manivelas, Stealth 3D Mouse, SoftMouse, etc.

La representacion de nubes de puntos densas en la ventana de dibujo es igual de fluida.

El módulo permite además (lo publicaremos en un siguiente vídeo) la carga de imágenes esféricas como las tomadas con el sensor LadyBug.

Carga de archivos Metashape 1.5.0 en Digi3D.NET versión 2019.x

Nos han llegado dos tickets de soporte técnico con el mismo problema: Digi3D.NET no puede cargar un proyecto de Metashape 1.5.0.

Tras analizar el formato hemos comprobado que finalmente han añadido información de pasadas en el formato, de manera que en breve (posíblemente mañana mismo) podremos cargar en el panel de proyecto fotogramétrico un archivo en este formato y Digi3D.NET nos mostrará las pasadas y modelos del proyecto.

Esta modificación la vamos a hacer para usuarios con mantenimiento activo, de manera que estos usuarios podrán cargar el archivo sin modificar.

Si estás anclado a la versión 2019 porque ha caducado tu mantenimiento, te mostramos aquí cómo manipular el archivo para que tu versión pueda cargar el proyecto:

Topologías en Digi3D.NET

Hemos añadido el concepto de Topología en Digi3D.NET, y eso nos permite realizar cosas como introducir automáticamente centroides en las inundaciones topológicas y como asignar un diccionario de valores a cada centroide que podemos utilizar a la hora de exportar a SIG como ArcGIS.

El editor de tablas de códigos ahora dispone de una nueva pestaña denominada Topologías que nos permite crear una topología y asignarle un nombre, códigos de las geometrías que forman la topología, un conjunto de centroides además de un diccionario clave/valor para cada centroide.

Podemos indicar un color de relleno para los polígonos de la geometría que no tengan centroide, así como un color de relleno para los huecos, y podemos asignar un color de relleno en función del centroide.

Podemos indicar además si un centroide tiene un texto fijo (como por ejemplo Edificio) o si se le permite al usuario añadir un texto, como por ejemplo el nombre de una calle).

En el vídeo de a continuación te enseñamos a añadir topologías en el editor de tablas de códigos así como a exportar a Shapefile con atributos de base de datos extraídos de la propia tabla de códigos.

Digi3D.NET versión 2019.2.0.0

Presentamos la versión 2019.2.0.0 de Digi3D.NET.

Esta versión ha tardado más tiempo de lo habitual en presentarse (históricamente publicábamos una versión mensual) porque a pesar de tener 74 novedades (mejoras y correcciones), la mayoría del tiempo que hemos invertido en ella ha sido hacer que supere una serie de tests proporcionados por programas analizadores de código fuente.

Nuestra idea era publicar la versión 2019.2.0.0 un mes después de la 2019.1.0.0, pero Microsoft publicó el código fuente de la calculadora de Windows 10 en un repositorio en GitHub. El mismo día ya se habían descubierto cientos de errores de programación en dicho programa. Como fue viral, nos interesamos por el tema y analizamos los errores que habían descubierto y, algunos, eran muy complicados de descubrir en tan poco tiempo, así que descubrimos que se habían descubierto automáticamente con un programa denominado PVS-Studio Analyzer. Nos pusimos a analizar el código fuente de Digi3D.NET con este programa, continuamos con Clang Power Tools, de paso continuamos con ReSharper C++ y los días se convirtieron en meses.

Estos programas no solo detectan errores, sino que te guían para ir modernizando el programa, y ahora el 100% de la parte desarrollada en C++ de Digi3D.NET está desarrollado en lo que se llama Modern C++, y como resultado el programa:

  • Es más seguro.
  • Consume menos memoria.
  • Es más rápido.
  • No tiene fugas de memoria.

Tal y como comenzamos a hacer en la versión 2019.1.0.0, el conjunto de mejoras del programa aparecen en el repositorio de GitHub: TareasDigi3D. Si haces clic en el enlace anterior, verás en la columna Hecho cada uno de los 74 cambios.

A partir de hoy comenzaremos a publicar entradas en el blog explicando los cambios que requieran una explicación.

Fin de la estereoscopía con gafas activas

NVidia ha abandonado el desarrollo de gafas estereoscópicas así como el soporte de estereoscopía en los drivers de sus tarjetas gráficas.

La fabricación de gafas activas se paralizó hace más de 6 meses ya y además, según la nota de prensa de Nvidia (https://nvidia.custhelp.com/app/answers/detail/a_id/4781), el último driver que soporta estereoscopía es el driver con número de versión Release 418 publicado en abril 2019.

Nvidia dispone de un histórico de drivers en su página web, de manera que si necesitas un driver compatible con tus gafas estereoscópicas en un futuro, siempre podrás descargarlo, pero el problema de depender de un driver antiguo es que si en un futuro se realiza algún cambio en el sistema operativo referente al subsistema gráfico, ese driver es posible que deje de funcionar.

A día de hoy es prácticamente imposible encontrar gafas activas en el mercado, así que si quieres tener alguna de sobra por si se estropean las que usas para trabajar, te recomendamos que te pongas a buscarlas cuanto antes en eBay o en tiendas online tanto en España como en el extranjero.

Digi3D.NET siempre podrá mostrar estereoscopía con gafas de anaglifo, monitores auto-estereoscópicos, monitores con gafas polarizadas y estereóscopos, pero de estas opciones quizás únicamente el estereóscopo se podría considerar profesional.

Hemos estado dándole muchas vueltas a cómo solucionar este problema que se nos plantea, pues aunque ahora mismo el mercado de la fotogrametría está como está, nosotros tenemos que seguir dando soporte a los usuarios que confían en Digi3D.NET para su profesión.

Hemos analizado todas la soluciones que hay en el mercado (gafas de realidad aumentada que tienen un precio de 3000€, y cascos de realidad virtual, y al final hemos optado por comenzar a desarrollar el módulo estereoscópico en realidad virtual para el casco Oculus Rift S, de manera que para final de año esperemos tener la primera BETA de Digi3D.NET para realidad virtual.

Este casco de los más baratos del mercado (450€) y lo desarrolla una empresa que se dedica únicamente a eso, de manera que no parece que vayan a interrumpir nunca el desarrollo de cascos de realidad virtual.

Mejoras en el panel de proyecto fotogramétrico

Acabamos de añadir a Digi3D.NET una mejora en el panel fotogramétrico.

Hasta ahora, cuando cargábamos un proyecto fotogramétrico el panel de proyecto fotogramétrico nos mostraba todas las pasadas/modelos que había podido cargar (es decir, para todas aquellas en las que había localizado tanto orientación como las imágenes en el disco duro). En caso de que algún modelo no se hubiera podido cargar algún modelo, éste se mostraba deshabilitado, pero se mostraba igualmente.

La mejora que presentamos hoy consiste en que ahora podemos configurar mediante la opción del menú Herramientas/Configuración/Proyecto fotogramétrico una nueva opción: Mostrar solo modelos cargados.

Si activamos esta opción el programa filtrará los modelos que no ha podido cargar (porque no ha localizado las imágenes en el directorio) y nos mostrará únicamente aquellos que ha podido cargar.

Puedes ver esta nueva funcionalidad en acción en el siguiente vídeo:

Añadida compatibilidad con Esri Projection Engine

Acabamos de añadir a Digi3D.NET la posibilidad de crear sistemas de referencia de coordenadas compatibles con Esri Projection Engine.

Gracias a esta nueva característica, podrás crear archivos Shapefile con sistemas de referencia de coordenadas y que ArcMap los cargue sin problemas.

Puedes activar esta característica mediante la opción del menú Herramientas/Configuración/Sistemas de referencia de coordenadas/Crear cadenas WKT compatibles con, donde nos encontramos con dos opciones:

  • Esri Projection Engine sin incluir código EPSG
  • Esri Projection Engine incluyendo código EPSG
  • OpenGis Coordinate Transformation Service

Si activamos cualquiera de las opciones de tipo Esri Projection Engine y creamos sistemas de referencia de coordenadas horizontales, es decir, con el sistema vertical desconocido, los archivos .PRJ creados por Digi3D.NET serán exactamente iguales a los creados por Esri Projection Engine.

La diferencia entre las dos primeras opciones es que la primera incluye el código EPSG como por ejemplo en el siguiente ejemplo para el sistema WGS84 / UTM Zona 30N:

PROJCS["WGS_1984_UTM_Zone_30N",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-3.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0],AUTHORITY["EPSG",32630]]

y la segunda no lo incluye, como por ejemplo en el siguiente ejemplo para el mismo sistema de referencia de coordenadas:

PROJCS["WGS_1984_UTM_Zone_30N",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-3.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]

Puedes ver esta nueva funcionalidad en acción en el siguiente vídeo: