24

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

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

4

4 回答 4

17

VTK 用 C++ 编码,可用于 C++、Python、Tcl/Tk、Java。Sandia(包括我相信他们的Titan项目)、Los Alamos 和 Livermore 等实验室使用 VTK 进行可视化工作,其规模足以与您的野心相媲美(当然,这是在大量硬件支持下完成的,以及非常熟练的程序员,他们对 VTK 和项目中使用的所有其他技术非常有经验——“数十亿网格点”不是一个需要解决的项目,除非你有一个拥有如此极端技能的团队,而不是使用任何工具包)。

我并不是说无论你如何处理它(一个你心目中雄心勃勃的可视化项目)都会很容易——但我想不出任何替代框架可以让它变得更容易VTK 会的!-)

于 2009-09-18T06:27:39.840 回答
8

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

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

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

于 2009-09-21T09:55:08.710 回答
4

我个人对 VTK 的体验是积极的,但仅限于小型数据集。如果您有大型数据集,就像您的情况一样,它肯定会非常慢。从好的方面来说,它具有如此多的可视化模式,以至于用纯 OpenGL 重写它们是不可想象的。我不知道VTK的慢从何而来,但管道架构可能没有帮助。此外,很大程度上取决于您使用的过滤器。例如,体积图的构建速度非常慢(许多平行的透明平面)。

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

于 2009-09-18T18:04:25.787 回答
-1

定义“强大”的 VTK(或任何库)是不可能的。这一切都取决于您的需求。这不像您可以在 VTK 上扔任何网格,增强大量硬件负载并期望它平稳运行。VTK 不适合大型模型 - 但是有一个名为Paraview的库试图支持这一点。

旁注:我们在普通笔记本电脑(不使用 VTK/Paraview)上以交互方式可视化十亿个单元模型。如何?我想这是一个秘密...... :)

于 2009-09-18T08:30:06.513 回答