Автор работы: Пользователь скрыл имя, 11 Декабря 2011 в 07:50, дипломная работа
Задача моделирования фотореалистичной воды в реальном времени является одной из классических задач компьютерной графики. Это связано с тем, что вода является сложным природным объектом, и ее внешний вид зависит от многих факторов таких, как окружающий мир или положение наблюдателя. Поэтому очень важно знать основные факторы, влияющие на поведение и внешний вид воды. Но в различных ситуациях поведение воды может очень сильно различаться, поэтому нужно выделять категории эффектов, характерные для каждого случая (в основном, это относится только к физическому поведению поверхности воды).
1. Введение 3
1.1 Обзор публикаций 4
1.2 Постановка задачи 6
2. Имитация поведения поверхности воды 7
2.1 Выбор типа сетки для представления поверхности воды 7
2.2 Волновое уравнение поверхности 8
3. Имитация оптических эффектов 12
3.1 Оптические свойства воды 12
3.2 Создание текстур 13
3.3 Проекционное текстурирование 15
3.4 Отсечение объектов 16
3.5 Цвет воды 17
4. Описание приложения 19
4.1 HLSL – высокоуровневый язык шейдеров 19
4.2 Рендеринг в текстуру (Render To Texture) 21
4.3 Руководство пользователя 21
5. Заключение 23
6. Список литературы 24
Федеральное агентство по образованию Российской Федерации
Государственное образовательное учреждение
высшего профессионального образования
Нижегородский
государственный университет
Факультет
Вычислительной математики и кибернетики
Кафедра
математического обеспечения ЭВМ
Выпускная
квалификационная работа бакалавра
Моделирование
и визуализация водных
поверхностей
Работа допущена к защите Заведующий кафедрой МО ЭВМ д.ф.-м.н., проф. _________________Стронгин Р.Г. Подпись «____»_________________2008
г. |
Исполнитель:
студентка гр. 8403 фак-та ВМК _________________Лалакина А.А. Подпись «____»_____________2008
г. Научный руководитель: проф. каф. МО ЭВМ, д.т.н. _____________Турлапов В.Е. Подпись «____»_____________2008
г. |
Нижний Новгород
2008
Оглавление
Задача моделирования фотореалистичной воды в реальном времени является одной из классических задач компьютерной графики. Это связано с тем, что вода является сложным природным объектом, и ее внешний вид зависит от многих факторов таких, как окружающий мир или положение наблюдателя. Поэтому очень важно знать основные факторы, влияющие на поведение и внешний вид воды. Но в различных ситуациях поведение воды может очень сильно различаться, поэтому нужно выделять категории эффектов, характерные для каждого случая (в основном, это относится только к физическому поведению поверхности воды).
Среди
множества видов природных
Водные поверхности, характерные для этих водоемов, довольно сильно отличаются по своему физическому поведению. Поэтому способы их моделирования тоже различны. Поверхность воды в океане деформирована за счет сочетания постоянных волн небольшой амплитуды и частоты, а вода в озере является достаточно спокойной, т.е. там нет больших волн, но присутствуют неравномерные высокочастотные колебания, которые приводят к эффекту искажения отражаемых и преломляемых объектов. Для небольших водоемов также характерны такие явления, как интерференция колебаний от нескольких всплесков и отражение колебаний от границ. Поэтому необходимо определить, какую именно поверхность требуется смоделировать.
Области применения моделей водных поверхностей очень широки: создание 3D-игр и других 3D-приложений, эмуляторы виртуальной реальности, индустрия кино и др.
Существуют различные методы имитации физического поведения поверхности воды, построенные на основе реальных физических моделей, но некоторые из них невозможно реализовать в реальном времени за счет слишком большого количества вычислений (уравнение Навье-Стокса). Поэтому большинство алгоритмов используют наиболее простые модели, чтобы уменьшить объем вычислений. Несмотря на то, что упрощение модели приводит к снижению реалистичности поведения воды, применение дополнительных эффектов при ее визуализации дает очень хорошие результаты. Кроме того, не всегда имеет смысл имитировать физику поверхности. Иногда достаточно обойтись лишь имитацией оптических эффектов. Правда, это применимо к таким водным поверхностям, деформация которых действительно невелика. В случае сильных деформаций, реалистичная имитация поведения водной поверхности невозможна хотя бы без простейшей физической модели.
В ходе визуализации возникают некоторые артефакты, которые сильно снижают реалистичность изображения. Например, артефакты на границе между объектами сцены и водой вследствие искажений поверхности воды.
Существует большое количество работ, где описаны некоторые этапы создания реалистично выглядящей водной поверхности. Основная часть материалов описывает способ имитации протяженных водных поверхностей (океан) на основе синусоидальных волн, их модификации (волны Gerstner) и метода быстрого преобразования Фурье (FFT – Fast Fourier Transform). [1], [2], [5], [7], [8].
Практически во всех остальных случаях при моделировании воды используются только способы визуального моделирования, т.е. сама поверхность воды остается плоской, а эффект волнения поверхности создается с помощью наложения искаженных текстур. [5], [6], [9], [10]. Основные принципы, которые применяются в таких случаях, являются достаточно простыми для понимания и реализации и не требуют особых затрат при их применении (в отличие от физического моделирования, когда нам постоянно нужно производить перерасчет позиций вершин по достаточно сложным формулам). Основой таких методов является применение карт нормалей и du-dv карт.
В работе [2] предложена техника для генерации и анимации протяженных водных поверхностей с использованием GPU (Graphics Processing Unit). Детально описаны методы симуляции поведения водной поверхности. Описывается метод непрерывной детализации геометрической модели водной поверхности. Так же представлена техника генерации и анимации текстур водной поверхности. А именно, говорится, что поверхность моря можно представить в виде некоторой функции H(x,y,t) = z, заданной на двухмерном наборе данных. Наиболее простой метод представление данной функции на GPU - это суперпозиция нескольких синусоидальных волн с собственной амплитудой, периодом, начальной фазой и направлением распространения. Для управлением «остротой» волн использована формула Gerstner –модификация суперпозиции синусов, которая как бы “сдвигает” вершины волны.
Статья [1] охватывает принципы как физического, так и визуального моделирования водной поверхности. Имитация физики производится путем смешивания нескольких способов – быстрое преобразование Фурье, уравнение Навье-Стокса, волновое уравнение. Из визуальных эффектов рассматриваются:
рис.1 Каустики |
рис.2 Godrays |
рис.3 Пена и брызги |
Отличием работы [12] является то, что за основу авторы берут конечно-элементная линейно-упругая динамическая модель, являющаяся, по сути, системой пружин с демпферами, связывающих точечные узлы с сосредоточенной в них массой (spring-mass, пружинно-массовая модель). Авторы утверждают, что она является одной из наиболее подходящих, в силу ее простоты и как следствие небольшой вычислительной сложности. В то же время все преимущества физического подхода сохраняются.
Модель
в основе имеет структуру узлов,
связанных линейно-упругой пружиной, представляющую,
по сути, одноосный конечный элемент (рис.
4)
рис. 4 Каждый узел pi обладает следующим набором характеристик: mi - масса узла; - декартовы координаты узла; - скорость узла; - ускорение узла; - cумма всех сил, действующих на узел. В свою очередь пружина Sk, k=k(pi, pj) соединяющая узлы pi и pj, характеризуется следующими величинами: - длина пружины в состоянии покоя; - текущая длина пружины; - коэффициент упругости пружины. Выражение для Sk, действующий на узел pi , определяется по закону Гука. |
рис. 5 Линейно-упругая динамическая модель |
Используя указанный метод моделирования, они получили описание динамики изображаемой поверхности в терминах механики (силы, скорости, ускорения), что позволяет сравнительно просто и быстро менять ее текущее состояние (внося возмущения по скорости и/или положению), накладывать ограничения на движение каких-либо точек поверхности (напр., фиксировать) и т.д.
Авторами был осуществлен подбор параметров (массы, сосредоточенные в узлах, коэффициенты упругости связывающих эти узлы пружинок и т.д.) пружинно-массовой модели для визуализации движения водной поверхности. При этом, несмотря на существенное отличие процесса, описываемого данной моделью и реальной водой, удалось получить такие эффекты как распространение круговых волн, прохождение волн друг сквозь друга, их отражение от «береговой линии» и т.д.
Задачу визуализации воды можно разделить на две части:
Для имитации поведения поверхности воды необходимо изучить основные физические модели. Физическое моделирование также является основой создания некоторых эффектов (например, взаимодействие с другими объектами, следы от дождя на поверхности воды).
Для создания фотореалистичной картины необходимо изучить основные оптические свойства воды, которые необходимо учитывать при ее визуализации, и способы имитации этих свойств.
Таким образом, задачу визуализации можно сформулировать так:
Также можно отметить, что визуализация воды выполняется в реальном времени.
При имитации физики водной поверхности большую роль играет правильно выбранная триангуляция поверхности. При этом каждый тип сеток может быть использован для реализации одной или нескольких моделей, но не в любом случае. Иногда физическая модель требует конкретного вида сетки.
Поверхность воды можно представить в виде сетки множеством способов. Рассмотрим самые простые (очевидные) и эффективные методы.
рис.6 Регулярная сетка |
рис.7 Радиальная сетка |
Регулярная (равномерная) сетка
Наиболее
простой и естественный выбор, но
не самый эффективный и
Информация о работе Моделирование и визуализация водных поверхностей