python vtk管状过滤器返回空数组

python vtk管状过滤器返回空数组,python,numpy,type-conversion,vtk,Python,Numpy,Type Conversion,Vtk,我正在尝试使用vtkTubeFilter对象来获取一条围绕点线的管。由于我有自己的专用渲染代码,我希望直接获得顶点,而不仅仅是过滤器对象。我尝试在numpy阵列和VTK数据结构之间进行以下转换 field = vtk.vtkFieldData() field.AddArray(vtk_numpy_support.numpy_to_vtk(center_line)) 但最终代码似乎只是返回一个空数组 我是否必须以某种方式执行筛选器?或者将点放入数据结构的方法是错误的? 我以前没有用VTK做过任何

我正在尝试使用vtkTubeFilter对象来获取一条围绕点线的管。由于我有自己的专用渲染代码,我希望直接获得顶点,而不仅仅是过滤器对象。我尝试在numpy阵列和VTK数据结构之间进行以下转换

field = vtk.vtkFieldData()
field.AddArray(vtk_numpy_support.numpy_to_vtk(center_line))
但最终代码似乎只是返回一个空数组

我是否必须以某种方式执行筛选器?或者将点放入数据结构的方法是错误的? 我以前没有用VTK做过任何事情,所以我还不太熟悉过滤器管道结构。任何指向正确方向的指针都将不胜感激

下面是再现问题的完整代码:

import numpy as np
import vtk
from vtk.util import numpy_support as vtk_numpy_support

n = 6
radius = 5.0
center_line = np.array([[-36.78,  19.78, -37.82],
                        [37.65,  20.04, -35.89],
                        [-38.85,  20.39, -32.84],
                        [-39.85,  20.68, -29.65],
                        [-40.57,  20.89, -26.37],
                        [-40.98,  21.  , -23.02],
                        [-41.05,  21.01, -19.67],
                        [-40.78,  20.93, -16.34],
                        [-40.21,  20.75, -13.07],
                        [-39.33,  20.48,  -9.86],
                        [-38.14,  20.12,  -6.72],
                        [-36.66,  19.67,  -3.68],
                        [-34.95,  19.15,  -0.75]])
tube_filter = vtk.vtkTubeFilter()
tube_filter.SetNumberOfSides(n)
tube_filter.SetCapping(True)
tube_filter.SetRadius(radius)
field = vtk.vtkFieldData()
field.AddArray(vtk_numpy_support.numpy_to_vtk(center_line))
data_obj = vtk.vtkDataObject()
data_obj.SetFieldData(field)
tube_filter.SetInputData(data_obj)
vertices = vtk_numpy_support.vtk_to_numpy(tube_filter.GetOutput().GetVerts().GetData())

print(vertices)
输出:

/home/user/anaconda3/lib/python3.6/site-packages/vtk/util/numpy_support.py:137: FutureWarning: Conversion of the second argument of issubdtype from `complex` to `np.complexfloating` is deprecated. In future, it will be treated as `np.complex128 == np.dtype(complex).type`.
  assert not numpy.issubdtype(z.dtype, complex), \
[]
PS:我也不太清楚为什么数组被解释为复杂类型。在我的调试器中,它显示为普通浮点数。

带有:

从vtkplotter导入管 中线=[-36.78,19.78,-37.82], [-37.65, 20.04, -35.89], [-38.85, 20.39, -32.84], [-39.85, 20.68, -29.65], [-40.57, 20.89, -26.37], [-40.98, 21. , -23.02], [-41.05, 21.01, -19.67], [-40.78, 20.93, -16.34], [-40.21, 20.75, -13.07], [-39.33, 20.48, -9.86], [-38.14, 20.12, -6.72], [-36.66, 19.67, -3.68], [-34.95, 19.15, -0.75] ] t=管中心线,r=5,cap=True,res=6 printt.points numpy数组 t、 展示
我已经查看了正在生成的各个vtk对象,这些点似乎很好地进入了管道。但在我尝试取出顶点的步骤中,它只返回一个空对象,numpy正确地将其转换为空对象。