VTK-关于vtkPolyData数据变换

前言:本博文主要介绍vtkPolyData相关的常用数据变换方法,欢迎各位小伙伴一起加入。

1. 重新构建输入vtkPolyData数据的Mesh数据,将Polys和Strips合并为Polys输出为Mesh数据。

vtkPolyData* Mesh = vtkPolyData::New();
Mesh->SetPoints(inPts);
vtkCellArray *newPolys, *inPolys = input->GetPolys();
if (numStrips > 0)
{
  newPolys = vtkCellArray::New();
  if (numPolys > 0)
  {
    newPolys->DeepCopy(inPolys);
  }
  else
  {
    newPolys->AllocateEstimate(numStrips, 5);
  }
  vtkCellArray* inStrips = input->GetStrips();
  for (inStrips->InitTraversal(); inStrips->GetNextCell(npts, pts);)
  {
    vtkTriangleStrip::DecomposeStrip(npts, pts, newPolys);
  }
  Mesh->SetPolys(newPolys);
  newPolys->Delete();
}
else
{
  newPolys = inPolys;
  Mesh->SetPolys(newPolys);
}
Mesh->BuildLinks();

注意:若直接在vtkPolyData数据上进行处理会发生内存占用导致异常退出;因此通常会将待处理的数据重新构建为Mesh数据,这样可避免此类问题。

如:vtkFillHolesFilter等常见的过滤器。

猜你喜欢

转载自blog.csdn.net/qq_40041064/article/details/129947439