- The program is developed in C++ using the C++17 standard.
- The source code is located in the
src
directory. - The code follows the Google coding style.
- The build process uses a Makefile with standard targets:
all
,install
,uninstall
,clean
,dvi
,dist
, andtests
.
-
Software Architecture:
- The program follows the principles of object-oriented programming (OOP).
- It uses the Model-View-Controller (MVC) design pattern.
- The code is divided into modules for business logic (models), visual representation (views), and controllers.
-
Functionality:
- Load wireframe models from .obj files that support vertex and face lists.
- Translate the model by a specified distance along the X, Y, and Z axes.
- Rotate the model by a specified angle around its X, Y, and Z axes.
- Scale the model by a specified factor.
-
Projection Type and Display Parameters:
- The program supports both parallel and central projection types.
- Users can configure the type of edges and vertex display.
-
Appearance Settings:
- Choose the background color.
- Set the color and size of the vertices.
- Set the color and thickness of the edges.
-
Saving Settings:
- Settings are preserved between program restarts.
-
Saving Images:
- Save model images in BMP and JPEG formats.
-
Creating GIFs:
- Record user-defined affine transformations of the loaded object into a GIF animation (10fps, 5s).
- Operating System: Linux or macOS
- C++17 compiler, CMake (version 3.22 or higher)
- GUI library with C++17 API (Qt)
- GTest library (for unit tests)
src/model/
- library code with business logicsrc/controller/
- controller codesrc/view/
- GUI codesrc/tests
- unit tests for libraries (GTest)src/Makefile
- project build file
Run the program:
git clone https://github.com/BulatRuslanovich/3d_viewer.git
cd 3d_viewer/src/
make