Recomendações da biblioteca 3D para visualização interativa de dados espaciais?

Nosso software produz muitos dados que são georreferenciados e gravados ao longo do tempo. Estamos considerando maneiras de melhorar a visualização e mostrar os dados (processados) em uma visualização 3D, dado que são georreferenciados, parece uma boa idei

Estou procurando as recomendações da SO para o melhor uso das bibliotecas 3D como base ao criar esse tipo de visualização em um aplicativo Windows baseado em Delphi- / C ++ Builder. Vou adicionar uma recompensa quando puder.

Os dado É gravado ao longo do tempo (horas a dias) e é marcado com GPS. Portanto, temos muitos dados seguindo um caminho ao longo do tempo. espacial: representa elementos 3D reais da terra, como a terra, ou elementos 3D de objetos ao redor da terr É alto volume: poderíamos ter uma nuvem de pontos, digamos, de centenas de milhares a milhões de pontos. Os dados processados podem ser exibidos como superfícies criadas a partir dessas nuvens de ponto

A partir disso, você pode ver que uma visualização 3D interativa baseada em espaço parece uma boa abordagem. Estou imaginando algo em que você possa navegar com facilidade e rapidez no espaço, e os dados serão carregados ou gerados em tempo real, dependendo do que você estiver vendo. Eu preferiria que não tentássemos escrever nossa própria biblioteca 3D do zero - para algo assim, é necessário que haja boas bibliotecas existentes nas quais possamos trabalha

ntão, eu estou esperando por uma biblioteca que suporte:

boa navegação (a biblioteca é baseada apenas nas rotações de Euler, por exemplo? Você pode 'pegar' objetos para girar ou mover-se facilmente?);PUs modernas (a renderização somente com sombreador é aceitável; ser capaz de se conectar ao pipeline para escrever sombreadores que mapeiam valores para cores e são alterados dinamicamente seria ótimo - pense nos valores dos dados dados uma cor através de uma tabela de pesquisa de cores dados / objetos dinâmicos (os dados podem ser adicionados à medida que são gravados; e, se o volume de dados for muito alto, poderemos paginar ou recriá-los ou recriá-los, além de mostrar apenas um subconjunto sensato, de modo que a janela de visualização do usuário esteja lá na tela, mas outros dados podem ser carregados / regenerados, de preferência de forma assíncrona ou pelo menos rapidamente à medida que o usuário navega. Obviamente, a criação de dados depende de nós, mas seria ótima uma biblioteca que possua ganchos para esse tipo de coisa.)e tecnologicamente, trabalha com o Delphi / C ++ Builder e o VCL. Bibliotecas

Existem duas bibliotecas principais que eu considerei até agora - estou procurando opiniões bem informadas sobre elas ou outras bibliotecas que não considere

1. FireMonkey

Esta é a nova biblioteca de interface do usuário do Embarcadero, disponível apenas no XE2 e acima. Nosso aplicativo é baseado na VCL e queremos hospedá-la em uma janela da VCL; que parece não ter suporte oficial, masunofficially funciona bem ou está disponível através de terceiros.

A combinação de estrutura de interface do usuário e estrutura 3D com shaders etc parece ótimo. Mas não sei quão complexa é a biblioteca, que suporte ela tem para dados que não são um objeto simples como um cubo ou esfera e quão bem projetado é. Esse último link tem grandes críticas ao lado 3D da biblioteca - grave o suficiente, não tenho certeza se vale a pena em seu estado atual no momento da escrita para um aplicativo 3D não trivial.

ale a pena tentar escrever uma nova janela de visualização em nosso aplicativo VCL usando o FireMonke

2. GLScene

GLScene é uma estrutura 3D OpenGL bem conhecida para Delphi. Eu nunca o usei, portanto não tenho experiência em como funciona ou é projetado. No entanto, acredito que ele se integra bem às janelas VCL e suporta shaders e GPUs modernas. Não sei como o gráfico de cena ou a navegação funcionam ou quão bem os dados dinâmicos podem ser implementado

Sua lista de recursos menciona especificamente algumas coisas em que estou interessado, como rotação / movimento fáceis, objetos de procedimento (é fácil implementar dados dinâmicos) e funções auxiliares para separação. Parece que os shaders são apenas Cg (não GLSL ou outra linguagem não específica do fornecedor.) Ele também suporta "suporte de imagem polimórfico para texturização (permite muitos formatos e texturas de procedimento), facilmente extensível" - que pode significar muitos formatos de imagem ou pode indicar algo em que a textura pode ser alterada dinamicamente, como no mapeamento dinâmico de cores.

Onde a partir daqui?

Essas são as únicas duas principais bibliotecas 3D que eu conheço para Delphi ou C ++ Builder. Perdi algum? Existem prós e contras dos quais não estou ciente? Você tem alguma experiência em usar uma dessas opções para esse tipo de finalidade e quais armadilhas devemos ter cuidado ou quais recursos devemos conhecer e usar?

Atualmente, usamosEmbarcadero RAD Studio 2010 e a maior parte do nosso software é escrita em C ++. Temos pequenas quantidades de Delphi e podemos considerar a atualização de IDEs, mas é provável que esperemos até que o compilador C ++ de 64 bits seja lançado. Por esse motivo, uma biblioteca que funciona no RS2010 pode ser a melho

Obrigado pela sua contribuição :) Estou buscando respostas de alta qualidade, então adicionarei uma recompensa quando puder!

questionAnswers(8)

yourAnswerToTheQuestion