Python 如何在VTK中拾取特定的单元格元素

Python 如何在VTK中拾取特定的单元格元素,python,graphics,3d,vtk,Python,Graphics,3d,Vtk,对于我正在编写的程序,我希望能够拾取三维对象的特定面。我可以使用python包装器渲染3D非结构化数据。为了使事情更简单,假设我有这样一个非结构化数据 # vtk DataFile Version 2.0 tiny, Created by Gmsh ASCII DATASET UNSTRUCTURED_GRID POINTS 4 double 0 0 0 1.0 0 0 0 1.0 0 0 0 2.0 CELLS 4 16 3 0 1 2 3 0 1 3 3 0 2 3 3 1 2 3 CE

对于我正在编写的程序,我希望能够拾取三维对象的特定面。我可以使用python包装器渲染3D非结构化数据。为了使事情更简单,假设我有这样一个非结构化数据

# vtk DataFile Version 2.0
tiny, Created by Gmsh
ASCII
DATASET UNSTRUCTURED_GRID
POINTS 4 double
0 0 0
1.0 0 0
0 1.0 0
0 0 2.0

CELLS 4 16
3 0 1 2
3 0 1 3
3 0 2 3
3 1 2 3

CELL_TYPES 4  
5 
5
5
5
我想以交互方式拾取此3D对象的一个或多个面,并获取面和面坐标。请注意,三维对象将被旋转、移动。我不是说要得到鼠标点击的坐标。可以说,我对获取人脸的“原始”坐标或“点ID”很感兴趣。 我正在使用python vtk包装器。虽然有一个关于拾取和修改属性(如颜色)的示例,但我找不到任何关于如何提取3D对象的拾取面(面id/点id)的指针


任何指示都会有帮助。谢谢

您需要的是
vtkCellPicker
类,尤其是
vtkIdType GetCellId()

文件:


查看此示例了解用法:

很高兴它有所帮助。是的,有一个完整的家庭挑选类,以满足您的需要。在vtkCellPicker上,如果性能存在问题(例如,大型数据集),则可以设置vtkCellLocator。