Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
382
Добавлен:
18.03.2016
Размер:
4.2 Mб
Скачать

213

сительно нормали к средней линии поверхности задаются некоторым распределением, например Гаусса.

10.1.2. Модели закраски

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

При однотонной закраске предполагается, что и источник света, и наблюдатель находятся в бесконечности, поэтому произведения L·N и R·V постоянны. На изображении могут быть хорошо заметны резкие перепады интенсивности между различно закрашенными многоугольниками. Если многоугольники представляют собой результат аппроксимации криволинейной поверхности, то изображение недостаточно реалистично.

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

Рассмотрим, например, участок полигональной поверхности на рис.10.2. Значение интенсивности в точке P определяется линейной интерполяцией интенсивности в точках Q и R. Для получения интенсивности в точке Q – пересечении ребра многоугольника со сканирующей строкой – нужно линейной интерполяцией интенсивностей А и В найти IQ:

IQ = uIB +(1u)IA ; 0 u 1;

u = AQ

.

 

 

 

AB

 

A

C

 

 

 

P

 

Плоскость

Q

R

сканирующей строки

B

Рис. 10.2. Интерполяция методом Гуро

214

Аналогично для получения интенсивности R линейно интерполируются интенсивности в вершинах B и C, т. е.

IR = wIC +(1w)IB , 0 w 1, w = BR BC .

Наконец, линейной интерполяцией по строке между Q и R находится интенсивность P, т.е.

IP = wIR +(1t)IQ , 0 t 1, t = QP QR .

Значения интенсивности вдоль сканирующей строки можно вычислять инкрементально. Для двух пикселей в t1 и t2 на сканирующей строке

IP2 = t2 IQ +(1t2 )IR ,

IP1 = t1IQ +(1t1)IR .

Вычитая, получим, что вдоль строки:

IP

= IP

+(IQ

IR )(t1

t2 ) = IP + I t .

2

1

 

 

1

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

Недостатки метода Гуро:

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

2.Возникает классический оптический эффект (Mach banding): на границах четырехугольников человеческий глаз усиливает переходы и границы.

Вметоде закраски с интерполяцией нормали (метод Фонга)

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

215

Изображения, полученные методом Фонга, являются более реалистичными, но этот метод требует гораздо большего объема вычислений: во-первых, интерполируются три векторных компонента, а вовторых, высчитывается интенсивность в каждой точке. Это привело к возникновению различных технологий ускорения этого метода, которые можно разделить на численные и геометрические. Численные оптимизации, разработанные Бишопом (Bishop) и Даффом (Duff), уменьшают количество арифметических и алгебраических операций, а геометрический подход, предложенный Бергманом (Bergman) и Харрисоном (Harrison), основан на определении мест появления бликов.

Недостатки метода Фонга:

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

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

10.1.3.Прозрачность

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

I = k Iб + (1k) Iд ,

где 0 k 1 – характеризует прозрачность ближнего многоугольника. Если k = 1, то он непрозрачен. Если же k = 0, то ближний многоугольник полностью прозрачен; Iб – интенсивность для пикселя ближнего многоугольника, Iд – дальнего.

216

10.1.4. Тени

Наблюдения показывают, что тень состоит из двух частей: полутени и полной тени. Полная тень – это центральная, темная, резко очерченная часть, а полутень – окружающая ее более светлая часть. В КГ обычно рассматриваются точечные источники, создающие только полную тень. Распределенные источники света конечного размера создают как тень, так и полутень: в полной тени свет вообще отсутствует, а полутень освещается частью распределенного источника. Из-за больших вычислительных затрат, как правило, рассматривается только полная тень, образуемая точечным источником света. Сложность и, следовательно, стоимость вычислений зависят и от положения источника. Легче всего, когда источник находится в бесконечности, и тени определяются с помощью ортогонального проецирования. Сложнее, если источник расположен на конечном расстоянии, но вне поля зрения; здесь необходима перспективная проекция. Самый трудный случай, когда источник находится в поле зрения. Тогда надо делить пространство на секторы и искать тени отдельно для каждого сектора.

Простой способ определения объектов, попавших в тень и, следовательно, неосвещенных, аналогичен алгоритму удаления невидимых поверхностей: те объекты, которые невидимы из источника освещения, но видимы из точки зрения, находятся в тени. На первом шаге в алгоритме с учетом тени определяются все многоугольники, видимые из точки освещения. Затем выполняется удаление поверхностей, невидимых из точки зрения. При выполнении закраски многоугольника проверяется, не закрыт ли он многоугольником, видимым из источника освещения. Если да, то в модели освещения учитываются (если надо) все три компонента – диффузное и зеркальное отражения и рассеянный свет. Если же перекрытия нет, то закрашиваемый многоугольник находится в тени и надо учитывать только рассеянный свет.

10.2.Фактура (текстурирование)

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

1. Нанесение на гладкую поверхность заранее заданного узора. После этого поверхность все равно остается гладкой. Нало-

217

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

2.Создание неровностей на поверхности. Такие шероховатые поверхности реализуются путем внесения возмущений в па-

раметры, задающие поверхность.

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

Главным при нанесении рисунка на поверхность является отображение, поэтому задача сводится к преобразованию систем координат. Если рисунок задан в фактурном пространстве в прямоугольной системе координат (u, w), а поверхность – в другой прямоугольной системе координат (θ,ϕ) , то для нанесения рисунка на поверх-

ность нужно найти или задать функцию отображения одного пространства на другое, т. е. θ = f (u,w); ϕ = g(u,w) или u = r(θ,ϕ);

w = s(θ,ϕ) .

Обычно, хотя необязательно, предполагается, что функция отображения линейна: θ = Au + B, ϕ = Cw + D , где коэффициенты А, В, С,

D выводятся из соотношения между двумя известными точками в системах координат.

Узор на рис. 10.3. задан математически, но он может быть также нарисован от руки либо получен путем сканирования фотографий и т. д. Для нанесения рисунка на поверхность необходимо отображение объектного пространства в пространство изображения, а также рассмотренное преобразование из фактурного пространства в объектное. Может быть применено также любое видовое преобразование. Если для пространства изображения используется растровое устройство, то можно применить два несколько отличающихся метода.

218

Рис.10.3. Отображение текстуры на полигон

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

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

Одно из преимуществ алгоритма разбиения Кэтмула состоит в том, что необязательно знать обратное преобразование из пространства изображения в объектное пространство или глубину (значение z) фрагмента в пространстве изображения.

Однако есть и недостатки: например, фрагмент может не совпадать с одним пикселем в пространстве изображения. Часто глубина (значение z) известна из алгоритма удаления невидимых поверхностей. Для того чтобы найти обратное преобразование, нужно сохранить трехмерное видовое преобразование и преобразование объектного пространства в пространство изображения до проецирования на плоскость картины. При этом в фактурное пространство переводится точная площадь, покрываемая пикселем в пространстве изображения. Задача состоит в том, чтобы отобразить площадь пикселя из пространства изображения на поверхность в объектном пространстве, а

219

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

Точка p на поверхности является функцией двух параметров u и

v: p(u,v) =[x(u,v) y(u,v) z(u,v)]T .

Рассмотрим линейную функцию

отображения:

 

u = as +bt +c,

v = ds +et + f .

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

заданный угловыми точками (smin, tmin), (smax, tmax), соответствует участку изображения с параметрами угловых точек (umin, vmin), (umax, vmax),

то в пределах участка функция отображения имеет вид:

u = u

min

+

s smin

(u

max

u

min

)

и

v = v

+

t tmin

(v

v ) .

 

 

 

 

smax smin

 

 

 

min

 

 

max

min

 

 

 

 

 

 

 

 

 

 

tmax tmin

 

Такую функцию несложно реализовать, но она не учитывает кривизны поверхности.

Другой подход при выборе функции отображения предполагает две стадии. На первой стадии текстура отображается на промежуточной поверхности стандартного вида – сфере, цилиндре или кубе. На второй стадии стандартная поверхность отображается на поверхность тонируемого объекта. Рассмотрим примеры.

Предположим, что координаты текстуры имеют интервал представления (0, 1) и что в качестве промежуточного объекта используется цилиндр высотой h и радиусом r (рис. 10.4). Точки цилиндра задаются в параметрической форме:

x = r cos(2πu), y = r sin(2πu), z = v / h,

причем параметры u и v также изменяются в интервале (0, 1). Следовательно, можно использовать функцию отображения вида:

s =u, t = v .

Значит, образец накладывается на цилиндр без искажения формы. Однако при отображении на замкнутую поверхность, например, сферическую, нужно будет каким-то образом ввести искажения. Если

220

в качестве промежуточного объекта использовать сферу радиуса r, то один из вариантов функции отображения имеет вид:

x = r cos(2πu), y = r sin(2πu)cos(2πv),

z = r sin(2πu)sin(2πv).

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

 

 

 

 

 

 

Рис. 10.4. Отображение текстуры на

Рис. 10.5. Наложение текстуры на

цилиндрическую поверхность

развертку куба

Суть второго этапа – отображение промежуточной поверхности с уже наложенной текстурой на поверхность тонируемого объекта сцены. На рис. 10.6 схематично представлены три возможных варианта стратегии отображения:

1)значение интенсивности образца в точке промежуточной поверхности передается точке объекта, в которую

«упирается»

нормаль к про-

 

межуточной поверхности;

Рис. 10.6. Стратегии отображения

2)то же самое, но в обратном направлении – от объекта к промежуточной поверхности;

3)«центральная» стратегия – из центра промежуточной поверхности выпускаются лучи, с помощью которых и выполняется перенос.

10.3. Пирамидальное фильтрование (Mip-mapping)

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

Соседние файлы в папке Брундасов. Компьютерная графика. Лекции