Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лекции комп мод.doc
Скачиваний:
23
Добавлен:
23.08.2019
Размер:
3.01 Mб
Скачать

14.4. Принципы обработки графических данных на персональных компьютерах

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

Определение сцены Геометрические Рендеринг

преобразования

Объекты

Трансформация и расчет освещенности

Затенение

Сцена

Проецирование

Текстурирование

Освещение

Подготовка

Сортировка по глубине

Растеризация

Точка

наблюдения

Вывод на экран

Рис. 34. Последовательность операций по генерации сцены на экране монитора (3D-конвейер)

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

Работа 3D-конвейера начинается с определения сцены — объектов, источников освещения, их взаимного расположения, расположения наблюдателя (камеры). Объекты чаще всего представляются в виде набора многоугольников (треугольников), получаемых в процессе тесселяции, то есть аппроксимации реальных криволинейных поверхностей. Этот набор описывается координатами вершин треугольников. Каждая вершина (Vertex) кроме координат имеет дополнительные параметры: цвет, вектор нормали, координаты текстуры и многие другие.

Затем производятся геометрические преобразования (Transforming and Lighting), которые заключаются в переходе от локальных координат объектов к координатам сцены, расчете освещенности в вершинах и переходе в систему координат наблюдателя.

На следующем этапе сцена проецируется на плоскость экрана — происходит переход от истинного трехмерного представления к псевдотрехмерному. Каждая вершина представляется двумя координатами (X, Y) на плоскости экрана и третьей координатой (Z) — расстоянием от вершины до экрана. Вершины, выходящие за границы экрана, отбрасываются (Clipping), отбрасываются также вершины, представляющие тыльные поверхности, то есть с вектором нормали, направленным от наблюдателя.

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

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

В процессе рендеринга определяется цвет пикселей с учетом исходного цвета соответствующих частей объектов и освещенности, создаваемой источниками света. Сама процедура расчета для пикселей, заполняющих проекции треугольников, основана на интерполяции значений в вершинах и называется затенением (Shading). В самом простом случае освещенность может вычисляться только для одной точки треугольника и приписываться всем пикселям (Flat Shading). Гораздо лучшее качество дает применение метода Гуро (Gouraud Shading), при котором освещенность вычисляется в вершинах треугольника, а для остальных точек линейно интерполируется. В методе Фонга (Phong Shading) освещенность вычисляется для каждого пикселя независимо (с помощью интерполяции нормалей), что дает еще более высокое качество. Для получения максимально реалистичных изображений должны учитываться немонохроматичность источников света, отражающие свойства поверхностей (например, матовая или блестящая), влияние отраженного света и многие другие факторы.

В большинстве случаев можно получать качественные и достаточно реалистические изображения без усложнения методики расчетов освещенности и даже без увеличения детальности моделей — только за счет применения текстур, или текстурных карт (Texture Maps), то есть готовых растровых изображений, накладываемых на поверхности объектов. Текстуры могут использоваться также для имитации освещенности (Light Mapping), рельефа (Bump Mapping). Для реализации многих эффектов используется мультитекстурирование (Multitexturing), то есть наложение нескольких текстур со смешиванием.

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

Финальная стадия рендеринга — смешивание (Blending), при котором определяется окончательный цвет пикселя с учетом цвета, текстур и освещенности. Дополнительно может проводиться и специальная фильтрация — сглаживание (Antialiasing) — для устранения последних артефактов рендеринга, в особенности ступенчатости границ треугольников с разными текстурами. Краевое сглаживание (Edge Antialiasing), при котором усредняются цвета приграничных пикселей, не избавляет полностью от всех возможных артефактов. Гораздо эффективнее полноэкранное сглаживание (FSAA — Full Screen AntiAliasing). Один из методов такого сглаживания — рендеринг при более высоком, чем экранное, разрешении с последующей фильтрацией изображения до исходного экранного разрешения. При этом каждый пиксель делится на несколько субпикселей, соответственно требования к объему и пропускной способности памяти повышаются.

Результат рендеринга хранится в кадровом буфере. Обычно используется двойной кадровый буфер. В одном буфере (Front Buffer) хранится готовый кадр, который показывается на экране, а результаты расчетов следующего кадра помещаются в другой буфер (Back Buffer). Затем буферы переключаются и показывается содержимое второго, в то время как первый используется для расчетов. Если результаты расчетов в одном буфере уже готовы, а второй еще не вывел изображение полностью, то 3D-конвейер останавливается, что приводит к потере производительности. Для устранения этого эффекта иногда используется третий кадровый буфер.