Программа позволяет открывать и просматривать файлы формата .obj, выполнять с объектом любые манипуляции, а также настраивать отображение объекта.
Программа выполнена на языке программирования С++ с применеием ООП, архитектурных паттернов и паттернов программирования.
Объект можно вращать вокруг осей X, Y, Z, двигать по осям X, Y, отдалять и приближать.
Перемещать и вращать объект можно как с помощью мыши, так и клавишами на левой панели приложения.
Левая кнопка мыши отвечает за вращение объекта, правая - за перемещение, вращение колеса - за изменение масштаба.
Общая архитектура программы построена на основе паттерна MVC (Model View Controller, реализация в одноименных директориях проекта).
Также для оптимизации применены следующие паттерны программирования:
- Strategy
- Facade
- Singleton
Отрисовка объекта объекта выполняется на OpenGL с созданием и ипользованием Шейдеров
На правой панели приложения можно задать следующие настройки отображения объекта:
При закрытии приложения происходит сохранение всех существующих настроек в файл settings.conf в директории Resources.
При открытии программы проводится сверка существующих (сохраненных) настроек со стандарными. Если между ними имеются различия, при откртии приложения выводится соответсвующее сообщение.
Для сброса кастомных настроек и возвращения к стандартным необходимо нажать Reset settings
Реализация класса Settings представленна в одноименной директории проекта.
Для создания скриншота модели можно нажать кнопку Screen и далее выбрать путь сохраниения .png изображения.
По умолчанию скриншоты сохраняются в папку Applications/3DViewer/Screenshots/
Для создания GIF-изображения можно нажать кнопку Gif и вращать/перемещать объект в течении 5 секунд.
По завершению записи приложение выдаст сообщение о создании Gif-изображения и предложит сохранить файл.
По умолчанию GIF-изображения сохраняются в папку Applications/3DViewer/Gif/
В корневой дирректории расположен Makefile со следующими целями:
- make all - выполняет цели test, check, clean
- test - запускает Unit-тесты на основе библиотеки GTest, проверку парсинга .obj файла, проверку результата афинных преобразований матрицы объекта по всем доступным вариантам модификации объекта.
Преобразование для тестов производится с посредством перемножения матрицы вершин объекта на соответсвующие афинные матрицы перехода.
Для выполнения Unit-тестов реализована собственная библиотека matrix.h со всеми методами взаимодействия с матрицами - check - запускает проверку всех файлов на стилевые нормы, утечки и cppcheck
- install - выполняет установку приложения в директорию Applications/
- uninstall - производит деинсталяцию приложения
- dist - архивирует дистрибутив программы в .tar файл
- dvi - запускает readme.html
- clean - выполняет полную очистку файлов установки и удаленние всех данных приложения