Dav*_*vid 20 delphi 3d data-visualization c++builder
我们的软件会生成大量地理参考和记录的数据.我们正在考虑改进可视化的方法,并在3D视图中显示(处理过的)数据,因为它的地理参考,似乎是一个好主意.
在基于Delphi-/C++ Builder的Windows应用程序中构建这些可视化时,我正在寻找有关哪些3D库最适合作为基础的SO建议.我会尽可能地加上赏金.
从中可以看出,基于空间的交互式3D可视化似乎是一种很好的方法.我正在设想一些可以轻松快速地在空间中导航的东西,数据将根据您正在查看的内容加载或生成.我希望我们不要尝试从头开始编写我们自己的3D库 - 对于这样的事情,必须有我们可以使用的良好的现有库.
所以,我希望有一个支持的库:
到目前为止,我已经考虑了两个主要的库 - 我正在寻找关于这些的知识渊博的意见,或者我没有考虑过的其他库.
1. FireMonkey
这是Embarcadero的新UI库,仅在XE2及更高版本中可用.我们的应用程序基于VCL,我们希望在VCL窗口中托管它; 这似乎是官方不支持但非正式工作正常,或通过第三方提供.
UI框架和3D框架与着色器等的混合听起来很棒.但是我不知道库是多么复杂,它对数据的支持是什么,它不是像立方体或球体那样简单的对象,以及它的设计是多么好.最后一个链接对图书馆的3D方面提出了重大批评 - 严重到足以说明我在编写一个非平凡的3D应用程序时,目前尚不确定它是否值得.
是否值得尝试使用FireMonkey在我们的VCL应用程序中编写新的可视化窗口?
2. GLScene
GLScene是Delphi着名的3D OpenGL框架.我自己从未使用它,所以没有经验,如何工作或设计.但是,我相信它可以很好地集成到VCL窗口中,并支持着色器和现代GPU.我不知道它的场景图或导航是如何工作的,或者是如何实现动态数据的.
它的功能列表特别提到了我感兴趣的一些东西,例如简单的旋转/移动,程序对象(暗示动态数据易于实现),以及用于拾取的辅助函数.似乎着色器只是Cg(不是GLSL或其他非特定于供应商的语言.)它还支持"纹理化的多态图像支持(允许多种格式以及程序纹理),易于扩展" - 这可能仅仅意味着许多图像格式,或者它可以指示可以动态改变纹理的某些东西,例如用于动态颜色映射.
这是我所知道的Delphi或C++ Builder中唯一的两个主要3D库.我错过了吗?我不知道有利有弊吗?您是否有任何使用这些目的的经验,我们应该知道和使用哪些陷阱?
我们目前使用Embarcadero RAD Studio 2010,我们的大部分软件都是用C++编写的.我们有少量的Delphi,可能会考虑升级IDE,但我们最有可能等到64位C++编译器发布.因此,在RS2010中工作的库可能是最好的.
感谢您的意见:)我正在追求高质量的答案,所以我会尽可能多地加入赏金!
我在我的3D地理映射软件中使用了GLScene,虽然它在某种程度上没有使用,但我可以保证它似乎最适合你想要做的事情.
GLScene支持地形渲染并向场景添加可自定义的对象.可以与对象进行交互,您可以使用GLScene的各种构建块创建对象的复杂3D模型.不幸的是我不知道它将如何工作数百万点,但我知道它是相当优化的并且在最小的硬件上表现很好 - 据说 - 我发现的目标PC需要一个能够使用OpenGL 2.1扩展的专用显卡或更高(我发现集成显卡的小问题).
我看过的另一个库是DXscene - 虽然使用DirectX而不是OpenGL,但看起来与GLScene非常相似.从内存来看,这是一个商业产品,其中GLScene是根据GPL许可的.(编辑 - 此页面似乎已关闭:http://www.ksdev.com/index.html)
GLScene仍在积极开发中,提供了一个相当全面的功能库,基础对象和纹理等.旋转,平移,俯仰,滚动,转弯,光线投射等等都是为您提供的.为每个基础对象以及查看摄像机,照明和网格提供可见性剔除.基础对象包括立方体,球体,管道,四面体,圆锥体,地形,网格,三维文字,箭头等等.可以使用鼠标拾取对象并沿1,2或3轴移动.包括辅助函数以自动计算鼠标所在的最顶层对象.可以通过以分层方式将基础对象附加到其他基础对象来构建复杂的3D形状.因此,例如,可以使用矩形作为基础对象并为车轮连接四个气缸来构建汽车 - 然后您可以整体操纵"汽车" - 因为四个气缸连接到基本矩形.
我能引起你注意的唯一缺点是你可以获得有时有限的帮助/支持.是的,有一个参考手册和一些演示应用程序,向您展示如何选择对象并移动它们,但参考手册不完整,有可能"陷入"如何完成一个某些任务.论坛支持有限/稀疏.如果您对3D基础知识和概念有充分的了解,我相信您可以坚持下去.
至于Firemonkey - 我没有这方面的经验所以我无法发表评论.我相信这更适合具有较低硬件要求的移动应用程序,因此您可能会遇到较大数据集的问题.
以下是您可能会考虑的其他一些链接 - 我没有使用它们的经验:
最后一个是针对游戏开发 - 但可能提供有用的信息.
| 归档时间: |
|
| 查看次数: |
3204 次 |
| 最近记录: |