我试图将多个球体保存到文件中,以便以后使用ParaView进行可视化。
我所拥有的是一个文本文件,其中包含有关每个球体的位置和形状(半径)的信息。使用Python和VTK,我构建了一个文件来可视化ParaView中的数据。现在,我能够将球体的中心和半径保存为vtkUnstructuredGrid
,稍后在ParaView I中添加球体字形以进行正确的可视化。这种方法很有效,但每次我必须可视化数据时手动添加字形非常繁琐。所以我试图弄清楚如何将整个球体保存到vtk文件中。
我正在玩vtkSphere
,但无法找到将球体保存到vtk文件的方法。
现在的问题是:如何将vtkSphere保存到VTK文件?
我愿意接受有关我的问题的替代解决方案的建议。
答案 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