Задание 3 (Раздаточные материалы)
Описание файла
Файл "Задание 3" внутри архива находится в папке "Раздаточные материалы". PDF-файл из архива "Раздаточные материалы", который расположен в категории "". Всё это находится в предмете "инженерная графика" из 5 семестр, которые можно найти в файловом архиве МГУ им. Ломоносова. Не смотря на прямую связь этого архива с МГУ им. Ломоносова, его также можно найти и в других разделах. .
Просмотр PDF-файла онлайн
Текст из PDF
Задание 3. Моделирование роста дереваЦель задания - моделирование и визуализация роста дерева.Задачи:реализовать визуализацию модели роста деревасоздать графическое приложение с использованием шейдеров OpenGL3/4изучить некоторые алгоритмы реалистичной компьютерной графикиобеспечить интерактивный режим работы, удобный интерфейс взаимодействия спользователемТребования и баллыОсновная часть (5 баллов)Модель роста1.
Требуется реализовать алгоритм, строящий дерево с использованием случайныхвеличин. Получившееся дерево не должно быть регулярной структурой.Рекомендации по реализации алгоритма роста даны в описании задания.2. Дерево должно состоять как минимум из 100 ветвей и 500 листьев. Присутствие надереве реалистичных цветков, плодов, шишек поощряется дополнительнымибаллами. Пример ветви и листа прилагается в шаблоне к заданию.3.
Не разрешается использовать готовую модель дерева. Модель дерева может бытьрассчитана в начале программы и визуализироваться в готовом виде.Визуализация1. Все объекты должны выводиться на экран при помощи шейдерных подпрограммверсии не ниже OpenGl 3.0. Как минимум, должны быть использованы вершинныйи фрагментный шейдеры.2. У всех объектов (веток и листьев) должны быть корректно посчитаны нормали.3. В сцене требуется создать минимум один источник. Источник долженвзаимодействовать с деревом по модели Фонга. Допускается использованиетекстур совместно с моделью Фонга (как множителя диффузной компоненты илиобщего множителя цвета).4.
Моделью ветки должен быть конус, либо более сложная модель (но не цилиндр,который дан в шаблоне). Можно использовать модель листа, заданную в шаблоне,либо использовать другую модель. Использование объемных моделей листа скорректно посчитанными нормалями оценивается дополнительными баллами.Взаимодействие с пользователем1. Требуется реализовать камеру, позволяющую пользователю рассмотреть растениес разных сторон.
В основной части достаточно реализовать сферическую камеру (свозможностью вращения вокруг объекта по горизонтали и по вертикали, такжедолжна быть возможность приближения и удаления).2. Направление взгляда (eye) всегда остается фиксированным. Его нужно установитьприблизительно в середине дерева.3. В базовой части требуется, чтобы камера управлялась клавиатурой следующимобразом:A - вращение влевоD - вращение вправоW - вращение вверхS - вращение внизE - приближениеQ - удалениеПравила оформления работыВ присланном архиве должно быть 2 подпапки: src с исходным кодом и bin сисполняемым. Также туда может быть помещен readme c примечаниями, куда вы должнызаписать пункты из бонусной части, которые вы реализовали.
В противном случаепроверяющий может пропустить наличие реализации бонуса. Также в файле нужноотобразить информацию по управлению камерой и настройками программы, если ононетривиально.При разработке для Windows в папке bin должны быть exe файл, шейдеры идополнительные библиотеки (см.
как, например, сделано в шаблоне).При разработке для Linux в каталоге src или в корне архива должен быть Makefile,который сформирует аналогичный вывод в папку bin (примерно как в шаблоне).Разрешенный инструментарийРазрешается использовать любые средства при разработке и не использовать шаблон.ОС проверки - Windows\LinuxПри разработке для ОС Windows будет проверяться только исполняемый файл (сборкапроизводиться не будет). В примечаниях к работе должны быть указаны требования кбиблиотекам. При разработке с использованием QT необходимо приложить кисполняемому файлу все dll, от которых имеется зависимость. При разработке для ОСLinux будет производиться сборка с помощью make. Все дополнительные требования кбиблиотекам (кроме тех, что уже указаны для шаблона), также необходимо отразить вreadme.txt.Описание шаблонаШаблон рисует ветку и лист.
При нажатии на пробел цвет листа и ветки меняется накоричневый. Предоставляется код для генерации цилиндра и плоского овала. Такжепредоставляется пример использования текстуры. Инструкции по сборке и запуску.Дополнительная часть (максимум 10баллов)1. Свободная камера (возможность двигаться в выбранном направлении) +1При реализации свободной камеры меняется направление взгляда. Приприближении и удалении камера смещается в направлении взгляда на какое-тофиксированное значение.
При вращении вращается направление взгляда, а некамера. Управление камеры должно происходить при помощи мыши (какминимум, вращение). Приближение и удаление может происходить при вводе склавиатуры.2. Реалистичные текстуры (текстурированные листья, стебли, цветки, плоды),загруженные из файла. Должно присутствовать минимум 2 разных текстуры.Пример использования встроенной 4-пиксельной текстуры дан в шаблоне. +13. Дополнительные или сложные объекты (листья, цветы, плоды, шишки).использование простых геометрических фигур с кодом генерации, заданным впрограмме (1 балл)использование сложных аналитически заданных фигур с кодом генерации,заданным в программе (2 балла)загрузка модели из файла (2 балла) Библиотека для загрузки моделейВнимание! Баллы засчитываются, только если для объектов корректно рассчитанынормали!4.
Наличие окружения (дерево может расти на фоне зеленой травки и голубого неба, вгоршке на подоконнике и т.п., на берегу реки, в воде и т.п.) +15. Анимация роста дерева (уровень 1 - 1 балл): на выборанимированный плавный рост дерева, зависящий от скорости анимации свозможностью регулирования скорости (+1)анимированный плавный рост дерева, не зависящий от скорости анимации (+1)6. Анимация роста дерева (уровень 2 - 2 балла): на выбор:Раскрытие цветка и созревание плода: от появления нескольких лепестков,раскрытия цветка до созревания (увеличения и изменения цвета) и опадения плода(плод вянет, уменьшается, падает).
Из опавшего плода может вырасти новоедерево. +2“4 сезона” - сценарий смены времен года (не требует цветков и дополнительныхобъектов).o Первый год: “Весна" -анимированный рост модели: увеличение ветвей,добавление новых ветвей и листьев.o “Лето”- Смена тональности окраски стеблей и листьев на более темныйцвет. Может реализовываться любым способом (на уровне шейдеров, науровне изменений параметров материалов).o “Осень”- постепенная смена окраски листьев на желтые и красные тона.Может реализовываться любым способом (на уровне шейдеров, на уровнеизменений параметров материалов).“Зима”- постепенное исчезновение листьев.
Может реализовываться любымспособом (передача коэффициента прозрачности в шейдер, проверканеобходимости визуализации в коде главного приложения).o Второй и последующий годы: “Весна” - постепенное появление листьев,можно на тех же местах (не требуется генерировать новые листья).Анимированный рост модели: увеличение ветвей. “Лето”, “Осень”, “Зима” то же самое, что и в первый год.oКолыхание дерева.
Корневая ветка (ствол) дерева получает небольшое смещение (наклон),в результате чего модель дерева немного перестраивается. При чередовании такихсмещений визуализируется эффект колебания дерева. +2Вращение листьев (или цветков, если есть) вслед за солнцем. Переориентация углавсех листьев может происходить на каждом шаге в качестве элемента моделироста.7. Генерация ветки в заданном месте. Место указывается двумя кликами: первый выбор ветки, второй - выбор места на ветке +38. Микрорельеф поверхности веток и\или листьев (bump-mapping, normal-mapping)+1-29.
Расчет нормалей в геометрическом шейдере + 110. Тесселяция на GPU +2 балла11. Инстанцирование +1 балл (ускорение программы за счет однократной передачигеометрического меша и передачи нескольких модельно-видовых матриц в шейдер)Подсказки к решению(база)Модель роста дереваМодель роста описывает геометрические трансформации над примитивами (ветками илистьями), т.е. дерево с точки зрения главного приложения - это набор узлов (веток илистьев) с заданными модельными матрицами. Таким образом, при разработке моделироста не требуется привязываться к конкретному виду ветки и листа.