VTK:尝试使用 vtkrubberbandpick&vtkHardwareSelector 选择区域中的可见单元格
VTK: Trying to select visible cells in area with vtkrubberbandpick & vtkHardwareSelector
我正在尝试使用 vtkInteractorStyleRubberBandPick 的子类对对象上的可见单元格进行区域选取。我已经让一切正常,除了一个问题:如果我改变相机的视角,选择就不再正常工作。它只是在物体上挑选看似随机的单元格,而不是橡皮筋内的单元格。
我的 InteractorStyle 中的 LeftButtonUp 基本上是这样的:
vtkSmartPointer<vtkHardwareSelector> selector = vtkSmartPointer<vtkHardwareSelector>::New();
selector->SetRenderer(this->Interactor->GetRenderWindow()->GetRenderers()->GetFirstRenderer());
unsigned int windowSize[4];
windowSize[0] = StartPosition[0] < EndPosition[0] ? StartPosition[0] : EndPosition[0]; // xmin
windowSize[1] = StartPosition[1] < EndPosition[1] ? StartPosition[1] : EndPosition[1]; // ymin
windowSize[2] = StartPosition[0] < EndPosition[0] ? EndPosition[0] : StartPosition[0]; // xmax
windowSize[3] = StartPosition[1] < EndPosition[1] ? EndPosition[1] : StartPosition[1]; // ymax
selector->SetArea(windowSize);
selector->SetFieldAssociation(vtkDataObject::FIELD_ASSOCIATION_CELLS);
selector->CaptureBuffers();
vtkSmartPointer<vtkSelection> selection = selector->GenerateSelection();
vtkSmartPointer<vtkExtractSelection> extractSelection = vtkSmartPointer<vtkExtractSelection>::New();
extractSelection->SetInputData(0, actor->GetMapper()->GetInput());
extractSelection->SetInputData(1, selection);
extractSelection->Update();
vtkSmartPointer<vtkUnstructuredGrid> selected = vtkSmartPointer<vtkUnstructuredGrid>::New();
selected->ShallowCopy(extractSelection->GetOutput());
_faceSelectMapper->SetInputData(selected);
我需要在某个地方进行某种转换吗?我是否需要以某种方式更新硬件选择器?我到处搜索过,但我不知所措...
由于通过数据影响的剪切窗口部分正在发生变化,因此每次更改相机方向时都会获得不同的结果。您需要检查模式是选择还是方向,如下所示
#define VTKISRBP_ORIENT 0
#define VTKISRBP_SELECT 1
if(this->CurrentMode == VTKISRBP_SELECT){
// interactor codes...
}
https://www.vtk.org/Wiki/VTK/Examples/Cxx/Picking/HighlightSelection
相关文章:
- 如何使用默认参数等选择模板专业化
- 如何(从固定列表中)选择一个数字序列,该序列将与目标数字相加
- 选择要调用的构造函数
- C++选择排序算法中的逻辑错误
- QTreeView幻灯片多选后无法使用单击选择
- 无法获取菜单选择以运行函数.C++
- Qt C++静态thread_local QNetworkAccessManager是线程应用程序的好选择吗
- 在C++中,如何通过几种类型从元组中选择多个元素
- 讨论 - 创建矩阵时的数组与向量的向量 - 什么是最实用的选择
- 对可变参数使用声明.如何选择正确的功能
- 将QGraphicsItem的移动区域限制在多边形区域内
- 选择选举获胜者的程序
- 如何选择在 csv 文件中输出的位置
- VTK:尝试使用 vtkrubberbandpick&vtkHardwareSelector 选择区域中的可见单元格
- 有选择地启用一个并行区域内的OpenMP进行循环
- 选择矩形以最大化该区域
- 使用C 中的WXWIDGET使用可拖动矩形从图像中选择区域
- 如何在 3D 矩阵中选择 Inrest 区域
- 如何选择一个像魔杖一样的区域,并使用OpenCV进行泛洪填充
- 在gtk绘图区域中单击时选择绘制的线