Компьютерная графика кратко. Современные технологии трехмерной графики

Урок "Компьютерная графика"

Компьютерная графика - раздел информатики, пред метом которого является создание и обработка на компьютере с гра­фических изображений (рисунков, чертежей, фотографий и пр.)

История компьютерной графики

О компьютерной графике заговорили после опытов Джей У. Форрестера (инженер компьютерной лаборатории Массачусетского технологического института) в 1951 году.

К предшественникам компьютерных рисунков можно отнести первые не­затейливые картинки из точек и букв, получаемые на телетайпах телеграфа, а позже - на печатающих устройствах, подключенных к ЭВМ.

Итак, в начале были точки и простые линии. Этот набор стремительно обогащался. 1970-е годы стали временем широкого использования машинной графики. Одно из важнейших отличий современных ПК состоит в воз­можности вывода на экран графического изображения.

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

Направления компьютерной графики

Направление

Назначение

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

Научная

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

Деловая

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

Используется в работе учреждений.

Электронные таблицы

Конструкторская

Создание плоских и трехмерных изображений.

Используется в работе инженеров-конструкторов.

Системы автоматизированного проектирования (САПР)

Иллюстративная

Создание произвольных рисунков и чертежей.

Графические редакторы

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

Графические редакторы (со сложным математическим аппаратом)

Компьютерная анимация

Создание движущихся изображений на экране монитора. Слово «анимация» означает «оживление».

Аналоговый и дискретный способы представления

ГРАФИЧЕСКИХ ИЗОБРАЖЕНИЙ

Человек способен воспринимать и хранить информацию в форме образов (зрительных, звуковых, осязательных, вкусовых, обонятельных ).

Зрительные образы могут быть сохранены в виде изображений (рисунков, фотографий, …)

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

При дискретном представлении физическая величина принимает конечное множество значений, причем ее величина изменяется скачкообразно .

Все органы чувств человека имеют дело с аналоговыми сигналами.

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

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

Растровая графика

Качество кодирования изображения зависит от :

Размера точки - чем меньше её размер, тем больше количество точек в изображении

- количества цветов (палитры) - чем большее количество возможных состояний точки, тем качественнее изображение

Достоинства растровой графики:

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

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

Недостатки растровой графики:

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

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

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

2. Проблемой растровых файлов является масштабирование:

- при существенном увеличении изображения появляется зернистость, ступенчатость

При большом уменьшении существенно снижается количество точек, поэтому исчезают наиболее мелкие детали, происходит потеря четкости

Для обработки растровых файлов используют редакторы: MS Paint, Adobe Photoshop

Векторная графика

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

Достоинства векторной графики

1. При кодировании векторного изображения хранится не само изображение объекта, а координаты точек, используя которые программа каждый раз воссоздает изображение заново.

Поэтому объем памяти векторных изображений очень мал по сравнению с растровой графикой .

RECTANGLE 1, 1, 200, 200, Red, Green

Несжатое растровое описание квадрата требует примерно в 1333 раза большей памяти, чем векторное.

2. Векторные изображения могут быть легко масштабированы без потери качества.

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

Недостатки векторной графики

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

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

2. Векторные изображения иногда не выводятся на печать или выглядят на бумаге не так, как хотелось бы.

Это происходит оттого, что векторные изображения описываются тысячами команд.

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

Информация о векторном изображении кодируется как обычная буквенно-цифровая и обрабатывается специальными программами: CorelDRAW, Adobe Illustrator.

Фрактальная графика

Изображение строится по формуле. В памяти компьютера хранится не изображение, а только формула, с помощью которой можно получить бесконечное количество различных изображений.

Фракталы - это геометрические объекты с удивительными свойствами: любая часть фрактала содержит его уменьшенное изображение.

То есть, сколько фрактал не увеличивай, из любой его части на вас будет смотреть его уменьшенная копия.

Построение трехмерного изображения

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

При формировании трехмерного изображения (статического или динамического) его построение рассматривается в пределах некоторого пространства координат, которое называется сценой . Сцена подразумевает работу в объемном, трехмерном мире - поэтому и направление получило название трехмерной (3-Dimensional, 3D) графики.

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

На следующем этапе “мировые ” координаты узлов сетки пересчитывают с помощью матричных преобразований в координаты видовые , т.е. зависящие от точки зрения на сцену. Положение точки просмотра , как правило, называют положением камеры .

Рабочее пространство системы подготовки
трехмерной графики Blender (пример с сайта
http://www.blender.org
)

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

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

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

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

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

Для расчета освещенности применяется два основных метода. Первый - это метод обратной трассировки луча . При этом методе рассчитывается траектория тех лучей, которые в итоге попадают в пиксели экрана - по обратному ходу. Расчет ведется отдельно по каждому из цветовых каналов, поскольку свет разного спектра ведет себя по-разному на разных поверхностях.

Второй метод - метод излучательности - предусматривает расчет интегральной светимости всех участков, попадающих в кадр, и обмен светом между ними.

На полученном изображении учитываются заданные характеристики камеры, т.е. средства просмотра.

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

Твердотельная модель и итоговый результат обсчета модели
(пример с сайта http://www.blender.org )

Анимация и виртуальная реальность

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

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

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

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

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

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

Появились и стандартизируются интерфейсы работы с “физической” составляющей формирования изображения - что позволяет повысить скорость и точность таких расчетов, а значит, и реалистичность создаваемой модели мира.

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

Примеры программных продуктов

Maya, 3DStudio, Blender

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

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

Большую часть времени занимают практические работы подготовки и обработки графических изображений с использованием растровых и векторных графических редакторов. В основной школе это, как правило, Adobe Photoshop, CorelDraw и/или MacromediaFlach. Различие между изучением тех или иных программных пакетов в основной и старшей школе в большей мере проявляется не в содержании, а в формах работы. В основной школе это практическая (лабораторная) работа, в результате которой учащимися осваивается программный продукт. В старшей школе основной формой работы становится индивидуальный практикум или проект, где главной составляющей является содержание поставленной задачи, а используемые для ее решения программные продукты остаются лишь инструментом.

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













Экран дисплея разбит на фиксированное число видиопекселей, которые образуют графическую сетку (растр) из фиксированного числа строк и столбцов. Размер графической сетки обычно представляется в форме NxM, где N – количество видео пикселей по горизонтали, а М – по вертикале.




В случае черно-белого изображения каждая точка экрана может иметь одно из двух состояний (черное или белое), то есть для хранения ее состояния необходимо 1 бит. То есть растровое черно-белое изображение состоящее из 600 строк и 800 точек в каждой строке (600 х 800) весит байт (58,6Кб).


Цветные изображения формируются в соответствии с двоичным кодом цвета каждой точки, хранящимся в видеопамяти. Цветные изображения могут иметь различную глубину цвета, которая задается используемым количеством бит для кодирования цвета точки. Наиболее распространенными значениями глубины цвета являются 4, 8, 16 или 24 бита на точку.






Например, если цвет одного пикселя определяется 2 битами, то мы имеем 4 (2 2) возможных комбинаций из 0 и 1: 00, 01, 10, 11. То есть можно закодировать 4 цвета. Если глубина цвета 24 бита, то изображение имеет различных цветовых оттенков.


Рассчитаем объем растрового файла с разрешением 800 х 600 глубиной цвета 24 бит на точку 800* 600* 24 = бит = байт = 1406,25 Кбайт = 1.37 Мбайт.


















Сравнение растровой и векторной графики Критерий сравнения Растровая графика Векторная графика Способ представления изображения Изображение строится из множества пикселей Изображение описывается в виде последовательности команд Представление объектов реального мира Эффективно используется для представления реальных объектов Не позволяет получать изображение фотографического качества Качество редактирования изображения При масштабировании и вращении изображения возникают искажения Легко преобразуются без потери качества Особенности печати Легко распечатываются Не печатаются, качество не гарантировано Объем памяти для хранения Для хранения растровых изображений требуется большой объем памяти Векторные изображения занимают относительно небольшой объем памяти.


Цветовые модели можно разделить на три класса: Аддитивные Аддитивные – основанные на сложении цветов Субтрактивные Субтрактивные – основанные на вычитании цветов Перцепционные Перцепционные – основанные на восприятии (перцепция – чувственное восприятие, отражение вещей в сознании через органы чувств)


Аддитивная цветовая модель: red- красный, Green – зеленый, Blue – синий Аддитивную цветовую модель принято обозначать аббревиатурой RGB (red- красный, Green – зеленый, Blue – синий). Пользователь может формировать собственную палитру цветов комбинируя 256 оттенков красного, зеленого и синего цветов (256*256*256= цветов)








Перцепционная цветовая модель HSB HSB – Hue – цветовой тон, оттенок, Saturation – насыщенность, контрастность, Brightness – яркость. HSV HSV – Hue – цветовой тон, Saturation – насыщенность, Value – величина яркости. HLS HLS – Hue – цветовой тон, Lightness – освещенность, Saturation – насыщенность.


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


TIFF- поддерживают большинство редакторов растровой графики и настольных издательских систем, редакторы векторной графии, поддерживающие растровые объекты. Рекомендуется для использования при работе с издательскими системами. PSD – собственный формат программы Adobe Photoshop.Данный формат сохраняет изображение с большим количеством рабочей информации, которая использовалась при создании изображения. BMP – формат хранения растровых изображений в операционной системе Windows. Он поддерживается всеми графическими редакторами, работающими под Windows. Рекомендуется для хранения и обмена данными с другими приложениями. JPEG – формат растровых графических файлов, который реализует эффективный алгоритм сжатия (метод JPEG) для отсканированных фотографий и иллюстраций. Алгоритм сжатия позволяет уменьшить объем файла в десятки раз, однако приводит к необратимой потере части информации. Поддерживается приложениями для различных операционных систем. Используется для размещения графических изображений на Web-страницах в Интернете. GIF – Растровый формат с 256 количеством цветов и достаточной степенью сжатия файлов. Применяется только в электронных документах. Включает алгоритм сжатия без потерь информации, позволяющий уменьшить объем файла в несколько раз. Рекомендуется для хранения изображений, создаваемых программным путем (диаграмм, графиков и так далее) и рисунков (типа аппликации) с ограниченным количеством цветов (до 256). Используется для размещения графических изображений на Web-страницах в Интернете. PNG формат растровых графических файлов, аналогичный формату GIF. Рекомендуется для размещения графических изображений на Web-страницах в Интернете. WMF универсальный формат векторных графических файлов для Windows-приложений. Используется для хранения коллекции графических изображений Microsoft Clip Gallery. EPS формат векторных графических файлов, поддерживается программами для различных операционных систем. Рекомендуется для печати и создания иллюстраций в настольных издательских системах. CDR оригинальный формат векторных графических файлов, используемый в системе обработки векторной графики CorelDraw. Если вы собираетесь работать с графическим файлом только в одном данном приложении, целесообразно выбрать оригинальный формат. Если же предстоит передавать данные в другое приложение, другую среду или иному пользователю, стоит использовать универсальный формат. Форматы GIF и JPEG используются преимущественно в Интернет Форматы GIF и JPEG используются преимущественно в Интернет.


Векторные форматы: Векторный формат хранит не коды пикселей, а параметры алгоритмов построения графических объектов. Различные векторные форматы отличаются набором команд и способом их кодирования. Поэтому изображение созданное в одном векторном редакторе, как правило не конвертируется в формат другой программы без погрешностей.




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


EPS – рабочий формат программы Adobe Illustrator. Этот формат поддерживается большинством векторных графических редакторов. Экранное изображение недостаточно точно отображает реальное и требует специальных просмотрщиков. СDR – рабочий формат векторного редактора CorelDraw. Многие программы могут импортировать файлы CDR. PDF – является аппаратно-независимым, то есть вывод изображений допустим на любых устройствах.



В век информационных технологий компьютерная графика получила широкое распространение во всем мире. Почему она так популярна? Где она применяется? И вообще, что такое компьютерная графика? Давайте разберемся!

Компьютерная графика: что такое?

Проще всего - это наука. Кроме того, это один из разделов информатики. Он изучает способы обработки и форматирования графического изображения с помощью компьютера.

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

Также на вопрос: «Что такое компьютерная графика?» - можно ответить, что это одно из многих направлений информатики и, кроме того, относится к наиболее молодым: оно существует около сорока лет. Как и всякая иная наука, она имеет свой определенный предмет, цели, методы и задачи.

Какие задачи решает компьютерная графика?

Если рассматривать этот в широком смысле, то можно увидеть, что средства компьютерной графики позволяют решать следующие три типа задач:

1) Перевод словесного описания в графическое изображение.

2) Задача распознавания образов, то есть перевод картинки в описание.

3) Редактирование графических изображений.

Направления компьютерной графики

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

Во-первых, иллюстративное направление. Оно является самым широким из всех, так как охватывает задачи начиная от простой визуализации данных и заканчивая созданием анимационных фильмов.

Во-вторых, саморазвивающееся направление: компьютерная графика, темы и возможности которой поистине безграничны, позволяет расширять и совершенствовать свои навыки.

В-третьих, исследовательское направление. Оно включает в себя изображение абстрактных понятий. То есть применение компьютерной графики направлено на создание изображения того, что не имеет физического аналога. Зачем? Как правило, с целью показать модель для наглядности либо проследить изменение параметров и скорректировать их.

Какие существуют виды компьютерной графики?

Еще раз: что такое компьютерная раздел информатики, изучающий способы и средства обработки и создания графического изображения с помощью техники. Различают четыре вида компьютерной графики, несмотря на то, что для обработки картинки с помощью компьютера существует огромное количество различных программ. Это растровая, векторная, фрактальная и 3-D графика.

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

Растровая графика

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

Основная проблема растрового изображения - это большие объемы данных.

Второй недостаток растровой графики - необходимость увеличить картинку для того, чтобы рассмотреть детали.

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

Векторная графика

Элементарной составляющей векторной графики является линия. Естественно, что в растровой графике тоже присутствуют линии, однако они рассматриваются как совокупность точек. А в векторной графике все, что нарисовано, является совокупностью линий.

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

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

Соответственно, для каждой из точек линии резервируется одна из ячеек памяти. Необходимо заметить, что в векторной графике объем памяти, занимаемый одним объектом, остается неизменным, а также не зависит от его размера и длины. Почему так происходит? Потому что линия в векторной графике задается в виде нескольких параметров, или, проще говоря, формулой. Что бы мы ни делали с ней в дальнейшем, в ячейке памяти будут изменяться лишь параметры объекта. Количество ячеек памяти останется прежним.

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

Трехмерная графика

3D-графика, или трехмерная графика, изучает методы и приемы создания объемных моделей объектов, максимально соответствующие реальным. Подобные изображения можно рассмотреть со всех сторон.

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

Фрактальная графика

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

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

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

Главным преимуществом фрактальной графики является то, что в сохраняются только формулы и алгоритмы.

компьютерной графики

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

Итак, перечислим основные области компьютерной графики:

1) моделирование;

2) проектирование;

3) отображение визуальной информации;

4) создание пользовательского интерфейса.

Где применяется компьютерная графика?

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

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

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

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

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

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

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

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

За последний десяток лет графические карты, позже названные 3D-акселераторами ,
прошли немалый путь развития — от первых SVGA-ускорителей, о 3D вообще ничего
не знавших, и до самых современных игровых "монстров", берущих на себя
все функции, связанные с подготовкой и формированием трехмерного изображения,
которое производители именуют "кинематографическим". Естественно, с
каждым новым поколением видеокарт создатели добавляли им не только дополнительные
мегагерцы и мегабайты видеопамяти, но и множество самых разных функций и эффектов.
Давайте же посмотрим, чему , а главное, зачем научились акселераторы
последних лет, и что это дает нам, любителям трехмерных игр.

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

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

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

Рассмотрим трансформацию координат . У нас имеется трехмерный мир, в котором расположены разные трехмерные же объекты, а в итоге нужно получить двумерное плоское изображение этого мира на мониторе. Поэтому все объекты проходят несколько стадий преобразования в разные системы координат, называемых еще пространствами (spaces ). Вначале локальные, или модельные, координаты каждого объекта преобразовываются в глобальные , или мировые, координаты. То есть, используя информацию о расположении, ориентации, масштабе и текущем кадре анимации каждого объекта, программа получает уже набор треугольников в единой системе координат. Затем следует преобразование в систему координат камеры (camera space ), с помощью которой мы смотрим на моделируемый мир. После чего отсчет будет начинаться из фокуса этой камеры — по сути как бы "из глаз" наблюдателя. Теперь легче всего исключить из дальнейшей обработки целиком невидимые (отбраковка, или culling ) и "обрезать" частично видимые (отсечение, или clipping ) для наблюдателя фрагменты сцены.

Параллельно производится освещение (lighting ). По информации о расположении, цвете, типе и силе всех размещенных в сцене источников света рассчитывается степень освещенности и цвет каждой вершины треугольника. Эти данные будут использованы позже при растеризации . В самом конце, после коррекции перспективы, координаты трансформируются еще раз, теперь уже в экранное пространство (screen space ).

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

Теперь, когда нам понятно устройство 3D-конвейера в общем виде, давайте взглянем
на архитектурные различия разных поколений 3D-ускорителей. Каждая стадия 3D-конвейера
очень ресурсоемка, требует миллионов и миллиардов операций для получения одного
кадра изображения, причем двумерные этапы текстурирования и растеризации гораздо
"прожорливее" геометрической обработки на ранних, векторных, стадиях
конвейера. Так что перенос как можно большего количества стадий в "видеожелезо"
благотворно влияет на скорость обработки 3D-графики и значительно разгружает CPU.
Первое поколение ускорителей брало на свои плечи только последний этап — текстурирование
и растеризацию, все предыдущие шаги программа должна была просчитать сама с помощью
CPU. Рендеринг происходил куда быстрее, чем при полном отсутствии 3D-акселерации,
ведь видеокарта уже выполняла наиболее тяжелую часть работы. Но все же с увеличением
сложности сцен в 3D-играх программная трансформация и освещение становились узким
горлышком, препятствующим увеличению скорости. Поэтому в 3D-акселераторы начиная
с первых моделей NVidia GeForce и ATI Radeon был добавлен блок, именуемый T &L-блоком .
Как видно из названия, он отвечает за трансформацию и освещение ,
т. е. теперь и за начальные стадии 3D-конвейера. Его даже правильнее называть
TCL-блоком (Transformation Clipping Lighting ), поскольку
отсечение — тоже его задача. Таким образом, игра, использующая аппаратный T&L,
практически полностью освобождает центральный процессор от работы над графикой,
а значит, появляется возможность "нагрузить" его другими расчетами,
будь то физика или искусственный интеллект.

Казалось бы, все хорошо и чего еще желать? Но не стоит забывать, что любой перенос функций "в железо" означает отказ от гибкости, присущей программным решениям. И с появлением аппаратного T&L у программистов и дизайнеров, желающих реализовать какой-то необычный эффект, осталось лишь три варианта действий: они могли либо полностью отказаться от T&L и вернуться к медленным, но гибким программным алгоритмам, либо пытаться вмешиваться в этот процесс, выполняя постобработку изображения (что не всегда возможно и уж точно очень медленно)… либо ждать реализации нужной функции в следующем поколении видеокарт. Производителей аппаратуры такой расклад тоже не устраивал — ведь каждое дополнительное T&L-расширение приводит к усложнению графического чипа и "раздуванию" драйверов видеокарт.

Как мы видим, не хватало способа гибко, на "микроуровне", управлять видеокартой. И такая возможность была подсказана профессиональными пакетами для создания 3D-графики. Называется она шейдер (shader ). По сути, шейдер — это небольшая программа, состоящая из набора элементарных операций, часто применяющихся в 3D-графике. Программа, загружаемая в акселератор и непосредственно управляющая работой самого графического процессора. Если раньше программист был ограничен набором заранее определенных способов обработки и эффектов, то теперь он может составлять из простых инструкций любые программы, позволяющие реализовывать самые разные эффекты.

По своим функциям шейдеры делятся на две группы: вершинные (vertex shaders )
и пиксельные (pixel shaders ). Первые заменяют собой всю функциональность
T&L-блока видеокарты и, как видно из названия, работают с вершинами треугольников.
В последних моделях акселераторов этот блок фактически убран — его эмулирует
видеодрайвер с помощью вершинных шейдеров. Пиксельные же шейдеры предоставляют
гибкие возможности для программирования блока мультитекстурирования и работают
уже с отдельными пикселами экрана.

Шейдеры также характеризуются номером версии — каждая последующая добавляет к предыдущим все новые и новые возможности. Наиболее свежей спецификацией пиксельных и вершинных шейдеров на сегодняшний день является версия 2.0, поддерживаемая DirectX 9, — на нее и будут ориентироваться как производители акселераторов, так и разработчики новых игр. На их поддержку аппаратурой стоит обращать внимание и пользователям, желающим приобрести современную игровую видеокарту. Тем не менее экспансия игр, построенных на шейдерных технологиях, только начинается, так что и более старые вершинные шейдеры (1.1), и пиксельные (1.3 и 1.4) будут использоваться еще как минимум год, хотя бы для создания сравнительно простых эффектов — пока DirectX 9-совместимые акселераторы не получат большего распространения.

Первые шейдеры состояли всего из нескольких команд, и их нетрудно было написать на низкоуровневом языке ассемблера. Но с ростом сложности шейдерных эффектов, насчитывающих иногда десятки и сотни команд, возникла необходимость в более удобном, высокоуровневом языке написания шейдеров. Их появилось сразу два: NVidia Cg (C for graphics) и Microsoft HLSL (High Level Shading Language) — последний является частью стандарта DirectX 9. Достоинства и недостатки этих языков и прочие нюансы будут интересны только программистам, так что подробнее на них мы останавливаться не станем.

Теперь давайте посмотрим, что необходимо для того, чтобы получить все те возможности,
которые дает столь полезная технология, как шейдеры последнего поколения. А нужно
следующее:

  • самая свежая версия DirectX, на данный момент это DirectX 9.0b;
  • видеокарта с поддержкой DirectX 9;
  • самые свежие драйверы видеокарты (в более старых некоторые функции могут отсутствовать);
  • игра, использующая все эти возможности.

Тут же хотелось бы развеять вероятные заблуждения. Некоторые трактуют популярный ныне термин "DirectX 9-совместимая видеокарта" следующим образом: "такая видеокарта будет работать и раскрывать все свои возможности только под API DirectX 9", или же "DirectX 9 стоит устанавливать на компьютер только с такой видеокартой". Это не совсем верно. Подобное определение скорее означает: "данная видеокарта обладает возможностями, требуемыми от нее спецификацией DirectX 9".

Глоссарий 3D-графики

Имитация меха с помощью шейдеров

Набор библиотек, интерфейсов и соглашений для работы с 3D-графикой. Сейчас широко
используются два 3D API: открытый и кросс-платформенный OpenGL (Open Graphics
Library) и Microsoft Direct3D (он же DirectX Graphics), являющийся частью универсального
мультимедийного API DirectX.

3D-акселератор, или 3D-ускоритель (3D-accelerator)

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

3D-конвейер, или конвейер рендеринга (3D-pipeline, или rendering pipeline)

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

3D-сцена

Часть виртуального трехмерного мира, подлежащая рендерингу в данный момент времени.

Depth of Field (глубина резкости)

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

Displacement mapping (текстурирование картами смещения)

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

MIP-mapping

Вспомогательный метод улучшения качества и повышения скорости текстурирования, заключающийся в создании нескольких вариантов текстуры с уменьшенным разрешением (например, 128 128, 64 64, 32 32 и т. д.), называемых MIP-уровнями. По мере удаления объекта будут выбираться все более "мелкие" варианты текстуры.

Motion-blur (он же временной антиалиасинг)

Довольно новая методика более реалистичной передачи движения за счет "смазывания" изображения объектов в направлении их перемещения. Зрители привыкли к данному эффекту, характерному для кино, поэтому без него картинка кажется неживой даже при высоких FPS. Реализуется motion-blur через многократную отрисовку объекта в кадр в разных фазах его движения или же "размазыванием" изображения уже на пиксельном уровне.

Z-буфер (Z-buffer)

Z-буферизация — один из методов удаления невидимых участков изображения. При
его использовании для каждого пиксела на экране в видеопамяти хранится расстояние
от этой точки до наблюдателя. Само расстояние называется глубиной сцены, а этот
участок памяти — Z-буфером. При выводе очередного пиксела на экран его глубина
сравнивается с сохраненной в Z-буфере глубиной предыдущего пиксела с такими же
координатами, и если она больше, то текущий пиксел не рисуется — он будет невидимым.
Если же меньше, то его цвет заносится в буфер кадра (frame buffer), а новая глубина
— в Z-буфер. Таким образом гарантируется перекрывание дальних объектов более
близкими.

Альфа-канал (alpha channel) и альфа-смешивание (alpha-blending).

В текстуре наряду с информацией о цвете в RGB-формате для каждого пиксела, может храниться степень его прозрачности, называемая альфа-каналом. При рендеринге цвет нарисованных ранее пикселов будет с разной степенью "проступать" и смешиваться с цветом выводимого пиксела, что позволяет получить изображение с различным уровнем прозрачности. Это и называется альфа-смешиванием. Такой прием используется очень часто: для моделирования воды, стекла, тумана, дыма, огня и прочих полупрозрачных объектов.

Антиалиасинг (antialiasing)

Метод борьбы со "ступенчатым" эффектом и резкими границами полигонов, возникающими из-за недостаточного разрешения изображения. Чаще всего реализуется путем рендеринга изображения в разрешении, гораздо большем установленного, с последующей интерполяцией в нужное. Поэтому антиалиасинг до сих пор очень требователен к объему видеопамяти и скорости 3D-акселератора.

Детальные текстуры (detail textures)

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

Кадровый буфер (frame buffer)

Участок видеопамяти, в котором производится работа по формированию изображения. Обычно используются два (реже три) буфера кадра: один (передний, или front-buffer) отображается на экране, а во второй (задний, или back-buffer) выполняется рендеринг. Как только очередной кадр изображения будет готов, они поменяются ролями: второй буфер будет показан на экране, а первый перерисован заново.

Карты освещенности (lightmap)

Простой и до сих пор часто применяющийся метод имитации освещения, заключающийся в наложении на основную текстуру еще одной — карты освещенности, светлые и темные места которой соответственно осветляют или затеняют изображение базовой. Карты освещенности рассчитываются заранее, еще на этапе создания 3D-мира, и хранятся на диске. Этот метод хорошо подходит для больших, статически освещенных поверхностей.

Карты среды (environment mapping)

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

Мультитекстурирование (multitexturing)

Наложение нескольких текстур за один проход акселератора. Например, основной текстуры,
карты освещенности и карты с детальной текстурой. Современные видеокарты умеют
обрабатывать как минимум 3—4 текстуры за раз. Если мультитекстурирование не поддерживается
(или необходимо наложить больше слоев текстур, чем это может сделать акселератор
"в один прием"), то используется несколько проходов, что, естественно,
гораздо медленнее.

Освещение (lighting)

Процесс расчета цвета и степени освещенности пиксела каждого треугольника
в зависимости от расположенных рядом источников света с использованием одного
из методов затенения. Часто применяются следующие методы:

  • плоское затенение (flat shading). Треугольники имеют одинаковую освещенность по всей поверхности;
  • затенение Гуро (Gouraud shading). Информация об уровне освещенности и цвете, рассчитанная для отдельных вершин треугольника, просто интерполируется по поверхности всего треугольника;
  • затенение Фонга (Phong shading). Освещение рассчитывается индивидуально для каждого пиксела. Наиболее качественный метод.

Пиксел (pixel)

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

Пространство (space), или система координат

Некоторая часть трехмерного мира, в которой отсчет ведется от какого-то своего начала координат. Обязательно есть система мировых (world) координат, относительно начала которой измеряются положение и ориентация всех других объектов в 3D-мире, при этом у каждого из них есть своя система координат.

Процедурные текстуры

Текстуры, которые генерируются различными алгоритмами "на лету", а не рисуются художниками заранее. Процедурные текстуры могут быть как статическими (дерево, металл и др.), так и анимированными (вода, огонь, облака). Преимуществами процедурных текстур являются отсутствие повторяющегося рисунка и меньшие затраты видеопамяти для анимации. Но есть и недостаток — необходим расчет с использованием CPU или шейдеров.

Рельефное текстурирование (bump mapping)

Эффект придания поверхности шероховатостей рельефа с помощью дополнительной текстуры, называемой картой рельефа (bump map). Геометрия поверхности при этом не меняется, так что эффект хорошо различим только при наличии динамических источников света.

Рендеринг (rendering)

Процесс визуализации трехмерного изображения. Состоит из множества этапов, в совокупности называемых конвейером.

Тексел (texel)

Пиксел, но не экрана, а текстуры. Минимальный ее элемент.

Текстурирование, или наложение текстур (texturing, или texture mapping)

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

Текстура (texture)

Двумерное изображение — bitmap, "натягиваемое" на 3D-объект. С помощью текстур задаются самые различные параметры материала, из которого состоит объект: его рисунок (наиболее традиционное применение), степень освещенности разных его частей (карта освещенности, или lightmap), способность отражать свет (specular map) и рассеивать его (diffuse map), неровности (bump map) и др.

Тесселяция (tesselation)

Процесс деления сложных полигонов и кривых поверхностей, описанных математическими функциями, на приемлемые для 3D-акселератора треугольники. Шаг этот зачастую необязательный, скажем, 3D-модели в большинстве игр обычно и так уже состоят из треугольников. Но вот, например, закругленные стены в Quake III: Arena — пример объекта, для которого тесселяция необходима.

Точка, или вершина (vertex)

Точка в пространстве, заданная тремя координатами (x, y, z). Отдельные точки редко используются, но они являются основой для более сложных объектов: линий, треугольников, точечных спрайтов. Кроме самих координат, к точке могут "привязываться" другие данные: координаты текстуры, свойства освещения и тумана и т. д.

Трансформация

Общий термин для обозначения процесса многоступенчатого преобразования 3D-объектов в двумерное изображение на экране. Представляет собой перевод набора вершин из одной системы координат в другую.

Треугольник (triangle)

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

Фильтрация текстур (texture filtering)

Метод улучшения качества текстурирования при изменении расстояния до наблюдателя. Простейший метод — билинейная (bilinear) фильтрация — использует усредненное значение цвета четырех смежных текселов текстуры. Более сложный — трилинейная (trilinear) фильтрация — задействует также информацию из MIP-уровней. Самый современный и качественный (а заодно и самый медленный) метод — анизотропная (anisotropic) фильтрация, который подсчитывает результирующее значение, применяя целый набор (обычно от 8 до 32) текселов, расположенных рядом.

Шейдер (шейдер)

Небольшая программа для графического процессора (GPU) акселератора, задающая
ему способ обработки трехмерной графики.

Некоторые возможности, реализуемые

С помощью шейдеров

  • Оптически точное (попиксельное) освещение и мягкие тени от всех объектов,
    произвольные модели освещения;
  • различные эффекты отражения и преломления лучей для моделирования
    воды, льда, стекла, витражей, подводных бликов и т. д.;
  • реалистичная рябь и волны на воде;
  • "кинематографические" эффекты Depth of Field (глубина
    резкости
    ) и Motion blur ;
  • качественная, детальная анимация скелетных моделей (состоящих из системы
    управляющих анимацией модели "косточек"), мимика;
  • так называемый "нефотореалистичный рендеринг" (Non-Photorealistic
    Rendering, NPR): имитация стилей рисования различных художников, эффект
    карандашного наброска или классической, рисованной 2D-анимации;
  • реалистичная имитация ткани, меха и волос;
  • процедурные текстуры (в том числе анимационные), не требующие затрат
    CPU и загрузки каждого кадра в видеопамять;
  • полноэкранные фильтры постобработки изображения: дымка, гало, капли
    дождя на стекле, шумовой эффект и т. д.;
  • объемный рендеринг: более реалистичные дым и огонь;
  • многое другое.
Интересные ссылки

www.scene.org
Громадный архив творчества сотен "демомейкерских" групп и отдельных
мастеров демо-сцены за последние годы. Для тех, кто не знаком с этим явлением,
поясним: "demo" в данном случае называется программа, генерирующая
в реальном времени небольшой (обычно 5—10 минут) ролик с графикой, звуком
и музыкой. Демо последних лет активно используют самые свежие технические
наработки и, конечно же, шейдеры.

www.nvidia.com/view.asp?PAGE=demo_catalog
Каталог "больших" технологических демок от NVidia.

www.nvidia.com/search.asp?keywords=Demo
Все технодемки NVidia, в том числе очень простые, состоящие из одного
эффекта.

www.cgshaders.org
Примеры шейдерных эффектов, написанных на языке Cg.