如何将vtkSphere保存到VTK文件?

时间:2015-04-22 12:03:03

标签: python c++ vtk paraview

我试图将多个球体保存到文件中,以便以后使用ParaView进行可视化。

我所拥有的是一个文本文件,其中包含有关每个球体的位置和形状(半径)的信息。使用Python和VTK,我构建了一个文件来可视化ParaView中的数据。现在,我能够将球体的中心和半径保存为vtkUnstructuredGrid,稍后在ParaView I中添加球体字形以进行正确的可视化。这种方法很有效,但每次我必须可视化数据时手动添加字形非常繁琐。所以我试图弄清楚如何将整个球体保存到vtk文件中。

我正在玩vtkSphere,但无法找到将球体保存到vtk文件的方法。

现在的问题是:如何将vtkSphere保存到VTK文件?

我愿意接受有关我的问题的替代解决方案的建议。

3 个答案:

答案 0 :(得分:2)

如果要从Paraview中保存,只需在应用字形后保存数据即可。

如果要直接生成球体,请使用 vtkSphereSource (而不是创建隐式函数的vtkSphere,例如与剪辑滤镜或字形滤镜一起使用),然后将其输出连接到vtkwriter。 以下是创建和编写单个球体的代码:

sphere = vtk.vtkSphereSource()
sphere.SetRadius(4)
sphere.SetCenter(0,0,1)
writer = vtk.vtkPolyDataWriter()
writer.SetInputData(sphere.GetOutput())
writer.SetFileName('mysphere.vtk')
writer.Update()

您也可以使用vtk代码直接创建字形,请参阅http://www.vtk.org/Wiki/VTK/Examples/Cxx/Visualization/ProgrammableGlyphFilter(在这种情况下,您使用vtkSphere作为字形的来源)

答案 1 :(得分:2)

Lib的答案是正确的,但是缺少一行代码来使其起作用。进行更改后,需要更新vtkSphereSource,以使文件在Paraview中工作。

sphere = vtk.vtkSphereSource()
sphere.SetRadius(4)
sphere.SetCenter(0,0,1)
sphere.Update()
writer = vtk.vtkPolyDataWriter()
writer.SetInputData(sphere.GetOutput())
writer.SetFileName('mysphere.vtk')
writer.Update()

这将按预期生成文件。

答案 2 :(得分:1)

我认为必要的步骤是:

合并数据,请参阅示例http://www.vtk.org/Wiki/VTK/Examples/Cxx/Filtering/CombinePolyData

并将结果写入VTP文件,请参阅示例http://www.vtk.org/Wiki/VTK/Examples/Cxx/IO/WriteVTP