3DViewer_v1
3DViewer Documentation
Project Description
3DViewer — это программа для визуализации каркасных моделей в трехмерном пространстве. Она разработана на языке C стандарта C11 с использованием компилятора gcc и дополнительных библиотек и модулей QT. Программа предоставляет функционал для загрузки, перемещения, вращения и масштабирования 3D моделей в формате OBJ. Интерфейс программы реализован на базе одной из следующих GUI-библиотек: GTK+, CEF, Qt (для Linux), GTK+, Nuklear, raygui, microui, libagar, libui, IUP, LCUI, CEF, Qt (для Mac).
Основные функции программы
- Загрузка каркасной модели из файла формата OBJ (поддержка только списка вершин и поверхностей).
- Перемещение модели по осям X, Y, Z на заданное расстояние.
- Вращение модели вокруг своих осей X, Y, Z на заданный угол.
- Масштабирование модели на заданное значение.
- Настройка типа проекции (параллельная и центральная).
- Настройка типа (сплошная, пунктирная), цвета и толщины ребер, способа отображения (отсутствует, круг, квадрат), цвета и размера вершин.
- Выбор цвета фона.
- Сохранение настроек между перезапусками программы.
- Сохранение изображений в форматах BMP и JPEG.
- Запись скринкастов в формате GIF (640x480, 10fps, 5s).
Требования к окружению
- Компилятор: gcc
- Стандарт языка: C11
- Дополнительные библиотеки: Qt, GTK+, CEF и другие
- Система сборки: Makefile
Структура проекта
— папка с исходным кодом программы.src
— файл для сборки проекта, содержащий цели: all, install, uninstall, clean, dvi, dist, tests, gcov_report.Makefile
Структура Makefile
— сборка всех целей.all
— установка программы в указанный каталог.install
— удаление программы из каталога установки.uninstall
— очистка файлов сборки.clean
— генерация документации.dvi
— подготовка дистрибутива.dist
— запуск тестов.tests
— генерация отчета покрытия кода тестами.gcov_report
Требования к реализации
- Программа должна быть разработана в соответствии с принципами структурного программирования.
- Код должен соответствовать Google Style Guide.
- Модули, связанные с загрузкой моделей и аффинными преобразованиями, должны быть покрыты unit-тестами.
- На экране должна быть отображена только одна модель одновременно.
- Программа должна корректно обрабатывать модели с деталями до 1 000 000 вершин без зависания интерфейса более 0,5 секунды.
Графический интерфейс пользователя
Графический интерфейс программы должен содержать:
- Кнопку для выбора файла с моделью и поле для вывода его названия.
- Зону визуализации каркасной модели.
- Кнопки и поля ввода для перемещения модели.
- Кнопки и поля ввода для поворота модели.
- Кнопки и поля ввода для масштабирования модели.
- Информацию о загруженной модели: название файла, количество вершин и ребер.
Дополнительно. Настройки
Программа должна позволять:
- Настраивать тип проекции (параллельная и центральная).
- Настраивать тип (сплошная, пунктирная), цвет и толщину ребер, способ отображения (отсутствует, круг, квадрат), цвет и размер вершин.
- Выбирать цвет фона.
- Сохранять настройки между перезапусками программы.
Дополнительно. Запись
Программа должна позволять:
- Сохранять отрендеренные изображения в файл в форматах BMP и JPEG.
- Записывать скринкасты текущих пользовательских аффинных преобразований загруженного объекта в GIF-анимацию (640x480, 10fps, 5s).