#include #include #include #include #include #include #include #include #include int TestImportOBJ(int argc, char* argv[]) { if (argc < 4) { std::cout << "Usage: " << argv[0] << " objfile mtlfile texturepath" << std::endl; return EXIT_FAILURE; } auto importer = vtkSmartPointer::New(); importer->SetFileName(argv[1]); importer->SetFileNameMTL(argv[2]); importer->SetTexturePath(argv[3]); auto colors = vtkSmartPointer::New(); auto renderer = vtkSmartPointer::New(); auto renWin = vtkSmartPointer::New(); auto iren = vtkSmartPointer::New(); renderer->SetBackground2(colors->GetColor3d("Silver").GetData()); renderer->SetBackground(colors->GetColor3d("Gold").GetData()); renderer->GradientBackgroundOn(); renWin->AddRenderer(renderer); renderer->UseHiddenLineRemovalOn(); renWin->AddRenderer(renderer); renWin->SetSize(640, 480); iren->SetRenderWindow(renWin); importer->SetRenderWindow(renWin); importer->Update(); auto actors = renderer->GetActors(); actors->InitTraversal(); std::cout << "There are " << actors->GetNumberOfItems() << " actors" << std::endl; for (vtkIdType a = 0; a < actors->GetNumberOfItems(); ++a) { std::cout << importer->GetOutputDescription(a) << std::endl; vtkActor* actor = actors->GetNextActor(); // OBJImporter turns texture interpolation off if (actor->GetTexture()) { std::cout << "Has texture\n"; actor->GetTexture()->InterpolateOn(); } vtkPolyData* pd = dynamic_cast(actor->GetMapper()->GetInput()); vtkPolyDataMapper* mapper = dynamic_cast(actor->GetMapper()); mapper->SetInputData(pd); } renWin->Render(); iren->Start(); return EXIT_SUCCESS; }