https://github.com/bezlant/s21_3d_model_viewer
💎 A simple 3D model viewer written in C++. (School 42)
https://github.com/bezlant/s21_3d_model_viewer
3d-models 3d-viewer cpp17 glew glm gtest imgui imgui-glfw obj-loader obj-parser opengl
Last synced: 22 days ago
JSON representation
💎 A simple 3D model viewer written in C++. (School 42)
- Host: GitHub
- URL: https://github.com/bezlant/s21_3d_model_viewer
- Owner: bezlant
- License: mit
- Created: 2022-08-11T08:36:31.000Z (over 3 years ago)
- Default Branch: develop
- Last Pushed: 2022-08-17T06:09:47.000Z (over 3 years ago)
- Last Synced: 2024-01-30T06:59:23.068Z (about 2 years ago)
- Topics: 3d-models, 3d-viewer, cpp17, glew, glm, gtest, imgui, imgui-glfw, obj-loader, obj-parser, opengl
- Language: C++
- Homepage:
- Size: 23.2 MB
- Stars: 7
- Watchers: 2
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# 3d Model Viewer
https://user-images.githubusercontent.com/89563512/185046853-f8f23cd4-393c-422b-9a43-45ed69e03d9b.mov
### Table of Contents
* [Introduction](#introduction)
* [Goals](#goals)
* [Build & Dependencies](#build-and-dependencies)
* [Tests](#tests)
### Introduction
Implementation of the **model viewer** in C++ following the principles of structured programming.
### Goals
- [x] Obj parser
- [x] Render a model (Vertices & Faces support)
- [x] Translate the model by a given distance in relation to the X, Y, Z axes.
- [x] Rotate the model by a given angle relative to its X, Y, Z axes.
- [x] Scale the model by a given value.
- [x] Gui with Imgui/GLFW
- [x] Code is well documented
- [x] Make all, install, uninstall, clean, dvi, dist, tests, gcov targets implemented
- [x] Unit Tests
- [x] Add previews
### Build and Dependencies
You'll need to install clang++, make, googletest, pkg-config, glfw3 glew glm and doxygen(if you need the documentation).
```
$ git clone https://github.com/bezlant/s21_3d_model_viewer --recursive
$ cd s21_3d_model_viewer/src/
$ make
$ make -f test.mk (for tests)
```
### Tests
* Unit tests are implemented using [googletest](https://github.com/google/googletest) & coverage report with [LCOV](https://github.com/linux-test-project/lcov)
https://user-images.githubusercontent.com/89563512/185046855-eac522be-4ea8-49e9-922c-bc89f1c2f03c.mov