Компьютерная графика
Компью́терная гра́фика (также маши́нная графика) — область деятельности, в которой компьютеры наряду со специальным программным обеспечением используются в качестве инструмента как для создания (синтеза) и редактирования изображений, так и для оцифровки визуальной информации, полученной из реального мира, с целью дальнейшей её обработки и хранения.
История
Первые вычислительные машины 40-х годов XX века («ABC», 1942 г., «ЭНИАК», 1946 г., «EDSAC», 1949 г., «МЭСМ», 1950 г.) разрабатывались и использовались строго для расчётов и не имели отдельных средств для работы с графикой. Однако уже тогда некоторые энтузиасты пытались использовать ЭВМ первого поколения на электронных лампах для получения и обработки изображений. Программируя память ЭВМ и устройств вывода информации, построенных на основе матрицы электрических ламп, можно было получать простые узоры. Лампы накаливания включались и отключались в определённом порядке, образуя изображения различных фигур.
В конце 1940-х и начале 1950-х годов во многих компьютерах стали применяться электронно-лучевые трубки (ЭЛТ) в виде осциллографов, или трубок Вильямса, которые использовались как оперативная память. Теоретически, записывая 0 или 1 в определённом порядке в такую память, на экране можно было отобразить определённое изображение, но на практике это не использовалось. В 1952 году британский инженер Александр Дуглас (Alexander Shafto «Sandy» Douglas) написал шуточную программу «OXO» (крестики-нолики) для программируемого компьютера EDSAC (1949 г.), ставшую в истории первой компьютерной игрой. Изображение решётки и ноликов с крестиками строилось путём программирования трубки Вильямса или прорисовывалось на соседнем ЭЛТ.
В 1950-х годах вычислительные возможности компьютеров и графические возможности периферийных устройств не позволяли получить высокую детализацию, но давали возможность осуществить посимвольный вывод изображений на экраны мониторов и типовых принтеров. Изображения строились из алфавитно-цифровых символов (символьная графика, позже пришло название ASCII-графика и ASCII-Art). Принцип прост: разница в плотности алфавитно-цифровых знаков и неспособность человеческого зрения различать детали с расстояния позволили создавать на компьютере рисунки и псевдографические объекты. Подобные изображения на бумаге создавали машинистки на печатных машинках в конце XIX века.
В 1950 году энтузиаст Бенджамин Лапоски (Ben Laposky), математик, художник и чертёжник, начал экспериментировать с экраном осциллографа, строя сложные динамичные фигуры — осцилионы. Танец света создавался сложнейшими настройками на этом электронно-лучевом приборе. Для запечатления изображений применялись высокоскоростная фотография и особые объективы, позже были добавлены пигментированные фильтры, наполнявшие снимки цветом.
В 1951 году в военном компьютере Whirlwind-I (по-русски «Вихрь», «Ураган»), встроенном позже в систему SAGE противовоздушной обороны США, впервые был применён монитор как средство отображения визуальной и графической информации.
В 1955 году в лаборатории Массачусетского технологического института (MIT) было изобретено световое перо (Light pen). Это светочувствительное устройство ввода компьютера. В основе его — стилус, который используется для выбора текста, рисования изображений и взаимодействия с элементами пользовательского интерфейса на экране компьютера или монитора. Перо хорошо работает только с ЭЛТ(CRT)-мониторами, поскольку они сканируют экран попиксельно, что даёт компьютеру способ отслеживать ожидаемое время сканирования электронным лучом и определять положение пера на основе последней метки времени сканирования. На кончике пера находится фотоэлемент, испускающий электронный импульсы и одновременно реагирующий на пиковое свечение, соответствующее моменту прохода электронного луча. Достаточно синхронизировать и сопоставить импульс с положением электронной пушки, чтобы определить, куда именно указывает перо.
Световые перья широко использовались в вычислительных терминалах 1960-х годов. С появлением ЖК (LCD)-мониторов в 90-х годах они практически вышли из употребления, так как с экранами этих устройств работа светового пера стала невозможной.
В 1957 году инженер Рассел Кирш (Russell A. Kirsch) из Национального бюро стандартов США изобрёл для компьютера SEAC первый сканер и получил на нём первое цифровое изображение — скан-фото своего сына Уолдена (анг. Walden).
В 60-е годы XX века начался реальный расцвет компьютерной графики. С приходом новых высокопроизводительных по тем меркам компьютеров на транзисторах с мониторами (2-е поколение ЭВМ) и позже на микросхемах (3-е поколение ЭВМ) машинная графика стала не только сферой энтузиастов, но серьёзным научно-практическим направлением развития компьютерных технологий. Появились первые суперкомпьютеры (СDС 6600 и Cray-1), позволившие работать не только с быстрыми вычислениями, но и с компьютерной графикой на новом уровне.
В 1960 году инженер-дизайнер Уильям Феттер (William Fetter) из авиастроительной корпорации Боинг (англ. Boeing) впервые ввёл термин «компьютерная графика». Рисуя дизайн кабины пилотов самолёта на рабочем компьютере, он решил таким образом описать в технической документации род своей деятельности. В 1964 г. Ульям Феттер создал на компьютере также проволочную графическую модель человека под названием «человек Боинга», он же «первый человек», использованную позже в телерекламе 70-х годов.
В 1962 году программист Стив Рассел (Steve Russell) из МТИ на компьютере DEC PDP-1 разработал отдельную программу с графикой — компьютерную игру «Spacewar!». Создание её заняло около 200 человеко-часов. Игра использовала джойстик и обладала интересной физикой с симпатичной графикой. Однако первой компьютерной игрой, но без графики, можно считать программу Александра Дугласа «OXO» («Крестики-нолики», 1952)
В 1963 году на основе компьютера «TX-2» американский инженер-программист из МТИ, пионер компьютерной графики Айвен Сазерленд (Ivan Edward Sutherland) создал программно-аппаратный комплекс Sketchpad, позволявший рисовать точки, линии и окружности на трубке световым пером. Поддерживались базовые действия с примитивами: перемещение, копирование и др. По сути, это был первый векторный редактор, ставший прообразом современных САПР (систем автоматизированного проектирования), таких как AutoCAD или Компас-3D. Также эту программу можно считать первым графическим интерфейсом, вышедшим за 10 лет до Xerox Alto (1973 г.), раньше появления самого термина. В 1968 г. Айвеном Сазерлендом был создан прообраз первого компьютерного шлема виртуальной реальности, названный «Дамокловым мечом» по аналогии с древнегреческой легендой.
В середине 1960-х гг. появились разработки в промышленных приложениях компьютерной графики. Так, под руководством Т. Мофетта и Н. Тейлора фирма Itek разработала цифровую электронную чертёжную машину (графопостроитель).
В 1963 году программист из Bell Labs Эдвард Зейджек (Edward E. Zajac) разработал первую компьютерную анимацию — движение спутника вокруг Земли. Анимация демонстрировала теоретический спутник, использовавший гироскопы для поддержки своей ориентации относительно Земли. Вся компьютерная обработка была сделана на компьютерах серий IBM 7090 или 7094 с использованием программы ORBIT.
В последующие годы выходят и другие, более сложные и значимые анимации: «Tesseract» («Тессеракт», он же «Гиперкуб», 1965 г.) Майкла Нолла из «Bell Labs», «Hummengbird» («Колибри», 1967 .) Чарльза Цури и Джеймса Шаферса, «Кошечка» (1968 г.) Николая Константинова, «Metadata» («Метаданные», 1971 г.) Питера Фолдерса и т..д.
В 1964 году выпущен IBM 2250, первый коммерческий графический терминал для мейнфрейма IBM/360.
В 1964 году компания General Motors совместно с IBM представляет систему автоматизированного проектирования DAC-1.
В 1967 году профессор Дуглас Энгельбарт (Douglas Carl Engelbart) конструирует первую компьютерную мышь (указатель XY-координат) и показывает её возможности на выставке в Сан-Франциско в 1968 г.
В 1967 году сотрудник IBM Артур Аппель описывает алгоритм удаления невидимых рёбер (в том числе частично скрытых), позднее названный лучевым кастингом, отправной точкой современной 3D-графики и фотореализма.
В 1968 году[1] в СССР группой под руководством Н. Н. Константинова создана компьютерная модель имитации движения кошки. Машина БЭСМ-4, выполняя написанную программу решения дифференциальных уравнений, рисовала мультфильм «Кошечка»[2] — прорыв для своего времени. Аналогичные алгоритмы динамики движения были переоткрыты на западе только в 80-х годах. Для визуализации использовался алфавитно-цифровой принтер.
В том же году компьютерная графика делает существенный прогресс с появлением возможности запоминать изображения и выводить их на компьютерный дисплей - электронно-лучевую трубку. Появляются первые растровые мониторы.
В 70-х годах появляются первые цветные мониторы и цветная графика — новый рывок в развитии компьютерной графики. Суперкомпьютеры с цветными дисплеями стали использоваться для создания спецэффектов в кино (фантастическая эпопея 1977 г. «Звёздные войны» режиссёра Джорджа Лукаса, фантастический ужастик «Чужой» (анг. «Alien») киностудии XX век Fox и режиссёра Ридли Скотта, позже недооценённый научно-фантастический фильм 1982 года «Трон» (англ. Tron) студии Walt Disney и режиссёра Стивена Лисбергера). В этот период компьютеры стали ещё более быстродействующими, их научили рисовать 3D-изображения, возникла трёхмерная графика и новое направление визуализации — фрактальная графика. Появились персональные компьютеры с графическими интерфейсами, использующие компьютерную мышь (Xerox Alto, 1973 г.).
В 1971 году математик Анри Гуро, в 1972 году Джим Блинн и в 1973 году Буй Туонг Фонг разрабатывают модели затенения, позволяющие графике выйти за рамки плоскости и точно отобразить глубину сцены. Джим Блинн стал новатором в области внедрения карт рельефа, техники моделирования неровных поверхностей, а алгорим Фонга впоследствии стал основным в современных компьютерных играх.
В 1972 году пионер компьютерной графики Эдвин Катмулл (Edwin Catmull) создаёт первое 3D-изображение — проволочную и текстурированную модель собственной левой руки.
В 1973 году появляется первый компьютер с полностью графическим интерфейсом — Xerox Alto.
В 1975 году французский математик Бенуа Мандельброт (Benoît B. Mandelbrot), программируя компьютер модели IBM, строит на нём изображение результатов вычисления комплексной математической формулы (множество Мандельброта), и в результате анализа полученных повторявших закономерностей даёт красивым изображениям название «фрактал» (с лат. дробный, разбитый). Возникает фрактальная геометрия и новое перспективное направление в компьютерной графике — фрактальная графика.
В конце 1970-х годов, с появлением персональных компьютеров 4-го поколения — на микропроцессорах, графика с промышленных систем переходит на рабочие места и в дома простых пользователей. Зарождается индустрия видеоигр и компьютерных игр. Первым массовым персональным компьютером с цветной графикой стал ПК Apple II (1977 г.)
В 1980-х годах, с развитием персональных компьютеров графика становится более детализированной и цветопередающей (повышается разрешение изображений и расширяется цветовая палитра). Выходит множество моделей домашних компьютеров, используемых прежде всего для компьютерных игр, поэтому большинство из них имеют графический режим. Появляются компьютеры IBM PC (1981 год), с видеокартами MDA, CGA, EGA, VGA, SVGA[3]. Разработаны первые стандарты файловых графических форматов, например GIF (1987). Выпускаются системы компьютерной графики и графические рабочие станции, возникает графическое моделирование.
Текущее состояние
Основные области применения
Научная графика — первые компьютеры использовались лишь для решения научных и производственных задач. Чтобы лучше понять полученные результаты, производилась их графическая обработка, строились графики, диаграммы, чертежи рассчитанных конструкций. Первые графики на машине получались в режиме символьной печати. Затем появились специальные устройства — графопостроители (плоттеры) для вычерчивания чертежей и графиков чернильным пером на бумаге. Современная научная компьютерная графика даёт возможность проводить вычислительные эксперименты с наглядным представлением их результатов.
Деловая графика — область компьютерной графики, предназначенная для наглядного представления различных показателей работы учреждений. Плановые показатели, отчётная документация, статистические сводки — вот объекты, для которых с помощью деловой графики создаются иллюстративные материалы. Программные средства деловой графики включаются в состав электронных таблиц.
Конструкторская графика используется в работе инженеров-конструкторов, архитекторов, изобретателей. Это обязательный элемент САПР (систем автоматизации проектирования). Средствами конструкторской графики можно получать как плоские изображения (проекции, сечения), так и пространственные трёхмерные изображения.
Иллюстративная графика — это произвольное рисование и черчение на экране монитора. Пакеты иллюстративной графики относятся к прикладному программному обеспечению общего назначения. Простейшие программные средства иллюстративной графики называются графическими редакторами.
Художественная и рекламная графика стала популярной во многом благодаря телевидению. С помощью компьютера создаются рекламные ролики, мультфильмы, компьютерные игры, видеоуроки, видеопрезентации. Графические пакеты для этих целей требуют больших ресурсов компьютера по быстродействию и памяти. Отличительной особенностью этих графических пакетов является возможность создания реалистических изображений и движущихся картинок. Получение рисунков трёхмерных объектов, их повороты, приближения, удаления, деформации связано с большим объёмом вычислений. Передача освещённости объекта в зависимости от положения источника света, от расположения теней, от фактуры поверхности, требует расчётов, учитывающих законы оптики.
Пиксель арт — пиксельная графика, важная форма цифрового искусства, создаётся с помощью программного обеспечения для растровой графики, где изображения редактируются на уровне пикселей. В увеличенной части изображения отдельные пиксели отображаются в виде квадратов, и их легко увидеть. В цифровых изображениях пиксель (или элемент изображения) — это отдельная точка в растровом изображении. Пиксели размещаются на регулярной двумерной сетке и часто представлены точками или квадратами. Графика в большинстве старых (или относительно ограниченных) компьютерных и видеоигр, графические калькуляторные игры и многие игры для мобильных телефонов — в основном пиксельная графика.
Компьютерная анимация — это получение движущихся изображений на экране дисплея. Художник создаёт на экране рисунки начального и конечного положения движущихся объектов; все промежуточные состояния рассчитывает и изображает компьютер, выполняя расчёты, опирающиеся на математическое описание данного вида движения. Такая анимация называется мультипликация по ключевым кадрам. Также существуют другие виды компьютерной анимации: процедурная анимация, шейповая анимация, программируемая анимация и анимация, где художник сам отрисовывает все кадры вручную. Полученные рисунки, последовательно выводимые на экран с определённой частотой, создают иллюзию движения.
Мультимедиа — это объединение высококачественного изображения на экране компьютера со звуковым сопровождением. Наибольшее распространение системы мультимедиа получили в области обучения, рекламы, развлечений.
Научная работа
Компьютерная графика является также одной из областей научной деятельности. В области компьютерной графики защищаются диссертации, а также проводятся различные конференции:
- конференция Siggraph, проводится в США
- конференции Eurographics, проводятся ассоциацией Eurographics ежегодно в странах Европы
- конференция Графикон, проводится в России
- CG-событие, проводится в России
- CG Wave 2008, CG Wave, проводится в России
Техническая сторона
По способам задания изображений графику можно разделить на категории:
Двухмерная графика
Двухмерная (2D — от англ. two dimensions — «два измерения») компьютерная графика классифицируется по типу представления графической информации, и следующими из него алгоритмами обработки изображений. Обычно компьютерную графику разделяют на векторную и растровую, хотя обособляют ещё и фрактальный тип представления изображений.
Векторная графика
Векторная графика представляет изображение как набор геометрических примитивов. Обычно в качестве них выбираются точки, прямые, окружности, прямоугольники, а также как общий случай, кривые некоторого порядка. Объектам присваиваются некоторые атрибуты, например, толщина линий, цвет заполнения. Рисунок хранится как набор координат, векторов и других чисел, характеризующих набор примитивов. При воспроизведении перекрывающихся объектов имеет значение их порядок.
Изображение в векторном формате даёт простор для редактирования. Изображение может без потерь масштабироваться, поворачиваться, деформироваться, также имитация трёхмерности в векторной графике проще, чем в растровой. Дело в том, что каждое такое преобразование фактически выполняется так: старое изображение (или фрагмент) стирается, и вместо него строится новое. Математическое описание векторного рисунка остаётся прежним, изменяются только значения некоторых переменных, например, коэффициентов.
При преобразовании растровой картинки исходными данными является только описание набора пикселей, поэтому возникает проблема замены меньшего числа пикселей на большее (при увеличении), или большего на меньшее (при уменьшении). Простейшим способом является замена одного пикселя несколькими того же цвета (метод копирования ближайшего пикселя: Nearest Neighbour). Более совершенные методы используют алгоритмы интерполяции, при которых новые пиксели получают некоторый цвет, код которого вычисляется на основе кодов цветов соседних пикселей. Подобным образом выполняется масштабирование в программе Adobe Photoshop (билинейная и бикубическая интерполяция).
Вместе с тем, не всякое изображение можно представить как набор из примитивов. Такой способ представления хорош для схем, используется для масштабируемых шрифтов, деловой графики, очень широко используется для создания мультфильмов и просто роликов разного содержания.
Растровая графика
Растровая графика всегда оперирует двумерным массивом (матрицей) пикселей. Каждому пикселю сопоставляется значение яркости, цвета, прозрачности — или комбинация этих значений. Растровый образ имеет некоторое число строк и столбцов.
Без особых потерь растровые изображения можно только лишь уменьшать, хотя некоторые детали изображения тогда исчезнут навсегда, что иначе в векторном представлении. Увеличение же растровых изображений оборачивается видом на увеличенные квадраты того или иного цвета, которые раньше были пикселями.
В растровом виде представимо любое изображение, однако этот способ хранения имеет свои недостатки: больший объём памяти, необходимый для работы с изображениями, потери при редактировании.
Растровую графику используют дизайнеры, аниматоры, художники работающие с отдельными графическими работами и заказами для индивидуальной продажи. Растровые изображения не идут в тираж и не используются в массовой продаже, так как при увеличении размера, изображение теряет качество, однако именно растровая графика позволяет делать почти живописные работы, более проработанные дизайны и более быстрые разработки, которые уже потом при необходимости редактируются и воспроизводятся в нужном формате с применением векторных программ.
Фрактальная графика
Фрактал — объект, отдельные элементы которого наследуют свойства родительских структур. Поскольку более детальное описание элементов меньшего масштаба происходит по простому алгоритму, описать такой объект можно всего лишь несколькими математическими уравнениями.
Фракталы позволяют описывать целые классы изображений, для детального описания которых требуется относительно мало памяти. С другой стороны, фракталы слабо применимы к изображениям вне этих классов.
Трёхмерная графика
Трёхмерная графика (3D — от англ. three dimensions — «три измерения») оперирует с объектами в трёхмерном пространстве. Обычно результаты представляют собой плоскую картинку, проекцию. Трёхмерная компьютерная графика широко используется в кино, компьютерных играх.
Трёхмерная графика бывает полигональной и воксельной. Воксельная графика аналогична растровой. Объект состоит из набора трёхмерных фигур, чаще всего кубов. А в полигональной компьютерной графике все объекты обычно представляются как набор поверхностей, минимальную поверхность называют полигоном. В качестве полигона обычно выбирают треугольники.
3D-графика по сравнению с 2D-графикой — это графика, которая использует трёхмерное представление геометрических данных. В целях производительности это хранится в компьютере. Это включает в себя изображения, которые могут быть для последующего отображения или для просмотра в реальном времени.
Всеми визуальными преобразованиями в векторной (полигональной) 3D-графике управляют матрицы (см. также: аффинное преобразование в линейной алгебре). В компьютерной графике используется три вида матриц:
- матрица поворота
- матрица сдвига
- матрица масштабирования
Любой полигон можно представить в виде набора из координат его вершин. Так, у треугольника будет 3 вершины. Координаты каждой вершины представляют собой вектор (x, y, z). Умножив вектор на соответствующую матрицу, мы получим новый вектор. Сделав такое преобразование со всеми вершинами полигона, получим новый полигон, а преобразовав все полигоны, получим новый объект, повёрнутый/сдвинутый/масштабированный относительно исходного.
Ежегодно проходят конкурсы трёхмерной графики, такие как Magick next-gen или Dominance War.
CGI графика
CGI (англ. computer-generated imagery, букв. «изображения, созданные компьютером») — изображения, получаемые компьютером на основе расчёта и использующиеся в изобразительном искусстве, печати, кинематографических спецэффектах, на телевидении и в симуляторах. Созданием движущихся изображений занимается компьютерная анимация, представляющая собой более узкую область графики CGI.
Представление цветов в компьютере
Для передачи и хранения цвета в компьютерной графике используются различные формы его представления. В общем случае цвет представляет собой набор чисел, координат в некоторой цветовой системе.
Стандартные способы хранения и обработки цвета в компьютере обусловлены свойствами человеческого зрения. Наиболее распространены системы RGB для дисплеев и CMYK для работы в типографском деле.
Иногда используется система с большим, чем три, числом компонент. Кодируется спектр отражения или испускания источника, что позволяет более точно описать физические свойства цвета. Такие схемы используются в фотореалистичном трёхмерном рендеринге.
Реальная сторона графики
Любое изображение на мониторе, в силу его плоскости, становится растровым, так как монитор это матрица, он состоит из столбцов и строк. Трёхмерная графика существует лишь в нашем воображении, так как то, что мы видим на мониторе — это проекция трёхмерной фигуры, а уже создаём пространство мы сами. Таким образом, визуализация графики бывает только растровая и векторная, а способ визуализации это только растр(набор пикселей), а от количества этих пикселей зависит способ задания изображения.
В эпоху самых первых графических дисплеев (мониторов) существовали ЭЛТ-дисплеи без растра, с управлением электронным лучом по типу осциллографа. Фигуры, выводимые такими дисплеями, были в чистом виде векторными. По мере развития программного обеспечения и усложнения решаемых задач графические дисплеи такого типа были признаны бесперспективными, так как не позволяли формировать достаточно сложные изображения. Похожий принцип формирования изображения используется в векторных графопостроителях. Разница в том, что на векторном дисплее сложность картинки ограничена временем послесвечения люминофора, а на векторном плоттере такого ограничения нет.
См. также
Примечания
- Николай Константинов: «Знает ли кошка, что она не настоящая?»
- «Кошечка» / Математические этюды
- Юрий Валерианов. Графическая эволюция // Computer Bild : журнал. — 2011. — 23 мая (№ 11). — С. 38—41. — ISSN 2308-815X.
Литература
- Никулин Е.А. Компьютерная графика. Модели и алгоритмы (недоступная ссылка). СПб: издательство "Лань". - 708 с. (2017). Дата обращения: 24 ноября 2018. Архивировано 24 ноября 2018 года.
- Никулин Е. А. Компьютерная геометрия и алгоритмы машинной графики. — СПб.: БХВ-Петербург, 2003. — 560 с. — 3000 экз. — ISBN 5-94157-264-6.
- Компьютер рисует фантастические миры (ч.2) // Компьютер обретает разум = Artificial Intelligence Computer Images / под ред. В.Л. Стефанюка. — М.: Мир, 1990. — 240 с. — 100 000 экз. — ISBN 5-03-001277-X (рус.); 7054 0915 5 (англ.).
- Дональд Херн, М. Паулин Бейкер. Компьютерная графика и стандарт OpenGL = Computer Graphics with OpenGL. — 3-е изд. — М.: «Вильямс», 2005. — С. 1168. — ISBN 5-8459-0772-1.
- Эдвард Энджел. Интерактивная компьютерная графика. Вводный курс на базе OpenGL = Interactive Computer Graphics. A Top-Down Approach with Open GL. — 2-е изд. — М.: «Вильямс», 2001. — С. 592. — ISBN 5-8459-0209-6.
- Сергеев Александр Петрович, Кущенко Сергей Владимирович. Основы компьютерной графики. Adobe Photoshop и CorelDRAW - два в одном. Самоучитель. — М.: «Диалектика», 2006. — С. 544. — ISBN 5-8459-1094-3.
- Кнабе Г. А. Энциклопедия дизайнера печатной продукции. Профессиональная работа. — К.: «Диалектика», 2005. — С. 736. — 3000 экз. — ISBN 5-8459-0906-6.
Ссылки
- N-мерная компьютерная математическая параметрическая графика в видео
- Рисование онлайн (рисовалки, профессиональные растровые и векторные редакторы)
- Общее введение в компьютерную графику
- Селиверстов М. «3D кино — новое или хорошо забытое старое?»
- Одна из первых российских студий компьютерной графики — Бегемот, в индустрии с 1993 года.
- 3D Компьютерная графика в каталоге ссылок Open Directory Project (dmoz)