start
This commit is contained in:
182
README_WINDOWS.md
Normal file
182
README_WINDOWS.md
Normal file
@@ -0,0 +1,182 @@
|
||||
# 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](https://www.mingw-w64.org/)
|
||||
|
||||
2. Скачайте библиотеки:
|
||||
- [GLEW](http://glew.sourceforge.net/) - OpenGL Extension Wrangler
|
||||
- [freeglut](http://freeglut.sourceforge.net/) - GLUT для Windows
|
||||
- [GLM](https://github.com/g-truc/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) в папке с проектом и выполните:
|
||||
|
||||
```bash
|
||||
g++ obj_viewer_shader.cpp -o obj_viewer_shader.exe -lopengl32 -lglu32 -lfreeglut -lglew32 -std=c++11
|
||||
```
|
||||
|
||||
Или используйте MinGW-w64:
|
||||
|
||||
```bash
|
||||
g++ obj_viewer_shader.cpp -o obj_viewer_shader.exe -lglu32 -lglew32 -lfreeglut -lopengl32 -std=c++11
|
||||
```
|
||||
|
||||
### Запуск
|
||||
|
||||
```bash
|
||||
obj_viewer_shader.exe model.obj
|
||||
```
|
||||
|
||||
Или просто запустите без параметров - программа попросит ввести путь к файлу:
|
||||
|
||||
```bash
|
||||
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`:
|
||||
```cpp
|
||||
{"Мой шейдер", "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.
|
||||
Reference in New Issue
Block a user