Paraview设置动画显示时间(Annotate Time)格式

最近想将自己的科研成果做成酷炫一点的动画放在论文附件里,于是用到了Paraview,没想到进了一个大坑,官方文档没有很详细的说明,网上的教程也很少。动画里需要显示每一帧的时间,但是Paraview默认是一帧为一秒,完全不符合我的需求。折腾了两三天也没搞明白怎么设置,最后在官方论坛里求助,终于解决了这个问题。一下为具体设置步骤:

  1. 导入一组VTK数据,导入时不要展开,直接点击合并的图标,这样Paraview默认导入为Animation,在该例子中为dNe_*,数据时间间隔为5分钟
  2. 设置dNe_*的properties,colormap等,设置好以后一定记得点击Apply,否则在Filters里面的选项全是灰色不可用
  3. 点击Filters->Alphabetical->ProgrammableFilter,在Properties->Script中设置以下两段代码中任意一段,按照自己的需求选择并修改
#set as numeric
pdo =  self.GetOutput()
sexaTime = vtk.vtkFloatArray()
sexaTime.SetName("SexaTime")
t = inputs[0].GetInformation().Get(vtk.vtkDataObject.DATA_TIME_STEP())
#convertedTime = t+18.5 #compute your time here in python
convertedTime = t//12+18+(t*5)%60/100
sexaTime.InsertNextValue(convertedTime)
pdo.GetFieldData().AddArray(sexaTime)
#set as string
pdo =  self.GetOutput()
sexaTime = vtk.vtkStringArray()
sexaTime.SetName("SexaTime")
t = inputs[0].GetInformation().Get(vtk.vtkDataObject.DATA_TIME_STEP())
#timeAsAString = f(t) #compute your time here in python in a string format
s1=t//12+18
s2=(t*5)%60
timeAsAString = str(t//12+18)+':'+str((t*5)%60)
sexaTime.InsertNextValue(timeAsAString)
pdo.GetFieldData().AddArray(sexaTime)
  1. 在Pipeline Browser中选中ProgrammableFilter然后点击Filters->Annotation->AnnotateGlobalData,然后在Properties中设置AnnotateGlobalData的显示格式

最后设置完毕后的界面如下所示


image.png

你可能感兴趣的:(Paraview设置动画显示时间(Annotate Time)格式)