Software Design of a Library for Rendering Large Point Clouds
Over several years, the software package "Scanopy" has been created at our institute. It is an application and library to visualize and interact with enormous point clouds. For example, the software can easily deal with over one Billion points of archaeological data.
The software is currently used by archaeologists and was used for many scientific projects.
After several years of development, it is now time to take a step back and refactor certain aspects of the software, and introduce a plugin system so it can be more easily be extended. Also, we plan to make it into an open source distribution. This is where we need help.
1. Analyze the software structure of Scanopy and propose strategies to refactor it using state-of-the-art software design principles
2. Provide documentation of the existing framework where necessary or where it will not be superseded by new developments
3. Start with a refactoring of the codebase
The aim of the refactoring is to make the library more flexible and to make it easier for students and users to extend it to their needs.
- Knowledge of English language (source code comments and final report should be in English).
- Very good knowledge of C++ (the software is written C++)
- Very good knowledge of current software design principles (design patterns, agile software development etc.) - students of Software Engineering are welcome!
- Knowledge of OpenGL.
- Knowledge of Qt.
The project is currently implemented as a Qt application, using OpenSceneGraph for managing the OpenGL context, and GIT as source control system. It is a 64bit Windows application running mainly on NVIDIA cards, but should be made more portable for Intel and AMD cards as well.