gpt4 book ai didi

delphi - 用于交互式空间数据可视化的3D库建议?

转载 作者:行者123 更新时间:2023-12-03 14:34:42 25 4
gpt4 key购买 nike

我们的软件会生成大量数据,这些数据会随着时间推移进行地理引用和记录。我们正在考虑改善可视化的方法,考虑到地理引用,在3D View 中显示(处理后的)数据似乎是个好主意。

我正在寻找SO的建议,以便在基于Delphi // C++ Builder的Windows应用程序中构建这类可视化时,最好将哪些3D库用作基础。如果可以的话,我会加赏金。

数据

  • 记录时间(数小时至数天),并带有GPS标签。因此,随着时间的流逝,我们会有大量数据。
  • 是空间的:它表示地球的真实3D元素,例如陆地,或地球周围物体的3D元素。
  • 数量很多:例如,我们可以拥有数十万到数百万个点的点云。处理后的数据可能显示为由这些点云创建的表面。

  • 从中可以看到,基于空间的交互式3D可视化似乎是一种不错的方法。我设想的是一种可以轻松快速地在太空中导航的东西,数据将根据您所查看的内容进行动态加载或生成。我希望我们不要尝试从头开始编写自己的3D库-像这样的事情,必须有可以使用的良好现有库。

    因此,我希望有一个支持以下内容的库:
  • 导航效果良好(例如,库是否仅基于Euler旋转?您可以“拾取”对象以使其旋转或轻松移动吗?);
  • 现代GPU (仅着色器渲染是可以的;能够挂接到管线中以编写将值映射到颜色并动态更改的着色器将是很棒的-通过颜色查找表考虑给定颜色的数据值);
  • 动态数据/对象(可以在记录时添加数据;如果数据量太大,我们应该能够将页面内外翻页或重新创建它们,并且仅显示一个有意义的子集,以便无论用户使用什么视口(viewport)正在查看是否在屏幕上,但是其他数据可以加载/重新生成,最好是异步加载,或者至少在用户导航时快速加载/加载。显然,数据创建依赖于我们,但是具有此类钩子(Hook)的库可能是很棒。)
  • 从技术上讲,可与Delphi / C++ Builder和VCL 一起使用。

  • 图书馆

    到目前为止,我已经考虑了两个主要的图书馆-我正在寻找关于这些图书馆的见解,或者寻找其他我尚未考虑的图书馆。

    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中工作的库可能是最好的。

    感谢您的输入:)我正在寻求高质量的答案,因此,我将在可能的情况下增加悬赏!

    最佳答案

    我已经在我的3D地理映射软件中使用了GLScene,尽管它在某种程度上并未得到您的青睐,但我可以保证它似乎最适合您的尝试。

    GLScene支持地形渲染并将可自定义的对象添加到场景。可以与对象进行交互,并且您可以使用GLScene的各种构建块来创建对象的复杂3D模型。
    不幸的是,我无法说明它将如何处理数百万个点,但是我确实知道它已经过优化并且在最少的硬件上表现出色-就是说-我发现的目标PC需要能够使用OpenGL 2.1扩展或更高(我发现集成显卡有小问题)。

    我看过的另一个库是DXscene-看起来与GLScene非常相似,尽管使用DirectX而不是OpenGL。从内存来看,这是一种商业产品,其中GLScene根据GPL获得许可。 (编辑-目前页面似乎已关闭:http://www.ksdev.com/index.html)

    GLScene仍在积极开发中,并提供功能,基础对象和纹理等功能相当全面的库。旋转,平移,俯仰,滚动,转弯,射线投射等功能(仅举几例)均已为您提供。为每个基础对象以及查看相机,照明和网格提供可见性剔除。基础对象包括立方体,球体,管道,四面体,圆锥体,地形,网格,3d文字,箭头等等。
    可以用鼠标拾取对象并沿1,2或3轴移动。包括的辅助功能可以自动计算鼠标所在的最上方的对象。可以通过以分层方式将基础对象附加到其他基础对象来构建复杂的3D形状。因此,例如,可以使用矩形作为基本对象并在车轮上附加四个圆柱体来构建汽车-然后,您可以整体操纵“汽车”-因为四个圆柱体都附加到了基本矩形上。

    我能引起您注意的唯一弊端是有时您只能获得有限的帮助/支持。是的,有一本引用手册和一些演示应用程序向您展示了如何执行诸如选择对象并四处移动这些对象的操作,但是该引用手册并不完整,并且有可能被“卡住”在完成某项操作上某些任务。论坛支持有限/稀疏。如果您对3D基础知识和概念有全面的了解,那么我相信您可以略过一下。

    至于Firemonkey-我对此没有经验,所以我无法评论。我认为这更适合硬件要求较低的移动应用程序,因此您可能会遇到较大的数据集问题。

    这是您可能会考虑的其他一些链接-我对它们没有经验:

  • http://www.truevision3d.com/
  • http://www.3impact.com/
  • Game Development in Delphi

  • 最后一个针对游戏开发-但可能会提供有用的信息。

    关于delphi - 用于交互式空间数据可视化的3D库建议?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9572887/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com