lect_11 (Лекционный курс в ворде)
Описание файла
Файл "lect_11" внутри архива находится в папке "Лекционный курс в ворде". Документ из архива "Лекционный курс в ворде", который расположен в категории "". Всё это находится в предмете "инженерная графика" из 4 семестр, которые можно найти в файловом архиве МГУ им. Ломоносова. Не смотря на прямую связь этого архива с МГУ им. Ломоносова, его также можно найти и в других разделах. .
Онлайн просмотр документа "lect_11"
Текст из документа "lect_11"
Лекция 11.
( 18 апреля)
Закрашивание.
Основная причина популярности алгоритмов закраски, основанных на разбиении на многоугольники, - существование двух методов закраски: по Гуро ( Gouraud shading ) и по Фонгу ( Phong shading ). Оба
метода позволяют создавать сглаженные изображения .Это несложные алгоритмы, в которых сначала высчитываются параметры закраски в вершинах многоугольников, а затем происходит интерполяция по внутренней области многоугольника.
Метод Гуро быстрее метода Фонга, но с его помощью нельзя добиться некоторых световых эффектов ( например, бликов ). Его обычно используют в приложениях, где важна скорость: например, в авиасимуляторах. Закраска методом Фонга позволяет получить более качественные изображения, но она и обходится дороже. В методе Гуро считаются только интенсивности в вершинах многоугольников, используя функцию закраски. и затем интерполируются для пикселов внутренней области. А в методе Фонга интерполируются нормали, и функция закраски применяется к каждой точке. И хотя оба этих метода стали фактически стандартными ( метод Гуро используется во многих графических рабочих станциях ; оба метода включены в GKS3D и PHIGS ), до них существовали другие способы закрашивания, разработанные, например, Букнайтом (Bouknight, 1970 ) и Вайли (Wylie, 1967 ).
Закраска методом Гуро.
Метод Гуро основывается на определении освещенности грани в ее вершинах с последующей интерполяцией получившихся величин на всю грань.
N4
N1 NA
N3 N2
Рис. 1 NA = ( N1 + N2 + N3 + N4 ) / 4
Моделью освещения ( функцией закраски ) будем называть функцию, зависящую от вектора нормали в данной точке, положения источника света и вектора наблюдения. В качестве нормали в вершине берется усредненная по нормалям прилежащих граней нормаль (Рис.1). Функция закраски применяется в каждой вершине для расчета интенсивности.
I1
Ia S Ib
Is
I4
I2
I3
Рис. 2
Проведем через произвольную точку S выпуклого четырехугольника горизонтальную прямую (Рис.2). Освещенность Is в точке S вычисляется по интенсивностям Ia и Ib в точках пересечения этой прямой со сторонами четырехугольника, а Ia и Ib интерполируются по интенсивностям в соответствующих вершинах:
I a = [ I1 * ( ys – y2 ) + I2 * ( y1 – ys ) ] / ( y1 – y2 )
Ib = [ I1 * ( ys – y4 ) + I4 * ( y1 – ys ) ] / ( y1 – y4 )
Is = [ Ia * ( xb – xs ) + Ib * ( xs – xa ) ] / ( xb – xa )
Недостатки метода Гуро.
С помощью метода Гуро можно изображать только матовые поверхности, не имеющие зеркальных бликов (т.к. блик будет размазываться по поверхности и скроется ). Действительно, в случае, когда блик расположен внутри грани и не доходит до вершин, зеркальная составляющая в вершинах равна нулю и, следовательно, блик не появится при интерполяции.
У метода Гуро есть еще один недостаток. Дело в том, что возникает классический оптический эффект (Mach banding): на границах четырехугольников человеческий глаз усиливает переходы и границы воспринимаются как светлые линии (это происходит из-за разрыва производной).
Желание устранить эти недостатки приводит нас к методу Фонга.
Закраска методом Фонга.
В методе Фонга зеркальные блики выглядят довольно правдоподобно и почти (но не совсем) устранен оптический эффект (Mach banding). Как и метод Гуро, метод Фонга также опирается на интерполирование, но интерполируются не интенсивности, а нормали, и модель освещения (функция закраски) применяется к каждой точке, используя интерполированную нормаль Ns (Рис. 3).
N1
Na Ns Nb
N2 N4
N3
Рис. 3
В екторная интерполяция помогает восстановить естественную кривизну поверхности, аппроксимированной четырехугольниками (Рис. 4).
Original surface
Рис. 4
Изображения, полученные методом Фонга, получаются более реалистичными, но этот метод требует гораздо большего объема вычислений: во-первых, интерполируются три векторные компоненты, а во-вторых, высчитывается интенсивность в каждой точке. Это привело к возникновению различных технологий ускорения этого метода, которые можно разделить на численные и геометрические. Численные оптимизации, разработанные Бишопом (Bishop) и Даффом (Duff), уменьшают количество арифметических и алгебраических операций, а геометрический подход, предложенный Бергманом (Bergman) и Харрисоном (Harrison), основан на определении мест появления бликов.
Недостатки метода Фонга.
Несмотря на то что метод Фонга позволяет получать блики на поверхности и снижает видимость границ граней, у него все же есть недостатки.
Во-первых, работая в плоскости экрана, мы проводим интерполяцию с одинаковыми приращениями, хотя правильнее было бы учитывать перспективное представление граней и использовать разные приращения .
Во-вторых, возникают проблемы при анимации. Дело в том, что, как видно из Рис. 5, в определенный момент времени при повороте грани нормаль в одной и той же точке P начинает интерполироваться по нормалям другой тройки вершин (сначала – по V1, V4 и V2, а потом - по V1, V4 и V3), что, естественно, иногда бывает очень заметно.
V1
V2
Rotate
P V2
V4 V1 P
V3 V4
Рис. 5
В-третьих, при разбивке поверхности на четырехугольники надо учитывать, что, если точка является вершиной хотя бы одного четырехугольника, то она также должна быть вершиной всех четырехугольников, которым она принадлежит. Иначе можно столкнуться с ситуацией, показанной на Рис. 6, где закраска грани 1 интерполируется по V1 и V3 без учета V2, в то время как при закраске граней 2 и 3 V2 учитывается. Это может привести к нежелательным визуальным эффектам.
V1
Polygon 1
V2
Polygon 2
V3 Polygon 3
Рис. 6
В-четвертых, если нормали к смежным четырехугольникам очень быстро меняют направление, мы можем получить неправильную закраску. Например, на Рис. 7 мы получили набор усредненных параллельных нормалей в вершинах, и, следовательно, неверную закраску.
Vertex normals
Sface normals
Рис. 7
* * *
Методы Гуро и Фонга хороши тем, что они просты и с их помощью можно получить довольно хорошую закраску, но поверхности получаются неинтересными и какими-то безжизненными. Текстуры помогут нам избежать этого.
Текстурирование.
Наложение текстуры на поверхность объектов сцены повышает ее реалистичность. Однако при текстурировании полигональных объектов мы сталкиваемся с некоторыми трудностями. Нельзя наложить двумерный рисунок на полигональный объект произвольного размера, не обрезая рисунок. Необходимо установить соответствие между точками на поверхности объекта и точками текстуры, что в общем случае приводит к сжатию или растяжению рисунка текстуры. Это соответствие устанавливается с помощью специальной функции проецирования F():
где u, v – координаты текстуры, а x, y, z – координаты текстурируемого объекта.
В качестве функции проецирования могут использоваться стандартные функции отображения: цилиндрическая и сферическая.
Рассмотрим цилиндрическое отображение: имея параметрическое задание цилиндрической поверхности , легко получить функцию проецирования для координат текстуры. Произвольная точка кривой поверхности цилиндра радиуса r и высоты h задается следующим образом:
Функция проецирования в этом случае выглядит так:
Отображение на сферу более проблематично. Проецирование плоскости на сферическую поверхность приводит к полному разрушению рисунка на полюсах. Рассмотрим в качестве примера наложение текстуры на часть сферы. Она параметризована следующим образом:
Тогда мы можем получить координаты текстуры из соотношения:
В общем случае текстурируемые поверхности не являются цилиндрическими или сферическими. Для наложения текстуры на объекты произвольной формы применяется метод двухступенчатого отображения, суть которого в следующем:
-
На первом шаге двумерная область текстуры отображается на простую трехмерную промежуточную поверхность, например, цилиндрическую:
Этот этап называется S-mapping.
-
На втором шаге полученная трехмерная текстура проецируется на поверхность объекта (O-mapping):
Комбинация этих операций позволяет текстурировать объекты «естественным» способом. В качестве промежуточной поверхности предлагается исрользовать произвольно ориентированную плоскость, кубическую, цилиндрическую или сферическую поверхности, выбор одной из которых зависит, прежде всего, от геометрической формы поверхности текстурируемого объекта. Существует также несколько вариантов операции O-mapping. Соответствие между координатами могут быть получены следующим образом:
-
При пересечении отраженного от поверхности объекта луча и промежуточной поверхности T’.
-
При пересечении нормали к поверхности в точке (x, y, z) c T’.
-
При пересечении линии, проходящей через (x, y, z) и центр тяжести объекта, с T’.
-
При пересечении линии, идущей из (x, y, z) к T’ , ориентация которой задается нормалью к T’ в точке (xi, yi, zi).
Пирамидальное фильтрование (Mip-mapping).