我们的软件产生大量的数据,随时间被地理参考和记录。我们正在考虑改进可视化的方法,并且在3D视图中显示(处理后的)数据,因为它被地理参考,似乎是一个好主意。

我正在寻找SO的建议,当在基于Delphi- / C Builder的Windows应用程序中构建这些可视化时,3D库最适合用作基础。我可以添加一个赏金。

数据

>随着时间的推移(小时到天)被记录,并被GPS标记。所以,随着时间的推移,我们有很多数据跟随一条路径。
>空间:它代表地球的真正的3D元素,如土地,或地球上的物体的3D元素。
>高容量:我们可以有一个点云,说,几十万到几百万分。处理的数据可能会显示为从这些点云创建的曲面。

从中可以看出,基于交互式空间的3D可视化似乎是一种好的方法。我正在设想一些可以轻松快速地在空间中导航的东西,数据将根据您正在查看的内容加载或快速生成。我希望我们不要从头开始编写我们自己的3D图书馆 – 对于这样的事情,必须有很好的现有图书馆可以从中工作。

所以,我希望有一个图书馆支持:

>良好的导航(仅仅是基于欧拉旋转的图书馆,例如,你可以选择对象旋转还是轻松移动?)
>现代GPU(仅限着色器渲染是好的;能够挂接到管道中以编写将值映射到颜色的着色器,并且动态更改将很好 – 通过颜色查找表来考虑数据值给出颜色);
>动态数据/对象(可以将数据记录在数据中);如果数据量太高,我们应该可以将页面输入和输出或重新创建,并且只显示一个明智的子集,以便无论用户的视口是在屏幕上看到,但其他数据可以加载/重新生成,最好是异步地,或者至少在用户导航时快速地显示,显然数据创建依赖于我们,但是一个有这种东西的钩子的图书很棒。 )
>在技术上,与Delphi / C Builder和VCL协同工作。

图书馆

目前我已经考虑过两个主要的图书馆 – 我正在寻找有关这些图书的知识渊博的观点,或者我还没有考虑过的其他图书馆。

FireMonkey

这是Embarcadero的新UI库,仅在XE2及更高版本中可用。我们的应用程序基于VCL,我们希望在VCL窗口中托管这个;似乎正式不支持,但unofficially works fine,或可用through third-parties。

UI框架和3D框架与着色器等的混合听起来很棒。但是我不知道这个库是多么复杂,对数据不是一个像多维数据集或球体这样的简单对象的数据以及how well-designed it is的支持。最后一个链接对图书馆的3D侧面有很大的批评 – 我足够严格在撰写不平凡的3D应用程序时,不确定它在当前状态下是否值得。

是否值得尝试使用FireMonkey在我们的VCL应用程序中编写一个新的可视化窗口?

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图书馆建议?的更多相关文章

  1. 基于HTML5 WebGL的3D机房的示例

    这篇文章主要介绍了基于HTML5 WebGL的3D机房的示例的相关资料,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  2. 基于HTML5 Canvas的3D动态Chart图表的示例

    这篇文章主要介绍了基于HTML5 Canvas的3D动态Chart图表的示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  3. ios – 如何使用blender和PowerVR SDK为cocos3d创建一个简单的3d球体

    我是cocos3d的新手.我想创建一个简单的项目–旋转的3d球体.我用搅拌机设计了一个3d球体.所以我想要帮助创建collada文件和pod文件.使用blender和PowerVRSDK创建这个简单的3d对象时应该注意什么.谢谢解决方法如何在搅拌机中制作简单的球体,然后使用JeffLamarche的Blender-to-iOSscript将其导出?这甚至不需要Cocos或PowerVR,但这是一个良好的开端.由于您可以在iOS中轻松地将Cocos与非Cocos类集成,因此可能会有所帮助.你可以更进一步,利

  4. iOS 8 Today Widget适合使用自动布局的UITableView高度

    我正在使用一个TodayExtension,显示一个UITableView.只有几个项目,但我也得到空行.我可以在桌面视图高度上使用自动布局和出口限制来调整表的大小,使其仅适合含有内容的行.我不能做的是使小部件调整大小以包装表视图.在这一刻,我留下了一个适当的大小的桌子和很多空的空间.解决方法如果您希望小部件的控制器成为tableView的高度,请执行以下操作:每次重新加载tableView的数据

  5. ios – 我在哪里可以找到用于创建IPad应用程序的Delphi资源?

    我之前一直在使用Delphi并且一直都是Windows家伙.我的妻子为我的生日买了一台新的iPad,我昨晚第一次使用它.哇!…

  6. 如何从命令行部署OSX或IOS Delphi项目?

    我正在使用像这样的脚本构建我的Delphi应用程序现在我想添加一个选项将应用程序部署到OSX系统修改这样的脚本,那么可以从命令行部署OSX或IOSDelphi项目吗?

  7. swift 快速奔跑的兔几 本节的内容是:SceneKit 第一说 创建一个3D胶囊

    SceneKit是一组类,可以用来在App中创建和呈现3D场景。它还可以和coreanimation和spritekit无缝交互,这就意味着我们可以在多种上下文中使用SceneKit1、SceneKit的结构SceneKit通过SCNView来呈现一切。

  8. Swift - 给表格添加Cell的显示动画3D缩放

    下面的一个样例是让tableView显示数据的时候具有一个很炫的3D缩放效果。看方法名就知道这是在Cell将要显示的时候执行的方法。//设置cell的显示动画functableView(tableView:UITableView!

  9. Android 3D动画

    祝好运!

  10. 如何检查Android和iOS上的网络是否可用(Delphi XE5)

    解决方法试试这个:

随机推荐

  1. delphi – 主窗口按进程名称处理

    DelphiXe,Win7x64如何从进程名称(exe文件的完整路径)获取主窗口句柄,或至少一个类或窗口名称(如果该进程只有一个窗口).例:解决方法我同意Petesh的说法,你需要枚举顶级窗口并检查创建它的进程的模块文件名.为了帮助您开始枚举顶级窗口,这是一个delphi实现.首先,当你回调给你时,你需要一些与EnumWindows方法通信的方式.为此声明一条记录,该记录将保存您要查找的模块的文件

  2. 如何在Delphi中纯粹通过RTTI信息(即不使用任何实际对象实例)获取TObjectList的子项类型?

    我正在使用RTTI实现用于流式传输任意Delphi对象的通用代码,并且为了使其工作(更具体地说,为了使加载部分工作),我需要以某种方式获得TObjectList的子项类型<T>不使用任何实际对象实例的字段.要求不使用任何实际对象实例的明显原因是,在从流加载对象的情况下(仅基于要加载的对象的类类型的知识),我将不会有任何实例在加载完成之前完全可用–我宁愿只能访问相关类的纯RTTI数据.我希望能

  3. inno-setup – Inno Setup – 安装程序背景图片

    图像作为安装程序背景如何用inno5.5.9做到这一点?

  4. inno-setup – Inno Setup – 如何添加多个arc文件进行解压缩?

    使用InnoSetup解压缩弧文件.我希望有可能解压缩多个arc文件以从组件选择中安装文件(例如).但仍然显示所有提取的整体进度条.这可能吗?的回答的修改预备是相同的,参考其他答案.在ExtractArc中,为要提取的每个存档调用AddArchive.

  5. delphi – 如何在DataSet的帮助下在TAdvStringGrid中显示数据库中的BLOB图像

    解决方法CreateBlobStream正在创建一个TStream对象,而不是TMemoryStream.由于您不想将JPG写入数据库,因此应使用bmRead而不是bmReadWrite.我不习惯sqlite,但你必须确保使用合适的二进制日期类型.为了确保存储的图像真的是JPG,您应该编写JPG以进行测试,例如:

  6. inno-setup – 在Inno Setup的Code部分下载程序后运行程序

    如何运行我通过Internet下载的应用程序,在代码部分中使用,并等待该应用程序完成运行.我有,使用InnoTools下载程序,下载这两个文件,我想,在第二个完成下载后运行该下载,或jdk-8u111-windows-x64.exe,然后继续安装.解决方法使用其他下载插件,而不是ITD(请参阅下面的原因).例如,InnoDownloadPlugin.当您包含idp.iss时,它定义了一个全局IDP

  7. progress-bar – Inno Setup Run部分的简单进度页面

    我的安装程序非常简单,它基本上是:>欢迎页面>进展页面>最终页面欢迎页面和最终页面是标准页面.在Progress页面,我正在静默安装一堆其他程序.实际的脚本是在[Run]部分中安装每个程序.问题是酒吧达到100%然后停留在那里.我只能更改消息文本.我想要实现的是使用Pascal脚本显示进度,例如:这样我就可以显示更准确的进度条.这就是我所拥有的:问题是,当我构建安装程序时,它不显示欢迎页面.我做错了什么?

  8. delphi – 如何使“显示/隐藏桌面图标”设置生效?

    下面的代码调用SHGetSetSettings函数来隐藏桌面图标但它只是从视图菜单中取消选中“显示桌面图标”.我打电话给SHChangeNotify;更新桌面,但这不起作用?解决方法isa,要刷新桌面,您可以将F5键发送到progman窗口隐藏桌面图标的另一种方法是再次显示

  9. inno-setup – Inno Setup – 避免显示子安装程序的文件名

    我试图使用InnoSetup–Howtohidecertainfilenameswhileinstalling?(FilenameLabel)的想法Theonlysuresolutionistoavoidinstallingthefiles,youdonotwanttoshow,usingthe[Files]section.Installthemusingacodeinstead.UsetheEx

  10. inno-setup – Inno Setup磁力链接下载实施

    我目前正在使用InnoDownloadPlugin为我的安装程序下载文件,这个问题最大的问题是faila正确下载文件.因为连接不良等诸多原因.我想添加一种替代方法来下载文件,因此用户可以选择是否需要常规方式或torrent方式.我知道我可以使用aria2c.exe应用程序(https://aria2.github.io/),有人可以帮我实现它的inno设置代码吗?我需要的是使用torrent(ar

返回
顶部