BuldakovMikhail / bmstu-cg-cp

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Курсовая работа по компьютерной графике ИУ7.

За защиту поставили 5. Всего потратил 120 часов.

Предупреждение

В качестве темы курсовой работы я решил взять то, что никто до этого не делал. Самым тяжелым этапом курсовой работы (и практики), было объяснить преподавателю КГ алгоритм, который он никогда раньше не видел, в дальнейшем та же проблема была на защите.

Для ускорения работы, основной интерфейс был сверстан на коленке с помощью PyQt5, вся основная логика содержится в шейдерах GLSL (за это тоже могут забуллить, тк opengl не очень любят на кафедре).

В целом во время защиты похвалили за хороший ресерч, но не понравились эксперименты (слишком простые) и еще сказали, что результат нереалистичный (не согласен правда с этим, но ладно).

Если вы решите брать эту работу, то из проблем могу выделить следующее:

  1. В РПЗ есть неточности в физических терминах (проблемы перевода).
  2. Много говнокода в некоторых местах, которые писались за несколько ночей до сдачи курсовой.
  3. Неудобная камера, ее бы вообще полностью переписать.
  4. Есть баг, что если спрятать солнышко за горизонт, то облака будут неестественно белыми.
  5. Можно покрутить разные константы и добиться большей реалистичности.
  6. Окно нельзя размахнуть не просто так, я не смог подружить контекст moderngl с pyqt, поэтому при расширении экрана, контекст не расширяется (в целом проблема фиксится за пару часов, но я просто не успел)

Краткое описание

Работа написана на OpenGL + Python. Облака генерируются процедурно, на основе шумов Перлина и Ворлея, шума генерируются с помощью библиотек Python. Визуализация происходит с помощью алгоритма Ray Casting. Солнышко и атмосфера появляются за счет моделирования атмосферы. Про расчет плотности и тд можно почитать в рпз, если кратко то там численно (по методу прямоугольников) считаются всякие хитрые интегралы из физики.

изображение

About


Languages

Language:Python 80.6%Language:GLSL 19.4%Language:Shell 0.0%