有没有办法在 bash 终端本身中转换 vtk 文件而不可视化为图像文件,例如 png?
我发现对于我可视化的 vtk 文件比其相应的图像文件(由不同的文件制作)花费更长的时间。
有没有办法在 bash 终端本身中转换 vtk 文件而不可视化为图像文件,例如 png?
我发现对于我可视化的 vtk 文件比其相应的图像文件(由不同的文件制作)花费更长的时间。
我不知道“在 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
...