我听过开发人员对Visualization ToolKit(VTK)的一些好评。但究竟有多强大呢?例如,它能处理具有数十亿个网格点的整个油藏(在模拟器中)的可视化吗?大多数工业油藏模拟器在并行处理器上运行。我知道VTK支持并行处理,但是在运行像水库模拟这样的东西时,它又能如何稳定地利用并行处理器?有没有人在如此大规模的项目中使用过VTK?

Mathematica支持一些简单的油藏模拟,但我认为它使用Java Swing库。那么,有没有人知道VTK被用于3DSplice之外的强大可视化?另外,任何人都可以说使用VTK开发时间吗?

有帮助吗?

解决方案

VTK用C ++编写,可用于C ++,Python,Tcl / Tk,Java。桑迪亚等实验室(包括我相信,他们的 Titan 努力),洛斯阿拉莫斯和利弗莫尔,使用VTK的可视化工作规模足以与您的雄心相媲美(当然,这需要大量的硬件支持,以及对VTK和项目中使用的所有其他技术非常有经验的非常熟练的程序员 - “数十亿” “网格点数”并不是一个需要解决的项目,除非你拥有一支具有如此极端技能的团队,而不是任何工具包。

我不是说这个(你想到的一个雄心勃勃的可扩展规模的可视化项目)无论你怎么解决它都会很容易 - 但是我想不出任何可以做到这一点的替代框架比VTK更容易! - )

其他提示

VTK是一个非常强大的工具包,因为它提供了各种可视化算法的合理有效的实现。要查看VTK可以执行的操作,我建议您查看 ParaView 。 ParaView围绕VTK构建可用的应用程序,因此您可以通过将各种VTK组件耦合在一起来立即可视化数据。

为了更直接地解决您的问题,VTK中的并行处理用于加速创建可视化。这应该是稳定的,但与模拟计算无关。学习如何使用VTK需要一些时间,但是有一本书你可以购买解释如何使用它的许多方面。尝试使用Python包装是了解如何使用VTK的好方法。

对于您的应用程序,我不确定VTK是否是最合适的解决方案。我建议使用ParaView或Python VTK绑定进行一些小规模实验,看看你是否可以创建一个合理的模拟可视化。

我对VTK的个人经验是积极的,但仅限于小数据集。如果你有大型数据集,它肯定会非常慢,就像你的情况一样。从好的方面来说,它运行了如此多的可视化模式,在纯OpenGL中重写它们是不可想象的。我不知道VTK的缓慢来自哪里,但管道架构可能没有帮助。此外,它的大部分取决于您使用的过滤器。例如,体积图通过构造(许多平行的透明平面)非常慢。

我们发现有用的解决方案是在绘制数据集之前将数据集修剪到最低限度。通常,视觉准确度的损失可以忽略不计。您也可以尝试使用LevelOfDetail(LOD)过滤器,但我没有经验。

定义“强大”的方式VTK(或任何图书馆)是不可能的。这一切都取决于您的需求。这并不是说你可以在VTK上抛出任何网格,加强大量硬件并期望它能够顺利运行。 VTK不适合大型模型 - 但是有一个名为 Paraview 的图书馆试图支持这一点。

旁注:我们在普通笔记本电脑上交互式地展示了十亿个细胞模型(不使用VTK / Paraview)。怎么样?我猜这是个秘密...... :)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top