- •Растровая и векторная графика
- •Сравнение векторной и растровой графики
- •Панель инструментов
- •Выделение областей
- •Средства рисования
- •Средства рисования.
- •Работа со слоями
- •Основные понятия векторной графики
- •Специальные эффекты
- •Геометрические объекты
- •Негеометрические объекты
- •Материалы и карты
- •Алгоритм заполнения с упорядоченным списком ребер
- •Построчный алгоритм заполнения с затравкой для гранично-определенной четырехсвязной области
- •Алгоритм, использующий z-буфер
- •Простые модели освещенности и методы затенения
Негеометрические объекты
Источники света (light objects) используются при моделировании наружного (exterior) и интерьерного (interior) освещения. Различные типы источников реализуют различные алгоритмы распространения света: всенаправленные лучи из точечного источника (omni light); сфокусированный луч из прожекторного источника (spotlight); параллельные лучи из направленного источника (direct light). Кстати, последний тип чаще всего используется при моделировании солнечного света (sunlight). При этом испускаемый источниками свет может быть по-разному окрашен (light color), он может затухать на определенном расстоянии (attenuation), а также порождать тени от объектов (shadows).
Камеры (cameras) позволяют полностью контролировать отображение объектов в плоскости кадра. Важнейшей характеристикой является фокусное расстояние объектива камеры (focal length), определяющее ее поле зрения (field of view — FOV). Оба этих параметра взаимосвязаны и измеряются в миллиметрах и градусах соответственно. Еще одной важной характеристикой камеры являются плоскости отсечения (clipping planes ограничивающие видимую по глубине (расстоянию от наблюдателя) часть сцены (фотографы определяют этот параметр как "глубину резкости").
Системы сочленений (bones systems) — это структуры, состоящие из иерархически связанных "костей", описывающих сложную кинематику движения (kinematics) моделируемого объекта (например, человека). Обычно они применяются при использовании инверсной кинематики (inverse kinematics — IK) как метода манипулирования связанными структурами объектов. Оставаясь невидимыми при визуализации, они являются своеобразной арматурой (скелетом) анимируемого объекта или нескольких объектов.
Искривители пространства (space warps) реализуют динамические воздействия внешних сил на объекты, это — своеобразные силовые поля, влияющие на определенные объекты.
Материалы и карты
Материалы определяют визуальные свойства поверхностей, описывают как поверхность объекта взаимодействует с освещением сцены.
Следующие свойства поверхностей определяют взаимодействие материала со светом:
цвет (color);
прозрачность (transparency);
глянцевость (shininess);
коэффициент преломления (refractive index).
Цвет и прозрачность определяют прямое (direct) и непрямое (indirect) рассеянное освещение (diffuse lighting), вычисляемое при итоговой визуализации с помощью алгоритма излучательности (radiosity).
Коэффициент преломления и глянцевость (полированность) материала определяют блики (highlights) и зеркальные отражения (specular reflections) на поверхности. Блики и отражения просчитываются при визуализации с помощью алгоритма трассировки лучей (ray tracing).
Цвет
Выбирая цвет материала, необходимо ответить на следующие вопросы.
Какой у материала цветовой тон (hue), т. е. какого собственно цвета (красного, зеленого или какого-либо другого)?
Какая у него насыщенность (saturation), т. е. как сильно окрашен отраженный свет? Высокая насыщенность делает цвета более глубоким (deepen), а меньшая насыщенность ведет к исключению цвета (переход к ахроматическим цветам).
Какова его яркость (value), т. е. как много света отражает материал? Этот параметр влияет также на характеристику зеркальности поверхности.
Кроме модели цвета HSV, которая практически не характерна для пиксел: ной графики, могут использоваться цветовая модель RGB или файл с текстурной картой (texture map).
Прозрачность
Значение прозрачности определяет, какая часть светового потока проходящий через материал. Падающий на поверхность свет рассеивается и ослабляется при прохождении через прозрачный материал тем сильнее, чем меньше значение этого параметра.
Глянцевость
Глянцевость материала определяет характерный вид отражений и бликов на поверхности объекта. При визуализации на материалах с высокой глянцевостью будут получены более четкие зеркальные отражения и более резкие блики.
Коэффициент преломления
Коэффициент преломления определяет характер изменения света при прохождении им границы между двумя разными средами (обычно каким-нибудь материалом и воздухом).
Эта характеристика влияет на силу бликовости материала или, в случае прозрачных материалов (например, воды или стекла), на величину искривления преломления) формы объектов, находящихся сзади.
Если коэффициент преломления равен 1, падающий свет без потерь отражений) проникает в материал. Для непрозрачного объекта это означает, что его поверхность будет выглядеть абсолютно матовой, для прозрачного, но преломления будут отсутствовать.
Текстурирование материалов
Использование текстурных карт (декоративных узоров, maps) позволят придать материалам дополнительную реалистичность.
В качестве карт могут быть использованы изображения (image textures), с храненные в файлах различных форматов (BMP, TIF, JPG, EPS и некоторых других), либо процедурные текстуры (procedural textures), являющиеся рами правил (процедурами) быстрого построения нужного узора.
Типичным примером применения карт при моделировании материалов является описание их с помощью текстурирования цвета поверхности или рельефа (bump mapping).
Управление текстурированием
Для точного управления текстурированием (texture alignment) обычно требует дополнительно указать способ проецирования ("переноса") текстуры на поверхность объекта (projection type) и режим отображения на ней (mapping mode).
Основные способы проецирования текстур следующие:
ортографический (orthographic) — когда текстура проецируется на плоскость, описанную тремя точками. Такой способ называют планарным (planar) проецированием;
цилиндрический (cylindrical) — это "заворачивание" объекта в текстуру, проецируемую на цилиндр, описанный двумя полюсами (верхним и нижним) и линией шва (соединения кромок текстуры);
сферический – способ, аналогичный предыдущему, но проецирование происходит на сферу, заданную верхним полюсом, центром и швом;
зеркальный – применяется для имитации отражений на поверхности объекта. Работает подобно сферическому проецированию;
Возможны следующие режимы наложения текстуры:
черепичный – многократным повторением текстуры по поверхности;
зеркальный – с реверсивным поворотом текстуры при ее повторении;
с усечением – «этикеточный режим», при котором текстура не повторяется более одного раза на поверхности;
с увеличением – перекрытие всей поверхности объекта одной копией текстуры.
Лекции 8-10. Алгоритмы компьютерной графики
Обобщенный
целочисленный алгоритм Брезенхема для
генерации отрезка позволяет
генерировать произвольным образом
ориентированные отрезки. Отрезок
вычерчивается пошагово (от пикселя к
пикселю). На каждом шаге в зависимости
от величины тангенса угла наклона
отрезка единичное приращение одной из
координат задается безусловно.
Необходимость единичного изменения
другой координаты о
Алгоритм Брезенхема для генерации окружности. Полагается, что генерируется окружность с целочисленным радиусом R и центром в точке (x = 0, y = 0) (что всегда можно сделать, связав координаты x и y с координатной сеткой растра простым преобразованием координат). Изначально пошагово строится четверть окружности в первом квадранте. Причем ее построение начинается в точке (x = 0, y = R) и осуществляется в направлении по часовой стрелке. При таких условиях и нахождении в некоторой текущей точке растра есть только три варианта выбора очередного пикселя: по горизонтали вправо, по диагонали вниз и вправо и по вертикали вниз. В качестве критериев перехода используются знаки трех целочисленных величин. Для построения полной окружности полученную в первом квадранте четверть окружности симметрично отображают относительно осей x и y, а также относительно начала координат.
Алгоритм заполнения с упорядоченным списком ребер относится к группе методов «растровой развертки». В таких алгоритмах для всех ребер многоугольника, за исключением горизонтальных, в произвольной последовательности определяются точки их пересечения с осями сканирующих строк, сдвинутыми по оси y на пол пикселя вверх относительно координат адресуемых точек соответствующих рядов пикселей. Следуя вдоль каждой сканирующей строки, имеющей такие пересечения, от ее начала к концу, сортируют точки пересечения попарно. Интервалы между точками пересечения, входящими в пары, заполняются цветом многоугольника. Для интервалов между этими парами пересечений и крайних (от начала строки до первого пересечения и от последнего пересечения до конца строки) используется фоновый цвет.
Построчный алгоритм заполнения с затравкой для гранично-определенной четырехсвязной области. При работе такого алгоритма координаты адресуемой точки затравочного пикселя помещают в стек. Пока стек не пуст: извлекают данные о пикселе из стека; если ему уже присвоено требуемое значение цвета, вновь обращаются к стеку, если нет, тогда – пикселю присваивают это значение цвета, заполняют интервал с текущим пикселем вправо и влево от него вдоль сканирующей строки до обнаружения границ, запоминают горизонтальные (левую и правую) границы интервала, в диапазоне между этими границами проверяют строки, расположение непосредственно над и под текущей строкой, если в них есть еще не заполненные интервалы, то в указанном диапазоне данные о крайнем правом пикселе на каждом интервале помещают в стек.
Алгоритм двумерного отсечения Сазерленда-Коэна реализует отсечение отрезков координатно-ориентированным прямоугольником. В алгоритме используются четырехразрядные (битовые) коды, определяющие расположение концов отрезков относительно границ отсекающего окна. Данные коды позволяют формальным образом выявить полностью видимые и безусловно невидимые отрезки. При внутреннем отсечении последовательность действий в алгоритме следующая. С использованием кодов концов отрезок проверяется на полную видимость и безусловную невидимость. Если проверка не дает очевидного результата, поочередно работают четыре отсекателя в виде бесконечных прямых, проходящих соответственно через левое, правое, нижнее и верхнее ребра отсекающего окна. В каждом случае проверяют, не лежит ли отрезок полностью в той же стороне от отсекающей прямой, что и само окно. Если это так, переходят к следующей отсекающей прямой. В противном случае проверяют, не лежит ли начало отрезка в той же стороне, что и окно. Если это подтверждается, начало и конец отрезка меняются местами. После определения точки пересечения прямой, проведенной через отрезок, с текущей отсекающей прямой начало отрезка переносится в эту точку. Полученный новый отрезок вновь проверяется на полную видимость и безусловную невидимость. В зависимости от результата переходят к следующей отсекающей прямой или алгоритм заканчивает работу. Алгоритм внутреннего отсечения легко трансформируется в алгоритм внешнего отсечения путем инвертирования результатов работы первого.
Обобщенный целочисленный алгоритм Брезенхема для генерации отрезка
О
Рис.1.
Изменения координат
в
зависимости от ориентации отрезка
Алгоритм:
Инициализация переменных
x = x1
y = y1
x = Abs (x2 – x1)
y = Abs ( y2 – y1)
s1 = Sign (x2 – x1)
s2 = Sign ( y2 – y1)
Обмен значений x и y в зависимости от величины углового коэффициента отрезка
if y > x then
Врем = x
x = y
y = Врем
Обмен = 1
else
Обмен = 0
end if
Инициализация e с поправкой на половину пикселя
e = 2* y – x
Основной цикл
for i = 1 to x
Plot (x, y)
while (e 0)
if (Обмен = 1) then
x = x + s1
else
y = y + s2
end if
e = e – 2* x
end while
if (Обмен = 1) then
y = y + s2
else
x = x + s1
end if
e = e + 2* y
next i
finish
Алгоритм Брезенхема для генерации окружности
Данный алгоритм также является целочисленным. В соответствии с ним полагается, что генерируется окружность с целочисленным радиусом R и центром в точке (x = 0, y = 0) (что всегда можно сделать, связав координаты x и y с координатной сеткой растра простым преобразованием координат). Изначально пошагово строится четверть окружности в первом квадранте. Причем ее построение начинается в точке (x = 0, y = R) и осуществляется в направлении по часовой стрелке.
При таких условиях и нахождении в некоторой текущей точке растра с координатами адресуемой точки (xi , yi ) есть только три варианта выбора очередного пикселя (рис.2): по горизонтали вправо (направление H ), по диагонали вниз и вправо (направление D) и по вертикали вниз (направление V ).
В качестве критериев перехода используются следующие величины:
;
;
.
Согласно алгоритму Брезенхема:
если i < 0:
при выбираем направление H , т.е. пиксель (xi + 1, yi );
при > выбираем направление D , т.е. пиксель (xi + 1, yi –1);
если i > 0:
при выбираем направление D , т.е. пиксель (xi + 1, yi – 1);
при > выбираем направление V , т.е. пиксель (xi , yi – 1);
если i = 0 выбираем направление D , т.е. пиксель (xi + 1, yi – 1).
Для реализации пошагового алгоритма при переходе к очередному текущему пикселю можно использовать следующие выражения:
при шаге в горизонтальном направлении H:
;
;
при шаге в диаметральном направлении D:
;
;
;
при шаге в вертикальном направлении V:
;
;
.
Для построения полной окружности полученную в первом квадранте четверть окружности следует симметрично отобразить относительно осей x и y, а также относительно начала координат, т.е. активизировать не только выбранные пиксели (xi , yi ), но и симметричные им пиксели (xi , – yi ), (– xi , yi ) и (– xi , – yi ).
