3D库的建议进行交互式空间数据可视化? [英] 3D library recommendations for interactive spatial data visualisation?

查看:326
本文介绍了3D库的建议进行交互式空间数据可视化?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我们的软件会产生大量的数据是地理参照,并记录随着时间​​的推移。我们正在考虑如何改善可视化,并显示在三维视图中(处理)的数据,因为它的地理坐标,似乎是一个不错的主意。

Our software produces a lot of data that is georeferenced and recorded over time. We are considering ways to improve the visualisation, and showing the (processed) data in a 3D view, given it's georeferenced, seems a good idea.

我找了那么的建议是什么3D库是最好的,因为基础建设这类可视化在Delphi- / C ++ Builder的基于Windows的应用程序时使用。我将添加时,我可以赏金。

I am looking for SO's recommendations for what 3D libraries are best to use as a base when building these kind of visualisations in a Delphi- / C++Builder-based Windows application. I'll add a bounty when I can.

  • 被记录在时间(数小时到数天),并且是全球定位系统标签。因此,我们有以下的一段时间路径的大量数据。
  • 是空间:它重新presents地球的真正的3D元素,如土地,或绕地球物体的3D元素
  • 是大批量的:我们可以有一个点云数十万,说,数以百万计分。处理后的数据可能会显示为从这些点云创建曲面。

从这里,你可以看到一个互动,空间为基础的三维可视化似乎是一个不错的办法。我设想的东西,你可以方便快捷地在太空中导航左右,而数据将加载或在取决于你看什么苍蝇产生。我想preFER我们不尝试写我们自己的3D库从头开始 - 这样的事情,有必须我们可以工作的好现有的库

From that, you can see that an interactive, spatially-based 3D visualisation seems a good approach. I'm envisaging something where you can easily and quickly navigate around in space, and data will load or be generated on the fly depending on what you're looking at. I would prefer we don't try to write our own 3D library from scratch - for something like this, there have to be good existing libraries we can work from.

所以,我希望有一个库,它支持:

So, I'm hoping for a library which supports:

  • 良好的导航(是图书馆根据欧拉旋转而已,例如你能'捡'对象绕或移动与易?);
  • 现代GPU (着色器仅渲染是好的,能够挂接到管道写映射值的色彩和动态改变将是巨大的着色器 - 认为数据值通过给定一个颜色颜色查找表);
  • 动态数据/对象(数据可以添加,因为它的记录;如果数据量太大,我们应该能够页的东西和退出或重新创建它们,并且只显示一个明智的子集,使得无论使用者的视区所观察的是没有屏幕上,但其它数据可以加载/再生,preferably异步,或至少快速当用户浏览,显然数据的创建是依赖于我们,但是一个库有挂钩这种事情将是巨大的。)
  • 和技术,作品使用Delphi / C ++ Builder和VCL
  • good navigation (is the library based on Euler rotations only, for example? Can you 'pick' objects to rotate around or move with easily?);
  • modern GPUs (shader-only rendering is ok; being able to hook into the pipeline to write shaders that map values to colours and change dynamically would be great - think data values given a colour through a colour lookup table);
  • dynamic data / objects (data can be added as it's recorded; and if the data volume is too high, we should be able to page things in and out or recreate them, and only show a sensible subset so that whatever the user's viewport is looking at is there onscreen, but other data can be loaded/regenerated, preferably asynchronously, or at least quickly as the user navigates. Obviously data creation is dependent on us, but a library that has hooks for this kind of thing would be great.)
  • and technologically, works with Delphi / C++Builder and the VCL.

有我目前考虑的两个主要的图书馆 - 我在寻找这些,或者其他图书馆我还没有考虑过。

There are two main libraries I've considered so far - I'm looking for knowledgeable opinions about these, or for other libraries I haven't considered.

1。 FireMonkey

1. FireMonkey

这是英巴卡迪诺全新的UI库,它是只适用于XE2以上。我们的应用程序是基于VCL,我们很希望在一个VCL窗口,举办这个;这似乎是官方支持,但<一个href="http://stackoverflow.com/questions/7315050/delphi-xe2-possible-to-instantiate-a-firemonkey-form-in-vcl-application">unofficially通过第三方的正常工作,或可

This is Embarcadero's new UI library, which is only available in XE2 and above. Our app is based on the VCL and we'd want to host this in a VCL window; that seems to be officially unsupported but unofficially works fine, or is available through third-parties.

UI框架和3D框架与着色器等的混合声音很大。但我不知道如何复杂的库,它有一个数据,这不是像一个立方体或球体,和如何精心设计是。这最后一个环节有库的3D方主要批评 - 很严重,我不知道这是值得的在写这篇文章时其当前状态的一个不平凡的3D应用程序

The mix of UI framework and 3D framework with shaders etc sounds great. But I don't know how complex the library is, what support it has for data that's not a simple object like a cube or sphere, and how well-designed it is. That last link has major criticisms of the 3D side of the library - severe enough I am not sure it's worthwhile in its current state at the time of writing for a non-trivial 3D app.

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

Is it worth trying to write a new visualisation window in our VCL app using FireMonkey?

2。 GLScene中

2. GLScene

GLScene中是一个众所周知的3D OpenGL的框架德尔福。我从来没有使用过自己,所以没有关于它是如何工作和设计经验。不过,我相信它很好地集成到VCL窗口,并支持着色器和现代GPU。我不知道怎么的场景图和导航工作,或如何动态数据都可以实现。

GLScene is a well-known 3D OpenGL framework for Delphi. I have never used it myself so have no experience about how it works or is designed. However, I believe it integrates well into VCL windows and supports shaders and modern GPUs. I do not know how its scene graph or navigation work or how well dynamic data can be implemented.

它的功能列表中特别提到有些事情我感兴趣的,如易旋转/移动,程序的对象(这意味着动态数据很容易实现),以及辅助功能采摘。 (不GLSL或其他非供应商特定语言)看来着色器CG只是它还支持的纹理多态图像支持(允许多种格式以及程序纹理),易于扩展 - 这可能只是意味着许多图像格式,或者它可以指示一些地方的纹理可以动态地改变,例如用于动态颜色映射

Its feature list specifically mentions some things I'm interested in, such as easy rotation/movement, procedural objects (implying dynamic data is easy to implement), and helper functions for picking. It seems shaders are Cg only (not GLSL or another non-vendor-specific language.) It also supports "polymorphic image support for texturing (allows many formats as well as procedural textures), easily extendable" - that may just mean many image formats, or it may indicate something where the texture can be dynamically changed, such as for dynamic colour mapping.

这些是仅有的两个主要的3D库我知道德尔福或C ++ Builder。我错过了没有?是否有优点和缺点,我不知道呢?你有没有使用这类目的的任何这些方面的经验,什么陷阱,我们应该警惕和功能,我们应该知道和使用?

These are the only two major 3D libraries I know of for Delphi or C++Builder. Have I missed any? Are there pros and cons I'm not aware of? Do you have any experience using either of these for this kind of purpose, and what pitfalls should we be wary of or features should we know about and use?

我们目前使用 Embarcadero公司的RAD Studio 2010中以及我们大部分的软件是用C ++编写。我们有少量的德尔福,并可能考虑升级的IDE,但我们是最有可能要等到64位C ++编译器被释放。出于这个原因,一个在RS2010作品库可能是最好的。

We currently use Embarcadero RAD Studio 2010 and most of our software is written in C++. We have small amounts of Delphi and may consider upgrading IDEs, but we are most likely to wait until the 64-bit C++ compiler is released. For that reason, a library that works in RS2010 might be best.

感谢您的输入:)我后,高品质的答案是,所以我时,我可以添加一个赏金!

Thanks for your input :) I'm after high-quality answers, so I'll add a bounty when I can!

推荐答案

我已经使用的GLScene在我的3D geomapping软件,虽然它不是用你正在寻找的程度。我可以保证,它似乎最适合什么你想要做的事。

I have used GLScene in my 3D geomapping software and although it's not used to an extent you're looking for I can vouch that it seems the most appropriate for what you're trying to do.

GLScene中支持地形绘制和添加自定义对象到现场。对象可以与互动,您可以创建使用GLScene中的各种积木对象的复杂的3D模型。 不幸的是,我不能说明它是如何将数以百万计分的工作,但我知道,那是相当的优化和最少的硬件进行重大 - 他这样说 - 在目标电脑,我发现需要一个专门的图形卡能够使用OpenGL 2.1的扩展或高(我发现与集成显卡的小问题)。

GLScene supports terrain rendering and adding customizable objects to the scene. Objects can be interacted with and you can create complex 3D models of objects using the various building blocks of GLScene. Unfortunately I cannot state how it will work with millions of points, but I do know that it is quite optimized and performs great on minimal hardware - that being said - the target PC I found required a dedicated graphics card capable of using OpenGL 2.1 extensions or higher (I found small issues with integrated graphics cards).

其他的图书馆中,我看了一下是DXscene - 这似乎颇为相似GLScene中虽然使用的DirectX,而不是OpenGL的。从内存中,这是一个商业产品,其中的GLScene是GPL许可。 (编辑 - 网页似乎是下降的时刻: http://www.ksdev.com/index。 HTML

The other library I looked at was DXscene - which appears quite similar to GLScene albeit using DirectX instead of OpenGL. From memory this was a commercial product where GLScene was licensed under GPL. (EDIT - the page seems to be down at the moment : http://www.ksdev.com/index.html)

GLScene中仍处于积极开发和提供功能,基本对象和纹理等相当COM prehensive库之类的东西旋转,平移,俯仰,滚转,转弯,光线投射 - 仅举几个例子 - 都为您提供。可见性剔除被提供用于每个基站对象以及查看相机,照明和网格。基本对象包括立方体,球体,管道,四面体,圆锥体,地形,网格,三维文字,箭头,仅举几例。 对象可以拾取用鼠标和沿1,2或3轴移动。辅助功能包括自动计算最顶端的对象的鼠标是下。复杂的三维形状可以通过将基础对象向其它基础对象以分层方式来建立。然后就可以操纵的车'作为一个整体 - - 因此,例如,可以使用一个矩形作为基础对象和附加四个汽缸到它的轮子建一个汽车因为四个气缸附连到基座矩形。

GLScene is still in active development and provides a fairly comprehensive library of functions, base objects and texturing etc. Things like rotation, translation, pitch, roll, turn, ray casting - to name a few - are all provided for you. Visibility culling is provided for each base object as well as viewing cameras, lighting and meshes. Base objects include cubes, spheres, pipes, tetrahedrons, cones, terrain, grids, 3d text, arrows to name a few. Objects can be picked with the mouse and moved along 1,2 or 3 axes. Helper functions are included to automatically calculate the top-most object the mouse is under. Complex 3D shapes can be built by attaching base objects to other base objects in a hierarchical manner. So, for example, a car could be built using a rectangle as the base object and attaching four cylinders to it for the wheels - then you can manipulate the 'car' as a whole - since the four cylinders are attached to the base rectangle.

唯一的缺点我可以提请你注意的是有时有限的帮助/支持提供给您。是的,有一个参考手册和一些演示程序告诉你如何做的事情,如选择对象和移动它们,但参考手册是不完整的,就是要如何完成一个'卡住'潜力某些任务。论坛的支持是比较有限/稀疏。如果你有3D基础知识和概念,健全的知识,我敢肯定,你可以螺母出来。

The only downside I could bring to your attention is the sometimes limited help/support available to you. Yes, there is a reference manual and a number of demo applications to show you how to do things such as select objects and move them around, however the reference manual is not complete and there is potential to get 'stuck' on how to accomplish a certain task. Forum support is somewhat limited/sparse. If you have a sound knowledge of 3D basics and concepts I'm sure you could nut it out.

至于Firemonkey - 我有与此没有任何经验,所以我不能发表评论。我相信这是更有针对性的低硬件要求的移动应用程序,所以你可能有更大的数据集的问题。

As for Firemonkey - I have had no experience with this so I can't comment. I believe this is more targeted at mobile applications with lower hardware requirements so you may have issues with larger data sets.

下面是你可以考虑一些其他的链接 - 我与他们没有经验的:

Here are some other links that you may consider - I have no experience with them:

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

最后一个是定位于游戏的开发 - 但可以提供有用的信息

The last one is targeted at game development - but may provide useful information.

这篇关于3D库的建议进行交互式空间数据可视化?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆