【发布时间】:2012-03-23 07:02:12
【问题描述】:
我们的软件会生成大量的地理参考数据,并随着时间的推移记录下来。我们正在考虑改进可视化的方法,并在 3D 视图中显示(处理后的)数据,考虑到地理参考,这似乎是个好主意。
我正在寻找 SO 关于在基于 Delphi/C++Builder 的 Windows 应用程序中构建此类可视化时最好使用哪些 3D 库作为基础的建议。我会尽可能增加赏金。
数据
- 随时间(数小时到数天)记录并带有 GPS 标记。因此,随着时间的推移,我们有大量数据遵循一条路径。
- 是空间的:它代表地球的真实 3D 元素,例如土地,或地球周围物体的 3D 元素。
- 大容量:我们可以拥有一个点云,例如,数十万到数百万个点。处理后的数据可能会显示为从这些点云创建的表面。
从中可以看出,交互式、基于空间的 3D 可视化似乎是一种不错的方法。我正在设想一些东西,您可以轻松快速地在太空中导航,并且数据将根据您正在查看的内容动态加载或生成。我希望我们不要尝试从头开始编写我们自己的 3D 库 - 对于这样的事情,必须有我们可以使用的良好现有库。
所以,我希望有一个库支持:
- 良好的导航(例如,库是否仅基于 Euler 旋转?您可以“挑选”对象以轻松旋转或移动吗?);
- 现代 GPU(仅着色器渲染是可以的;能够连接到管道以编写将值映射到颜色并动态更改的着色器会很棒 - 想想通过颜色查找表给定颜色的数据值);
- 动态数据/对象(数据可以在记录时添加;如果数据量太大,我们应该能够分页进出或重新创建它们,并且只显示合理的子集,以便无论用户的视口在屏幕上看什么, 但其他数据可以加载/重新生成, 最好是异步的, 或者至少在用户导航时快速. 显然数据创建取决于我们, 但是一个有这种钩子的库事情会很棒。)
- 在技术上,可与 Delphi / C++Builder 和 VCL 一起使用。
库
到目前为止,我已经考虑了两个主要库 - 我正在寻找有关这些的知识渊博的意见,或者我没有考虑过的其他库。
1. 火猴
这是 Embarcadero 的新 UI 库,仅在 XE2 及更高版本中可用。我们的应用程序基于 VCL,我们希望将其托管在 VCL 窗口中;这似乎是官方不支持但unofficially works fine,或者可用through third-parties。
UI 框架和 3D 框架与着色器等的混合听起来很棒。但我不知道这个库有多复杂,它对不是像立方体或球体这样的简单对象的数据有什么支持,以及how well-designed it is。最后一个链接对库的 3D 方面提出了重大批评 - 严重到我不确定 在撰写本文时的当前状态对于一个非平凡的 3D 应用程序是否值得。
是否值得尝试使用 FireMonkey 在我们的 VCL 应用程序中编写一个新的可视化窗口?
2。 GLScene
GLScene 是一个著名的 Delphi 3D OpenGL 框架。我自己从未使用过它,因此对它的工作原理或设计方式没有经验。但是,我相信它可以很好地集成到 VCL 窗口中并支持着色器和现代 GPU。我不知道它的场景图或导航是如何工作的,也不知道动态数据的实现效果如何。
Its feature list specifically mentions some things I'm interested in,比如简单的旋转/移动,程序化的对象(暗示动态数据很容易实现),以及拾取的辅助函数。似乎着色器只是 Cg (不是 GLSL 或其他非供应商特定语言。)它还支持“纹理的多态图像支持(允许多种格式以及程序纹理),易于扩展” - 这可能只是意味着许多图像格式,或者它可能表示可以动态更改纹理的内容,例如动态颜色映射。
从这里到哪里?
这是我所知道的用于 Delphi 或 C++Builder 的仅有的两个主要 3D 库。我错过了吗?有我不知道的优点和缺点吗?您是否有使用其中任何一种实现此类目的的经验,我们应该警惕哪些陷阱或我们应该了解和使用哪些功能?
我们目前使用Embarcadero RAD Studio 2010,并且我们的大部分软件都是用 C++ 编写的。我们有少量的 Delphi,可能会考虑升级 IDE,但我们最有可能等到 64 位 C++ 编译器发布。因此,在 RS2010 中工作的库可能是最好的。
感谢您的意见 :) 我追求高质量的答案,所以我会尽可能增加赏金!
【问题讨论】:
-
为什么投反对票?如果您可以提供有关如何使这个问题变得更好的有用信息,请提供。
-
为什么是 3D?您是否考虑过从 2D 开始? 2D 中的时空表示是一个真正的挑战,而 3D 则更难。
-
@Tibo:好点。我们已经有了很好的 2D 可视化,我们认为 - 我们想要扩展这些,我们认为在空间中可视化空间(即 3D 表示)是下一步。但你是对的,一般来说 3D 之前的 2D 可能是一件好事 :)
标签: delphi 3d c++builder data-visualization