Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Gsoc2024 basic viewer glfw tgrillon #8444

Open
wants to merge 70 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
70 commits
Select commit Hold shift + click to select a range
3bb23c9
Init Basic viewer project
tgrillon Jun 17, 2024
602d96a
fixing some include error
tgrillon Jun 17, 2024
2910090
Camera update (orbiter) + refactoring
tgrillon Jun 18, 2024
5ab957f
orthographic mode + rotation fix + uncompleted implementation of free…
tgrillon Jun 19, 2024
15b55b7
CMake modifications
tgrillon Jun 20, 2024
a9e4282
Update cmake to add the new component GLFW
gdamiand Jun 21, 2024
26a6e45
cleanup
gdamiand Jun 21, 2024
aa164cc
add glfw option (NYF)
gdamiand Jun 21, 2024
7b6df25
Display world axis / xy grid functionalities
tgrillon Jun 21, 2024
2fe58b3
Merge branch 'gsoc2024-basic_viewer_glfw-tgrillon' of github.com:CGAL…
tgrillon Jun 21, 2024
e49da74
Align camera orientation to nearest axis (mouse double left click)
tgrillon Jun 22, 2024
5b10a3b
Free-fly type camera + other functionalities
tgrillon Jun 22, 2024
d455aa1
refactoring
tgrillon Jun 23, 2024
372b7b3
Fixes and improvements
tgrillon Jun 24, 2024
9b84a56
Refactoring (naming convention)
tgrillon Jun 25, 2024
78cc838
Rework of the clipping plane implementation :
tgrillon Jun 25, 2024
417c50c
small fix : const error
tgrillon Jun 25, 2024
5bc671b
Clipping plane can be constrained on two axis : camera right and up d…
tgrillon Jun 26, 2024
9eb21c1
Implementation of an animation controller (work in progress)
tgrillon Jun 26, 2024
4b911ad
Implementation of the animation controller completed.
tgrillon Jun 27, 2024
b0d5db5
Input rework
tgrillon Jul 1, 2024
8f3f730
Mainly refactoring
tgrillon Jul 2, 2024
89472b7
Removing unecessary vendor directories and files
tgrillon Jul 2, 2024
227bfa9
small fixes
tgrillon Jul 3, 2024
88ba482
Fix Screenshot feature
tgrillon Jul 4, 2024
9170f28
Small fixes / refactoring
tgrillon Jul 8, 2024
f9b16f9
cmake crossplatform lib compilation for glfw
tgrillon Jul 9, 2024
e850189
CMake modifications + fix C macro
tgrillon Jul 10, 2024
4dde322
Fullscreen fixes
tgrillon Jul 10, 2024
557ea45
Lock camera rotation axis + fixing fullscreen issues + user can set t…
tgrillon Jul 15, 2024
c870d62
Align camera to clipping plane + viewer zoom setter
tgrillon Jul 15, 2024
074fdeb
Adding some setters for clipping plane + fixing alignment of camera t…
tgrillon Jul 16, 2024
79d6b8a
small fixes : renaming methods and fixing free fly roll rotation
tgrillon Jul 16, 2024
2cf1ec6
Rendering optimisation (we now draw the scene only when it's necessar…
tgrillon Jul 18, 2024
9798c3a
Reset zoom + Display normals + Refactoring shaders (naming)
tgrillon Jul 22, 2024
80c8ae7
Display normal feature in Qt viewer
tgrillon Jul 23, 2024
986343e
Geometry shader to draw arrows
tgrillon Jul 23, 2024
f60017c
Geometry shader for Cylinder edges and sphere vertices feature
tgrillon Jul 25, 2024
eb9af8b
Renaming + remove some inline key words
tgrillon Jul 29, 2024
1a578bf
Buffers implementations for GLFW + normal clipped from the clipping p…
tgrillon Jul 31, 2024
1c95379
Align clipping plane to camera + Face normal for both GLFW and Qt vie…
tgrillon Aug 5, 2024
dcc7fc0
Triangles display (both GLFW & Qt viewer)
tgrillon Aug 5, 2024
bf28e8b
align camera to clipping plane (Qt viewer)
tgrillon Aug 6, 2024
59b1b3a
Line width shaders
tgrillon Aug 7, 2024
afffdd6
line and point depth and width (GLFW viewer)
tgrillon Aug 9, 2024
0987d47
line/point width and depth (Qt viewer)
tgrillon Aug 9, 2024
7004ac9
VAO aggregation (GLFW viewer)
tgrillon Aug 14, 2024
9db37f9
VAO Buffer optimization (Qt viewer)
tgrillon Aug 17, 2024
0ea06f2
Remove commented section Qt viewer
tgrillon Aug 17, 2024
bec0c38
Help for new features within Qt viewer
tgrillon Aug 19, 2024
0545182
hide display of edges if the triangles of the mesh are shown
tgrillon Aug 19, 2024
84ca770
draw gestion for normals/triangles with combined VAO
tgrillon Aug 19, 2024
b6e9e8e
Fixing cross product of collinear vectors for cylinder drawing
tgrillon Aug 20, 2024
ac14aef
merge Mono/Colored buffers in graphics_scene
tgrillon Aug 21, 2024
ce36178
Default color display rework
tgrillon Aug 22, 2024
7dd8d35
clipping plane normal
tgrillon Aug 22, 2024
c88d2fa
Documentation for the GLFW viewer
tgrillon Aug 24, 2024
1634245
Docs + adding some getters/setters
tgrillon Aug 25, 2024
eeecb61
Graphics scene default color docs + TODO
tgrillon Aug 25, 2024
f21f74e
removing cmake modules/files
tgrillon Aug 26, 2024
4403e97
Removing #ifdef CGAL_USE_BASIC_VIEWER
tgrillon Aug 26, 2024
136f4c9
camera init for two dimensional scene
tgrillon Aug 27, 2024
28f7e2a
Merge branch 'gsoc2024-basic_viewer_glfw-tgrillon' of github.com:tgri…
tgrillon Aug 29, 2024
12e4173
delete vendor/glfw/CMake directory
tgrillon Aug 29, 2024
c78e4b3
small modifs
tgrillon Aug 29, 2024
8fed0fe
cosmetic
gdamiand Aug 29, 2024
82c9b70
test push
gdamiand Aug 29, 2024
d09dde6
Add a test in buffer for vao
gdamiand Sep 9, 2024
c0c318b
Merge branch 'CGAL:master' into gsoc2024-basic_viewer_glfw-tgrillon
gdamiand Oct 5, 2024
2ec02f6
method to allow to not correct attributes when changing automatic man…
gdamiand Oct 8, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 19 additions & 1 deletion Basic_viewer/doc/Basic_viewer/Basic_viewer.txt
Original file line number Diff line number Diff line change
Expand Up @@ -131,7 +131,7 @@ Example of drawing of a point cloud and a polyhedron in a same viewer.
\cgalFigureEnd

<!-- /////////////////////////////////////////////////////////////////////////////// -->
\section BV_BasicViewer The Basic Viewer Class
\section BV_BasicViewer The Qt Basic Viewer Class

The class `CGAL::Qt::Basic_viewer` is a \qt widget that inherits from `QGLViewer` and mainly stores a `Graphics_scene` and allows to visualize it and interact with the scene. Since this class is a \qt widget, it can be used into more complex \qt code to create more advanced demos.

Expand All @@ -145,6 +145,23 @@ The result of this example is shown in \cgalFigureRef{basic_viewer_ex5}.
Example of drawing of two `Basic_viewer` side by side.
\cgalFigureEnd

<!-- /////////////////////////////////////////////////////////////////////////////// -->

\section BV_GLFW_BasicViewer The GLFW Basic Viewer Class

The class CGAL::GLFW::Basic_viewer is a lightweight, cross-platform viewer built using GLFW, designed for visualizing and interacting with a Graphics_scene. Unlike the Qt-based viewer, this class does not depend on Qt and is suitable for applications where minimal dependencies and straightforward rendering are desired.

In the following example, we create a graphics scene for surface mesh height. Instead of using `show()` to render the scene, we call `make_screenshot()`. This method allows rendering without the need for user interaction. It will save the drawn frame as an image. Before calling this method, we can set different scene parameters such as camera and clipping plane orientation.

\cgalExample{Basic_viewer/basic_viewer_glfw_screenshot.cpp}

The result of this example is shown in \cgalFigureRef{basic_viewer_glfw_screenshot_example}.

\cgalFigureBegin{basic_viewer_glfw_screenshot_example,basic_viewer_glfw_screenshot.png}
Example of a screenshot generated by the Basic_viewer.
\cgalFigureEnd

This feature does not work with Wayland.

<!-- /////////////////////////////////////////////////////////////////////////////// -->
\section BV_Interactions Adding Interaction
Expand All @@ -168,6 +185,7 @@ Two examples of drawing of a mesh with small faces in red. <B>Left</B>: With the

This package was started by Mostafa Ashraf during his 2022 GSoC project. Guillaume Damiand, who mentored the project, reworked large parts of the package, wrote examples and the manual.


*/

} /* namespace CGAL */
Loading
Loading