initial commit
This commit is contained in:
commit
c953cf6f6c
10
CMakeLists.txt
Normal file
10
CMakeLists.txt
Normal file
@ -0,0 +1,10 @@
|
||||
cmake_minimum_required(VERSION 3.15)
|
||||
|
||||
project(pfe)
|
||||
|
||||
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)
|
20
LISEZMOI
Normal file
20
LISEZMOI
Normal file
@ -0,0 +1,20 @@
|
||||
Projet de fin d'étude de M2 Info Géométrie et Informatique Graphique.
|
||||
|
||||
|
||||
Compilation :
|
||||
cmake -Bbuild -DCMAKE_BUILD_TYPE=Release && cmake --build build
|
||||
|
||||
|
||||
Compilation (pour développeurs) :
|
||||
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_RenderingQt:STRING=YES
|
||||
-DVTK_MODULE_ENABLE_VTK_ViewsQt:STRING=YES
|
||||
à cmake sans quoi la fenêtre refuse de s'afficher (nécessite d'avoir
|
||||
Qt installé).
|
12
external/vtk/CMakeLists.txt
vendored
Normal file
12
external/vtk/CMakeLists.txt
vendored
Normal file
@ -0,0 +1,12 @@
|
||||
cmake_minimum_required(VERSION 3.15)
|
||||
|
||||
set(VTK_ENABLE_WRAPPING OFF)
|
||||
|
||||
include(FetchContent)
|
||||
|
||||
FetchContent_Declare(
|
||||
vtk
|
||||
URL https://www.vtk.org/files/release/9.1/VTK-9.1.0.tar.gz
|
||||
URL_HASH SHA256=8fed42f4f8f1eb8083107b68eaa9ad71da07110161a3116ad807f43e5ca5ce96)
|
||||
|
||||
FetchContent_MakeAvailable(vtk)
|
70
src/main.cc
Normal file
70
src/main.cc
Normal file
@ -0,0 +1,70 @@
|
||||
#include <vtkActor.h>
|
||||
#include <vtkCamera.h>
|
||||
#include <vtkCylinderSource.h>
|
||||
#include <vtkNamedColors.h>
|
||||
#include <vtkNew.h>
|
||||
#include <vtkPolyDataMapper.h>
|
||||
#include <vtkProperty.h>
|
||||
#include <vtkRenderWindow.h>
|
||||
#include <vtkRenderWindowInteractor.h>
|
||||
#include <vtkRenderer.h>
|
||||
|
||||
#include <array>
|
||||
|
||||
int main(int, char*[]) {
|
||||
vtkNew<vtkNamedColors> colors;
|
||||
|
||||
// Set the background color.
|
||||
std::array<unsigned char, 4> 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<vtkCylinderSource> cylinder;
|
||||
cylinder->SetResolution(8);
|
||||
|
||||
// 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<vtkPolyDataMapper> cylinderMapper;
|
||||
cylinderMapper->SetInputConnection(cylinder->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<vtkActor> cylinderActor;
|
||||
cylinderActor->SetMapper(cylinderMapper);
|
||||
cylinderActor->GetProperty()->SetColor(
|
||||
colors->GetColor4d("Tomato").GetData());
|
||||
cylinderActor->RotateX(30.0);
|
||||
cylinderActor->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<vtkRenderer> renderer;
|
||||
renderer->AddActor(cylinderActor);
|
||||
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<vtkRenderWindow> 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<vtkRenderWindowInteractor> renderWindowInteractor;
|
||||
renderWindowInteractor->SetRenderWindow(renderWindow);
|
||||
|
||||
// This starts the event loop and as a side effect causes an initial render.
|
||||
renderWindow->Render();
|
||||
renderWindowInteractor->Start();
|
||||
|
||||
return EXIT_SUCCESS;
|
||||
}
|
Loading…
Reference in New Issue
Block a user