【发布时间】:2014-07-31 00:58:00
【问题描述】:
在我将 ImageData 传递给 Marching cubes 类后,它不会生成任何东西。
我正在尝试从 3D numpy 数组生成表面。我使用 evtk 将数组导出到 .vti(结构化点)文件并存储为 pointData。然后,通过 vtkXMLImageDataReader 读取文件。将 Reader 的输出(vtkImageData)传递给 vtkMarchingCubes 类后,该类返回一个没有点或单元的 vtkPolyData,vtkImageData 在 vtk wiki 的示例中使用,MarchingCubes 类应该没有问题处理它。
我尝试导出Reader生成的ImageData,输出可以通过ParaView可视化没有任何问题。
我只是想知道 vtk 中的行进立方体生成表面是否有任何特殊要求?如果 3D numpy 可以直接转换为适合 MarchingCubes 的数据类型就更好了。
这是我读取 .vki 文件并将其传递给行进立方体的代码:
dataReader = vtk.vtkXMLImageDataReader()
dataReader.SetFileName('model_name.vti')
dataReader.Update()
contacts = vtk.vtkDiscreteMarchingCubes()
contacts.SetInputConnection(dataReader.GetOutputPort())
contacts.SetValue(0,1)
contacts.ComputeNormalsOn()
contacts.Update()
result = contacts.GetOutput()
【问题讨论】:
-
结果给你什么?
-
result 给了我一个空的 vtkPolyData。
-
您指定的值是否可能对输入数据没有意义?
-
数据范围为 [1,7]。我将输入与来自 vtk 的示例进行了比较。似乎 XMLImageDataReader 不会将 PointDataArray 转换为标量,而没有标量,MarchingCubes 将无法工作...
-
听起来你回答了自己的问题
标签: python numpy vtk marching-cubes