如何将vtkSphere保存为VTK文件?

4
我想将多个球体保存到文件中,以便稍后在ParaView中进行可视化。我有一个文本文件,其中包含每个球体的位置和形状(半径)信息。使用Python和VTK,我正在构建一个文件以在ParaView中可视化数据。现在,我能够将球体的中心和半径保存为vtkUnstructuredGrid,然后在ParaView中添加球体标志以进行正确的可视化。这种方法虽然有效,但每次需要可视化数据时手动添加标志非常繁琐。因此,我正在尝试找出如何将球体作为整体保存到vtk文件中。
我已经尝试过使用vtkSphere,但无法找到将球体保存到vtk文件中的方法。
现在问题再次出现:如何将vtkSphere保存到VTK文件中?
如果您有其他解决方案,请告诉我。
3个回答

4
如果你想在Paraview中保存数据,可以在应用glyph之后直接保存数据。
如果你想直接生成球体,请使用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用作字形的源)


看起来指向了正确的方向,你能给我提供一个vtkSphereSource的使用示例以及如何将其保存到文件中吗? - Alvaro Fuentes
我添加了一个简短的例子。 - lib
当我在Paraview中打开相应的文件时,什么也没有发生。我尝试应用Glyph过滤器,但它没有任何效果。你怎么做才能在Paraview中“可视化”球体? - MarcoMag

3

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

这将按预期生成文件。


我注意到你是一个新的贡献者。像这样的小修改最好在原始答案中完成(也许你还没有足够的声望...)。不管怎样,这是一个很好的观点。我赞同了你的回答 ;) - Alvaro Fuentes

1

这个想法很有趣,但我真正需要的是一种将球体保存到文件的方法,也许可以像你提出的那样进行合并和保存。 - Alvaro Fuentes

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接