Визуализация облаков в системах реального времени

advertisement
УДК 004.4(06) Технологии разработки программных систем
К.В. ЮХИН
Производственная фирма “Логос”, Москва
ВИЗУАЛИЗАЦИЯ ОБЛАКОВ
В СИСТЕМАХ РЕАЛЬНОГО ВРЕМЕНИ
В работе предложен метод визуализации облаков для систем реального
времени.
Для тренажёров авиатехники необходима реалистичная визуализация
облаков и прохождения полноразмерных объектов сквозь них. Для
эффективной визуализации облаков, можно предположить, что облака
обладают неизменной формой и оптическими свойствами на промежутке
времени моделирования.
В основе представленного метода лежит двухпроходный алгоритм,
представленный в [1]. Во время первого прохода вычисляется затенение
облака. На втором проходе происходит визуализация облака с
использованием данных, полученных на первом проходе.
Основные изменения, которые происходят со светом при прохождении
через облако – это рассеивание и поглощение. Рассеивание
рассчитывается в два этапа:
Вычисление рассеивания во всех направлениях. Этот этап выполняется
во время начальной загрузки имитируемой обстановки и не изменяется с
течением времени.
Вычисление рассеивания в направлении наблюдателя. На этом этапе
используются данные, рассчитанные на первом этапе, и вычисляется
рассеивание в направлении наблюдателя.
Интенсивность света I(P,), выходящего из частицы, складывается из
дошедшего до неё не поглощенного света от источника в направлении  и
рассеивания P, дошедшего до частицы от других частиц:
Dp
I ( P,  )  I 0  e

 ( t ) dt
0
Dp
Dp

 g ( s,  )e

 ( t ) dt
0
ds
0
Dp – расстояние, проходимое лучом света в облаке до частицы
(x) – оптическая глубина облака.
ISBN 5-7262-0555-3. НАУЧНАЯ СЕССИЯ МИФИ-2005. Том 2
31
УДК 004.4(06) Технологии разработки программных систем
g ( x,  ) 
 r ( x, ,  ) I ( x,  )d 
4
r(x,, `) – определяет процент света в направлении  в точке х,
рассеиваемого в направлении `.
Данные интегралы приводятся к суммам, учитывая дискретность
частиц:
Ik 

g k 1 Tk 1I k 1 , 2k  N
I 0 ,k 1
Tк-1-прозрачность (k-1)-й частицы
gк-1 – рассеянный свет (k-1)-й частицы
Каждое облако представляется набором частиц разного радиуса,
прозрачности и цвета. При визуализации, с использованием приведённой
дискретной формулы происходит рендеринг частиц в текстуру. При этом
получается изображение проекции облака на экранную плоскость. Далее
полученное в текстуре изображение с использованием блэндинга
накладывается на выходное изображение основного кадра.
При изменении размера текстуры (определяется динамически, в
зависимости от расстояния наблюдателя до облака) или положения
наблюдателя, происходит повторный рендеринг облака в текстуру.
При реализации этого метода следует учитывать некоторые
особенности. Например, при прохождении полноразмерного объекта
через облако возникает нежелательный эффект, связанный с тем, что
частицы не обладают объёмом. Для того чтобы избавиться от него,
необходимо поделить облако на две части – первая часть, которая
находится за объектом. Она визуализируется в первую очередь. Затем
визуализируется объект. В конце визуализируется часть облака,
находящаяся перед объектом (и пересекаемая им).
Разработанный метод позволяет одновременно отображать большое
количество облаков с высокой реалистичностью.
Список литературы
1. Y. Dobashi, K. Kaneda, H. Yamashita, T. Okita, and T. Nishita. “A Simple, Efficient
Method for Realistic Animation of Clouds”. SIGGRAPH 2000, pp. 19-28
2. D.S. Ebert, R.E. Parent, “Rendering and Animation of Gaseous Phenomena by Combining
Fast Volume Scanline A-Buffer Techniques,” SIGGRAPH 1990, pp. 357-366.
ISBN 5-7262-0555-3. НАУЧНАЯ СЕССИЯ МИФИ-2005. Том 2
32
Download