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