Задание 3 (2016) (1124457)
Текст из файла
Авторы: Щербаков А.С, Фролов В.А.Задание 3. Симуляция и рендеринг растительности.Рисунок 1. Пример выполненного задания.1.АннотацияЦель задания: Изучение основ современного OpenGL в процессе выполнения задания сполезной нагрузкой:База:● Основы физической симуляции и анимации● Графический конвейер, геометрические преобразования● Шейдерные программы● VBO/VAO. Объекты памяти OpenGL● ИнстансингДополнительно:● Локальные модели освещения● Модели освещения тонких объектов● Имитация микрорельефа● Тени.
Карты теней.● Редеринг в текстуру● Научная визуализацияПредполагаемый объем кода задания: 1000-1500 строк:●●●Инициализация меша травы 100 строк.Симуляция: 100 строк.Работа с OpenGL: 500-1000 строк.Пример выполненного задания: h ttps://youtu.be/QNTAT74Pddk2.БазаВ базовой реализации задания необходимо сделать траву (или другую растительность - цветы,кусты), реалистично колышущуюся на ветру (рис.
1). По желанию допускается реализацияволос вместо травы либо деревьев/кустов с колышущимися на ветру листьями. Отрисовкатравы должна выполняться при помощи механизма инстансинга в OpenGL.2.1 Обязательные требования к симуляции:●●●Движения травы должны быть реалистичными. Вся трава целиком должна шевелиться(а не только отдельные травинки).Ветер должен быть включён по умолчанию, либо добавляться по кнопке ‘W’ (Wind).Скорость симуляции не должна зависеть от производительности машины.
Можновключить вертикальную синхронизацию, чтобы гарантировать ограничение 60 кадров всекунду. На машине проверяющего вертикальная синхронизация будет включена поумолчанию.Совет: запускайте свое задание на разных по производительности GPU!2.2 Обязательные требования рендерингу:●Травинки (либо другие элементы растительности) должны быть похожи на настоящуютраву - сделаны геометрией либо плашками с текстурами как в [1] или [3].
Простыепрямоугольные полоски, один треугольник, линии или точки, схематичноизображающие траву не будут засчитаны!●Отдельные травинки (либо другие элементы растительности) должны иметь различныйразмер и поворот (возможно также разный цвет).●Минимальное количество инстанцируемых объектов (травинок) - 10000. В случае есливместо травинок используются более сложные объекты (например целые деревья иликусты), минимальное количество инстанцируемых объектов - 5000.●Отрисовка травы должна выполняться при помощи механизма и нстансинга [13].●В сцене должна быть текстурированная плоскость, имитирующая пол.
Аналогичнотому как сделано в примере. Либо какая-то более сложная имитация земли.●В случае реализации волос обязательна визуализация головы хотя бы сферой ивзаимодействие волос с ней (т.е. волосы не должны проходить сквозь голову). В случаереализации сценария с деревьями - обязательна визуализация текстурированногоствола дерева.3.
Критерии оценки и дополнительная частьМаксимальная оценка за задание – 40 баллов.База. Симуляция и визуализация травы и земли с текстурой в соответствии с требованиями,без освещения (10 баллов).Дополнительно. Дополнительная часть задания (максимум 30 баллов).●Анти-алиасинг (До +5)○ Должен включаться и отключаться по кнопке “A”.○ MSAA (+2) (http://www.learnopengl.com/#!Advanced-OpenGL/Anti-aliasing)○ Super Sampling (+3) - рендеринг в текстуру с бОльшим разрешением (чемразрешение экрана) и даунсэмплинг○ Super Sampling + MSAA (+5)●Базовое освещение (до + 5 баллов).○ Текстура на травинках (+1).○ Освещение по ламберту и/или фонгу с одним источником света (+1).○ Два разных источника света (например направленный и точечный) (+1).○ Затемнение травы ближе к земле для имитации эффекта Ambient Occlusion (+1).○ Имитация грязи и/или пожелтения (+1)○ Специализированные модели освещения травы или волос (+2)●Тени (до + 6 баллов).○ Тени на плоскость (+1)○ Простой Shadow Map (+3)○ Простой Shadow Map + PCF (+4)○ Более сложные и реалистичные методы теней (до +6)По кнопке '7' должна включатся визуализация карты глубины, которая строится прирендере сцены из источника.
Визуализация карты глубины должна позволять различатьв ней отдельные объекты (карта может быть не однотонной, либо можно не рисоватьплоскость в карту глубины).При реализации карт теней необходимо добавить хотя бы 1 дополнительный объект всцену, чтобы тень падала от травы на этот объект, либо от объекта на траву, либодолжно быть реализовано и хорошо видно самозатенение травы.●Более реалистичная симуляция на CPU (до +4).○○●Отдельная симуляция нескольких (10-100) травинок и цветов по разному (до +2в зависимости от реалистичности).Более сложные модели симуляции (до +4 в зависимости от реалистичности) [2].Более реалистичная симуляция на GPU (до +5 баллов).Учёт столкновения с простыми объектами, перемещающимися по траве (например,катающийся по траве мяч).
Данный пункт необходимо реализовывать полностью наGPU (при помощи OpenGL, OpenCL или CUDA), поскольку объекты будетсталкиваться только с некоторыми травинками и все травинки должны реагировать наэто столкновение по разному.●Добавление дополнительных объектов (До +8 баллов):○ 2-3 различных типа растительности (например, трава и 2 разных видацветочков) (+1 за каждый дополнительный вид, +2 максимум)○ Добавление деревьев (+2 за статичные деревья +4 за деревья с колышущимисяна ветру листьями)○ Добавление животных или птиц (+1 за каждый вид, +2 максимум)○ Добавление камней (+1 максимум)○ Добавление любых других дополнительных объектов (+1 максимум)●Окружение (До +8 баллов)○ Ландшафт вместо плоскости.
Геометрию ланшафта можно сгенерировать покарте высот. Трава должна расти при этом на поверхности ландшафта (+2)○ Кубические текстурные карты для визуализации неба (+1)○ Добавление атмосферных эффектов при помощи частиц (дождь, снег, пепел … до +2 в зависимости от реалистичности).○ Добавление воды■ (+1 просто плоского участка воды)■ (+2 вода с отражениями)■ (+3 вода с отражениями и прозрачностью)●Имитация микрорельефа на земле, камнях, травинке или коре деревьев (normalmapping) (до +6 в зависимости от техники и реалистичности)○ +2 простой нормал-маппинг (бамп-маппинг)○ +4 Parallax Occlusion Mapping○ +6 Использование тесселяции (по кнопке ‘g’ должна включаться каркаснаявизуализация протесселированнйо поверхности !!! + должна быть возможностьвключать/отключать тесселяцию по кнопке ‘t’)●Научная визуализация (до +5)○ Визуализация сил, действующих на вершины сетки в виде стрелочек (до +2 взависимости от наглядности и эстетичности).○ Визуализация числовых значений величин (сил, скоростей, позиций) покнопкам ('8', '9', '0') в точке куда указывает мышка.
(+3)Подсказка 1: Самый простой способ - использовать рендеринг в отдельные текстурысил, скоростей и позиций. См. пример 'basic/sample_10_mrt' [0].Затем можно выводить числовые значения в виде 3 чисел в названия окна.4. Материалы для выполнения заданияДля облегчения выполнения задания мы описываем некоторые существующие методыи даём ссылки на литературу. Это тем не менее не означает что вы обязаны использоватьименно эти методы. Вы можете использовать любые техники алгоритмы, которые позволятВам получить реалистичный результат.4.0 Модель элемента растительностиСледует отметить, что физическая модель не обязана совпадать с геометрическойполигональной моделью, используемой для рендеринга.
Чаще всего они не совпадают. Вданном задании мы предлагаем реализовать Вам следующие простые модели:4.0.1 Физическая модельДля задания была выбрана достаточно простая физическая модель. Ветер сообщаеткаждой травинке некоторую скорость. Чем выше точка модели, тем больше полученнаяскорость. Под действием этой скорости точки меняют своё положение в направлении вектораскорости. Так как травинка деформируется, то появляется сила упругости, котораяпропорциональна изменению положения точки. Вектор силы направлен от текущегоположения точки к первоначальному.4.0.2 Геометрическая модельРисунок 2. Простая геометрия травинки.В данном задании вы можете использовать любую реалистично-выглядящую модель травы.Мы предлагаем Вам несколько вариантов геометрических моделей:● Простая полигональная модель (рис.2)● Полигональная модель с текстурой для альфа-теста (рисунки A и B)● Полигональная модель на основе плашек (рисунок C).Один из способов уменьшения количества полигонов (при сохранении детальной модели) использование текстуры альфы и выбрасывание ненужных участков травы прямо вофрагментном шейдере при помощи инструкции discard (рисунок A).Рисунок 3. Простая модель растительности на основе геометрии [11].Рисунок 4.
Используемые текстуры (b - цвет; с - альфа; a - результат применения альфа-тестапри помощи инструкции discard во фрагментном шейдере) [11].Внимание!!! - при отрисовке травы не используйте прозрачность !!!Для корректной визуализации прозрачной травы при помощи альфа-смешивания Вам придетсясортировать все полигоны травы от дальнего к ближнему непосредственно на GPU, что самопо себе является довольно сложной задачей. Но если всё-таки Вам очень хочется это сделать,для сортировки вы можете использовать простой алгоритм bitonic sort на OpenCL [12].Альтернативное решение - использование так называемой порядко-независимой прозрачности(Order Independent Transparency) - попиксельная сортировка отдельных фрагментов ввычислительном шейдере [13].Также можно использовать модель на основе плашек с текстурами [1,3] (рисунок 5).Рисунок 5.
Альтернативная модель растительности на основе плашек [1,3].4.1 Основы симуляции движенийВ контексте данного задания система - набор вершин физической модели травинок. Накаждом кадре вы должны вычислять физические параметры в вершинах - позицию, скорость,силы. Исходя из параметров на текущем кадре вы вычисляете параметры на следующем кадре.Рисунок 6. Пошаговая симуляция движений. Сила Гука - сила упругости, действующая наточки вашей модели (если в модели имеются пружины или что-то подобное).4.2 Основы геометрических преобразований всовременном OpenGL1.
При использовании OpenGL3/4 и шейдеров необходимо помнить одно главное правило.Вершинный шейдер записывает свой выход в gl_Position в clip space, в единичном кубе[-1,1].2. Также важно помнить, что в процессе растеризации происходит деление позицийвершин на четвёртую координату w. Это позволяет записать перспективную проекциюв виде матрицы (без перехода в 4 измерения это было бы невозможно). Поэтомучетвёртая координата (w) должна быть равна 1 до применения матрицы проекции. Итолько после применения матрицы проекции она может быть не равной 1.3.
Характеристики
Тип файла PDF
PDF-формат наиболее широко используется для просмотра любого типа файлов на любом устройстве. В него можно сохранить документ, таблицы, презентацию, текст, чертежи, вычисления, графики и всё остальное, что можно показать на экране любого устройства. Именно его лучше всего использовать для печати.
Например, если Вам нужно распечатать чертёж из автокада, Вы сохраните чертёж на флешку, но будет ли автокад в пункте печати? А если будет, то нужная версия с нужными библиотеками? Именно для этого и нужен формат PDF - в нём точно будет показано верно вне зависимости от того, в какой программе создали PDF-файл и есть ли нужная программа для его просмотра.















