正二十面体を作成して細分化しました。表示しようとしているわけではありませんが、細分化されていない状態で表示されているようです。これが私のコードです:
vtkSmartPointer<vtkPlatonicSolidSource> icosahedron = vtkSmartPointer<vtkPlatonicSolidSource>::New();
icosahedron->SetSolidTypeToIcosahedron();
icosahedron->Update();
cout << " Centre is " << icosahedron->GetOutput()->GetCenter()[0] << ", " << icosahedron->GetOutput()->GetCenter()[1] << ", " << icosahedron->GetOutput()->GetCenter()[2] << endl;
cout << " There are " << icosahedron->GetOutput()->GetNumberOfPolys() << " triangles." << endl;
cout << " there are " << icosahedron->GetOutput()->GetNumberOfPoints() << " points " << endl;
vtkSmartPointer<vtkPolyDataAlgorithm> subdivisionFilter;
subdivisionFilter = vtkSmartPointer<vtkLinearSubdivisionFilter>::New();
dynamic_cast<vtkLinearSubdivisionFilter *> (subdivisionFilter.GetPointer())->SetNumberOfSubdivisions(2);
subdivisionFilter->SetInput(icosahedron->GetOutput());
subdivisionFilter->Update();
cout << " After " << endl;
std::cout << " There are " << subdivisionFilter->GetOutput()->GetNumberOfPoints() << " points." << std::endl;
std::cout << " There are " << subdivisionFilter->GetOutput()->GetNumberOfPolys() << " triangles." << std::endl;
vtkSmartPointer<vtkPolyDataMapper> mapper = vtkSmartPointer<vtkPolyDataMapper>::New();
mapper->SetInputConnection(subdivisionFilter->GetOutputPort());
vtkSmartPointer<vtkActor> actor = vtkSmartPointer<vtkActor>::New();
actor->SetMapper(mapper);
vtkSmartPointer<vtkRenderer> renderer = vtkSmartPointer<vtkRenderer>::New();
vtkSmartPointer<vtkRenderWindow> renderWindow = vtkSmartPointer<vtkRenderWindow>::New();
renderWindow->AddRenderer(renderer);
vtkSmartPointer<vtkRenderWindowInteractor> renderWindowInteractor = vtkSmartPointer<vtkRenderWindowInteractor>::New();
renderWindowInteractor->SetRenderWindow(renderWindow);
//Add the actors to the scene
renderer->AddActor(actor);
renderer->SetBackground(.1, .2, .3);
//Render and interact
renderWindow->Render();
renderWindowInteractor->Start();
コンソール出力は次のとおりです。
Centre is 0, 0, 0
There are 20 triangles.
there are 12 points
After
There are 162 points.
There are 320 triangles.
確かに細分化されていることを確認。