За защиту поставили 5. Всего потратил 120 часов.
В качестве темы курсовой работы я решил взять то, что никто до этого не делал. Самым тяжелым этапом курсовой работы (и практики), было объяснить преподавателю КГ алгоритм, который он никогда раньше не видел, в дальнейшем та же проблема была на защите.
Для ускорения работы, основной интерфейс был сверстан на коленке с помощью PyQt5, вся основная логика содержится в шейдерах GLSL (за это тоже могут забуллить, тк opengl не очень любят на кафедре).
В целом во время защиты похвалили за хороший ресерч, но не понравились эксперименты (слишком простые) и еще сказали, что результат нереалистичный (не согласен правда с этим, но ладно).
Если вы решите брать эту работу, то из проблем могу выделить следующее:
- В РПЗ есть неточности в физических терминах (проблемы перевода).
- Много говнокода в некоторых местах, которые писались за несколько ночей до сдачи курсовой.
- Неудобная камера, ее бы вообще полностью переписать.
- Есть баг, что если спрятать солнышко за горизонт, то облака будут неестественно белыми.
- Можно покрутить разные константы и добиться большей реалистичности.
- Окно нельзя размахнуть не просто так, я не смог подружить контекст moderngl с pyqt, поэтому при расширении экрана, контекст не расширяется (в целом проблема фиксится за пару часов, но я просто не успел)
Работа написана на OpenGL + Python. Облака генерируются процедурно, на основе шумов Перлина и Ворлея, шума генерируются с помощью библиотек Python. Визуализация происходит с помощью алгоритма Ray Casting. Солнышко и атмосфера появляются за счет моделирования атмосферы. Про расчет плотности и тд можно почитать в рпз, если кратко то там численно (по методу прямоугольников) считаются всякие хитрые интегралы из физики.