Final project for computer graphics course in Voronezh State University
3D models render written in Java allows user to interact with models and even create animations.
Vladislav Severov: UI/UX, integration, loading and saving models and animations, multiple models support, removing model's vertices and polygons, exceptions handling, exe file, qol functionality and music :D.
Ilya Ektov: math module, affine transformations, camera control, serializing and deserializing animations.
Andrey Dementiev: model rasterization, texture and lighting, multiple cameras support, animations core.
User can choose a way of displaying model. There are different options:
- Showing polygon grid or not
- Filling model with a plain color or a texture
- Using lighting or not
User has ability to add several models and work with them simultaneously. He can perform affine transformations on them: translate, rotate and scale models. Also, he can manage several cameras to see the model from different sides. Camera control is performing with the help of polar coordinates.
Any state of the current model can be set as an animation frame allowing user to compose diverse animations. Then they can be saved as json files and loaded to the program.
Developing this project required knowledge of linear algebra and computer graphics concepts (rasterization, interpolation, barycentric coordinates, z-buffer, lighting) as well as OOP and code architecture.
The code is covered by unit-tests.
Building is performed via maven.