stringtranslate.com

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

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 ) :

Е ( п ) / ТО ( п ).

Перевод

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

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

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

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

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

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

Вращение

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

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

Матрицы вращения обеспечивают простое алгебраическое описание таких вращений и широко используются для вычислений в геометрии , физике и компьютерной графике . В двумерном пространстве вращение можно просто описать углом поворота θ , но его также можно представить четырьмя элементами матрицы вращения с двумя строками и двумя столбцами. В трехмерном пространстве каждое вращение можно интерпретировать как вращение на заданный угол вокруг одной фиксированной оси вращения (см. теорему Эйлера о вращении ), и, следовательно, его можно просто описать углом и вектором с тремя элементами. Однако его также можно представить в виде 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 , py , p z , 1) необходимо умножить на эту матрицу проективного преобразования :

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

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

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

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

Техники

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

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

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

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

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

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

Слои

2D-анимированный персонаж , составленный из 3D-фона с использованием слоев.

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

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

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

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

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

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

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

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

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

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

Многие графические пользовательские интерфейсы (GUI), включая macOS , Microsoft Windows или X Window System , в основном основаны на концепциях 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. ^ Рекомендация W3C (2003 г.), Масштабируемая векторная графика - исходная система координат.{{citation}}: CS1 maint: numeric names: authors list (link)
  3. ^ Дюран; Катлер. «Преобразования» (PowerPoint) . Массачусетский Институт Технологий . Проверено 12 сентября 2008 г.
  4. ^ Аб Пайл, Джон младший (май 2013 г.). Программирование 2D-графики для игр. Нью-Йорк, штат Нью-Йорк: CRC Press. ISBN 978-1466501898.
  5. ^ Фонд, Блендер. «blender.org — главная страница проекта Blender — бесплатное и открытое программное обеспечение для создания 3D-изображений». сайт blender.org . Проверено 24 апреля 2019 г.