我们的软件产生了大量的数据,这些数据是随着时间的推移进行地理参考和记录的。我们正在考虑改进可视化的方法,在3D视图中显示(处理过的)数据,考虑到它是地理参考的,似乎是一个好主意。
在基于Delphi/C++Builder的应用程序中构建这种可视化时,我正在寻找SO的建议,关于什么3D库是最好的基础。我会在可能的时候加个赏金。
数据
由此,您可以看到交互式的、基于空间的3D可视化似乎是一种很好的方法。我正在设想这样一种东西,你可以轻松快速地在太空中导航,数据将根据你正在查看的内容动态加载或生成。我更希望我们不要尝试从头开始编写我们自己的3D库--对于这样的事情,必须有好的现有库我们可以工作。
所以,我希望有一个支持以下功能的库:
库
到目前为止,我考虑过两个主要的库--我正在寻找关于这些库的知识,或者其他我没有考虑过的库。
1. FireMonkey
这是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中工作的库可能是最好的。
感谢您的意见:)我正在寻找高质量的答案,所以我会在可能的情况下添加赏金!
发布于 2012-03-08 10:24:06
我已经在我的3D地理地图软件中使用了GLScene,尽管它没有使用到你想要的程度,但我可以保证,它似乎最适合你正在尝试做的事情。
GLScene支持地形渲染和将可自定义对象添加到场景。对象可以与之交互,您可以使用GLScene的各种构建块创建复杂的对象3D模型。不幸的是,我不能说它将如何在数百万个点上工作,但我知道它是相当优化的,在最小的硬件上执行得很好-也就是说-我找到的目标PC需要一个能够使用OpenGL 2.1扩展或更高版本的专用显卡(我发现集成显卡的小问题)。
我研究过的另一个库是DXscene --它看起来与GLScene非常相似,只不过它使用的是DirectX而不是OpenGL。从内存中看,这是一个商业产品,其中GLScene是在通用公共许可证下获得许可的。(编辑-页面目前似乎已关闭:http://www.ksdev.com/index.html)
GLScene仍在积极开发中,并提供了一个相当全面的函数库,基础对象和纹理等。像旋转,平移,俯仰,滚动,旋转,光线投射-举几个例子-都为你提供了。为每个基础对象提供可见性剔除,以及查看相机、照明和网格。基础对象包括立方体、球体、管道、四面体、圆锥体、地形、网格、3d文本、箭头等等。可以使用鼠标拾取对象并沿1、2或3轴移动。其中包含帮助函数,用于自动计算鼠标所在的最顶层对象。可以通过以分层方式将基础对象附加到其他基础对象来构建复杂的3D形状。因此,例如,一辆汽车可以使用矩形作为基础对象,并将四个圆柱体连接到它作为车轮-然后您可以作为一个整体操纵“汽车”-因为四个圆柱体连接到基础矩形。
我能引起您注意的唯一缺点是,您有时只能获得有限的帮助/支持。是的,有一本参考手册和一些演示应用程序来向你展示如何做一些事情,比如选择对象和移动它们,但是参考手册并不完整,并且有可能在如何完成特定任务方面陷入困境。论坛的支持是有限的/稀疏的。如果你对3D基础和概念有很好的了解,我相信你一定能把它做好。
至于火猴--我没有这方面的经验,所以我无可奉告。我认为这更多是针对硬件要求较低的移动应用程序,因此您可能会在处理较大的数据集时遇到问题。
这里有一些你可以考虑的其他链接--我没有使用它们的经验:
最后一个是针对游戏开发的,但可能会提供有用的信息。
发布于 2012-03-08 08:14:11
你尝试过glData吗?http://gldata.sourceforge.net/它很旧(约2004年,Delphi7),我没有亲自使用过这个库,但一些输出很令人惊叹。
https://stackoverflow.com/questions/9572887
复制相似问题