裁剪非结构化网格并保留数组数据

Clip Unstructured grid and keep arrays data

我正在尝试使用 vtkClipDataSet 剪辑 vtkUnstructuredGrid。问题是在我剪辑之后,生成的 vtkUnstructuredGrid 没有 point/cells 数据(数组)。

这是我的代码:

vtkSmartPointer<vtkUnstructuredGrid> model = reader->GetOutput();
// this shows that model has one point data array called "Displacements" (vectorial of 3 components)
model->Print(std::cout); 

// Plane to cut it
vtkSmartPointer<vtkPlane> plane = vtkSmartPointer<vtkPlane>::New();
plane->SetOrigin(0.0,0.0,0.0); plane->SetNormal(1,0,0);

// Clip data
vtkSmartPointer<vtkClipDataSet> clipDataSet = vtkSmartPointer<vtkClipDataSet>::New();
clipDataSet->SetClipFunction(plane);
clipDataSet->SetInputConnection(model->GetProducerPort());
clipDataSet->InsideOutOn();
clipDataSet->GenerateClippedOutputOn();

//PROBLEM HERE. The print shows that there aren't any arrays on the output data
clipDataSet->GetOutput()->Print(std::cout);

我需要输出网格来包含数组,因为我想在生成的网格上显示值。 例如,如果数据是标量,我想在切割网格上显示等值。如果数据是矢量的,我想在数据矢量的方向上使网格变形(扭曲)。

这里我有一个关于 ParaView 的例子,说明我想做什么。实体是原始网格,线框网格是变形后的网格。

我在 C++ 下使用 VTK 5.10(Windows 8.1 64 位,如果有帮助的话)。

谢谢! PS: 我试着在 VTKusers 列表上询问这个问题,但我没有得到答案。

好的我在用户lib的注释后发现了错误。设置输入连接后,我错过了更新调用。 谢谢大家

// Clip data
vtkSmartPointer<vtkClipDataSet> clipDataSet = vtkSmartPointer<vtkClipDataSet>::New();
clipDataSet->SetClipFunction(plane);
clipDataSet->SetInputConnection(model->GetProducerPort());
clipDataSet->InsideOutOn();
clipDataSet->GenerateClippedOutputOn();
clipDataSet->Update(); // THIS is the solution