Skip to content

Проект в рамках пердмета "Вычислительная геометрия и алгоритмы компьютерной графики"

Notifications You must be signed in to change notification settings

Margoshinka12/OpenGLProject

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Написать программу, осуществляющую генерацию и отображение трехмерной поверхности с освещением (по модели Фонга, Блинна-Фонга или любой другой): • Алгоритм генерации поверхности выбирается на усмотрение студента с учетом требования наличия достаточного для демонстрации объема рельефа. Поверхность должна быть задана аналитически (уравнением вида z= f (x , y )). Параметры алгоритма генерации должны быть доступны для легкого изменения (например, заданы define’ами или глобальными константами в начале файла исходного кода). Размер сетки поверхности либо размер шага разбиения также должен быть вынесен отдельно в качестве одного из параметров; по умолчанию предполагается задействование не менее 32х32 вершин. • Поверхность должна быть освещена с использованием любой модели освещения, позволяющей увидеть игру света и тени (предлагается использовать модель Фонга либо модель Блинна-Фонга). Освещение должно рассчитываться во фрагментном шейдере с использованием заранее рассчитанных нормалей. Нормали в каждой вершине рассчитываются с использованием градиента функции поверхности. • Отображение освещенной поверхности должно происходить с использованием трехмерных преобразований (поворот, масштаб, перенос — как минимум по одному преобразованию каждого вида) и преобразования проекции (параллельной или ортогональной — на выбор студента). Матрицы преобразований должны строиться программно с использованием библиотеки, реализующей построение матриц преобразований и операции над матрицами (предлагается реализовать свою либо использовать какую-либо существующую библиотеку). Параметры преобразований (угол поворота, коэффициент масштабирования, координаты вектора смещения) должны быть доступны для удобного изменения аналогично параметрам алгоритма генерации. • Опционально можно добавить анимацию поверхности (например, вращение вокруг одной из осей) либо интерактивность (возможность «покрутить мышкой» или реакцию на кнопки клавиатуры). Требуется модифицировать программу, реализованную в рамках лабораторной работы №2, дополнив ее наложением текстур на сгенерированную поверхность. Необходимо реализовать загрузку из файлов (форматов *.png, *.jpg или других) и смешивание не менее чем двух текстур. Коэффициент смешивания должен быть задан uniform-переменной во фрагментном шейдере и доступен для динамического изменения (например, при помощи клавиш-стрелок на клавиатуре). Полученное значение цвета используется в качестве коэффициента диффузного освещения. Дополнительно предлагается задействовать трилинейную фильтрацию с мипмапами и анизотропную фильтрацию. Динамического изменения значений параметров для них не требуется

В ветке КривыеБезье находится лаба по телам вращения. Требуется написать программу, позволяющую пользователю задать опорные точки для построения кривой и выполняющей на ее основе генерацию тела вращения. Программа должна работать в двух режимах:

  1. Режим ввода точек для построения кривой. В этом режиме при помощи мыши пользователь имеет возможность кликать в окно программы и на месте клика в режиме реального времени размещаются объекты, представляющие точки кривой. При добавлении второй и последующих точек они в реальном времени должны соединяться гладкой кривой. Способ задания кривой (сплайны, кривые Безье и т.п.) выбирается на усмотрение программиста. Количество точек не должно быть ограничено сверху.
  2. Режим отображения тела вращения. В этом режиме на основе построенной кривой генерируется тело вращения путем вращения данной кривой относительно некоторой оси и тесселяции полученной поверхности. Можно реализовать выбор оси пользователем, но достаточно использовать одну конкретную константно заданную ось (например, ось X). Тело вращения должно иметь либо анимацию (например, само вращаться вокруг некоторой точки или оси), либо менять свое положение в соответствии с командами пользователя. Тело вращения должно освещаться с использованием любой модели освещения. Для этого необходимо реализовать корректное вычисление нормалей к сгенерированной поверхности во всех ее точках. Переход из режима 1 к режиму 2 должен происходить по нажатию кнопки на клавиатуре. Переход из режима 2 в режим 1 необязателен.

About

Проект в рамках пердмета "Вычислительная геометрия и алгоритмы компьютерной графики"

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages