我尝试从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)
答案 0 :(得分:0)
看看VTK meshes subdivision example。在设置subdivisionFilter对象的输入之后的示例中,进行了更新调用。在设置细分
的输入连接后的代码subdivide->Update();
中