Files
render/README_WINDOWS.md
2025-11-19 20:11:18 +05:00

6.7 KiB
Raw Permalink Blame History

OBJ Viewer с Шейдерами

Программа для просмотра 3D моделей в формате OBJ с поддержкой различных шейдеров и интерактивного управления.

Возможности

  • Загрузка и отображение 3D моделей в формате OBJ
  • 5 встроенных шейдеров с переключением в реальном времени
  • Интерактивное управление камерой (вращение, масштабирование)
  • Визуализация неба с настраиваемыми параметрами
  • Каркасный режим (wireframe)
  • Вывод цветовых значений в консоль

Шейдеры

  1. Phong - классическое освещение с ambient, diffuse и specular компонентами
  2. Toon - мультяшный стиль с дискретными уровнями освещения
  3. Normal - визуализация нормалей как RGB цветов
  4. Wireframe - зеленоватый каркасный стиль
  5. Sky - визуализация неба с параметрами высоты, угла солнца и интенсивности

Установка для Windows

Требования

  • MinGW-w64 или Visual Studio
  • GLEW
  • GLUT (freeglut)
  • GLM

Установка зависимостей (MinGW)

  1. Скачайте и установите MinGW-w64

  2. Скачайте библиотеки:

    • GLEW - OpenGL Extension Wrangler
    • freeglut - GLUT для Windows
    • GLM - OpenGL Mathematics (header-only)
  3. Распакуйте библиотеки и скопируйте файлы:

    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

Создание своих шейдеров

Чтобы добавить собственный шейдер:

  1. Создайте файл фрагментного шейдера (например, my_shader.glsl)
  2. Откройте obj_viewer_shader.cpp
  3. Найдите функцию init() и добавьте в массив shaders:
    {"Мой шейдер", "vertex_shader.glsl", "my_shader.glsl"}
    
  4. Перекомпилируйте программу

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.