Анимация трехмерных стационарных векторных полей
Мельман С. В. ([email protected]), Гриняк Т. М.
Институт автоматики и процессов управления ДВО РАН
Одной из актуальных задач современной компьютерной графики является задача о визуализации пространственных векторных полей. Целью данной работы было создание интерактивной анимации по данным векторных полей на платформе современного ПК с максимально возможным использованием его аппаратных ресурсов (графических 3D акселераторов). При этом учитывались следующие требования:
• высокая скорость визуализации каждого кадра, достаточная для режима
анимационной визуализации;
• развитые возможности и удобный интерфейс для изучения векторных полей.
В основу алгоритма использованного при разработке программного продукта положен метод многочастичной анимации (МЧА) [1] для визуализации векторных полей. Основной идеей МЧА является моделирование движения среды конечным набором движущихся точек по закону, определяемому заданным полем скоростей. Рассматриваются поля стационарного типа.
В основу практической реализации алгоритма положены возможности графической библиотеки OpenGL, которая является интерфейсом для использования аппаратных ресурсов 3D акселераторов, а также делает возможным создание интерактивного приложения для анимации векторных полей.
Обзор проблемной области
Развитие вычислительной гидрогазодинамики связано с проведением сложных вычислительных экспериментов для проверки математических моделей природных объектов и явлений. Результатами таких экспериментов являются большие массивы скалярных и векторных данных. При этом важной задачей становится визуальный анализ полученных полей (как структуры поля в целом, так и отдельных его участков). Для ее решения было разработано большое число подходов к визуализации векторных полей скоростей. Особую сложность представляет задача о построении анимации для векторных полей скоростей, как установившихся так и не установившихся течений, в трёхмерной постановке. Среди них можно отметить группы методов, основанных на линейной интегральной свёртке (LIC) [2], на адвекции текстур [3], на построении линий тока [4] и на многочастичной анимации (МЧА) [1].
Текстурные методы позволяют получить качественные результаты при визуализации двумерных течений. Вершиной их развития являются методы, основанные на построении карты движения (Motion Map) [5] для стационарных потоков. Однако при попытке их применения к трёхмерным течениям возникает ряд проблем, связанных, прежде всего, с большой плотностью текстурных данных, а также, что немаловажно, с большими вычислительными затратами. Узким местом известных трёхмерных текстурных методов является построение интерактивной анимации с высоким качеством анимационной картины. В связи с высокой вычислительной сложностью, возможно построение только некоторой анимационной последовательности с целью её последующей визуализации [3].
Методы, основанные на построении линий тока и МЧА, решают задачи интерактивной анимации, но, вообще говоря, качество статических изображений будет для них ниже в сравнении с вышеуказанными.
Для методов, основанных на построении линий тока, возникает серьёзная проблема с обобщением их на пространственный случай. Возникает излишнее загромождение результирующей анимационной картины множественными перекрытиями линий (трубок)
тока, и как следствие, потеря информативности. В случае же небольшого числа трубок тока наблюдается также потеря общей информативности.
В качестве отдельной группы рассматривается группа методов МЧА. Их геометрическим представлением является движение множества маркеров в рассматриваемом объёме. Методы этой группы находят применение при анализе решений задач из разных разделов науки. Для них не возникает серьёзных проблем при переходе к трёхмерной постановке задачи.
В представленной работе предлагается реализация программного продукта для анимации трёхмерных векторных полей на основе МЧА. Основной целью является модификация традиционной модели МЧА набором дополнительных параметров для достижения наибольшего повышения качества (информативности) анимационных кадров при сохранении высокой скорости их построения. Для достижения максимальной скорости визуализации разработка велась на базе графической библиотеки OpenGL. А так же предлагается свой механизм имитации движения потоков вдоль линий тока с применением закраски, прозрачности и освещённости.
Предложенный подход обеспечивает высокую скорость анимации и дает наглядное представление о пространственной структуре течения. Настраиваемые параметры и интерактивный интерфейс, предоставляет пользователю широкие возможности по анализу характера течений.
Входными данными являются вектора скоростей, определённые в узлах трёхмерной сетки в заданном объеме.
Методы анимационной визуализации. Методы МЧА
В соответствии с [1] для построения анимационной картины выделяют некоторую часть пространства - рассматриваемый объём. Для всего рассматриваемого объёма вводится закон, описывающий движение моделируемой среды в заданном объёме. Зададим по некоторому правилу конечное множество точек внутри рассматриваемого объёма и поставим в соответствие каждой точке маркер. Будем называть эти точки точками рождения маркеров. Пусть в рассматриваемой области находится N точек рождения маркеров. Выберем n из них, которые начнут движение в начальный момент времени. Назовём множество этих маркеров множеством "рождённых" маркеров, а остальные N-n множеством "нерождённых" маркеров. Будем характеризовать каждый маркер ещё двумя определяющими параметрами: временем жизни и жизненным объёмом. Под жизненным объёмом будем понимать некоторую геометрическую фигуру, являющуюся подмножеством рассматриваемого объёма и содержащую точку рождения маркера. Визуализация маркера на экране происходит при выполнении двух условий:
• время, прошедшее с начала движения маркера не превысило его времени жизни;
• маркер находится внутри своего жизненного объёма.
Если маркер из множества "рождённых" ("рождённый" маркер) перестаёт удовлетворять одному из этих условий, то он переносится во множество "нерождённых". Взамен него какой-нибудь "нерождённый" становится "рождённым", т.е. начинает своё движение от точки рождения. Посредством двух этих множеств моделируется рождение маркеров в области.
Таким образом, обозначен общий подход к рассмотрению МЧА методов, в котором маркеры задаются своей точкой рождения, временем жизни и жизненным объёмом. Большинство описанных в литературе МЧА методов отвечает представленному формальному описанию. В данной работе предложена реализация такого метода.
Модель
Рассматриваемая движущаяся среда представляется набором движущихся независимых друг от друга частиц - маркеров. Движение маркеров в рассматриваемом объёме осуществляется по некоторому общему заранее определённому для всего объёма
закону. В нашем случае это векторное поле заданное множеством векторов в узлах регулярной сетки. Задача состоит в построении алгоритма для определения статических изображений движущейся среды. Основным требованием интерактивной анимации является максимальная минимизация затрат на построение каждого статического изображения.
Идеализируя движущуюся среду, заключённую в пределах рассматриваемого объёма, набором движущихся независимо друг от друга маркеров, можно добиться достаточно эффективного построения набора статических изображений в интерактивном режиме. Тогда ресурсоёмкость алгоритма определяется, главным образом, ресурсоёмкостью отображения геометрии отдельных маркеров и их количеством в рассматриваемом объёме, а также ресурсоемкостью вычисления параметров каждого маркера на каждом кадре.
В данной работе рассматривается метод МЧА со следующим набором параметров общей модели:
• рассматриваемый объём для общей постановки имеет вид параллелепипеда - всё моделируемое пространство;
• точки "рождения" маркеров не фиксированы на начальный момент времени, а по мере необходимости генерируются случайным образом, с равномерным распределением по всему рассматриваемому объёму;
• жизненный объём для каждого маркера совпадает с рассматриваемым объёмом;
• время жизни для всех маркеров одинаково (его максимальное значение);
• в дополнении к имеющимся общим ограничениям для МЧА методов вводится дополнительный критерий для перевода маркеров из множества "рождённых" во множество "нерождённых". Он основан на введении минимального порога скорости движения маркеров.
Жизненный объём маркера определяет возможные перемещения маркера, и соответственно, область возможных перемещений для частицы среды, задающей маркер. В нашем случае моделируется движение жидкости или газа. Целесообразность обобщения жизненного объёма очевидна в силу того, что частицы жидкостей и газов могут перемещаться произвольным образом и, как следствие, с течением времени проходить достаточно большие расстояния. При несвоевременном выводе маркеров из множества "рождённых" наблюдается потеря "частиц среды" внутри рассматриваемого объёма, что, вообще говоря, противоречит общему представлению о движении среды как набора частиц. В нашей модели все частицы равнозначны, соответственно, равнозначны и маркеры, их представляющие, в силу чего принимается условие о равенстве времени жизни для любых маркеров. Для представленной модели предлагается принять в качестве минимального порога скорости нулевое значение. В случае попадания маркера в точку, скорость которой равна нулю, с течением времени его местоположение не будет изменяться, однако нас интересует, прежде всего, движение среды, неподвижные точки в задаче анимации не интересны.
Маркер
Как было показано выше, маркер и его геометрия играют важную роль в построении качественной анимационной картины. Поскольку каждый маркер непосредственно несёт информацию об определённой частице рассматриваемого объёма, он должен отражать информацию и о некоторой окрестности этого объема. В связи с этим каждый маркер необходимо наделить набором уникальных свойств, совокупность которых давала бы исследователю наглядное представление о параметрах частицы.
Маркер во время движения на каждом кадре может нести следующую информацию о задающей его точке рассматриваемого объёма: удаленность от наблюдателя, величину скорости, направление движения, время жизни. Все эти параметры предлагается представить посредством:
• цветовой раскраски (ЯОБА), включая альфа-компоненту;
• геометрии маркеров.
Для векторного поля наиболее важным параметром является вектор скорости для заданной частицы, поэтому предлагается дублированный способ наглядного представления этого важного параметра. Во-первых, модуль скорости представлен в цвете каждого маркера, наиболее быстрые маркеры окрашиваются красным цветом, напротив, медленно движущиеся - синим. Палитра цветов в зависимости от скорости изменяется непрерывно по линейному закону, максимальные и минимальные величины необходимо выявить при предварительном анализе заданного векторного поля. Вторым свойством маркера, отражающим модуль скорости, является шлейф. Каждый маркер в процессе движения оставляет за собой полупрозрачный след - шлейф. По длине шлейфа можно судить о величине скорости маркера. Шлейф маркера строится на основе предыдущих положений частицы среды, моделируемой маркером. Геометрия маркера показана на рис. 1, 2.
интерпретации. шлейфа.
Маркер состоит из головной части и шлейфа. На рисунках используются следующие обозначения:
A - головная часть маркера (геометрия головной части);
B - образующая шлейфа (траектория движения точки, определяющей пространственное положение маркера);
C - шлейф (геометрия шлейфа).
Цветовая раскраска шлейфа имеет следующую структуру:
• RGB-компоненты шлейфа совпадают по значению с RGB-компонентами самого
маркера;
• Альфа-компонента для каждого следующего звена шлейфа уменьшается до нуля по
линейному закону от головной части к последнему звену шлейфа.
Благодаря использованию возможностей OpenGL по интерполяции цвета и
предложенному выше способу раскраски звеньев шлейфа, удалось добиться эффекта размытости изображения маркера вдоль линии тока. Эта размытость вдоль линии тока возникает потому, что
N
движение маркеров происходит по точкам, образующим эту линию. Общий вид маркера показан на
Рис. 3. Общий вид маркера. рис. 3.
Каждый маркер обладает свойством «время жизни»,
оно выражается в его цвете через зелёную компоненту в системе RGB, что позволяет выявлять частицы, находящиеся в рассматриваемом объёме достаточно длительный промежуток времени. Как следствие, это позволяет выявить области рассматриваемого объёма, в которых движение частиц среды происходит циклически, т.е. устойчивые циклы или области пониженного давления.
Алгоритм
В области задания векторного поля вводится конечное множество точек, в соответствие каждой из которых ставится маркер. В начальный момент времени в исследуемый объём, с заданным внутри статическим векторным полем, помещаются n маркеров, равномерно распределенных по объёму. Все маркеры начинают одновременное движение в векторном поле. В процессе движения каждый маркер получает шлейф, который
строится на основе K последних последовательно занимаемых им положений. В общем случае для каждого маркера в процессе движения возможны следующие особые ситуации:
• текущее положение маркера вне рассматриваемого объёма;
• скорость точки текущего положения маркера равна нулю.
Наступление любого из представленных событий для любого из маркеров приводит к прекращению его учёта, т.е. переводу во множество "не рожденных".
После уничтожения, по принятому критерию, очередного маркера в рассматриваемый объём вводится дополнительный маркер. Повторяя этот процесс, мы получаем кадры анимации.
Вычислительные эксперименты показали эффективность предложенного метода построения анимации. Для классов полей скоростей, описывающих поступательные, вихревые и выходящие за границы рассматриваемого объёма движения, то есть такие потоки, частицы которых достаточно быстро изменяются в рассматриваемом объёме, метод работает хорошо.
Вместе с тем, был выявлен один существенный недостаток, проявляющийся при визуализации некоторых векторных полей, когда частицы среды могут находиться внутри рассматриваемого объёма бесконечно долго. При наличии в исходном векторном поле областей поглощения частиц среды наблюдается скопление маркеров. В этом случае с течением времени теряется общая информативность анимационной картины рассматриваемого объёма в целом, поскольку большинство маркеров постепенно попадают именно в эти области. С целью устранения этого недостатка было введено дополнительное свойство для каждого маркера - время жизни, по которому определяется дополнительный критерий уничтожения маркера.
Программная реализация.
Программа реализована на Visual C++ с использованием библиотеки OpenGL.
Основные возможности программного средства «Поток»:
1. Загрузка данных о векторном поле.
2. Свободное вращение сцены «мышью».
3. Изменение параметров маркеров:
3.1. количество маркеров в сцене;
3.2. максимальная и минимальная прозрачность маркера.
3.3. длина шлейфа маркера;
3.4. количество звеньев шлейфа;
4. Просмотр маркеров пересекающих секущую плоскость - 3 вида секущих плоскостей.
Локальный анализ векторных полей можно выполнять с помощью механизма сечения
сцены плоскостями. В каждой плоскости сечения отображены маркеры, её пересекающие. Для каждой плоскости сечения задаётся курсор для локализации отображения маркеров.
Структура программы и данных
Для представленной реализации в качестве входных данных используется два типа входных данных:
• Набор векторов заданный в узлах регулярной сетки;
• Набор векторов не привязанный к регулярной сетке.
Каждый маркер представлен в виде обособленного объекта, который обладает своим индивидуальным набором параметров: местом положения (три координаты X, Y, Z), текущей скоростью (которая характеризуется вектором перемещения Xv, Yv, Zv), временем жизни (T), цветовой раскраской и шлейфом (набором предыдущих положений). Для
Цветовая раскраска любого маркера вычисляется следующим образом:
R = ai • Vm; G = a2 ■ Tm; B = аз • Vm; A = a4 • Zm
R, G, B, A - соответственно красная, зеленая, синяя и альфа- компоненты цвета маркера; aj, a 2, a 3- нормирующие скоростные множители для красной и синей компонент,
соответственно, определяются при предварительном анализе векторного поля на основе линейности закона изменения данных компонент;
Vm - скорость маркера в текущем положении; a 2 - нормирующий множитель для зелёной компоненты, отвечающей за время жизни маркера;
Tm - количество кадров, в которых участвовал маркер;
A - альфа канал маркера (прозрачность); a4- нормирующий множитель для Z-
координаты, определяется для каждого положения сцены на основе ближайшего и дальнего маркеров в каждый момент времени;
Zm - Z-координата маркера (удаленность маркера от наблюдателя).
Обсуждение результатов
Работа программы «Поток» иллюстрируется на рис.4-7.
На рис.4 показан кадр анимации "Торнадо на фоне города". С целью повышения реалистичности для данной демонстрации была изменена модель цветовой раскраски маркеров с «красный - синий», на «белый - серый». Объединение статической и динамической (воздушный вихрь) части сцены выполняется Z-буферным методом. Для полноэкранного режима данный демонстрационный вариант показывает 31 FPS для 1000 маркеров, с длиной шлейфа в одно звено. Эксперименты проводились на конфигурации ПК (Pentium4 Celeron 2.0Gh, GForse 5FX Magic 64Mb, DDR 256Mb). Данные для поля вихря заданы на нерегулярной сетке.
На рис.5 демонстрируется обтекание бесконечного цилиндра. Поставленные эксперименты показали при тех же условиях 34 FPS, для 2000 маркеров, длина шлейфа не превосходит пяти звеньев ("не превосходит", потому что не все маркеры имеют максимальную длину шлейфа, например, для вновь рождённых маркеров). Для шестигранных маркеров реализуется скорость 48 FPS для 2000 маркеров. Закон движения задан аналитически.
На рис.6 показан кадр анимации для нерегулярных данных векторного поля "вихрь". Эксперимент показал 47 FPS для 1000 маркеров, длина шлейфа не превосходит пяти звеньев. Для шестигранных маркеров эксперимент показал 61 FPS для 1000 маркеров.
На рис.7 показан пример движения воздушных масс на фоне земной поверхности. Данные получены из интернета по адресу: http://data.ecmwf.int/data/d/era40 daily/ Организация: The European Centre for Medium-Range Weather Forecasts, проект: ERA-40 ECMWF 40 Years Re-Analysis, daily fields. Взяты данные за 31.08.2002г., время 12.00.
Тип данных: 3 компоненты скорости ветра: U velocity, V velocity, Vertical velocity, на всех уровнях.
Демонстрационный ролик можно посмотреть по адресу в интернете: http://www.iacp.dvo.ru/lab12/
В этом эксперименте достигается производительность 39 FPS для 2000 маркеров, длина шлейфа не превосходит пяти звеньев. Для шестигранных маркеров реализуется 51 FPS для 2000 маркеров. Данные имеют регулярную структуру.
Полученные результаты позволяют говорить об эффективности предложенного метода построения анимации, как по производительности, так и по качеству изображения.
Дальнейшее совершенствование метода и программного продукта связано с применением в реальных приложениях и переносом программы на платформу многопроцессорной ЭВМ для ускорения анализа векторных полей с большими объемами данных.
Работа выполнена при финансовой поддержке гос.контракта №10002-251/П-17/026-387/190504-301.
Список литературы
[1] А. Савичев, А. Аксёнов, С. Клименко. Анимационная визуализация векторных полей. GraphiCon 1998.
[2] Li Chen, Issei Fujishiro, Yasuko Suzuki. Comprehensible Volume LIC Rendering Based on 3D Significance Map. RIST/TOKYO GeoFEM Report Research Organization for Information Science & Technology. 2001-012
[3] А. А. Аниканов, О. А. Потий. Визуализация объёмных течений через адвекцию трехмерных текстур. GraphiCon 2003/FP3: Data Visualization and Compression.
[4] B. Jobard, W. Lefer. Creating Evenly-Spaced Streamlines of Arbitrary Density, in W. Lefer and M. Grave editors, Visualization in Scientific Computing 97 (Proceedings of Eighth Eurographics Workshop on Visualization in Scientific Computing, Boulogne sur Mer, France, April 28-30, 1997), Focus on Computer Graphics serie, SpringerWienNewYork, 1997.
[5] B. Jobard, W. Lefer. The Motion Map: Efficient Computation of Stedy Flow Animations, proceedings of IEEE Visualization '97, Phoenix, Arizona, USA, October 19-24, 1997, IEEE Computer Society, pp. 323-328.
Рисунки.
-s^*** 1ИИ
" ЖШТТТТММ " -Й-" in» г г- •,...
Рис. 4. Торнадо на фоне города.
Рис. 5. Движение частиц при обтекании бесконечного цилиндра.
"ПГ^Э^____
!: . -- Г?
?k* < - -
Рис. 6. Визуализация нерегулярно заданного векторного поля.
Рис. 3. Движение воздушных масс
на фоне земной поверхности.