Библиотека 3D рекомендации по интерактивной визуализации пространственных данных?

Наше программное обеспечение производит много данных, которые имеют географическую привязку и записываются с течением времени. Мы рассматриваем способы улучшения визуализации, и показ (обработанных) данных в трехмерном виде с учетом географической привязки кажется хорошей идеей.

Я ищу рекомендации SO относительно того, какие 3D-библиотеки лучше всего использовать в качестве основы при создании такого рода визуализаций в приложении Windows на основе Delphi- / C ++ Builder. Я добавлю награду, когда смогу.

Данные

  • записываются с течением времени (от часов до дней) и маркируются GPS. Итак, у нас есть много данных, идущих по пути с течением времени.
  • Пространственный: он представляет реальные трехмерные элементы земли, такие как земля, или трехмерные элементы объектов вокруг Земли.
  • Это большой объем: у нас может быть облако точек, скажем, от сотен тысяч до миллионов точек. Обработанные данные могут отображаться как поверхности, созданные из этих облаков точек.

Исходя из этого, вы можете видеть, что интерактивная пространственно-трехмерная визуализация кажется хорошим подходом.Я предполагаю что-то такое, где вы можете легко и быстро перемещаться в космосе, а данные будут загружаться или генерироваться на лету в зависимости от того, на что вы смотрите. Я бы предпочел, чтобы мы не пытались писать нашу собственную 3D-библиотеку с нуля - для чего-то вроде этого должны быть хорошие существующие библиотеки, с которыми мы можем работать.

Итак, я надеюсь на библиотеку, которая поддерживает:

  • хорошую навигацию (например, библиотека основана только на эйлеровом вращении? Можете ли вы «подбирать» объекты для вращения или легкого перемещения? );
  • современные графические процессоры (рендеринг только для шейдеров - это нормально; возможность подключаться к конвейеру для написания шейдеров, которые отображают значения в цвета и динамически изменяются, было бы здорово - подумайте, что значениям данных задан цвет через поиск цвета таблица);
  • динамические данные / объекты (данные могут быть добавлены по мере их записи; и если объем данных слишком велик, мы должны иметь возможность загружать и выгружать вещи или воссоздавать их, и показывать только разумные подмножество, так что все, на что смотрит окно просмотра пользователя, есть на экране, но другие данные могут быть загружены / восстановлены, предпочтительно асинхронно или, по крайней мере, быстро, когда пользователь перемещается.Очевидно, создание данных зависит от нас, но библиотека, которая имеет крючки для такое было бы здорово.)
  • и технологически работает с Delphi / C ++ Builder и VCL .

Библиотеки

Есть две основные библиотеки, которые я рассмотрел до сих пор - я ищу компетентные мнения о них или о других библиотеках, которые я не рассматривал.

1. FireMonkey

Это новая библиотека пользовательского интерфейса Embarcadero, которая доступна только в XE2 и выше. Наше приложение основано на VCL, и мы хотели бы разместить его в окне VCL; который официально не поддерживается, но неофициально работает нормально или доступен у третьих лиц .

Сочетание UI-фреймворка и 3D-фреймворка с шейдерами и т. Д. Звучит великолепно. Но я не знаю, насколько сложна библиотека, какую поддержку она имеет для данных, которые не являются простыми объектами, такими как куб или сфера, и насколько хорошо она спроектирована . В этой последней ссылке содержится серьезная критика трехмерной стороны библиотеки - достаточно серьезная, я не уверен, что она имеет смысл в ее текущем состоянии на момент написания нетривиального трехмерного приложения.

Стоит ли пытаться написать новое окно визуализации в нашем приложении VCL с помощью FireMonkey?

2. GLScene

GLScene - это хорошо известная трехмерная среда OpenGL для Delphi. Я никогда не использовал его сам, поэтому не знаю, как он работает или как разработан. Однако я считаю, что он хорошо интегрируется в окна VCL и поддерживает шейдеры и современные графические процессоры. Я не знаю, как работают его граф сцены или навигация, или насколько хорошо могут быть реализованы динамические данные.

В его списке функций особо упоминаются некоторые вещи, которые меня интересуют , такие как легкое вращение / перемещение, процедурные объекты (подразумевающие, что динамические данные легко реализовать) и вспомогательные функции для выбора. Кажется, что шейдеры - это только Cg (не GLSL или другой язык, не зависящий от производителя.) Он также поддерживает «поддержку полиморфного изображения для текстурирования (допускает множество форматов, а также процедурные текстуры), легко расширяемый» - это может означать просто множество форматов изображений или может указывать на то, что текстура может быть изменена динамически, например, для динамических цветовое отображение.

Куда отсюда?

Это единственные две известные мне основные 3D-библиотеки для Delphi или C ++ Builder. Я что-то пропустил? Есть ли плюсы и минусы, о которых я не знаю? Есть ли у вас какой-либо опыт использования любого из них для такого рода целей, и каких ловушек нам следует опасаться или функций, о которых мы должны знать и использовать?

В настоящее время мы используем Embarcadero RAD Studio 2010 и большинство нашего программного обеспечения написано на C ++. У нас есть небольшое количество Delphi, и мы можем рассмотреть возможность обновления IDE, но мы, скорее всего, подождем, пока не будет выпущен 64-битный компилятор C ++. По этой причине лучше всего подойдет библиотека, работающая в RS2010.

Спасибо за ваш вклад :) Мне нужны качественные ответы, поэтому я добавлю награду, когда смогу!

20
задан Community 23 May 2017 в 12:16
поделиться