Применение бикубических сплайнов в графических системах реального времени

УДК 681.3.06

Ю.Н. Косников ПРИМЕНЕНИЕ БИКУБИЧЕСКИХ СПЛАЙНОВ В ГРАФИЧЕСКИХ СИСТЕМАХ РЕАЛЬНОГО ВРЕМЕНИ

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

Yu.N. Kosnikov BICUBIC SPLINES APPLICATION IN GRAPHIC REAL-TIME SYSTEMS

For spatial objects ’ reflecting systems a certain scheme of calculations is offered here. During clipping the splines are recursively dissected into parts. The primitives’ tessellation and normal computation are executed by a method of finite differences. The graphic processing in bridge goes in several coordinate systems. The computations are rationally arranged between the graphics pipeline stages.

В качестве геометрических примитивов в современных графических системах реального времени (ГСРВ), как правило, используются плоские полигоны. Они универсальны с точки зрения формообразования и просты в обработке. Кроме того, они имеют стандартную техническую поддержку отображения в виде графического процессора, входящего в состав видеокарты персонального компьютера. Тем не менее, полигональным моделям присущи определенные недостатки. Аппроксимированные ими объекты имеют стилизованный вид, что особенно заметно с небольшого расстояния наблюдения. Для улучшения вида объектов нужно увеличивать число полигонов в модели или генерировать дополнительные полигоны в реальном времени (РВ). Первый прием повышает затраты памяти ГСРВ и нагрузку на шину передачи данных в графический процессор, второй повышает вычислительные затраты. Кроме того, чтобы получить надлежащий внешний вид полигонального объекта, необходимо смоделировать его освещение. При выборе любой модели освещения необходимо выполнять усреднение нормалей в вершинах полигонов или хранить описание усредненных нормалей вместе с описанием вершин. И в этом случае требуется дополнительный расход вычислительного времени или памяти.

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

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

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

Поверхность объекта отображения представляется в своей системе координат (СКО) набором характерных (опорных) точек. Для сплайн-аппроксимации объектов выберем выпуклые сплайны Безье. Они вполне позволяют решать задачи формообразования и в то же время требуют гораздо меньше вычислительных ресурсов, чем, например, 5-сплайны. Как известно, сплайн Безье описывается шестнадцатью опорными точками Р/ (/,/=0,...,3), четыре из которых лежат в углах сплайн-примитива, а остальные задают его изгиб в разных направлениях. Поверхность объекта нужно разделить на криволинейные четырехугольники, угловые точки которых станут граничными опорными точками. Примитив с тремя углами, при необходимости, представляется с помощью слияния двух опорных точек. Далее в граничных точках следует определить углы наклона касательных к поверхности сплайна в направлениях аргументов сплайн-функции, а также в диагональных направлениях. На касательных выбираются промежуточные опорные точки. Другим вариантом разбиения объекта на примитивы является использование интерактивной компьютерной программы-моделера. Введенные программой сплайновые «примитивы-заготовки» с управляемыми геометрическими параметрами подгоняются по форме и размерам к участкам поверхности объекта. Критерием является минимизация погрешности аппроксимации.

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

В режиме РВ из моделирующей программы или системы поступают текущие значения геометрических параметров объекта в системе координат наблюдателя (СКН). На основе этой информации находится расположение объекта в пространстве наблюдателя. Обработка сцены начинается с отсечения невидимых объектов, которое выполняется с помощью известного метода оболочек [1]. Далее каждый объект представляется в виде набора криволинейных примитивов - сплайнов. Сплайны рассматриваются как объекты и, в свою очередь, подвергаются отсечению в СКН методом оболочек. В качестве оболочки примитива используется многогранник, вершинами которого являются четыре угловые точки и четыре центральные точки характеристического многогранника сплайна. Выпуклый сплайн не выходит за пределы такой оболочки. Вершины оболочки примитива подвергаются перспективному преобразованию и проверяются на вхождение в объем видимости. После перспективного

преобразования объем видимости приобретает в СКН форму параллелепипеда, что упрощает выполнение отсечения. Сплайны, полностью входящие в объем видимости или выходящие из него не более, чем на заранее установленный допуск, поступают на дальнейшую обработку. Сплайны, не вошедшие в допуск, заносятся в список частично видимых примитивов.

Частично видимые примитивы разбиваются на четыре отсека, которые тоже являются сплайнами [2]. Они снабжаются оболочками для определения видимости и принимаются за новые примитивы, которые подвергаются отсечению. Для новых примитивов определяется расположение в СКО. Операция повторяется рекурсивно, пока список частично видимых примитивов не опустеет. Разбиение сплайнов на отсеки параллельно идет и в СКП. Это необходимо для получения в СКП описаний новых сплайн-примитивов с целью их дальнейшей тесселяции. Для разбиения необходимо выполнять только операции суммирования и деления на два (сдвига), поэтому разбиение в двух координатных системах не критично к потреблению вычислительных ресурсов. Напомним, что все операции выполняются только над опорными точками сплайнов. Таким образом, по окончании отсечения потенциально видимые примитивы параллельно представляются в трех системах координат: в СКП и СКН - координатами опорных точек, а в СКО - параметрами размещения примитивов на поверхности объекта.

Чтобы ускорить дальнейшую обработку сплайнов, их описания в СКП переводятся в явную форму

3 3 ‘

*Р = IIа,

7=01=0

где ау - коэффициенты формы примитива.

Коэффициенты а, определяются через координаты *, (г,/=0, ,3) опорных точек

сплайна, например,

а00 = ((*00 — 3*10 + 3*20 — *30 ) — 3(*01 — 3*11 + 3*21 — *31 ) +

36

+ 3(*02 — 3*12 + 3*22 — *32 ) — (*03 — 3*13 + 3*23 — *33 )) .

Форма описания (1) позволяет просто находить в СКП координаты нормалей к поверхности сплайна, причем получающиеся выражения сходны по структуре с (1):

д*Р 3 3 г-1 д *Р 3 3 . ,

IIіац(хР) (уРУ, п =дт = II-а(хР)(ур^ п* =-1.

7=0 г=0 д уР 7=0 і=0

Следовательно, в СКП имеет смысл выполнять отбраковку нелицевых примитивов и расчет освещенности. Для этого в СКП с помощью следующего выражения переводятся однородные координаты наблюдателя и источников освещения:

р = (УТУ - УОТУ)  ТО - оото ,

где Р= |хр ур 1р 1 - матрица координат наблюдателя или осветителя в СКП;

У=|уу 1 - матрица исходных координат наблюдателя или осветителя в СКН;

УО= |х0 у0 г'0 1 - матрица смещения СКО вдоль осей СКН, определяет динамику перемещения объекта в сцене; ОО= |х° у° 1 - матрица смещения СКП вдоль осей СКО,

определяет размещение примитива на поверхности объекта и со временем не меняется;

ТУ=

^11 ^12 ^13 0

^21 ^22 ^23 0

^31 ^32 ^33 0

0 0 0 1

матрица поворота СКО в СКН, содержит направляющие косинусы

- осей СКО относительно осей СКН, определяет динамику поворота объекта в сцене;

пх

ТО=

т т11 т т12 т т13 0

т т 21 т т22 т т23 0

т т31 т т32 т т33 0

0 0 0 1

матрица поворота СКП в СКО, содержит направляющие косинусы

- осей СКП относительно осей СКО, определяет размещение примитива на поверхности объекта и со временем не меняется.

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

Лицевые примитивы подвергаются тесселяции. Этот процесс идет параллельно в СКП и СКН: в СКП для каждой вершины тесселяции находятся освещенность и текстурные координаты, а в СКН - координаты вершин, необходимые для визуализации. Чтобы в СКП и СКН обрабатывались одни и те же вершины, описания лицевых сплайнов предварительно переводятся в пространство наблюдателя. Там они приобретают следующую форму:

У

3 3 і

= II (х')(у')і

І =0г=0 3 3 і

= II Х)(У' У

і =0 г=0

3 3 і

= II5,,, (х')(у')і

і=0 ,=0

где ах, > ауі >агч

- новые коэффициенты формы.

Коэффициенты ахЦ, ау/, аг/] связаны с коэффициентами а/, а также с параметрами размещения примитива в объекте и объекта в пространстве наблюдателя, например,

~~х00 = ^11(Т13а00 + Х0 ) + ^12 (Т23а00 + У0 ) + ^13(Т33а00 + *0 ) + Х0 = ^21 (Т13а01 + Т12 ) + ^22 (Т23а01 + Т22 ) + ^23 (Т33а01 + Т32 ) ’

1у 01 1* 33

^31Т13а33 + ^32Т23а33 + ^13Т33^33

Следует отметить, что приведенные выражения содержат суммы, в которые входят произведения направляющих косинусов / изменяющихся во времени, на константы. Форма описания (2) является своеобразной параметрической формой, где параметрами являются аргументы СКП.

Тесселяция сплайнов в СКП и СКН проводится методом конечных разностей [3]. Его суть в том, что вычисление текущей координаты сплайна к (к=гр, ху, уу, /) идет по приращениям:

к

і +1

: к + Ак,

1хр или ур =0 ’

где Ак,- - первая конечная разность координаты к на ,-м шаге приращения.

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

\2/, А/, _ А 7,1

Ак,+1 =Ак, +Ак,

Ак0 Ак1х' =0

где А2к, - вторая конечная разность координаты к.

В свою очередь, А2к, находится через третью конечную разность А2к:

А2к,+, = А2к, + А3к ,

А2к =А2 к\

А к0 = А к1хР =0

V

х

V

*

Для кубической функции одного аргумента А к является константой.

2 3

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

Акп

ДАко)(.+1) = ^(Ако). + Б2 (Ако). , Б2 (Ако)(.+1) = Б2 (Ако). + Б3 (Ако),

(Ако )о Ако| уР =о ’

Б(Ако )о = Б(Ако ^ ур =о > Б2 (Ако )о = Б2 (Ако )| уР =о

(А ко )о = А ко| уР =о ,

'-о/о

А\/о \2( \2к

хо!о

Б(А% )о = Б(А2ко)| ур =о,

Б2 (А2ко )о = Б2 (А2ко )|

(А3к)о =А3ЦуР =о >

Б(А3к )о = Б(А3к )| Б2 (А3к )о = Б2 (А3к )|

М уР =о

ур =о ’

уР =о ’

(А2ко)(.+1) = (А2ко). + Б(А2ко). ,

Б(А2ко)(.+1) = Б(А2ко). + Б2 (А2ко). ,

Б2 (А2ко)(.+1) = Б2 (А2ко). + Б3 (А2ко),

(А3к)(.+1) = (А3к). + Б(А3к). ,

Б(А3к)(.+1)= Б (А3 к). + Б2 (А3к). ,

Б2 (А3к)(.+1)= Б2 (А3к). + Б3 (А3к), где . - номер шага по второму аргументу (уР) сплайн-функции; Б, Б2, Б3 - обозначения конечных разностей по второму аргументу, причем Б3 (Ако), Б3 (А2ко), Б3 (А3к) - константы.

23

Вычисление значений Ако, А ко, А к легко образует конвейер: пока идет поиск вершин тесселяции для одной кривой на поверхности сплайна, вычисляются начальные значения конечных разностей для следующей кривой. Таким образом, начальные значения конечных разностей для нахождения вершин тесселяции вдоль одного аргумента находятся заранее, а начальные значения конечных разностей по второму аргументу - константы. Текущие координаты вершин тесселяции вычисляются по выражениям (3),...,(5) за три операции суммирования, которые могут выполняться параллельно во времени. При необходимости вычисления координат могут быть реализованы аппаратно [4].

Сплайновые примитивы, выделенные на поверхности объекта, в общем случае имеют разные размеры и формы. В то же время для эффективного применения конечных разностей сетка вершин тесселяции должна быть топологически ортогональной и иметь одну постоянную размерность для всех примитивов. Чтобы выполнить это требование, нужно учесть, что примитивы с малыми абсолютными размерами выделяются там, где поверхность объекта имеет «пересеченную» (неровную) форму. Там и размеры полигонов после тесселяции должны быть небольшими. Напротив, участки поверхности без неровностей могут покрываться сплайнами больших размеров. В связи с этим можно текущие значения аргументов сплайн-функции отсчитывать в относительных единицах - шагах тесселяции, а размеры всех примитивов в этих единицах сделать одинаковыми. На рисунке показан сплайн-примитив в локальной системе координат, имеющей отсчеты в абсолютных (х,у) и относительных (пх,пу) координатах. Размеры сплайна - 4x4 шага (пх,пу=о,...,4). Угловые точки сплайна Роо, Р3о, Ро3, Р33 имеют в плоскости аргументов координаты (хоо,уоо), (х3о,у3о), (хо3,уо3), (х33,у33). Тогда текущие значения аргументов для выражения (1) находятся с помощью билинейной интерполяции

х

х —— + х N

у =

(1 - -I N

г1 - ^ N

1 —х I +

(

1 - ^х- I +

х33 N + х3°

1 - II “

V N ]] N С

у33 N +

1 - ~ II ~,

N )) N

где N - максимальное число шагов тесселяции сплайна вдоль координатной оси.

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

п

п

п

п

X

Размещение сплайна в локальной системе координат

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

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

Таким образом, предлагаемая организация процесса отображения сплайнов характеризуется более объемной предварительной обработкой, чем отображение полигонов, однако эта обработка относится к ограниченному числу опорных точек. В то же время работа с точками для сплайнов выполняется с высокой скоростью. Благодаря перераспределению операций между этапами графического конвейера, резко сокращаются временные затраты на отсечение полигонов, становится ненужным усреднение нормалей, вершины приобретают корректную освещенность. Примененный подход к отображению сплайнов учитывает, что ГСРВ, в отличие от САПР, ориентированы не на геометрическую точность представления объектов, а на их реалистическое восприятие наблюдателем. Отсюда вытекают допустимые упрощения процесса моделирования и отображения сцены. Конвейерная организация и аппаратная поддержка отображения позволяют выполнять его в режиме РВ.

ЛИТЕРАТУРА

1. Иванов В.П. Трехмерная компьютерная графика / В.П. Иванов, А.С. Батраков; под ред. Г.М. Полищука. М.: Радио и связь, 1995. 224 с.

2. Эйнджел Э. Интерактивная компьютерная графика. Вводный курс на базе ОреиОЬ, 2 изд. / Э. Эйнджел; пер. с англ. М.: Издат. дом «Вильямс», 2001. 592 с.

3. Косников Ю.Н. Технология отображения криволинейных поверхностей в графических системах реального времени / Ю.Н. Косников // Автоматизация и современные технологии. 2003. № 5. С. 37.

4. Патент РФ № 2218608. Устройство для отображения графической информации на экране растрового индикатора / Ю.Н. Косников, А.В. Нагаев // Изобретения. Заявки и патенты. 2003. № 34.

Косников Юрий Николаевич -

кандидат технических наук,

доцент кафедры «Программирование и вычислительные системы»

Пензенского государственного университета