首页 > 解决方案 > 如何在 VTK 中选择特定的单元格元素

问题描述

对于我正在编写的程序,我希望能够选择 3 维对象的特定面。我可以使用 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 对象的一个​​或多个面,并获取面和面坐标。请注意,3D 对象将被旋转、移动。我不是在谈论获取鼠标点击的坐标。可以这么说,我有兴趣获得面部的“原始”坐标或“点 ID”。我正在使用 python vtk 包装器。尽管有一个关于拾取和修改属性(如颜色)的示例,但我找不到任何关于如何提取 3D 对象的拾取面(面 ID/点 ID)的指针。

任何指针都会有所帮助。谢谢。

标签: pythongraphics3dvtk

解决方案


您正在寻找的是vtkCellPicker类,尤其是 vtkIdType GetCellId().

文档:https ://vtk.org/doc/nightly/html/classvtkCellPicker.html

用法见这个例子:https ://lorensen.github.io/VTKExamples/site/Cxx/Picking/CellPicking/


推荐阅读