我有一个legacy VTK files的序列,例如:file_0.vtk,file_1.vtk,file_2.vtk,我可以在ParaView中打开它作为文件_ .. vtk的时间序列(described here),并且可以查看和动画文件序列使用时间控件.我目前正在使用ParaView 4.4.0.
传统的VTK文件如下所示,其中时间步长值存储在标题中(第二行):
# vtk DataFile Version 3.0
vtk output: file at time 0.0
ASCII
...
但是,在ParaView中,时间步长值假定与索引相同,即索引0是时间0.0,索引1是时间1.0,索引2是时间2.0.添加AnnotateTime过滤器还会显示时间步长度索引的这些时间步长.
但是,我的文件使用可变时间步长,如每个文件的标题中所述. (我不认为传统的VTK格式有办法指定这些值).我查看了ParaView的应用程序,看看有没有办法导入或修改这些值,但我找不到它.
使用内置的Python Shell,这是我用LegacyVTKReader创建对象的可悲尝试:
files = ['file_0.vtk', 'file_1.vtk', 'file_2.vtk']
times = [0.0, 0.022608, 0.73781]
# First attempt
r = LegacyVTKReader(FileNames=files, TimestepValues=times)
print(r.TimestepValues) # [0.0, 1.0, 2.0]
# Second attempt to try and fix it
r.TimestepValues = times
print(r.TimestepValues) # [0.0, 0.022608, 0.73781]
Show(r)
它在对象“信息”对话框中正确显示,直到我添加一个AnnotateTimeFilter,它重置0到0,1到1和2到2.
有没有办法,使用点击或Python,更新ParaView中传统VTK对象的每个索引的时间步长值?
解决方法:
我调查了你的答案,发现没有直接的方法去做你的要求.
但是,这是间接解决方案(取自the paraview mailing list):
1.将您的vtk文件转换为xml paraview文件(例如VTU或VTM文件):使用paraview打开您的vtk文件,并使用File>编写新文件.保存数据.您需要检查“将所有时间步长写为文件系列”.
2.创建ParaView数据文件(.pvd).
在此文件中,您可以指定每个文件的时间步长值.这是一个例子:
<VTKFile type="Collection" version="0.1" byte_order="LittleEndian">
<Collection>
<DataSet timestep="0" file='file_0.vtu'/>
<DataSet timestep="0.022608" file='file_1.vtu'/>
<DataSet timestep="0.73781" file='file_2.vtu'/>
</Collection>
</VTKFile>
3.在paraview中加载.pvd文件.您现在可以使用具有良好时间步长值的Annotate Time过滤器.
步骤1是必需的,因为上述解决方案不适用于.vtk文件,如the paraview wiki中所述.