Наше программное обеспечение производит большое количество данных, которые имеют географическую привязку и записываются с течением времени.Мы рассматриваем способы улучшения визуализации, и показ (обработанных) данных в трехмерном представлении, учитывая их географическую привязку, представляется хорошей идеей.
Я ищу рекомендации SO относительно 3D-библиотек.Лучше всего использовать в качестве основы при построении таких визуализаций в Windows-приложении на основе Delphi- / C ++ Builder.Я добавлю вознаграждение, когда смогу.
Данные
- Записываются с течением времени (от часов до дней) и помечаются GPS.Итак, у нас есть много данных, следующих по пути во времени.
- Пространственно: оно представляет реальные трехмерные элементы земли, такие как земля, или трехмерные элементы объектов вокруг Земли.
- Большой объем: у нас может быть облако точек, скажем, от сотен тысяч до миллионов точек.Обработанные данные могут отображаться в виде поверхностей, созданных из этих облаков точек.
Исходя из этого, вы можете видеть, что интерактивная пространственная трехмерная визуализация кажется хорошим подходом.Я предполагаю что-то, где вы можете легко и быстро перемещаться в пространстве, и данные будут загружаться или генерироваться на лету в зависимости от того, на что вы смотрите.Я бы предпочел, чтобы мы не пытались написать нашу собственную 3D-библиотеку с нуля - для чего-то подобного, должны быть хорошие существующие библиотеки, с которыми мы можем работать.
Итак, я надеюсь на библиотеку, котораяподдерживает:
- хорошая навигация (библиотека, например, основана только на вращениях Эйлера? Вы можете «выбирать» объекты, чтобы вращаться вокруг или легко перемещаться?);
- современные графические процессоры (рендеринг только с шейдерами в порядке; возможность подключиться к конвейеру для написания шейдеров, которые отображают значения в цвета и динамически изменяются, было бы здорово - представьте, что значения данных задаются цветом черезтаблица соответствия цветов);
- динамические данные / объекты (данные могут быть добавлены по мере их записи; а если объем данных слишком велик, мы должны иметь возможность осуществлять входные и исходные операции иливоссоздайте их и покажите только разумное подмножество так, чтобы все, что смотрит пользовательский вид, было на экране, но другие данные могли быть загружены / восстановлены, предпочтительно асинхронно, или по крайней мере qпросто как пользователь перемещается.Очевидно, что создание данных зависит от нас, но библиотека, которая имеет хуки для такого рода вещей, была бы хороша.)
- и технологически работает с Delphi / C ++ Builder и VCL .
Библиотеки
Есть две основные библиотеки, которые я рассмотрел до сих пор - я ищу осведомленные мнения об этих или других библиотеках, которые я не рассматривал.
1. FireMonkey
Это новая библиотека пользовательского интерфейса Embarcadero, которая доступна только в XE2 и выше.Наше приложение основано на VCL, и мы хотим разместить его в окне VCL;это официально не поддерживается, но неофициально работает нормально или доступно через сторонних производителей .
Сочетание UI Framework и 3D Framework с шейдерами и т. д. звучит великолепно,Но я не знаю, насколько сложна библиотека, как она поддерживает данные, которые не являются простым объектом, таким как куб или сфера, и , насколько хорошо он спроектирован .Эта последняя ссылка подвергает серьезной критике трехмерную сторону библиотеки - достаточно серьезную, я не уверен, что она стоит в ее текущем состоянии на момент написания для нетривиального трехмерного приложения.
Стоит ли пытаться написать новое окно визуализации в нашем приложении VCL, используя FireMonkey?
2. GLScene
GLScene - это хорошо известная 3D-среда OpenGL для Delphi.Я никогда не использовал его сам, поэтому не имею никакого опыта о том, как он работает или разработан.Тем не менее, я считаю, что он хорошо интегрируется в окна VCL и поддерживает шейдеры и современные графические процессоры.Я не знаю, как работает его граф сцены или навигация или насколько хорошо могут быть реализованы динамические данные.
В его списке функций конкретно упоминаются некоторые вещи, которые меня интересуют , такие как простое вращение / перемещение, процедурные объекты (подразумевается, что динамические данные легко реализовать) и вспомогательные функции для выбора. Кажется, шейдеры - это только Cg (не GLSL или другой язык, не связанный с вендором). Он также поддерживает «полиморфную поддержку изображений для текстурирования (допускает много форматов, а также процедурные текстуры), легко расширяемая» - это может означать только много форматов изображений или это может указывать на то, где текстура может быть динамически изменена, например, для динамического цветового отображения.
Куда отсюда?
Это единственные две основные 3D-библиотеки, которые я знаю для Delphi или C ++ Builder. Я что-нибудь пропустил? Есть ли плюсы и минусы, о которых я не знаю? Есть ли у вас какой-либо опыт использования любого из них для такого рода целей, и какие подводные камни нам следует остерегаться или какие функции мы должны знать и использовать?
В настоящее время мы используем Embarcadero RAD Studio 2010 , и большая часть нашего программного обеспечения написана на C ++. У нас есть небольшое количество Delphi, и мы можем рассмотреть вопрос об обновлении IDE, но мы, скорее всего, дождемся выпуска 64-битного компилятора C ++. По этой причине лучше всего подойдет библиотека, которая работает в RS2010.
Спасибо за ваш вклад :) Мне нужны качественные ответы, поэтому я добавлю вознаграждение, когда смогу!