如何从tvtk PolyData实例中提取顶点数据?

2024-10-04 11:30:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图从tvtk.PolyData实例中提取顶点数据。例如:

from numpy import array
from tvtk.api import tvtk
from mayavi.sources.vtk_data_source import VTKDataSource
from mayavi.modules.surface import Surface
from mayavi import mlab

pointArr=array([[0,0,0],[1,0,0],[1,1,0],[0,1,0],[0,1,1],[1,1,1]],dtype="float64")
faceArr=array([[0,1,2,3],[2,3,4,5]])
faces = tvtk.PolyData()
faces.points=pointArr
print faces.points
faces.polys=faceArr
faces.point_data.scalars = pointArr[:,2]
faces.point_data.scalars.name = 'Height'
src = VTKDataSource(data = faces)
mlab.pipeline.surface(src, opacity=1.)
mlab.show()

这个指纹

^{pr2}$

这是怎么回事?我希望看到NumPy阵列:

[[ 0.  0.  0.]
 [ 1.  0.  0.]
 [ 1.  1.  0.]
 [ 0.  1.  0.]
 [ 0.  1.  1.]
 [ 1.  1.  1.]]

Tags: fromimportdataarraysurfacepointspointtvtk
1条回答
网友
1楼 · 发布于 2024-10-04 11:30:28

tvtk的全部目的是处理python对象(包括numpy数组)和VTK对象保存类之间的转换。如果你调查面.点,您将看到它实际上是一个名为Points的tvtk类实例,但是您可以使用

np.array( faces.points )

不同的视图不应该复制内存,所以所有这些都是非常有效的。在

EDIT:当然tvtk还提供了基于事件的API和图形化编辑元素

相关问题 更多 >