Алгоритм - Учебный центр

Версия сайта для слабовидящих
Заполните форму ниже! Мы вам перезвоним!

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


Основные процессы компьютерной графики.

Основные процессы компьютерной графики.

Графический конвейер.
Графический конвейер (Graphic Pipeline) - это некоторое программно-аппаратное средство, которое преобразует описание объектов в "мире Приложения" в матрицу ячеек видеопамяти растрового дисплея. Его задача - создать иллюзию трехмерного изображения на плоском экране.
В глобальных координатах Приложение создает объекты, состоящие из трехмерных примитивов. В этом же пространстве располагаются источники освещения, а также определяется точка зрения и направление взгляда наблюдателя. Естественно, что наблюдателю видна только часть объектов: любое тело имеет как видимую (обращенную к наблюдателю), так и невидимую (обратную) сторону. Кроме того, тела могут перекрывать друг друга, полностью или частично.
1. Первая стадия графического конвейера - трансформация (Transformation).
На первой стадии графического конвейера, называемой трансформацией (Transformation) обрабатывается взаимное расположение объектов относительно друг друга и их видимость зафиксированным наблюдателем.
На этой стадии выполняются вращения, перемещения и масштабирование объектов, а затем и преобразование из глобального пространства в пространство наблюдения (world-to-viewspace transform), а из него и преобразование в "окно" наблюдения (viewspace-to-window transform), включая и проецирование с учетом перспективы.
Попутно с преобразованием из глобального пространства в пространство наблюдения (до него или после) выполняется удаление невидимых поверхностей, что значительно сокращает объем информации, участвующей в дальнейшей обработке.
2. Вторая стадия графического конвейера - освещенность (Lighting).
На следующей стадии конвейера (Lighting) определяется освещенность (и цвет) каждой точки проекции объектов, обусловленной установленными источниками освещения и свойствами поверхностей объектов.
3. Третья стадия графического конвейера - растеризации (Rasterization).
На стадии растеризации (Rasterization) формируется растровый образ в видеопамяти. На этой стадии на изображения поверхностей наносятся текстуры и выполняется интерполяция интенсивности цвета точек, улучшающая восприятие сформированного изображения.
Весь процесс создания растрового изображения трехмерных объектов называется рендерингом (rendering).
Движение.
Чтобы трехмерное изображение "оживить" движением, изображения объектов в новом положении должны сходить с графического конвейера со скоростью хотя бы 15 кадров в секунду (современные акселераторы могут строить и 100 кадров в секунду). Это колоссальное ускорение построений обеспечивается применением в графических картах встроенного специализированного процессора, решающего значительную часть задач графического конвейера.
Тесселяция (Tesselation).
Графическое Приложение создает модель, в которой объекты задаются как совокупность тел и поверхностей. Тела могут иметь разнообразную форму, описанную каким-либо математическим способом. Проще всего иметь дело с многогранниками, у которых каждая грань представляет собой часть плоскости, ограниченной многоугольником (полигоном). Описание такого тела относительно несложно - оно состоит из упорядоченного списка вершин.
Сложнее дело обстоит с объектами, имеющими не плоские (криволинейные) поверхности. В этом случае в модели поверхности описываются сложными нелинейными уравнениями, однако для дальнейших построений их использование из-за громадных объемов вычислений проблематично. Для упрощения задачи криволинейные поверхности аппроксимируются многоугольниками, и, конечно же, чем мельче многоугольники, тем ближе аппроксимация к модели, но и тем более громоздким становится описание объекта, а следовательно, и больше времени требуется на его обработку.
Представление криволинейной поверхности совокупностью плоских граней-многоугольников называется тесселяцией (Tesselation). Многоугольники-грани должны быть простыми (не пересекающими себя на манер цифры 8), плоскими и выпуклыми - эти ограничения заметно упрощают их дальнейшую обработку.
Оптические свойства.
Кроме формы объектов (описания их поверхностей), важное значение имеют их оптические свойства. Проще всего дело обстоит с непрозрачными объектами - все другие объекты, перекрытые ими для взгляда наблюдателя, просто невидимы. Эти объекты будут перекрывать и лучи от источников освещения, установленных в модели, на пути которых они встречаются.
Сложнее дело обстоит с прозрачными и просвечиваемыми объектами. Прозрачность (transparency) объекта позволяет видеть и объекты, расположенные за ним, а просвечиваемость (trans-lucency) позволяет проходить через него лучам света от источников.
Поверхность имеет некоторый цвет, а также характеризуется степенью отражения (она может быть глянцевой или матовой). Для того чтобы получить реалистичное отображение модели, приходится отслеживать прохождение лучей от установленных источников освещения, достигающих глаза воображаемого наблюдателя как при отражении от поверхностей, так и при преломлении при прохождении через прозрачные и просвечиваемые объекты. При этом должны учитываться эффекты перспективы, как оптической (искажение формы), так и атмосферной (имитация дымки или тумана).
Рендеринг.
Как уже было сказано выше, весь процесс создания растрового изображения трехмерных объектов называется рендерингом.
Технологии создания трехмерных изображений очень сложны и многообразны, обсудим некоторые ее основные моменты и поясним связанные с ними термины.
Вполне понятно, что рендеринг модели может производиться только поэлементно. Результатом тесселяции является набор многоугольников (обычно четырехугольников или треугольников, с которыми манипулировать проще), аппроксимирующих поверхности объектов. Плоское растровое представление должно формироваться с учетом взаимного расположения элементов (их поверхностей) - те из них, что ближе к наблюдателю, естественно, будут перекрывать изображение более удаленных элементов.
Многоугольники, оставшиеся после удаления невидимых поверхностей, сортируются по глубине: реалистичную картину удобнее получать, начиная обработку с наиболее удаленных элементов.
Z-буфер.
Для учета взаимного расположения применяют так называемый Z-буфер, названный по имени координаты третьего измерения Z (X и Y - координаты в плоскости экрана).
Этот Z-буфер представляет собой матрицу ячеек памяти, каждая из которых соответствует ячейке видеопамяти, хранящей цвет одного пиксела.
В процессе рендеринга для очередного элемента формируется его растровое изображение (bitmap) и для каждого пиксела этого фрагмента вычисляется параметр глубины Z (координатой его можно назвать лишь условно).
В видеопамять этот фрагмент поступает с учетом результата попиксельного сравнения информации из Z-буфера, с его собственными значениями:
- если глубина Z данного пиксела фрагмента оказывается меньше величины Z той ячейки видеопамяти, куда должен попасть этот фрагмент, это означает, что выводимый элемент оказался ближе к наблюдателю, чем ранее обработанные, отображение которых уже находится в видеопамяти. В этом случае выполняется модификация пиксела видеопамяти, а в ячейку Z-буфера видеопамяти помещается новая величина, взятая от данного фрагмента (что подразумевается под модификацией, см. далее в разделе альфа-блендинг);
- если же результат сравнения иной, то текущий пиксел фрагмента оказывается перекрытым прежде сформированными элементами, и его параметр глубины в Z-буфер не попадет. Однако цвет пиксела видеопамяти, возможно, все равно придется модифицировать: ведь перекрывающий элемент может оказаться прозрачным.
Итак, Z-буфер позволяет определить взаимное расположение текущего и ранее сформированного пиксела, которое учитывается при формировании нового значения пиксела в видеопамяти.
От разрядности Z-буфера зависит разрешающая способность графического конвейера по глубине. При малой разрядности (например, 8 бит) для близко расположенных элементов рассчитанные значения Z могут совпасть, в результате картина перекрытий исказится. Большая разрядность буфера требует большого объема памяти, доступного графическому процессору. По нынешним меркам минимальная разрядность Z-буфера - 16 бит, профессиональные графические системы используют 32-битный Z-буфер.

 


Лицензия