ФИО

Захаров Сергей Сергеевич, e-mail

 Факультет

 Вычислительной техники и информатики

 Кафедра

 Прикладной математики и информатики

 Специальность, группа

Программное обеспечение автоматизированных систем, ПО-00б

 Тема диплома

 Моделирование земной поверхности

 Научный руководитель

Башков Евгений Александрович 

 

   
Биография
Автореферат
Библиотека
Ссылки

Отчет о поиске

 

КОМПЬЮТЕРНОЕ МОДЕЛИРОВАНИЕ ПРИРОДНЫХ ЯВЛЕНИЙ: ВИЗУАЛИЗАЦИЯ НЕБА И ОБЛАКОВ

1. Визуализация солнца, звезд и луны

2. Визуализация неба

Литература

Захаров Сергей Сергеевич, кафедра прикладной математики и информатики,
e-mail: zaharov_sergey@mail.ru

Zaharov S.S. " Computer modeling of the natural phenomena: visualization of the sky and clouds ".
The given work is devoted such a problem as computer modeling of the sky and clouds. In process of development of graphic adapters and computers, ever more than attention has become will be given not only functionality of the programs, but also their appearance. Therefore for most of modern graphic systems simply it is necessary to create photorealistic quality of the image. And any landscape will not be completed without the dynamical, real sky. Besides in many cases, for example in air simalations and training simulator, to quality of heavenly sphere is showed the special requirements. About problems of reception of such realistic image also there will be a speech.

1. ВИЗУАЛИЗАЦИЯ ЗВЕЗД, СОЛНЦА И ЛУНЫ


Геометрическая модель неба представляет из себя сегмент сферы с диаметром много меньше размера сцены. Чтобы добиться кажущейся бесконечности, мы двигаем конечную модель неба вместе с наблюдателем. Кроме того, для того, чтобы показать, что небо находится гораздо дальше всех объектов в сцене, можно визуализировать небо раньше всех объектов в сиене, при этом с помощью матрицы проекции добиваясь, чтобы максимальный z неба совпадал с дальней отсекающей плоскостью, либо чтобы при визуализации неба значения буфера глубины не модифицировались. В качестве текстуры неба используется фототекстура "высоких" облаков мэпируемая планарно на сегмент сферы, при этом, изменяя параметры проекции, можно добиться эффекта движения облаков в некотором направлении, более же низкие облака отображаются с помощью системы импостеров, о которой речь пойдет ниже. Кроме того, на небо накладывается линейный туман. Цвет тумана, его ближние и дальние границы, а также цвет неба являются параметрами текущих атмосферных условий, которые задают такие эффекты как освещенность, рассеяние света в атмосфере и пр., анимация этих параметров будет рассмотрена ниже. Солнце и луна представляются в виде прямоугольников перпендикулярных радиусу сегмента сферы задающей небо. положение солнце и луны в рассчитываются с помощью упрощенной модели описанной в [ 1 ]. При наложении текстуры солнца - Sunrgb (см. Рис 1). на купол неба -
Dome b для результирующего цвета Srgb используется
формула Srgb = Sunrgb *(1-Domergb) + Domergb.



Рис. 1.1 – Текстура солнца


Текстура луны не может быть использована так же как и текстура солнца, т.к. в этом случае, луна не будет иметь фазу. Для моделирования фазы, на текстуру луны Moonrgb,
накладывается текстура бампа Bumprgb , представляющая из себя полусферу, скалярно перемноженная на направление источника солнца SunVecrgb по следующей формуле.
Srgb=Moonrgb*(SunVecrgb+Bumprgb)


Рис. 1.2 – Текстура луны


Для того что бы смоделировать закат и восход солнца и луны, на них накладывается туман, того же цвета что и туман на небе, таким образом, чтобы во время восхода и заката луна и солнце полностью затуманивалась и совпадали по цвету с цветом неба.
Геометрическая модель звездного неба, представляет систему частиц, построенную на сфере единичного радиуса, каждая из частиц обладает своим цветом и размером, в соответствии с звездной величиной и цветом звезды, представляемой данной частицей. Ориентация модели рассчитывается с помощью упрощенной модели описанной в [1]. Также все частицы обладают прозрачностью, которая позволяет плавно проявлять и убирать звезды в момент восходов и закатов. Прозрачность звезд также является параметром текущих атмосферных условий.

2. ВИЗУАЛИЗАЦИЯ ОБЛАКОВ


2.1 Введение
Визуализация облаков является важной задачей в отображении реалистичных открытых сцен, не говоря уж о приложениях, где небо играет основную роль - таких как авиасимуляторы. Из-за своей структуры, облака являются объектами, напрямую непредставимыми в полигональной форме, и существуют несколько способов аппроксимации неба и облаков.
• Заранее нарисованные текстуры неба, интерполяция между ними для смены картины неба. С одной стороны, для сцен, где камера находится около поверхности земли. достигается практически фотореалистичное качество в статике, с другой стороны, для динамического неба и для камеры, летающей между облаками, способ неприемлем.
• Двумерные облака, генерация в текстуре с помощью шума Перлина. Этот способ решает многие проблемы создания динамического неба, включая наличие переменной облачности, эффект клубящихся облаков, и некоторые другие, но всегда оставаясь в рамках двумерной картинки.
• Наиболее близкий к реальности способ отображение, основанное на системах частиц. В этом случае облако представляется как набор полигонов с текстурами, всегда обращенных к наблюдателю. Микро-детальность формы и краев облака задается текстурой прозрачности на полигонах. Разумеется, такой способ позволяет использовать всевозможные эффекты, связанные с облаками. К сожалению, как просчет формы, так и отображения облаков таким способом требует крайне много ресурсов.

2.2 Заранее нарисованные текстуры
Если камера находится достаточно близко к поверхности, то можно использовать заранее нарисованные текстуры для отображения неба. Саму небесную поверхность можно изобразить как плоскость с нанесенной на нее соответствующей текстурой, но гораздо более реалистично выглядит визуализация как небесной сферы (dome). То есть создается некая поверхность с закругленными краями, похожая на часть сферы, но гораздо более пологая, чтобы передать эффект удаленности горизонта. В рамках статической картины это позволяет достичь практически фотореалистичного качества, так как для этого необходима текстура достаточного качества, что не является проблемой.
В этом случае проблемы заключаются в визуализации динамического неба. Среди возможных подходов можно перечислить:
• Использование нескольких слоев текстур, и сдвиг их относительно друг друга.
• Интерполяцию между несколькими картинами неба.
• Изменение гаммы в зависимости от времени суток.
• Пост-эффекты свечения солнца и луны.

Хотя применение всех этих методов может создать видимость реалистичной смены дня и ночи, все это работает только при существенных ограничениях. Во-первых, пренебрегается изменением позиции наблюдателя, так как в рамках такого метода невозможно построить вид облака для произвольной позиции наблюдателя. Другими словами, модель работает в предположении, что расстояние до облака настолько далеко, что камера не может сдвинуться на расстояние, при котором бы изображение облака бы изменилось. Это относится и к движению облака, т.е. создает серьезные ограничения динамичности неба.
Кроме того, для разнообразной и реалистичной картины неба необходим большой набор текстур высокого разрешения для интерполяции. что означает значительные затраты текстурной памяти.
Наконец, такой подход ни в коей мере нельзя использовать для визуализации облаков в авиасимуляторах - требуются такие эффекты как выход за пределы облачного слоя, полет сквозь облако, скорости таковы, что облака могут быть видны с совершенно разных углов и т.д.
Можно сказать, что способ вполне приемлем, если предъявляются невысокие требования к динамичности неба и облака находятся далеко от наблюдателя.

2.3 Двумерное моделирование облаков, Perling Noise


Использование Perlin Noise для моделирования облаков является наиболее распространенным способом из-за его простоты и достаточной степени реалистичности для ряда приложений.
Вообще говоря, облачная поверхность обладает неравномерной структурой, но и не совсем хаотической. Отсюда, для формирования облаков необходима некая хаотическая функция, ядро которой подчиняется некоторому определенному закону. Этим условиям вполне удовлетворяют функции Perlin Noise, которые есть суть комбинация шумовой функции и интерполяционной функции. Аргументами для шумовой функции выступают целые числа (integer).



В результате последовательного применения этих двух функций получается, как показано на рисунках, функция, обладающая гладкостью и в тоже время обладающая достаточной степенью хаотичностью.


Основными величинами здесь являются амплитуда (amplitude) и частота (frequency). Амплитуда отвечает за высоту волну, частота равна обратному от длины волны, длина волны - это, по отношению к шумовой функции, расстояние от одной красной точки до другой.
Но если фиксировать амплитуду и частоту, то получаемая функция все еще обладает достаточной степенью равномерностью. Решение следующее: мы строим несколько функций с различными амплитудами и частотами, а затем складываем их. Получаемая в результате функция как раз удовлетворяет всем необходимым условиям (см. рис.).


Амплитуду и частоту на каждом шаге изменяют по следующему закону:
frequency = 2i
amplitude = persistencei

где i - номер генерируемой функции. Величина persistence специально введена для обеспечения зависимости амплитуды от частоты.

Октавой (octave) называется каждая сгенерированная и добавленная в суммарный поток функция. Количество октав, также, является основной величиной в данном процессе и влияет на качество изображения.
В качестве интерполяционной функции можно использовать в принципе любую функцию. Чаще всего используют линейную, косинусную или кубическую интерполяцию. При этом линейная интерполяция работает существенно быстрее, но дает и худшую точность.


Косинусная интерполяция - более точный метод, чем линейная интерполяция (получается более гладкая кривая), зато более медленный за счет вычисления косинуса. Вычисления можно ускорить, если использовать табличное задание косинуса.

Кубическая интерполяция - это более точный метод, чем косинусная интерполяция, но более медленный, за счет использования большого количества умножений. Как правило, достаточно использовать линейную или косинусную интерполяцию.



Одно из классических применений шума Перлинга – создание двумерных карт облаков. Для регулирования плотности облаков достаточно установить все пиксели, меньше какого-то порогового значения, в цвет фона. На рисунке показаны результаты такого отсечения.

Видно, что эти рисунки напоминают небо различной облачности. После подстановки нужных цветов в качестве фона и цвета облаков, можно получить изображения, подобные рисунку ниже:


Ясно, что в этом случае облака могут сдвигаться относительно наблюдателя, динамически исчезать и появляться, возможны даже эффекты клубящихся облаков. Кроме того, так как текстуры процедурно генерируются по мере необходимости, проблема текстурной памяти стоит не так остро.

3. ТРЕХМЕРНОЕ МОДЕЛИРОВАНИЕ ОБЛАКОВ. ИСПОЛЬЗОВАНИЕ КЛЕТОЧНЫХ АВТОМАТОВ


Трехмерное моделирование облаков является более реалистичным и физически точным, а также позволяет визуализировать гораздо большее число явлений, происходящих в облаках.
Основная идей состоит в следующем. Модель облачной поверхности (то есть такой поверхности, которая покрывает все небо в определенном диапазоне) представляет из себя трехмерную решетку. В узлах этой решетки находятся воксели - в нашем понимание - это минимальная графическая единица, операции над которой выполняются как над единым целом и которая визуализируется с помощью простейшего графического объекта.
Мы будем визуализировать воксели с помощью, условно говоря, плоскостей, с нанесенными на них текстурами "небольших туманностей", то есть частей облака, и направленных на наблюдателя (то есть нормаль, перпендикулярная поверхности, коллинеарно направлению наблюдателя и обратно направлена по отношению к нему. Также используется альфа-тест (для OpenGL - это GL_ALPHA_TEST) для того чтобы не выводить черный фон (для него альфа параметр ставится равным 0, а для остальных пикселей - больше 0 и условиями теста ставятся пиксели, альфа параметр для которых больше 0). Также используется блендинг, то есть полигон выводится прозрачным для передачи того, что выводимое есть некая "туманность", а она в достаточной степени прозрачна.
Для каждого вокселя мы вводим три битовых (то есть, либо 0, либо 1) параметра, которые отражают его физическую природу как части облака:
hum - если равен 1, то это означает, что в данном вокселе собралось достаточно пара для формирования облака.
act - если равен 1, то это означает, что в данном вокселе началась фаза преобразования из пара в воду (то есть, в облако).
cld - если равен 1, то это означает, что в данном вокселе существует облако.


Работая только с этими параметрами, мы можем изменять структуры облачной поверхности. Мы можем производить различные эффекты, такие как зарождение облаков, угасание облаков, перемещение облаков, изменение структуры облаков и др.
Облачная поверхность не стационарна, а постоянно изменяет свою структуру. Вводятся следующие формулы, где с помощью простейших предикатов изменяются три параметра, введенные нами, то есть изменяется структура облака:



Здесь i, j, k - координаты вокселя в введенной нами сетке, ti - момент времени. То есть, если у нас уже есть какая-то воксельная модель облаков в момент времени ti, то мы по этим формулам рассчитываем, какую форму она примет в момент времени ti+1. Но одних этих формул недостаточно, так как они формируют лишь в определенном смысле стационарную модель и никак не влияют на зарождение и угасание облаков. Вводятся дополнительные формулы:



Здесь, pext - пороговое значение, влияющее на угасание облаков; phum - пороговое значение, влияющее на изменени влажности; pact - пороговое значение, влияющее на изменение активности.
Для моделирования воздействия ветра можно применять, например, следующие формулы:



Используя данную модель, можно моделировать достаточно сложные облачные поверхности, однако она является достаточной сложной, так как малейшее изменение параметров может привести к тому, что вся модель просто распадется на множество кусков, которые будут вести себя по непонятным законам. Здесь очень важна подгонка параметров, а это сделать достаточно сложно. К тому же такая модель очень ресурсоемка, как с точки зрения размеров ресурсов для хранения данных, так и с точки зрения ресурсов на их обработку. В зависимости от детализации облако может включать от сотен до тысяч частиц, каждая из которых занимает размер на экране и каждая из которых рисуется с учетом полупрозрачности.
С другой стороны, метод является наиболее общим и универсальным методом представления облаков и легко модифицируется для любых требований – полет сквозь облако, возможность рассмотреть облако под любым углом, полет над облачным слоем и т.д. Поэтому этот метод широко применяется в различных авиасимуляторах и тренажерах.

К тому же данную модель можно еще немного усложнить и сделать еще более реалистичной. Например, можно ввести просчет освещенности частиц с учетом плотности облака и рассеяния света частицами. Значение освещенности определяется следующим рекуррентным соотношением, аппроксимирующим интеграл плотности облака



где Ik и Tk – освещенность и прозрачность k-той частицы соответственно, gk – интенсивность света, рассеиваемой k-той частицей, I0 – начальная освещенность. K принимает значения от 1 до N, где N – общее число частиц в облаке.


4. ДОПОЛНИТЕЛЬНЫЕ ЭФФЕКТЫ: SHAFTS OF LIGHT


Вообще говоря, облака, как твердые объекты отбрасывают тень на землю. Тем самым создается такой эффект как "Shafts of light" - совокупность лучей света, образующие некие конические объекты, которые исходят из разрывов в облаках. С помощью этого эффекта существенно повышается реалистичность и "законченность" картинки.
Моделировать данный эффект можно следующим образом. Создается битовая карта небесной поверхности. Если использовалось двумерное моделирование облаков, то из полученной текстуры битовая карта получается следующим образом: черные пиксели (равные нулю) приравниваются к нулю, а все остальные - равными единицами. Если использовалось трехмерное моделирование, то битовая карта получается следующим образом: все столбцы "проецируются на горизонтальную плоскость" и если в столбце был хоть один воксель с установленным параметром присутствия облака, то пиксель в битовой карте с соответствующими координатами столбца будет равен 1, а если облака в данном столбце не нашлось, то равен 0. Далее проводятся конусы из условного положения источника света до некоторого уровня относительно поверхности земли (можно прорисовывать до земной поверхности, но это не слишком реалистично). Также не нужно выводить те части конусов, которые располагаются выше нижней границе облачной поверхности.



Рис 4.1 – Пример эффекта shafts of light

ЛИТЕРАТУРА

[1] Schlyter. "How to compute planetary position" h.rro. hem.vassagen.se'vausch'comv'ppcomy.html
[2] K. Perkn, ACM SIGGRAPH'84 "AdvancedImage Synthesis"
[3] Terragen, Imp: "www.planetsidc.co.uk^errasen^
[4] Y. Dobashi. K. Kaneda. H. Yamashita, T. Okita, and T.
Nishita, "A Simple, Efficient Method for Realistic Animation
of Clouds", SIGGRAPH 2000.
[5] M.HaiTis, A. Lastra, "Real-time Cloud Rendering",
EUROGRAPHICS 2000.
[6] Niniane Wang, "Realistic and Fast Cloud Rendering in
Computer Games", SIGGRAPH2003
[7] А. С. Мухачева. А. В. Чнглинцев, М. А. Смагин. Э. A.
Мухачева, "Задачи двумерной упаковки: развитие
генетических алгоритмов на базе смешанных процедур
локального поиска оптимального решения ", приложение
к журналу "Информационные технологии», 2001.

05/25/2005 г.