6.7 KiB
OBJ Viewer с Шейдерами
Программа для просмотра 3D моделей в формате OBJ с поддержкой различных шейдеров и интерактивного управления.
Возможности
- Загрузка и отображение 3D моделей в формате OBJ
- 5 встроенных шейдеров с переключением в реальном времени
- Интерактивное управление камерой (вращение, масштабирование)
- Визуализация неба с настраиваемыми параметрами
- Каркасный режим (wireframe)
- Вывод цветовых значений в консоль
Шейдеры
- Phong - классическое освещение с ambient, diffuse и specular компонентами
- Toon - мультяшный стиль с дискретными уровнями освещения
- Normal - визуализация нормалей как RGB цветов
- Wireframe - зеленоватый каркасный стиль
- Sky - визуализация неба с параметрами высоты, угла солнца и интенсивности
Установка для Windows
Требования
- MinGW-w64 или Visual Studio
- GLEW
- GLUT (freeglut)
- GLM
Установка зависимостей (MinGW)
-
Скачайте и установите MinGW-w64
-
Скачайте библиотеки:
-
Распакуйте библиотеки и скопируйте файлы:
GLEW: - glew32.dll -> C:\Windows\System32\ - glew32.lib -> C:\mingw64\lib\ - include\GL\* -> C:\mingw64\include\GL\ freeglut: - freeglut.dll -> C:\Windows\System32\ - freeglut.lib -> C:\mingw64\lib\ - include\GL\* -> C:\mingw64\include\GL\ GLM: - glm\* -> C:\mingw64\include\glm\
Компиляция
Откройте командную строку (cmd) в папке с проектом и выполните:
g++ obj_viewer_shader.cpp -o obj_viewer_shader.exe -lopengl32 -lglu32 -lfreeglut -lglew32 -std=c++11
Или используйте MinGW-w64:
g++ obj_viewer_shader.cpp -o obj_viewer_shader.exe -lglu32 -lglew32 -lfreeglut -lopengl32 -std=c++11
Запуск
obj_viewer_shader.exe model.obj
Или просто запустите без параметров - программа попросит ввести путь к файлу:
obj_viewer_shader.exe
Управление
Мышь
- Левая кнопка - вращение модели
- Правая кнопка - приближение/отдаление
Клавиатура
Переключение шейдеров
- 1 - Phong (классическое освещение)
- 2 - Toon (мультяшный стиль)
- 3 - Normal (нормали)
- 4 - Wireframe
- 5 - Sky (небо)
Параметры неба (для шейдера Sky)
- h/H - уменьшить/увеличить высоту (±500м)
- e/E - уменьшить/увеличить угол солнца (±0.05 рад)
- i/I - уменьшить/увеличить интенсивность света (±0.05)
- P - вывести текущий цвет неба в консоль
Прочее
- W - включить/выключить каркасный режим
- ESC - выход из программы
Структура проекта
project/
├── obj_viewer_shader.cpp # Основной файл программы
├── vertex_shader.glsl # Вершинный шейдер (общий)
├── fragment_shader.glsl # Phong шейдер
├── toon_fragment.glsl # Toon шейдер
├── normal_fragment.glsl # Normal шейдер
├── wireframe_fragment.glsl # Wireframe шейдер
├── sky_vertex.glsl # Вершинный шейдер для неба
├── sky.frag # Фрагментный шейдер неба
└── model.obj # Ваша 3D модель
Формат OBJ
Программа поддерживает стандартные OBJ файлы с:
- Вершинами (v)
- Нормалями (vn)
- Текстурными координатами (vt)
- Гранями (f) - треугольники и квады
Пример вывода цвета неба
=== ЦВЕТ НЕБА ===
Параметры:
height: 5000
sunElevation: 0.5
sunIntensity: 0.8
Результат (RGB):
0.51 0.64 0.82
Создание своих шейдеров
Чтобы добавить собственный шейдер:
- Создайте файл фрагментного шейдера (например,
my_shader.glsl) - Откройте
obj_viewer_shader.cpp - Найдите функцию
init()и добавьте в массивshaders:{"Мой шейдер", "vertex_shader.glsl", "my_shader.glsl"} - Перекомпилируйте программу
Troubleshooting
Ошибка "не удалось найти DLL"
Убедитесь, что glew32.dll и freeglut.dll находятся в C:\Windows\System32\ или в папке с программой.
Ошибка компиляции "cannot find -lglew32"
Проверьте, что библиотеки установлены в C:\mingw64\lib\
Черный экран
Проверьте, что файлы шейдеров (.glsl, .frag) находятся в той же папке, что и исполняемый файл.
Модель не загружается
- Проверьте путь к OBJ файлу
- Убедитесь, что файл в правильном формате OBJ
- Используйте относительные пути или полные пути с двойными слешами:
C:\\path\\to\\model.obj
Системные требования
- Windows 7/8/10/11
- OpenGL 3.3+
- Видеокарта с поддержкой шейдеров GLSL 330
Лицензия
Свободное использование в образовательных целях.
Автор
Создано для работы с 3D моделями и изучения шейдеров GLSL.