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

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

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

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

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

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

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

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

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

Достижения современного 3д графики используются в следующих отраслях

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

Этапы создания трехмерного изображения


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

  1. Моделирование - построение математической 3д-модели общей сцены и ее объектов.
  2. Текстурирование включает наложение текстур на созданные модели, настройка материалов и придание моделям реалистичности.
  3. Настройка освещения .
  4. (движущихся объектов).
  5. Рендеринг - процесс создания изображения объекта по предварительно созданной модели.
  6. Композитинг или компоновка - постобработка полученного изображения.

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

Наиболее распространенными программными продуктами для 3d моделирования являются: Autodesk 3D max, Pixologic Zbrush, Blender.

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


Освещение
- создание, установка направления и настройка источников освещения в созданной сцене. Графические 3д-редакторы, как правило, используют следующие виды источников света: spot light (расходящиеся лучи), omni light (всенаправленный свет), directional light (параллельные лучи) и др. Некоторые редакторы дают возможность создания источника объемного свечения (Sphere light).

За последний десяток лет графические карты, позже названные 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.

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

Текущее состояние

Основные области применения

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

  • Спецэффекты , Визуальные эффекты (VFX), цифровая кинематография ;
  • Цифровое телевидение , Всемирная паутина , видеоконференции ;
  • Цифровая фотография и существенно возросшие возможности по обработке фотографий;
  • Визуализация научных и деловых данных;
  • Компьютерные игры , системы виртуальной реальности (например, тренажёры управления самолётом);
  • Компьютерная графика для кино и телевидения

Научная работа

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

  • конференция Siggraph , проводится в США
  • конференция Графикон , проводится в России
  • CG-событие , проводится в России
  • CG Wave , проводится в России

На факультете ВМиК МГУ существует лаборатория компьютерной графики .

Техническая сторона

По способам задания изображений графику можно разделить на категории:

Двухмерная графика

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

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

Пример растрового рисунка

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

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

В растровом виде представимо любое изображение, однако этот способ хранения имеет свои недостатки: больший объём памяти, необходимый для работы с изображениями, потери при редактировании.

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

Фрактальное дерево

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

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

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

Трёхмерная графика (3D - от англ. three dimensions - «три измерения») оперирует с объектами в трёхмерном пространстве. Обычно результаты представляют собой плоскую картинку, проекцию . Трёхмерная компьютерная графика широко используется в кино, компьютерных играх.

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

Всеми визуальными преобразованиями в 3D-графике управляют матрицы (см. также: аффинное преобразование в линейной алгебре). В компьютерной графике используется три вида матриц:

  • матрица сдвига
  • матрица масштабирования

Любой полигон можно представить в виде набора из координат его вершин. Так, у треугольника будет 3 вершины. Координаты каждой вершины представляют собой вектор (x, y, z). Умножив вектор на соответствующую матрицу, мы получим новый вектор. Сделав такое преобразование со всеми вершинами полигона, получим новый полигон, а преобразовав все полигоны, получим новый объект, повёрнутый/сдвинутый/масштабированный относительно исходного.

Ежегодно проходят конкурсы трехмерной графики, такие как Magick next-gen или Dominance War.

CGI графика

Основная статья: CGI (кино)

Представление цветов в компьютере

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

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

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

Реальная сторона графики

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

См. также

  • Графический интерфейс пользователя
  • Фрактальная монотипия

Ссылки

  • Селиверстов М. «3D кино - новое или хорошо забытое старое?»
  • 3D Компьютерная графика в каталоге ссылок Open Directory Project (dmoz).

Примечания

Литература

  • Никулин Е. А. Компьютерная геометрия и алгоритмы машинной графики. - СПб: БХВ-Петербург, 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. -

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Maya, 3DStudio, Blender

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

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

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

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

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

Пиксельная графика

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

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

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

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

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

Рис. 8.5.

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

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

Трехмерная графика (3D – от англ. 3 Dimensions – три измерения) – три измерения изображения) – раздел компьютерной графики, совокупность приемов и инструментов (как программных, так и аппаратных), предназначенных для изображения объемных объектов (рис. 8.6).

Рис. 8.6.

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

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

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

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

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

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

-графика

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

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

Инфографика

Термином "инфографика" (от лат. informatio – осведомление, разъяснение, изложение; и др.-греч. graphike – письменный, от grapho – пишу) обозначают графический способ подачи информации, данных и знаний.

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

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

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

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