VTK 文件格式转图像文件

计算科学 可视化 VTK
2021-12-22 14:58:03

有没有办法在 bash 终端本身中转换 vtk 文件而不可视化为图像文件,例如 png?

我发现对于我可视化的 vtk 文件比其相应的图像文件(由不同的文件制作)花费更长的时间。

2个回答

我不知道“在 bash 终端本身中”,但我使用 Python 脚本和 Visit。有关一些示例,请参见此处此处

下面我粘贴了一个简单的脚本,用于制作沿 3D 立方体的 y = 0.5 的 2D 切片图像。该脚本被命名为“script.py”,“ysolution”指的是带有 .vtk 文件的变量名。

# invoke like so: visit -cli -nowin -s script.py ysolution-19.vtk ysolution

import os,sys
wholefile = os.getcwd() + "/" + sys.argv[-2]
fieldname = sys.argv[-1]

OpenDatabase(wholefile)
AddPlot("Pseudocolor",fieldname)
AddOperator("Slice")
s = SliceAttributes()
s.originIntercept = 0.5
SetOperatorOptions(s)
DrawPlots()
t = SaveWindowAttributes()
t.fileName = "y19-"
SetSaveWindowAttributes(t)
n = SaveWindow()
print n

quit()

我建议使用mayavi(例如分布在pythonxy中)来完成这项任务。假设 vtk 文件是my_input_file.vtk并且您希望使用字形在切割平面中显示矢量场,然后另存为 png 图像,以下方法可以解决问题:

  • 直接从终端将您的 vtk 保存为图像:

    $ mayavi2 -d my_input_file.vtk -m VectorCutPlane -f MaskPoints -m Glyph \ -s "scene.save('my_image.png')"

  • 或者,或者将内容包装在一个可执行的 shell 脚本mayavi_script.sh中,其中包含:

    mayavi2 -d my_input_file.vtk \ -m VectorCutPlane \ -f MaskPoints \ -m Glyph \ -s "scene.save('my_image.png')"

    在这两种情况下,开关-d分别代表数据文件、模块过滤器和可执行的 Python 表达式。这只是一个示例,但在检查文档后可以完成许多其他事情。对于在屏幕外模式下解析命令非常有用,因此不会打开任何 GUI。-m-f-s-o

  • 对于具有图像输出的更高级的屏幕外可视化,您可以使用mlab及其管道模块编写和运行 mayavi 脚本(与 Andrew T. Barker 对 Visit 的回答所建议的想法相同) :

    import mayavi.mlab as ml ml.options.offscreen = True ...