diff --git a/CMakeLists.txt b/CMakeLists.txt index c0e5b72..ef3f017 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -7,4 +7,17 @@ add_subdirectory(external/vtk) add_executable(pfe) target_sources(pfe PRIVATE src/main.cc) -target_link_libraries(pfe PRIVATE VTK::CommonCore VTK::ViewsCore VTK::RenderingCore VTK::IOCore VTK::FiltersCore VTK::CommonColor VTK::GUISupportQt VTK::RenderingQt VTK::ViewsQt) +target_link_libraries(pfe PRIVATE + VTK::CommonCore + VTK::ViewsCore + VTK::RenderingCore + VTK::IOCore + VTK::FiltersCore + VTK::CommonColor + VTK::GUISupportQt + VTK::RenderingQt + VTK::ViewsQt + VTK::RenderingVolume + VTK::CommonDataModel + VTK::IOLegacy + VTK::IOXML) diff --git a/LISEZMOI b/LISEZMOI index 30ca7bb..a5df1c8 100644 --- a/LISEZMOI +++ b/LISEZMOI @@ -2,18 +2,18 @@ Projet de fin d'étude de M2 Info Géométrie et Informatique Graphique. Compilation : - cmake -Bbuild -DCMAKE_BUILD_TYPE=Release && cmake --build build + cmake -Bbuild -DCMAKE_BUILD_TYPE=Release && cmake --build build Compilation (pour développeurs) : - cmake -Bbuild \ - -DCMAKE_BUILD_TYPE=RelWithDebInfo \ + cmake -Bbuild \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DCMAKE_CXX_FLAGS="-Wall -Wextra" \ && cmake --build build Il peut également être nécessaire de passer - -DVTK_MODULE_ENABLE_VTK_GUISupportQt:STRING=YES + -DVTK_MODULE_ENABLE_VTK_GUISupportQt:STRING=YES -DVTK_MODULE_ENABLE_VTK_RenderingQt:STRING=YES -DVTK_MODULE_ENABLE_VTK_ViewsQt:STRING=YES à cmake sans quoi la fenêtre refuse de s'afficher (nécessite d'avoir diff --git a/src/main.cc b/src/main.cc index e4cebd5..4da2aa3 100644 --- a/src/main.cc +++ b/src/main.cc @@ -8,61 +8,55 @@ #include #include #include +#include +#include +#include +#include +#include +#include #include -int main(int, char*[]) { +int main(int argc, char **argv) { + if (argc != 2) { + std::cerr << "Usage: " << argv[0] << " FILE.vtk" << std::endl; + return EXIT_FAILURE; + } + vtkNew colors; - // Set the background color. std::array bkg{{26, 51, 102, 255}}; colors->SetColor("BkgColor", bkg.data()); - // This creates a polygonal cylinder model with eight circumferential facets - // (i.e, in practice an octagonal prism). - vtkNew cylinder; - cylinder->SetResolution(8); + vtkNew reader; + reader->SetFileName(argv[1]); - // The mapper is responsible for pushing the geometry into the graphics - // library. It may also do color mapping, if scalars or other attributes are - // defined. - vtkNew cylinderMapper; - cylinderMapper->SetInputConnection(cylinder->GetOutputPort()); + // vtkNew volumeMapper; + // volumeMapper->SetInputConnection(reader->GetOutputPort()); + vtkNew mapper; + mapper->SetInputConnection(reader->GetOutputPort()); - // The actor is a grouping mechanism: besides the geometry (mapper), it - // also has a property, transformation matrix, and/or texture map. - // Here we set its color and rotate it around the X and Y axes. - vtkNew cylinderActor; - cylinderActor->SetMapper(cylinderMapper); - cylinderActor->GetProperty()->SetColor( + // vtkNew volume; + // volume->SetMapper(volumeMapper); + vtkNew actor; + actor->SetMapper(mapper); + + actor->GetProperty()->SetColor( colors->GetColor4d("Tomato").GetData()); - cylinderActor->RotateX(30.0); - cylinderActor->RotateY(-45.0); + actor->RotateX(30.0); + actor->RotateY(-45.0); - // The renderer generates the image - // which is then displayed on the render window. - // It can be thought of as a scene to which the actor is added vtkNew renderer; - renderer->AddActor(cylinderActor); + renderer->AddActor(actor); renderer->SetBackground(colors->GetColor3d("BkgColor").GetData()); - // Zoom in a little by accessing the camera and invoking its "Zoom" method. renderer->ResetCamera(); renderer->GetActiveCamera()->Zoom(1.5); - - // The render window is the actual GUI window - // that appears on the computer screen vtkNew renderWindow; renderWindow->SetSize(300, 300); renderWindow->AddRenderer(renderer); renderWindow->SetWindowName("Cylinder"); - - // The render window interactor captures mouse events - // and will perform appropriate camera or actor manipulation - // depending on the nature of the events. vtkNew renderWindowInteractor; renderWindowInteractor->SetRenderWindow(renderWindow); - - // This starts the event loop and as a side effect causes an initial render. renderWindow->Render(); renderWindowInteractor->Start();