stringtranslate.com

2D компьютерная графика

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

Растровые графические спрайты (слева) и маски

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

Во многих областях, таких как настольная издательская система , инженерия и бизнес , описание документа, основанное на методах 2D-компьютерной графики, может быть намного меньше соответствующего цифрового изображения — часто в 1/1000 раз или больше. Такое представление также более гибко, поскольку его можно визуализировать с разным разрешением для соответствия разным устройствам вывода . По этим причинам документы и иллюстрации часто хранятся или передаются в виде файлов 2D-графики .

2D компьютерная графика появилась в 1950-х годах на основе векторных графических устройств . В последующие десятилетия их в значительной степени вытеснили растровые устройства . Язык PostScript и протокол X Window System стали знаковыми разработками в этой области.

Модели 2D-графики могут объединять геометрические модели (также называемые векторной графикой ), цифровые изображения (также называемые растровой графикой ), текст для набора (определяемый содержанием, стилем и размером шрифта , цветом, положением и ориентацией), математические функции и уравнения и многое другое. Эти компоненты можно изменять и манипулировать двумерными геометрическими преобразованиями, такими как перемещение , вращение и масштабирование . В объектно-ориентированной графике изображение косвенно описывается объектом, наделенным методом саморендеринга — процедурой , которая назначает цвета пикселям изображения с помощью произвольного алгоритма. Сложные модели могут быть построены путем объединения более простых объектов в парадигмах объектно -ориентированного программирования .

Фон (геометрия)

При перемещении каждая точка фигуры или пространства перемещается на одну и ту же величину в заданном направлении.

В евклидовой геометрии перенос (геометрия) перемещает каждую точку на постоянное расстояние в указанном направлении. Перенос можно описать как жесткое движение : другие жесткие движения включают вращения и отражения. Перенос также можно интерпретировать как добавление постоянного вектора к каждой точке или как смещение начала координат системы координат . Оператор переноса — это оператор, такой что

Если v — фиксированный вектор, то перенос T v будет работать как T v ( p ) = p + v .

Если T — это перенос, то изображение подмножества A при функции T — это перенос A на T. Перевод A на T v часто записывается как A + v .

В евклидовом пространстве любой перенос является изометрией . Множество всех переносов образует группу переносов T , которая изоморфна самому пространству, и нормальную подгруппу евклидовой группы E ( n ). Фактор - группа E ( n ) по T изоморфна ортогональной группе O ( n ):

E ( n ) / TO ( n ).

Перевод

Поскольку трансляция является аффинным преобразованием , но не линейным , однородные координаты обычно используются для представления оператора трансляции матрицей и , таким образом, для придания ему линейности. Таким образом, мы записываем 3-мерный вектор w = ( w x , w y , w z ) с использованием 4 однородных координат как w = ( w x , w y , w z , 1). [1]

Чтобы переместить объект с помощью вектора v , каждый однородный вектор p (записанный в однородных координатах) необходимо умножить на эту матрицу переноса :

Как показано ниже, умножение даст ожидаемый результат:

Обратную матрицу трансляции можно получить, изменив направление вектора на противоположное:

Аналогично, произведение матриц трансляции получается путем сложения векторов:

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

Вращение

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

поворачивает точки в плоскости xy - декартовой против часовой стрелки на угол θ вокруг начала декартовой системы координат . Чтобы выполнить поворот с использованием матрицы поворота R , положение каждой точки должно быть представлено вектором -столбцом v , содержащим координаты точки. Повернутый вектор получается с помощью умножения матриц R v . Поскольку умножение матриц не влияет на нулевой вектор (т. е. на координаты начала координат), матрицы поворота можно использовать только для описания поворотов вокруг начала системы координат.

Матрицы вращения обеспечивают простое алгебраическое описание таких вращений и широко используются для вычислений в геометрии , физике и компьютерной графике . В 2-мерном пространстве вращение можно просто описать углом θ вращения , но его также можно представить 4 записями матрицы вращения с 2 строками и 2 столбцами. В 3-мерном пространстве каждое вращение можно интерпретировать как вращение на заданный угол вокруг одной фиксированной оси вращения (см. теорему Эйлера о вращении ), и, следовательно, его можно просто описать углом и вектором с 3 записями. Однако его также можно представить 9 записями матрицы вращения с 3 строками и 3 столбцами. Понятие вращения обычно не используется в измерениях выше 3; существует понятие вращательного смещения , которое можно представить матрицей, но без связанной с ней одной оси или угла.

Матрицы вращения — это квадратные матрицы с действительными элементами. Более конкретно их можно охарактеризовать как ортогональные матрицы с определителем  1:

.

Множество всех таких матриц размера n образует группу , известную как специальная ортогональная группа SO( n ) .

В двух измерениях

Поворот вектора против часовой стрелки на угол θ . Вектор изначально выровнен по оси x.

В двух измерениях каждая матрица вращения имеет следующий вид:

.

Это вращает векторы столбцов посредством следующего умножения матриц :

.

Итак, координаты (x',y') точки (x,y) после поворота равны:

,
.

Направление вращения вектора — против часовой стрелки, если θ положительно (например, 90°), и по часовой стрелке, если θ отрицательно (например, -90°).

.

Нестандартная ориентация системы координат

Поворот на угол θ с нестандартными осями

Если используется стандартная правосторонняя декартова система координат с осью x справа и осью y вверх, вращение R( θ ) происходит против часовой стрелки. Если используется левосторонняя декартова система координат с осью x , направленной вправо, а осью y вниз, то R( θ ) происходит по часовой стрелке. Такие нестандартные ориентации редко используются в математике, но распространены в 2D компьютерной графике, которая часто имеет начало в верхнем левом углу и ось y вниз по экрану или странице. [2]

Ниже приведены другие альтернативные соглашения, которые могут изменить направление вращения, создаваемого матрицей вращения .

Обычные ротации

Особенно полезны матрицы для поворотов на 90° и 180°:

(поворот на 90° против часовой стрелки)
(поворот на 180° в любом направлении – пол-оборота)
(Поворот на 270° против часовой стрелки, то же самое, что поворот на 90° по часовой стрелке)

Масштабирование

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

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

Масштабирование может быть представлено матрицей масштабирования. Чтобы масштабировать объект вектором v = ( v x , v y , v z ), каждую точку p = ( p x , p y , p z ) необходимо умножить на эту матрицу масштабирования :

Как показано ниже, умножение даст ожидаемый результат:

Такое масштабирование изменяет диаметр объекта на коэффициент, промежуточный между масштабными коэффициентами, площадь — на коэффициент, промежуточный между наименьшим и наибольшим произведением двух масштабных коэффициентов, а объем — на произведение всех трех.

Масштабирование равномерно тогда и только тогда, когда масштабные коэффициенты равны ( v x = v y = v z ). Если все, кроме одного, масштабные коэффициенты равны 1, мы имеем направленное масштабирование.

В случае, когда v x = v y = v z = k , масштабирование также называется увеличением или дилатацией в k раз, увеличивая площадь в k 2 раз , а объем в k 3 раз .

Масштабирование в самом общем смысле — это любое аффинное преобразование с диагонализируемой матрицей . Оно включает случай, когда три направления масштабирования не перпендикулярны. Оно также включает случай, когда один или несколько масштабных коэффициентов равны нулю ( проекция ), и случай одного или нескольких отрицательных масштабных коэффициентов. Последнее соответствует комбинации собственно масштабирования и вида отражения: вдоль линий в определенном направлении мы берем отражение в точке пересечения с плоскостью, которая не обязательно должна быть перпендикулярной; поэтому оно более общее, чем обычное отражение в плоскости.

Использование однородных координат

В проективной геометрии , часто используемой в компьютерной графике , точки представляются с использованием однородных координат . Чтобы масштабировать объект с помощью вектора v = ( v x , v y , v z ), каждый однородный вектор координат p = ( p x , p y , p z , 1) необходимо умножить на эту матрицу проективного преобразования :

Как показано ниже, умножение даст ожидаемый результат:

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

Для каждого вектора p = ( p x , p y , p z , 1) мы будем иметь

который будет гомогенизирован до

Методы

Прямая покраска

Удобный способ создания сложного изображения — начать с пустой растровой карты «холст» (массив пикселей , также известный как битовая карта ), заполненной каким-либо однородным фоновым цветом , а затем «рисовать», «красить» или «вставлять» на нее простые цветные пятна в соответствующем порядке. В частности, холст может быть буфером кадра для компьютерного дисплея .

Некоторые программы устанавливают цвета пикселей напрямую, но большинство из них полагаются на некоторую библиотеку 2D-графики или графическую карту компьютера , которые обычно реализуют следующие операции:

Расширенные цветовые модели

Текст, фигуры и линии визуализируются с помощью цвета, указанного клиентом. Многие библиотеки и карты предоставляют цветовые градиенты , которые удобны для создания плавно меняющихся фонов, эффектов теней и т. д. (См. также затенение по Гуро ). Цвета пикселей также могут быть взяты из текстуры, например, цифрового изображения (таким образом эмулируя натираемые скринтоны и легендарную раскраску «Клетка» , которая раньше была доступна только в мультфильмах ).

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

Слои

Двухмерный анимированный персонаж, созданный на основе трехмерного фона с использованием слоев.

Модели, используемые в 2D-компьютерной графике, обычно не предусматривают трехмерные формы или трехмерные оптические явления, такие как освещение, тени , отражение , преломление и т. д. Однако они обычно могут моделировать несколько слоев (концептуально чернил, бумаги или пленки; непрозрачные, полупрозрачные или прозрачные — уложенные в определенном порядке. Порядок обычно определяется одним числом ( глубиной слоя или расстоянием от наблюдателя).

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

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

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

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

См. также Формат переносимого документа#Слои .

Аппаратное обеспечение

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

Классические 2D- графические чипы и графические процессоры конца 1970-х — 1980-х годов, использовавшиеся в 8 -битных и ранних 16-битных аркадных играх , игровых консолях и домашних компьютерах , включают в себя:

Программное обеспечение

Многие графические пользовательские интерфейсы (GUI), включая macOS , Microsoft Windows или X Window System , в первую очередь основаны на 2D-графических концепциях. Такое программное обеспечение обеспечивает визуальную среду для взаимодействия с компьютером и обычно включает в себя некоторую форму оконного менеджера , чтобы помочь пользователю концептуально различать различные приложения. Пользовательский интерфейс в отдельных программных приложениях обычно также является 2D по своей природе, отчасти из-за того, что большинство распространенных устройств ввода , таких как мышь , ограничены двумя измерениями движения.

2D-графика очень важна в периферийных устройствах управления, таких как принтеры, плоттеры, листорезальные машины и т. д. Она также использовалась в большинстве ранних видеоигр и до сих пор используется в карточных и настольных играх, таких как пасьянс , шахматы , маджонг и т. д.

Редакторы 2D-графики или программы для рисования — это программное обеспечение уровня приложения для создания изображений, диаграмм и иллюстраций путем прямого манипулирования (с помощью мыши, графического планшета или аналогичного устройства) примитивами 2D-компьютерной графики. Эти редакторы обычно предоставляют геометрические примитивы , а также цифровые изображения ; а некоторые даже поддерживают процедурные модели. Иллюстрация обычно представлена ​​внутренне в виде многослойной модели, часто с иерархической структурой, чтобы сделать редактирование более удобным. Эти редакторы обычно выводят графические файлы , в которых слои и примитивы отдельно сохраняются в их первоначальном виде. MacDraw , представленный в 1984 году с линейкой компьютеров Macintosh , был ранним примером этого класса; недавними примерами являются коммерческие продукты Adobe Illustrator и CorelDRAW , а также бесплатные редакторы, такие как xfig или Inkscape . Существует также много редакторов 2D-графики, специализированных для определенных типов чертежей, таких как электрические, электронные и СБИС-схемы, топографические карты, компьютерные шрифты и т. д.

Редакторы изображений специализируются на обработке цифровых изображений , в основном с помощью рисования/живописи от руки и операций обработки сигналов . Обычно они используют парадигму прямой живописи, где пользователь управляет виртуальными ручками, кистями и другими художественными инструментами для нанесения краски на виртуальный холст. Некоторые редакторы изображений поддерживают многослойную модель; однако для поддержки операций обработки сигналов, таких как размытие, каждый слой обычно представляется как цифровое изображение. Поэтому любые геометрические примитивы, предоставляемые редактором, немедленно преобразуются в пиксели и рисуются на холсте. Название редактор растровой графики иногда используется для противопоставления этого подхода подходу общих редакторов, которые также обрабатывают векторную графику . Одним из первых популярных редакторов изображений был MacPaint от Apple , компаньон MacDraw . Современными примерами являются бесплатный редактор GIMP и коммерческие продукты Photoshop и Paint Shop Pro . Этот класс также включает в себя множество специализированных редакторов — для медицины, дистанционного зондирования, цифровой фотографии и т. д.

Развивающая анимация

С возрождением [4] : 8  2D-анимации бесплатные и фирменные пакеты программного обеспечения стали широко доступны для любителей и профессиональных аниматоров. С таким программным обеспечением, как RETAS UbiArt Framework и Adobe After Effects , раскрашивание и компоновка могут быть выполнены за меньшее время. [ необходима цитата ]

Были разработаны различные подходы [4] : 38  для облегчения и ускорения процесса цифровой 2D-анимации. Например, создавая векторные иллюстрации в инструменте вроде Adobe Flash, художник может использовать программно-управляемую автоматическую раскраску и промежуточные эффекты .

Такие программы, как Blender или Adobe Substance, позволяют пользователю создавать 3D-анимацию, 2D-анимацию или комбинировать их в своем программном обеспечении, позволяя экспериментировать с различными формами анимации. [5]

Смотрите также

Ссылки

  1. ^ Ричард Пол, 1981, Роботы-манипуляторы: математика, программирование и управление: компьютерное управление роботами-манипуляторами, MIT Press, Кембридж, Массачусетс
  2. ^ "Масштабируемая векторная графика — исходная система координат", w3.org , 2003
  3. ^ Дюран; Катлер. «Трансформации» (PowerPoint) . Массачусетский технологический институт . Получено 12 сентября 2008 г.
  4. ^ ab Pile, John Jr. (май 2013 г.). Программирование 2D-графики для игр. Нью-Йорк, штат Нью-Йорк: CRC Press. ISBN 978-1466501898.
  5. ^ "blender.org - Дом проекта Blender - Бесплатное и открытое программное обеспечение для создания 3D". blender.org . Получено 24.04.2019 .