геометрические преобразования. Геометрические преобразования в компьютерной графике
Скачать 1.14 Mb.
|
ПЕНЗЕНСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ Ю.Н. Косников ГЕОМЕТРИЧЕСКИЕ ПРЕОБРАЗОВАНИЯ В КОМПЬЮТЕРНОЙ ГРАФИКЕ Учебное пособие П е н з а 2011 2 УДК 681.3 Косников Ю.Н. Геометрические преобразования в компьютерной графике. Учебное пособие. – Пенза: Пензенский государственный университет, 2011. – 50 с. Показана роль геометрических преобразований в системах компьютерной графики. Излагаются закономерности и особенности применения преобразований сдвига, поворота, масштабирования, отражения и центрального проецирования в двумерной и трехмерной компьютерной графике. Конспект лекций рассчитан на студентов специалитета, бакалавриата и магистратуры технических специальностей. 3 СОДЕРЖАНИЕ Введение ...................................................................................................... 4 1 Геометрический конвейер графической системы ................................ 1.1 Моделирование и рендеринг графических объектов ................... 1.2 Структура геометрического конвейера ........................................... 2 Геометрические преобразования на плоскости .................................... 2.1 Аффинные преобразования ............................................................... 2.2 Однородные координаты. Матричное представление аффинных преобразований ....................................................................... 3 Геометрические преобразования в пространстве ............................... 3.1 Особенности отображения пространственных объектов ................. 3.2 Аффинные преобразования в пространстве ..................................... 4 Контрольные задания ................................................................................. 4 ВВЕДЕНИЕ О компьютерной графике человечество узнало в конце 1951 года, когда инженер компьютерной лаборатории Массачусетского технологического института (США) Джей У.Форрестер продемонстрировал телезрителям возможности своего изобретения: на экране монитора яркие точки высветили нечто, похожее на слова “Хелло, м-р Мюрроу”, приветствуя тем самым популярного в то время телеобозревателя. Формирование компьютерной графики как самостоятельного научного направления относится к началу 60-х годов, когда Айвеном Сазерлендом (из этого же института) был создан первый специализированный пакет Sketchpad программного обеспечения диалоговой графики (1963 г.), а фирмой General Motors разработана САПР автомобилей с представлением трѐхмерных образцов (1964 г.). За последующие годы компьютерная графика стремительно прошла большой путь и превратилась в научную область, имеющую множество приложений. Она широко применяется для проектирования объектов машиностроения, строительства, архитектуры, лѐгкой промышленности, является основой издательских систем, широко используется в компьютерных играх и симуляторах, применяется для иллюстрации научных понятий, создания отчѐтных, проектных, плановых и других документов и видеофильмов. Графика нашла свое место в медицине (визуализация результатов томографии), астрономии (реконструкция внешнего вида поверхности космических объектов), геодезии, картографии и фотограмметрии (создание рельефа по снимкам), военном деле (создание трѐхмерных карт боевых действий), искусстве (электронная живопись, спецэффекты в кинофильмах) и многих других областях знания. 5 Мы так сжились с понятием компьютерной графики и так часто повторяем эти слова, что не задумываемся, что они означают, каков объѐм этого понятия. В литературе можно найти множество определений, например, такое: компьютерная (машинная) графика – система методов, алгоритмов и программ для ввода, обработки и отображения информации на графических устройствах ЭВМ. Задачей машинной графики является наглядное представление данных человеку для лучшего их восприятия и анализа. Следует отметить, что второй аспект определения (анализ) не менее важен, чем первый (восприятие). Действительно, тенденции в поведении процессов уясняются с одного взгляда на график, но не видны в столбцах цифр; дизайн кузова будущего автомобиля воспринимается по его трѐхмерному изображению, а не по многочисленным чертежам; диспетчер легко ориентируется в воздушной обстановке по пространственной картинке, но с трудом удерживает в памяти данные о многочисленных воздушных судах, полученные по радио. Говоря о компонентах компьютерной графики, обычно упоминают еѐ технические и программные средства. Однако, рассматривая компоненты более подробно, можно выделить их гораздо больше, в частности: эргономический компонент (требования к характеристикам изображений – геометрическим, энергетическим, временным); информационный компонент (описания изображений и визуальные базы данных); математический компонент (математические методы и приѐмы описания, преобразования, обработки и синтеза изображений); 6 алгоритмический компонент (алгоритмы синтеза и сжатия изображений, удаления их невидимых участков и другая “логика” компьютерной графики); технический компонент (технические средства ввода, синтеза, регистрации, индикации, обработки изображений); программный компонент (процедуры графики, графические программные пакеты); языковый компонент (графические языки, т.е. языки описания изображений и операций над ними). С помощью перечисленных компонентов на графических экранах формируются изображения объектов, имеющих заданную форму, реалистичный внешний вид, естественное поведение. Под естественным поведением объекта понимается соответствие фаз его «экранной жизни» законам реального мира. Например, в трехмерном пространстве объект обладает шестью степенями свободы, а его видимые размеры определяются удалением от наблюдателя. В компьютерной графике такое поведение обеспечивается корректным применением геометрических преобразований. С их помощью отображаются перемещения и повороты объекта, а также его перспективный вид на картинной плоскости (на экране). Геометрические преобразования имеют свой аппарат описания и поддерживаются популярными графическими библиотеками OpenGL и DirectX. Без овладения этими преобразованиями невозможно реалистическое отображение динамических сцен. В настоящем конспекте лекций достаточно подробно рассматриваются теоретические основы геометрических преобразований на плоскости и в пространстве, а также показываются приемы их практического применения. 7 1 ГЕОМЕТРИЧЕСКИЙ КОНВЕЙЕР ГРАФИЧЕСКОЙ СИСТЕМЫ 1.1 Моделирование и рендеринг графических объектов Прежде чем изображение появится на экране, оно должно быть каким-то образом «заложено» в графическую систему, то есть описано. Изначальное описание отображаемого объекта выполняется в системе координат самого этого объекта (СКО) и с течением времени не меняется при любых пространственных эволюциях. Так и в реальном мире внешний вид объектов не меняется при изменении их пространственного положения. Можно представить, что пространственные объекты расставлены в мировой системе координат (СКМ), где их пространственная композиция образует сцену. Наблюдатель воспринимает образ этой сцены на картинной (экранной) плоскости. Наблюдатель и экран расположены в системе координат наблюдателя (СКН). В случае отображения пространственных объектов СКМ, СКН и СКО – трехмерные. В процессе отображения описание объекта «переводится» из СКО в систему координат картинной плоскости. Объекты сцены могут менять свое расположение относительно наблюдателя. Существует два подхода для описания этого процесса. Один подход предполагает, что наблюдатель (СКН) неподвижен, а сцена (СКМ, СКО) эволюционирует. Подход основан на субъективном ощущении человека, воспринимающего сцену на экране неподвижного компьютерного монитора. Второй подход предполагает, что неподвижной основой является СКМ, а объекты (СКО) и наблюдатель (СКН) могут 8 перемещаться. Подход основан на аналогии с реальным миром. Оба подхода основаны на одних и тех же математических соотношениях и при отображении сцены дают одинаковый результат. Для определенности в настоящем конспекте лекций принят первый подход. Изображение на картинной плоскости (экране) может быть представлено в виде совокупности точек и, значит, может быть описано координатами этих точек. Аналогично, в своей системе координат объект может быть описан набором троек (для двумерных объектов – двоек) координат входящих в него точек. Однако такое описание требует большого расхода компьютерной памяти и является неэффективным, хотя и применяется для специальных целей, например, для описания звездного неба. Обычно поверхность объекта представляется сочетанием геометрических примитивов. Это простая геометрическая фигура, имеющая аналитическое описание и выполняющая функции «строительного кирпича» для конструирования сложных объектов. В качестве геометрических примитивов применяются отрезки прямых и кривых линий, участки плоских или криволинейных поверхностей, фрагменты геометрических тел. Чаще всего в качестве геометрических примитивов применяют участки плоскости – полигоны и отсеки бикубической поверхности – сплайны. Примитивы описываются различным образом: полигоны – координатами вершин, криволинейные поверхности – явными или параметрическими уравнениями. «Стыковка» геометрических примитивов в поверхность объекта описывается путѐм указания их местоположения и разворотов в СКО. Возможно описание объектов как сочетания примитивов с помощью выражений математической логики. Описываются и атрибуты (свойства) примитивов: цвет, яркость, текстура, прозрачность. Описание объектов 9 относится к геометрическому моделированию и более подробно отражено в учебном пособии [1]. Таким образом, описание объекта отображения в своей системе координат может быть иерархическим: точки – вектора – поверхности – тела. Описание объекта на экране, то есть описание изображения – это набор экранных координат точек изображения (пикселей). Процесс отображения (рендеринг – rendering) – это переход от описания объекта в СКО к описанию его изображения в СКН. Он распадается на два этапа – геометрическую обработку и растрирование (растеризацию). Этап геометрической обработки часто обозначают буквами T&L (transformation and lighting), поскольку геометрические параметры объектов и примитивов используются и для их пространственных преобразований, и для моделирования их освещения. На этом этапе выполняют модельные и видовые преобразования. Модельные (иначе – сценарные) преобразования оперируют объектами в целом, описывая изменение их положения в сцене. Видовые преобразования связаны с переводом описаний объектов и примитивов в СКН, а также с формированием проекций пространственных объектов на картинную плоскость. В процессе растеризации (rasterization) на экране получают реалистические образы объектов, привязанные к растровой решетке приборной системы координат. В ходе названных преобразований графическая система выполняет целый ряд операций. Ниже приводится их краткая характеристика. Зачастую изображение объекта полностью или частично выходит за пределы экрана. В таких случаях выделяют видимую часть исходной сцены, то есть проводят еѐ ограничение. Эта операция называется отсечением. Если в пределах экрана имеется ограниченное окно, 10 предназначенное для вывода изображений, то выделение попадающих в окно объектов называют кадрированием. Ещѐ одной операцией процесса синтеза изображения является задание его динамики. Для отображения подвижных объектов нужно периодически пересчитывать координаты элементов изображения так, чтобы новая фаза изображения адекватно соответствовала динамике объекта. Для осуществления этой операции в системах компьютерной графики нужны (и используются) специальный математический аппарат и программно-аппаратные средства. Приближение объекта к наблюдателю или удаление от него сопровождается изменением видимых размеров объекта, которое должно быть отображено. Иногда эта операция рассматривается отдельно (особенно для двумерных объектов) и называется масштабированием. Пространственные объекты располагаются в СКН по закону пространственной сцены, а отображаются на плоском экране. Это означает, что на картинной плоскости наблюдателю представляются проекции объектов, и обязательным этапом отображения пространственной сцены является проецирование. Оно может быть различным (в зависимости от назначения системы), но в основном применяется параллельное и центральное проецирование. В процессе проецирования каждая точка пространственного объекта находит свой образ на картинной плоскости. При параллельном проецировании линии проецирования (проекторы) параллельны друг другу и некоторой оси проецирования. Часто в качестве этой оси используется ось глубины СКН. При центральном проецировании проекторы сходятся в одной точке – центре проецирования, обычно это точка наблюдения. Параллельное проецирование не изменяет размеров объекта и не искажает его формы. 11 Оно обычно применяется для получения чертежей объекта. Центральное проецирование искажает вид объекта по закону линейной перспективы и поэтому иначе называется перспективным проецированием. Оно применяется при необходимости реалистического отображения объекта. Если объект состоит только из рѐбер (прозрачный, «проволочный» объект), то проецирование даѐт конечный результат процесса отображения, однако для непрозрачных объектов требуется ещѐ выполнить удаление невидимых участков изображения. Невидимые наблюдателю участки объекта возникают при загораживании их впередистоящими участками того же или другого объекта. В процессе отображения такие участки должны быть обнаружены и «не поданы» на экран. Для повышения реалистичности изображения на него накладывают характерный узор, рисунок – текстурируют. В процессе динамики, особенно поворотов объекта, текстура его участков должна перемещаться (вращаться) адекватно, что иногда является довольно сложной задачей. Если текстура регулярная или является однотонной закраской, то ее называют заливкой. Если объект описан характерными точками и отображается на растре, то для получения изображения нужно рассчитать и получить все, в том числе и промежуточные точки поверхности объекта. Эта операция называется растрированием. В растровых системах в силу дискретности поля отображения на границах наклонных участков изображения возникает ступенчатость (алиайсинг), особенно заметная при малых углах наклона этих границ. Ступенчатость возникает и при отображении удаления текстурированного объекта. В этом случае несколько элементов текстуры (текселей) попадают 12 на один элемент растра (пиксель), который принимает цветояркость последнего элемента текстуры. Причина та же – дискретность поля отображения. Для борьбы со ступенчатостью применяют усреднение цветояркости в некоторой окрестности каждого элемента растра. Это – фильтрация (сглаживание, выравнивание) изображения. Для повышения реалистичности отображения пространственных объектов в системах компьютерной графики имитируют тени, возникающие на поверхности объектов от точечных источников света (солнца, осветителей). Кроме того, возможна имитация отбрасывания теней самими объектами на другие объекты. Задача наложения теней сходна с задачей определения видимости участков объекта, но сложнее и объѐмнее последней. В реальных системах компьютерной графики перечисленные операции могут выполняться в том или ином сочетании в зависимости от назначения и особенностей систем. 1.2 Структура геометрического конвейера Перечисленные в 1.1 графические операции выполняются графической системой в некоторой последовательности, образуя конвейер рендеринга. Часть графических операций возлагается на центральный процессор компьютера (host – хост-процессор графической системы), другая часть – на графический процессор (graphics processing unit – GPU). Геометрические операции также выполняются последовательно и образуют геометрический конвейер. В него входят геометрические преобразования объектов сцены, отсечение объектов, представление объектов в виде полигональных сеток, перспективная трансформация пространства, определение нормалей к примитивам, отбраковка 13 нелицевых примитивов, отсечение лицевых примитивов. Дальнейшие действия выполняются над проекциями примитивов-полигонов на картинную плоскость и образуют этап растрирования. Операции геометрического конвейера покажем на примере отображения сцены, наблюдаемой на экранах авиационного тренажера. С помощью тренажера будущий летчик отрабатывает различные фазы полета. Он пользуется различными органами управления, сигналы от которых поступают на вычислитель тренажера. Вычислитель моделирует процесс полета и выдает сигналы управления различными системами тренажера, в том числе системой визуализации внешней обстановки. Ее работа основана на принципах компьютерной графики. Вся совокупность объектов, которые могут появиться на экранах системы визуализации, образует сцену. В силу ограниченности области вывода изображения (экрана) не все объекты сцены попадают в поле зрения наблюдателя. Невидимые наблюдателю объекты и их части выявляют и исключают из дальнейшего рассмотрения с помощью операции отсечения. В системах реалистического отображения сцена представляется в перспективе, поэтому видимыми считаются объекты и примитивы сцены, попадающие внутрь пространственного окна в виде усеченной пирамиды. Боковые грани пирамиды видимости проходят через точку наблюдения (это вершина пирамиды) и стороны экрана. Меньшее основание лежит в плоскости экрана, а большее основание параллельно плоскости экрана и отстоит от него на расстояние, зависящее от геометрических размеров объектов. Задачей отсечения является, во- первых, выявить и отбросить объекты, целиком не попавшие в пирамиду видимости, а во-вторых, – установить видимые части тех примитивов, которые входят в частично видимые наблюдателем объекты. 14 Состояние сцены, наблюдаемой пилотом, быстро меняется, поэтому в каждый момент времени в пирамиду видимости могут попадать разные объекты. Значит, прежде чем выполнять отсечение, нужно определить текущее состояние объектов сцены. При этом нужно различать динамику сцены в целом и динамику ее отдельных объектов. Например, когда пилот меняет крен самолета, все закабинные объекты меняют на экране свой наклон одновременно и на один и тот же угол. В то же время в сцене обычно имеются объекты с самостоятельной динамикой, например, едущий по дороге автобус. Чтобы правильно определить положение автобуса в СКН, нужно сначала учесть его самостоятельную динамику, а затем – динамику в составе всей сцены. Таким образом, сначала с помощью геометрических преобразований сдвига и поворота находится текущее положение всех объектов сцены, а затем выполняется отсечение потенциально невидимых объектов. Полигональные объекты могут иметь весьма сложную структуру, и проверка входимости в пирамиду видимости каждого их полигона требует много времени. Для ускорения отсечения объектов применяется метод оболочек. Каждый объект отображения в своей системе координат (СКО) вписывается в оболочку. Это геометрическая фигура простой формы, обычно многогранник, которая задается ограниченным набором характерных точек (вершин). Для очередной фазы динамики сцены оболочки подвергаются геометрическим преобразованиям в соответствии с эволюциями их объектов. Проверка видимости объектов заменяется проверкой видимости их оболочек. Для облегчения этой операции оболочки трансформируются по закону центральной проекции. После этой трансформации центральное проецирование заменяется параллельным, благодаря чему проверка видимости объектов сводится к плоской задаче – 15 проверке попадания проекций оболочек в окно экрана. Для такой проверки работают с ребрами оболочек: если все ребра оболочки входят или не входят в окно экрана, то и соответствующий объект виден или не виден наблюдателю полностью. Частичная входимость оболочки в окно говорит о том, что к задаче отсечения объекта нужно вернуться еще раз – на уровне отдельных примитивов. Результатом отсечения объектов является список объектов, полностью или частично попадающих в поле зрения наблюдателя. Далее объекты представляются как наборы геометрических примитивов, и дальнейшие графические операции выполняются над примитивами. Времяемкие графические операции в компьютере выполняются графическим процессором. Он работает с полигональным представлением объектов. В связи с этим неполигональные объекты, например, состоящие из сплайновых поверхностей, приводятся к полигональной форме. Эта операция называется тесселяцией (tessellation). В процессе тесселяции осуществляется обход поверхности с определенным шагом. На каждом шаге вычисляется одна промежуточная точка, которая принимается за вершину будущей полигональной сетки. Закон объединения вершин в полигоны определяется алгоритмом тесселяции. Вершины полигональной модели объекта проходят перспективное преобразование, в результате чего форма объекта искажается по закону перспективы. Это дает возможность значительно упростить целый ряд последующих операций. Дело в том, что особое значение для геометрических преобразований имеет точка, в которой размещается наблюдатель. Во-первых, при формировании перспективной проекции примитива на картинную плоскость точка наблюдения является центром 16 проецирования, то есть в ней сходятся проекторы (векторы), проведенные к точкам примитива. Во-вторых, алгоритмы определения видимости примитивов работают с лучами (векторами) зрения наблюдателя, которые тоже исходят из точки наблюдения. Наконец, в-третьих, наложение теней на поверхность объекта выполняется просто, если источник освещения совпадает с точкой наблюдения, в этом случае из нее исходят векторы лучей света. Перспективное преобразование превращает пирамиду видимости в параллелепипед и делает все упомянутые векторы параллельными оси глубины СКН. Другими словами, точка наблюдения в результате перспективного преобразования пространства отодвигается в бесконечность. На рисунке 1 показано, как в результате перспективного искажения объект правильно отображается на экране с помощью параллельного проецирования. На рисунке a и b – проекции передней (a) и задней (b) граней объекта на картинную плоскость. |