如何将 vtkSphere 保存到 VTK 文件

How to save a vtkSphere to a VTK file?

本文关键字:VTK 文件 保存 vtkSphere      更新时间:2023-10-16

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

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

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

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

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

如果要

从 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的答案是正确的,但缺少一行代码来使其工作。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()

这将按预期生成文件。

我认为必要的步骤是:

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

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