- WASD to move around
- Use the mouse to look around
- ESC to exit
- Up arrow / down arrow to change animation speed
- C to change the viewing mode
- B to toggle the bar chart mode
- M/N to change the max amount of bars in the bar chart
- 0 to reset the animation.
The project is currently only set up to build on Linux (Windows build is faulty), with OpenGL v4.1. It has been tested on Arch Linux, Fedora and Ubuntu. To build it, install GLFW3, GLAD, GLU, Assimp, and Freetype (v2) from your distro's package manager. CMake and CXX compiler are required. The recommended generator is Ninja, but ordinary Makefile should suffice fine.
sudo apt install libglu1-mesa-dev libgl-dev libfreetype-dev libassimp5 libglfw3-dev cmake ninja-build
Then run:
# Clone the repo
mkdir visualisation
cd visualisation
git clone https://github.com/snej55/pipeline_visualisation.git .
# Build it
cmake -S . -B build/ -G Ninja
cmake --build build/ -j14
# Run!
cd build; ./main
Note
Please make sure to run the compiled binary from the build folder, so it has access to the required assets (shaders, models, etc).
Create an issue or contact me directly if you encounter any problems during the build process.
All the papers are loaded from a csv file at runtime. Before the vertices are loaded, the raw coordinates are scaled by a predefined scale factor. They are then rendered as a cloud of cubes with basic diffuse and ambient lighting using instanced rendering, to ensure realtime performance. The clusters models are pregenerated beforehand, and stored in wavefront object files in data/cluster_models. They are generated by calculating the convex hull from the vertices of the papers contained by the cluster (see convhull_3d library). These vertices have already been scaled by the predefined scale factor. The model meshes are loaded at runtime using assimp. They are then rendered with alpha blending, back-to-front to ensure proper depth testing. They also have basic diffuse and ambient lighting.
- GLFW3 & GLAD for OpenGL and rendering.
- GLM for matrix calculations.
- Freetype2 for font rendering.
- Convex Hull 3D library https://github.com/leomccormack/convhull_3d







