universitaria una recomendaciones para mejorar mapa interactivo como biblioteca delphi 3d c++builder data-visualization

delphi - una - ¿Recomendaciones de la biblioteca 3D para la visualización interactiva de datos espaciales?



mapa interactivo javascript (4)

¿Has probado glData? http://gldata.sourceforge.net/ Es antiguo (~ 2004, Delphi 7), y personalmente no he usado la biblioteca, pero algunos de los resultados son sorprendentes.

Nuestro software produce una gran cantidad de datos que son georreferenciados y registrados con el tiempo. Estamos considerando formas de mejorar la visualización, y mostrar los datos (procesados) en una vista 3D, dado que está georeferenciada, parece una buena idea.

Estoy buscando las recomendaciones de SO sobre qué bibliotecas 3D son las mejores para usar como base al crear este tipo de visualizaciones en una aplicación de Windows basada en Delphi- / C ++ Builder. Agregaré una recompensa cuando pueda.

Los datos

  • Se registra a lo largo del tiempo (horas a días) y está etiquetado con GPS. Por lo tanto, tenemos muchos datos siguiendo una ruta a lo largo del tiempo.
  • Es espacial: representa elementos 3D reales de la tierra, como la tierra, o elementos 3D de objetos alrededor de la tierra.
  • Es un volumen alto: podríamos tener una nube de puntos, por ejemplo, de cientos de miles a millones de puntos. Los datos procesados ​​pueden mostrarse como superficies creadas a partir de estas nubes de puntos.

A partir de eso, puede ver que una visualización 3D interactiva, basada en el espacio parece ser un buen enfoque. Estoy pensando en algo en el que pueda navegar de forma fácil y rápida en el espacio, y los datos se cargarán o se generarán sobre la marcha en función de lo que esté viendo. Preferiría que no intentáramos escribir nuestra propia biblioteca 3D desde cero, para algo como esto, tiene que haber buenas bibliotecas existentes en las que podamos trabajar.

Entonces, espero una biblioteca que soporte:

  • buena navegación (¿la biblioteca se basa únicamente en las rotaciones de Euler, por ejemplo? ¿Puede "elegir" los objetos para girar o moverse fácilmente?);
  • GPU modernas (la representación solo con sombreado está bien; ser capaz de engancharse en la tubería para escribir sombreadores que asignen valores a los colores y cambiarlos de forma dinámica sería genial; piense que los valores de datos tienen un color a través de una tabla de búsqueda de colores);
  • datos / objetos dinámicos (los datos se pueden agregar a medida que se graban; y si el volumen de datos es demasiado alto, deberíamos poder ubicar y recrear cosas, y solo mostrar un subconjunto adecuado para que el visor del usuario esté mirando) en la pantalla, pero otros datos pueden cargarse / regenerarse, preferiblemente de forma asíncrona, o al menos rápidamente a medida que el usuario navega. Obviamente, la creación de datos depende de nosotros, pero una biblioteca que tenga enlaces para este tipo de cosas sería genial.)
  • y tecnológicamente, trabaja con Delphi / C ++ Builder y VCL .

Bibliotecas

Hay dos bibliotecas principales que he considerado hasta ahora: estoy buscando opiniones bien informadas acerca de éstas o de otras bibliotecas que no haya considerado.

1. FireMonkey

Esta es la nueva biblioteca de IU de Embarcadero, que solo está disponible en XE2 y superior. Nuestra aplicación se basa en la VCL y queremos alojarla en una ventana de VCL; Eso parece no tener soporte oficial, pero extraoficialmente funciona bien o está disponible a través de terceros .

La combinación de UI framework y 3D framework con shaders, etc. suena genial. Pero no sé qué tan compleja es la biblioteca, qué soporte tiene para los datos que no son un objeto simple como un cubo o esfera, y qué tan bien diseñada está . El último enlace tiene críticas importantes del lado 3D de la biblioteca: suficientemente grave, no estoy seguro de que valga la pena en su estado actual en el momento de escribir para una aplicación 3D no trivial.

¿Vale la pena intentar escribir una nueva ventana de visualización en nuestra aplicación VCL usando FireMonkey?

2. GLScene

GLScene es un conocido framework 3D OpenGL para Delphi. Nunca lo he usado, por lo que no tengo experiencia sobre cómo funciona o está diseñado. Sin embargo, creo que se integra bien en las ventanas VCL y admite sombreadores y GPU modernas. No sé cómo funcionan sus gráficos de escena o navegación, ni cómo se pueden implementar los datos dinámicos.

Su lista de características menciona específicamente algunas cosas que me interesan , como la rotación / movimiento fácil, los objetos de procedimiento (lo que implica que los datos dinámicos son fáciles de implementar) y las funciones de ayuda para la selección. Parece que los sombreadores son solo Cg (no GLSL u otro lenguaje no específico del proveedor). También es compatible con "soporte de imágenes polimórficas para texturizar (permite muchos formatos así como texturas de procedimiento), fácilmente ampliables", que puede significar muchos formatos de imagen , o puede indicar algo donde la textura se puede cambiar dinámicamente, como para el mapeo dinámico de colores.

¿De dónde a partir de aquí?

Estas son las únicas dos bibliotecas 3D principales que conozco para Delphi o C ++ Builder. ¿Me he perdido alguno? ¿Hay pros y contras de los que no estoy enterado? ¿Tiene experiencia en el uso de cualquiera de estos para este tipo de propósito, y qué inconvenientes debemos tener en cuenta o las características que debemos conocer y utilizar?

Actualmente utilizamos Embarcadero RAD Studio 2010 y la mayoría de nuestro software está escrito en C ++. Tenemos pequeñas cantidades de Delphi y podemos considerar actualizar IDE, pero lo más probable es que esperemos hasta que se lance el compilador de C ++ de 64 bits. Por esa razón, una biblioteca que funciona en RS2010 podría ser la mejor.

Gracias por su aporte :) Estoy buscando respuestas de alta calidad, ¡así que agregaré una recompensa cuando pueda!


Dado que ya está utilizando datos georreferenciados, ¿quizás debería considerar incrustar GoogleEarth en su aplicación Delphi de this ? Luego puede agregarle datos como puntos, rutas u objetos.


He usado GLScene en mi software de geomapping 3D y, aunque no estoy acostumbrado a lo que estás buscando, puedo darte la impresión de que parece lo más apropiado para lo que estás tratando de hacer.

GLScene admite la representación del terreno y la adición de objetos personalizables a la escena. Los objetos pueden interactuar con ellos y usted puede crear modelos complejos de objetos en 3D utilizando los diversos bloques de construcción de GLScene. Desafortunadamente, no puedo decir cómo funcionará con millones de puntos, pero sí sé que está bastante optimizado y tiene un gran rendimiento en un hardware mínimo. Dicho esto, la PC de destino que encontré requería una tarjeta gráfica dedicada capaz de usar extensiones OpenGL 2.1 o Más alto (encontré pequeños problemas con las tarjetas gráficas integradas).

La otra biblioteca que miré fue DXscene, que parece bastante similar a GLScene, aunque usa DirectX en lugar de OpenGL. De memoria, este fue un producto comercial donde GLScene fue licenciado bajo GPL. (EDITAR - la página parece estar abajo en este momento: http://www.ksdev.com/index.html )

GLScene aún se encuentra en desarrollo activo y ofrece una biblioteca bastante completa de funciones, objetos base y texturas, etc. Se le proporcionan elementos como rotación, conversión, inclinación, giro, conversión de rayos, por nombrar algunos, todos para usted. Se proporciona selección de visibilidad para cada objeto base, así como para ver cámaras, iluminación y mallas. Los objetos de base incluyen cubos, esferas, tuberías, tetraedros, conos, terreno, cuadrículas, texto en 3D, flechas para nombrar algunos. Los objetos se pueden recoger con el ratón y mover a lo largo de 1,2 o 3 ejes. Se incluyen funciones de ayuda para calcular automáticamente el objeto que se encuentra debajo del ratón. Las formas complejas en 3D se pueden construir adjuntando objetos base a otros objetos base de una manera jerárquica. Así, por ejemplo, un automóvil podría construirse usando un rectángulo como objeto base y unirle cuatro cilindros para las ruedas, luego puede manipular el ''automóvil'' en su totalidad, ya que los cuatro cilindros están unidos al rectángulo base.

El único inconveniente que podría llamar su atención es la ayuda / asistencia a veces limitada disponible para usted. Sí, hay un manual de referencia y una serie de aplicaciones de demostración para mostrarle cómo hacer cosas como seleccionar objetos y moverlos, sin embargo, el manual de referencia no está completo y existe la posibilidad de "atascarse" en cómo realizar una cierta tarea. El soporte del foro es algo limitado / escaso. Si tienes un buen conocimiento de conceptos y conceptos básicos en 3D, estoy seguro de que podrías hacerlo.

En cuanto a Firemonkey, no tengo experiencia con esto, así que no puedo comentar. Creo que esto está más dirigido a aplicaciones móviles con menores requisitos de hardware, por lo que puede tener problemas con conjuntos de datos más grandes.

Aquí hay algunos otros enlaces que puede considerar: no tengo experiencia con ellos:

El último está dirigido al desarrollo de juegos, pero puede proporcionar información útil.


Puede usar GLScene o OpenGL ; son una buena representación 3D y es muy fácil de usar.