WarpSurface
乍一看好像和 scale 差不多,但不一样
vtkWarpVector是一个过滤器,它通过沿向量移动点乘以比例因子来修改点坐标。常用于显示流动剖面或机械变形。
上图是
scale = 0.2; 效果
#include <vtkPLYReader.h>
#include <vtkSTLWriter.h>
#include "RGBRegGrowing.h"
#include <vtkPolyDataNormals.h>
#include <vtkWarpVector.h>
vtkSmartPointer<vtkSTLReader> MainWindow::ReadStl(const char *fileName)
{
vtkSmartPointer<vtkSTLReader> reader = vtkSmartPointer<vtkSTLReader>::New();
reader->SetFileName(fileName);
reader->Update();
//vtkSmartPointer <vtkPolyData> poly = reader->GetOutput();
return reader;
}
auto polygg = ReadStl(pathOne.toStdString().c_str());
// mLeftVTKWidget->addAllCloudPoints(polygg->GetOutput());
mLeftVTKWidget->SetInputData(polygg->GetOutput());
vtkNew<vtkPolyDataNormals> normals;
normals->SetInputConnection(polygg->GetOutputPort());
normals->SplittingOff();
vtkNew<vtkWarpVector> warp;
warp->SetInputConnection(normals->GetOutputPort());
warp->SetInputArrayToProcess(0, 0, 0, vtkDataObject::FIELD_ASSOCIATION_POINTS, vtkDataSetAttributes::NORMALS);
warp->SetScaleFactor(0.2);
warp->Update();
vtkNew<vtkPolyData> bInput;
bInput->DeepCopy(warp->GetOutput());
mRightVTKWidget->SetInputData(bInput);