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
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容