在VTK中创建二十面体

时间:2014-07-09 16:09:05

标签: vtk point-cloud-library

我尝试从Point Cloud Library调试一段代码。 它使用VTK创建了一个二十面体。

我已将违规代码粘贴到新功能中 - \\ *** ... ***注释之间的代码直接从PCL复制。我添加了输入和输出部分:

int main()
{
  int tesselation_level_ = 2;

  // *** begin PCL code ***

  vtkSmartPointer<vtkPlatonicSolidSource> ico = vtkSmartPointer<vtkPlatonicSolidSource>::New ();
  ico->SetSolidTypeToIcosahedron ();
  ico->Update ();

  //tesselate cells from icosahedron
  vtkSmartPointer<vtkLoopSubdivisionFilter> subdivide = vtkSmartPointer<vtkLoopSubdivisionFilter>::New ();
  subdivide->SetNumberOfSubdivisions (tesselation_level_);
  subdivide->SetInputConnection (ico->GetOutputPort ());

  // Get camera positions
  vtkPolyData *sphere = subdivide->GetOutput ();

  // *** end PCL code ***

  std::cout << "Sphere points: " << sphere->GetNumberOfPoints () << std::endl;
  std::cout << "Sphere polys: " << sphere->GetNumberOfPolys () << std::endl;
}

我预计从细分的二十面体中创建的球体会有一些点和一些多边形,但输出似乎表明球体实际上是空的:

! ./test
Sphere points: 0
Sphere polys: 0

我做错了什么吗? 我怎样才能创建一个二十面体?

(这是OSX 10.9上的VTK 5.10)

1 个答案:

答案 0 :(得分:0)

看看VTK meshes subdivision example。在设置subdivisionFilter对象的输入之后的示例中,进行了更新调用。在设置细分

的输入连接后的代码subdivide->Update();