如何将 vtkSphere 保存到 VTK 文件?

How to save a vtkSphere to a VTK file?

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

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

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

现在问题又来了:如何将vtkSphere保存到VTK文件中?

我乐于接受关于我的问题的替代解决方案的建议。

我认为必要的步骤是:

合并数据见示例http://www.vtk.org/Wiki/VTK/Examples/Cxx/Filtering/CombinePolyData

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

如果要从 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 作为字形的来源)

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

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()

这会按预期生成文件。