Научная статья на тему 'Визуализация трехмерного течения с помощью системы частиц на основе графического процессора'

Визуализация трехмерного течения с помощью системы частиц на основе графического процессора Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
354
37
i Надоели баннеры? Вы всегда можете отключить рекламу.

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Потий О. А.

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

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Текст научной работы на тему «Визуализация трехмерного течения с помощью системы частиц на основе графического процессора»

дения нетривиального подмножества X0 (Лп) с X0 имеет следующую

верхнюю оценку: т( X 0 (Л°„ ))= O( mlrN ) , где r =

Л0N

Литература

1. Макдоналд М., Данбар Я. Сегментирование рынка: практическое руководство. М., 2002.

2. Емеличев В.А., Мельников О.И., Сарванов В.И., Тышкевич Р.И. Лекции по теории графов. М., 1990.

3. Подиновский В.В., Ногин В.Д. Парето-оптимальные решения многокритериальных задач. М., 1982.

4. ЕмеличевВ.А., ПерепелицаВ.А. // Дискретная математика. 1994. Т. 6. № 1. С. 3-33.

5. Гэри М., Джонсон Д. Вычислительные машины и труднорешаемые задачи. М., 1982.

6. КоршуновА.Д. // Успехи математических наук. 1985. Т. 40. № 1 (241). С. 23-34. Карачаево-Черкесская государственная технологическая академия 6 июля 2005 г.

УДК 681.518.54

ВИЗУАЛИЗАЦИЯ ТРЕХМЕРНОГО ТЕЧЕНИЯ

С ПОМОЩЬЮ СИСТЕМЫ ЧАСТИЦ НА ОСНОВЕ ГРАФИЧЕСКОГО ПРОЦЕССОРА

© 2005 г. О.А. Потий

In this paper a fast and effective technique for 3D unsteady flow visualization based on particle system animation is presented. Particle advancement in flow is performed directly by means of a graphic processing unit (GPU).

The suggested method derives the advantages of texture visualization techniques - continuous cover of displayed domain and the most intuitive way of flow imagery. On the other hand, this technique allows performing 3D flow animation with interactive frame rate and sufficient quality. Tracking particles injected in the velocity field do not require expensive, from the computation point of view, 3D volume rendering procedure, in contrast with texture 3D visualization techniques. Employing of GPU hardware capacities and stream computation approach makes possible to relieve the stress from a central processing unit.

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

кого численного моделирования являются большие массивы векторных и скалярных данных. Успешный исход эксперимента во многом зависит от того, каким образом полученные данные будут представлены исследователю, и какие выводы он сделает, основываясь на полученной картине. В этой связи визуализация векторного поля скоростей становится неотъемлемой частью многих задач численного моделирования. Этап отображения результатов, полученных в ходе вычислительного эксперимента, должен предоставить исследователю информацию о структуре, скорости течения и других его характеристиках. C появлением методов, использующих аппаратные возможности графических адаптеров, стало возможным получать визуализацию двумерного [1] и трехмерного течения [2-4] на персональном компьютере в режиме реального времени.

В статье предлагается новый метод визуализации трехмерного течения с помощью системы частиц, продвижение которых рассчитывается с использованием графического процессора. Метод сочетает в себе преимущества текстурной визуализации, наследуя парадигму адвекции вещества вдоль линий тока, и методов визуализации частиц. Модель поведения частицы выбрана такой, что частица, двигаясь в потоке, со временем устаревает и умирает, возрождаясь в случайно выбранной точке визуализируемой области. Использование GPU позволяет достичь приемлемой интерактивности (от 10 до 50 кадров в секунду, в зависимости от количества и времени жизни частиц) при визуализации как стационарного, так и нестационарного течения на неспециализированном оборудовании.

Визуализация системы частиц на основе GPU

Данный метод основывается на использовании графического процессора для расчета двумерной текстуры, цветовые компоненты которой рассматриваются как координаты вершины. Растрирование этой текстуры происходит во внеэкранный буфер с помощью фрагментной программы. Дальнейшее чтение из этого буфера дает координаты вершин линий тока, описываемых частицами во время движения вдоль течения. После этого происходит визуализация следов частиц. Реализация метода использует библиотеку трехмерной графики OpenGL [5]. Не нарушая общности, можно считать, что поле задано в рамках единичного куба.

Вычисление координат точек с помощью графического процессора

Наиболее естественным образом организации вычислений на графическом процессоре является использование двумерных текстур для хранения массива значений, получаемых в ходе работы фрагментной программы из нескольких входных текстурных массивов. Традиционно текстурное значение представляет собой одно-, двух-, трех- или четырехкомпо-нентное значение, при этом тип данных каждой компоненты (GLbyte, GLshort, GLint) может быть выбран пользователем. В последнее время наряду со стандартными типами текстурных объектов производители графического оборудования добавили возможность использования четы-

рехканальных текстур (ЯОБЛ), каждая компонента которой представлена числом с плавающей точкой. Тройка ЯвВ-значений текстуры с плавающей точкой использована для хранения координат вершины рх, ру, рг. Четвертая компонента, представляющая собой альфа-значение, была выбрана для хранения информации о времени жизни частицы р/.

Трехмерное поле в данном методе задается с помощью двумерной ЯвБ-текстуры, элементы которой рассматриваются как значения поля скорости /ху2 = ОХ, /у, /), расположенные в узлах регулярной сетки. Более естественным было бы использование трехмерной текстуры с плавающей точкой, однако на данный момент оборудования, поддерживающего такой тип текстурных объектов, не существует. В связи с этим была произведена упаковка трехмерной текстуры в двумерную путем декомпозиции текстурного куба на плоские слои, распределенные по поверхности двумерной текстуры достаточного размера. К примеру, упаковка трехмерного текстурного куба размером 1283 потребует двумерной текстуры размером 4096 х 512 (рис. 1).

Рис. 1. Декомпозиция трехмерной текстуры

Фрагментная программа рассчитывает новое положение частицы по текущим координатам рху() = (рх(0, Ру(0, Рг(0), извлекая из упакованного трехмерного поля скоростей Тех/ вектор скорости в точке р(/).

На 1-м шаге на вход фрагментной программы подается три текстурных объекта - текстура-массив с текущими координатами частиц Техр(1), упакованное в двумерную текстуру поле скоростей Тех/ и одна текстура ] = 1..Л^ из набора случайных положений частиц, необходимых для обновления координат «умерших» частиц (рис. 2). На выходе конвейера растрирования получаем текстурный массив Техр(1 + 1), который на следующем шаге будет использоваться в качестве Техр(/). В данный момент расчет продвижения частиц в потоке выполняется с помощью стандартного метода интегрирования первого порядка, однако предложенный способ вычислений позволяет с легкостью перейти к методам высшего порядка. В данном случае погрешность компенсируется малым шагом

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

Текстура с полем скорости

Текстурный массив вершин

(внеэкранный буфер)

Рис. 2. Ход вычислений алгоритма

После окончания растрирования массива частиц с помощью фраг-ментной программы содержимое буфера кадра копируется в основную текстурную память и используется в качестве новой текстуры с координатами частиц. Копирование происходит при помощи вызова функций glCopySubTexture, заменяющих содержимое текстурного массива Техр(1) на новые данные Техр(/+1).

Поведение частиц и способ их визуализации

Легко видеть, что при длительном непрерывном продвижении частиц со временем все они будут либо вынесены за пределы визуализируемой области, либо накопившаяся при интегрировании погрешность сделает траекторию частицы неправдоподобной. Иллюстрацией этого факта является непрерывная трассировка следа одной частицы в поле вращения (рис. 3).

Для предотвращения этих эффектов каждая частица наделяется временем жизни рр), для чего используется четвертый альфа-канал текстурного

массива. На каждом шаге итерационного процесса происходит инкремен-тирование параметра времени жизни частицы. При достижении некоторого предельного значения Ь этот параметр обнуляется, и частица считается «умершей» и вновь «возродившейся». Возрождается частица в точке еди-

ничного куба р заданной с помощью заранее заготовленного набора случайных шумовых текстур Тех,.^), ] = 1..Ы. На каждой итерации случайным образом выбирается из этого набора номер к, 1 < к < N шумовой текстуры Техг„а(к), которая используется в процессе «возрождения» частиц в Техр(1). Если частица выходит за рамки единичного куба, то она также считается умершей.

Рис. 3. Трассировка частицы в поле вращения

Таким образом, фрагментная программа производит вычисление р(/ + 1) согласно следующему выражению:

p(i+1) = ((i+1), pl (i+1)) =

p (i +1) e R3(0,1)

(Pxvz (i) + fxvzAt> Pl (i) +1), если ^Z xyz xyz l pl (i) < L

(Prnd '0) в противном случае

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

Для визуализации следа частицы был выбран простейший способ представления линии тока в виде полупрозрачного набора отрезков с помощью примитива GL_LINE. Текстурный массив вершин Техр(1 + 1) копируется из внеэкранного буфера и используется для вывода на экран линий тока. Время жизни частицы р! рассматривается как индекс элемента в массиве вершин, визуализация которого дает трассировку следа частицы в виде полигонально-кусочного представления. Использование полупрозрачных линий позволяет получить визуально однородное изображение течения, также как при использовании трехмерной текстурной визуализации. Однако разрешающая способность отрезков линий тока в данном случае оказывается выше, чем в случае применения методов визуализации трехмерного куба. Кроме этого при отображении линии тока в виде набора полигональных примитивов возможно наложение на них подсвечи-

вающеи текстуры и применение других методов, повышающих наглядность визуализации.

При отображении множества линий тока используется перспективная проекция, что дает лучшее ощущение трехмерного пространства. В текстурных методах используется, в основном, параллельная проекция, а применение перспективной затруднительно ввиду необходимости построения сферических сечений при визуализации 3D текстуры [6]. Так как в данном методе отображение течения выполняется с помощью геометрических объектов, то применение перспективного проецирования не вызывает осложнений.

Реализация метода

При работе над этим методом использованы видеокарта NVIDIA GeForce FX 5900 на шине AGP 4.0 и расширения стандарта библиотеки OpenGL - NV_texture_rectangle, NV_fragment_program, NV_float_buffer [7]. Для написания фрагментной программы использовано расширение NV_fragment_program в виду его оптимизации под платформу nVIDIA.

Как упоминалось выше, растрирование текстурного массива вершин Texp(i+1) производится во внеэкранный буфер для предотвращения операций вывода на экран. Это позволяет увеличить производительность системы визуализации, использование специфического формата этого буфера делает возможным чтение из него данных с плавающей точкой.

Стандартные текстурные объекты в библиотеке OpenGL ограничены по высоте и ширине значением, равным некоторой степени двойки. Использование жестко фиксированных значений в нашем случае не удобно, поскольку это ограничивает нас в выборе количества частиц из 4096 (642), 16384 (1282) или 65536 (2562). Для работы с текстурами произвольного размера мы использовали расширение GL_NV_texture_rectangle. Данное расширение дает нам возможность плавно регулировать число частиц в системе, поскольку мы можем выбрать любой размер для текстурного массива Texp.

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

Использование указанных технических средств дает возможность получать интерактивную анимацию нестационарного течения в реальном времени. В зависимости от времени жизни и количества частиц скорость визуализации меняется от 12 до 50 кадров в секунду. Следствием увеличения времени жизни частицы является уменьшение количества кадров в секунду, поскольку при этом растет длина следа частицы и количество передаваемых в графическую карту полигональных данных. Однако следует отметить, что даже в напряженном режиме визуализации (около

40000 частиц, 100 вершин в следе частицы) метод имеет производительность на уровне 10-25 кадров в секунду, что превосходит текстурные методы визуализации.

Результаты работы

Нами была произведена визуализация нескольких векторных полей, результаты которой представлены на рис. 4. Эти изображения были получены с использованием 25600 частиц, значения параметра жизни частицы L = 100 при скорости 28-30 кадров в секунду. На нижней серии рис. 4 видно, что плотность заполнения пространства следами частиц несколько снижена в участках, прилегающих к границе, - там, где частица проходит наименьшее расстояние. Таким образом, наблюдается эффект максимальной концентрации отрезков линий тока в тех областях, где частицы проходят максимальное расстояние, в то время как концентрация в других областях течения падает.

О

м

Рис. 4. Примеры визуализации с помощью данного метода

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

Заключение

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

терактивном режиме производить визуализацию течения с помощью следов частиц. Предложенный подход продвижения частиц позволяет не ограничиваться случаем постоянного поля и перейти к анимации нестационарного течения. Полигональное представление линий тока в трехмерном случае дает лучший результат, чем непрерывная текстурная адвекция трехмерного текстурного куба [2, 3] с последующей его визуализацией с помощью методов отображения объемных данных [6]. При работе с такими объектами несложно перейти к перспективной проекции, которая дает лучшее ощущение объема. Полученные результаты позволяют продолжить работу над этим методом - предстоит работа по улучшению распределения частиц в пространстве.

Литература

1. Wijk J.J., van // ACM Transactions on Graphics. 2002. Vol. 21. № 3. P. 745-754.

2. Potiy O.A., Anikanov A.A. // In Proceedings of GRAPHICON. М., 2004. MSU. С. 6.

3. Telea A., Wijk J.J., van // In Proceedings of ACM SIGGRAPH 2003. ACM.

4. Weiskopf D., Ertl T. // In Proceedings of WSCG Short Papers. Shtutgard, 2004. WSCG.

5. Mason Woo et al. OpenGL Programming Guide, Third Edition. OpenGL Architecture Review Board. London, 2000.

6. Hadwiger M. et al. High-quality volume graphics on consumer pc hardware. San-Francisco, ACM SIGGRAPH. 2002. Course 42. Notes. 2002.

7. KilgardM. J. NVIDIA OpenGL extension specifications, 2004.

Ростовский государственный университет 30 августа 2005 г.

УДК 517.55

О СХОДИМОСТИ ШАРОВЫХ СРЕДНИХ ДВОЙНЫХ РЯДОВ ФУРЬЕ-ФАБЕРА

© 2005 г. М.М. Цвиль

The present research is dedicated to the question of uniform convergence and Lp-convergence of the spherical averages of Fourier-Faber double series on Cartesian product of closed curves.

Пусть остов ст бицилиндрических областей D±± = D± х D± образует гладкие кривые Lk, k = 1, 2; Wk = 9±Z) - функции, конформно и однолистно отображающие соответствующую область Dj± в плоскости С1 на

Wk| > 1 так, что 9+(o)=^, lim Zk9+(zk )> 0 (ф-(с») = сю и

Zk

lim 9-(Zk)/Zk > 0 ); Zk =y±(wk) - функции, обратные к ф±^);

zk ^^

i Надоели баннеры? Вы всегда можете отключить рекламу.