VTK is coded in C++ and usable in C++, Python, Tcl/Tk, Java. Labs such as Sandia (including, I believe, their Titan effort), Los Alamos, and Livermore, use VTK for visualization efforts on a scale large enough to rival your ambitions (of course, this is done with huge amounts of hardware in support, and extremely skilled programmers very experienced with VTK and all other technologies being used in the project -- "billions of grid points" is not a project to tackle until you have a team with such extreme skills, not with ANY toolkit).
I'm not claiming this (a visualization project of the fiercely ambitious scale you have in mind) is going to be EASY no matter how you tackle it -- but I can't think of any alternative frameworks that would make it any easier than VTK would!-)
VTK is a pretty powerful toolkit in that it offers reasonably efficient implementations of a wide variety of visualization algorithms. To see some of what VTK can do, I recommend checking out ParaView. ParaView builds usable application around VTK so you can immediately visualize data by coupling various VTK components together.
To more directly address your questions, the parallel processing in VTK is used to accelerate creating the visualization. This should be stable, but independent of your simulation calculation. Learning how to use VTK takes some time, but there is a book that you can buy that explains many aspects of how to use it. Experimenting with the Python wrappings is a good way to get up to speed on how to use VTK.
For your applications, I'm not sure if VTK is the most suitable solution. I would recommend some small scale experiments using either ParaView or the Python VTK bindings to see if you can create a reasonable visualization of your simulations.
My personal experience with VTK is positive, but only with small datasets. It can definitely be very slow if you have large datasets, as in your case. On the plus side, it sports so many visualization modes that it's unthinkable to rewrite them in pure OpenGL. I don't know where the slowness of VTK comes from, but the pipeline architecture probably does not help. Also, much of it depends on the filter you use. The Volumetric plot, for example, is insanely slow by construction (many parallel transparent planes).
A solution we found useful was to trim the dataset to a bare minimum before plotting it. Very often, the loss of visual accuracy is negligible. You can also try with the LevelOfDetail (LOD) filter but I have no experience with it.
Defining how "powerful" VTK (or any library) is impossible. It all depends on your needs. It's not like you can throw any grid at VTK, beef up with loads of loads of hardware and expect it to run smoothly. VTK is not geared towards huge models - however there's a library named Paraview that attempts to support this.
Sidenote: we visualize billion cell models interactively on plain laptops (not using VTK/Paraview). How? I guess that's a secret... :)
发布评论
评论(4)
VTK 采用 C++ 编码,可用于 C++、Python、Tcl/Tk、Java。桑迪亚(我相信,包括他们的 Titan 工作)、洛斯阿拉莫斯和利弗莫尔等实验室使用VTK 的可视化工作规模足够大,足以与您的野心相媲美(当然,这是在大量硬件的支持下完成的,并且技术精湛的程序员对 VTK 和项目中使用的所有其他技术非常有经验 - “数十亿网格点”不是一个需要解决的项目,除非你拥有一支具有如此极端技能的团队,而不是使用任何工具包)。
我并不是说这个(你心目中规模宏大的可视化项目)无论你如何解决它都会很容易——但我想不出任何替代框架可以让它变得比VTK 会!-)
VTK is coded in C++ and usable in C++, Python, Tcl/Tk, Java. Labs such as Sandia (including, I believe, their Titan effort), Los Alamos, and Livermore, use VTK for visualization efforts on a scale large enough to rival your ambitions (of course, this is done with huge amounts of hardware in support, and extremely skilled programmers very experienced with VTK and all other technologies being used in the project -- "billions of grid points" is not a project to tackle until you have a team with such extreme skills, not with ANY toolkit).
I'm not claiming this (a visualization project of the fiercely ambitious scale you have in mind) is going to be EASY no matter how you tackle it -- but I can't think of any alternative frameworks that would make it any easier than VTK would!-)
VTK 是一个非常强大的工具包,因为它提供了各种可视化算法的相当有效的实现。要了解 VTK 的一些功能,我建议查看 ParaView。 ParaView 围绕 VTK 构建可用的应用程序,因此您可以通过将各种 VTK 组件耦合在一起来立即可视化数据。
为了更直接地解决您的问题,VTK 中的并行处理用于加速创建可视化。这应该是稳定的,但与您的模拟计算无关。学习如何使用 VTK 需要一些时间,但是您可以购买一本书,其中解释了如何使用它的许多方面。尝试 Python 包装是快速了解如何使用 VTK 的好方法。
对于您的应用程序,我不确定 VTK 是否是最合适的解决方案。我建议使用 ParaView 或 Python VTK 绑定进行一些小规模实验,看看是否可以创建合理的模拟可视化。
VTK is a pretty powerful toolkit in that it offers reasonably efficient implementations of a wide variety of visualization algorithms. To see some of what VTK can do, I recommend checking out ParaView. ParaView builds usable application around VTK so you can immediately visualize data by coupling various VTK components together.
To more directly address your questions, the parallel processing in VTK is used to accelerate creating the visualization. This should be stable, but independent of your simulation calculation. Learning how to use VTK takes some time, but there is a book that you can buy that explains many aspects of how to use it. Experimenting with the Python wrappings is a good way to get up to speed on how to use VTK.
For your applications, I'm not sure if VTK is the most suitable solution. I would recommend some small scale experiments using either ParaView or the Python VTK bindings to see if you can create a reasonable visualization of your simulations.
我个人对 VTK 的体验是积极的,但仅限于小数据集。如果您有很大的数据集(就像您的情况一样),它肯定会非常慢。从好的方面来说,它支持如此多的可视化模式,以至于用纯 OpenGL 重写它们是不可想象的。我不知道VTK的缓慢从何而来,但管道架构可能没有帮助。此外,很大程度上取决于您使用的过滤器。例如,体积图的构造速度非常慢(许多平行的透明平面)。
我们发现有用的一个解决方案是在绘制数据集之前将其修剪到最低限度。很多时候,视觉准确性的损失可以忽略不计。您还可以尝试使用 LevelOfDetail (LOD) 过滤器,但我没有这方面的经验。
My personal experience with VTK is positive, but only with small datasets. It can definitely be very slow if you have large datasets, as in your case. On the plus side, it sports so many visualization modes that it's unthinkable to rewrite them in pure OpenGL. I don't know where the slowness of VTK comes from, but the pipeline architecture probably does not help. Also, much of it depends on the filter you use. The Volumetric plot, for example, is insanely slow by construction (many parallel transparent planes).
A solution we found useful was to trim the dataset to a bare minimum before plotting it. Very often, the loss of visual accuracy is negligible. You can also try with the LevelOfDetail (LOD) filter but I have no experience with it.
定义 VTK(或任何库)有多“强大”是不可能的。这一切都取决于您的需求。这并不是说你可以在 VTK 上添加任何网格,使用大量硬件来增强负载并期望它顺利运行。 VTK 并不适合大型模型 - 但是有一个名为 Paraview 的库试图支持这一点。
旁注:我们在普通笔记本电脑上以交互方式可视化十亿个细胞模型(不使用 VTK/Paraview)。如何?我想这是一个秘密......:)
Defining how "powerful" VTK (or any library) is impossible. It all depends on your needs. It's not like you can throw any grid at VTK, beef up with loads of loads of hardware and expect it to run smoothly. VTK is not geared towards huge models - however there's a library named Paraview that attempts to support this.
Sidenote: we visualize billion cell models interactively on plain laptops (not using VTK/Paraview). How? I guess that's a secret... :)