logo search
ТСИ / Технические средства информатизации

4. Синтез трехмерного изображения. 3d-конвейер.

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

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

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

  2. Разбиение поверхности полученного объекта на элементарные плоские элементы (прямоугольники или треугольники) — тесселяция (Tessela-tiori), или триангуляция. Это приводит к тому, что поверхность объекта представляет собой совокупность плоских граней — многоугольников, в частности треугольников, как показано на рис. 4.17. Поверхность объекта воспроизводится точнее при увеличении числа и уменьшении размеров многоугольников (ср. рис. 4.17, а, б).

Рис. 4.17. Тесселяция объекта с помощью различного числа треугольников: а — 420 треугольников; б — 2668 треугольников

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

  2. Расчет освещенности (Lighting) и затенения (Shading) объекта производится в два этапа. Сначала выполняется расчет освещенности каждого элементарного многоугольника с учетом его удаленности от источника света и угла падения светового луча. Чтобы поверхность объекта не выглядела состоящей из множества отдельных плоских граней, как это показано на рис. 4.19, а, применяют методы затенения, т.е. дополнительно производят интерполяцию значений освещенности, позволяющую плавно изменять освещенность каждой грани и скрыть резкие переходы между ними (рис. 4.19, б).

Рис. 4.18. Трансформация формы объекта путем изгиба и скручивания

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

Рис. 4.19. Изображение объекта, рассчитанное: а — без использования механизма интерполяции; б — с использованием метода затенения

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

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

  2. Удаление скрытых поверхностей — HSR (Hidden Surface Removal), т. е. исключение из проецирования тех элементов поверхности объекта, которые оказываются невидимыми с точки наблюдения.

  3. Закраска элементарных треугольников, или текстурирование, выполняется наложением текстур (Texture Mapping). Текстура (Texture) — это элемент обшивки объекта, т.е. изображение участка его поверхности, которое хранится в виде квадратной растровой картинки, состоящей из текселов (Texel Texture Element —элемент текстуры). После наложения текстуры (рис. 4.20, а) каркасная модель как бы покрывается своеобразным покрытием —текстурой и становится похожей на реальный объект (рис. 4.20, б). В процессе текстурирования каждый многоугольник, составлявший каркасную модель, заменяется на элемент текстуры, а значение каждого пиксела двухмерного изображения вычисляется по значению соответствующего тексела текстуры.

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

Рис. 4.20. Текстурирование объекта: а — текстура; б — каркасная модель после наложения текстуры

MIP-текстурирование, или мипмэппинг (MIPMultum In Parvoмного в одном), применяется для устранения пикселизации при приближении к SD-объекту. MIP-текстурирование заключается в том, что в памяти акселератора хранятся несколько копий одной и той же текстуры, но с различным разрешением LOD (Level Of Detalization — уровень детализации). Каждая последующая копия текстуры содержит в четыре раза больше пикселов, чем предыдущая. Совокупность всех копий одной и той же текстуры называют MIP-каскадом, пример которого дан на рис. 4.19.

Рис. 4.21. Пример МIР-каскада

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

9. Моделирование эффектов прозрачности и полупрозрачности заключается в том, что на основе информации о взаимной прозрачности объектов и среды выполняется коррекция цвета пикселов — так называемое альфа-смешение (Alpha-blending) и затуманивание (Fogging).

10. Коррекция дефектов изображения путем сглаживания антиалиасинг (Anti-aliasing). Антиалиасинг применяется для устранения дефектов изображения типа «лестничного» эффекта на наклонных линиях, муара. Различают краевой (Edge Anti-aliasing) иполный (Full-screen Anti-aliasingFSAA) антиалиасинг. В первых моделях игровых ускорителей использовался только краевой антиалиасинг, для современных 3D -акселераторов обязательным является полный антиалиасинг.

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

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

  1. Интерполяция недостающих цветов — (Dithering) используется в том случае, когда в текущем видеорежиме 3D-акселератора для кодирования цвета пиксела используется менее 24 бит (например, в режиме High Color при 16-бит ном цвете).

  2. Окончательное формирование кадрового буфера (Frame Buffer) — области памяти 3D -акселератора, в которую помешается спроецированное двухмерное изображение. Кадровый буфер используется для формирования выходного, аналогового видеосигнала 3D -ускорителя.

Рис. 4.22. «Виртуальное разрешение» при выполнении полного антиалиасинга

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

13. Постобработка (Post-processing) применяется в том случае, когда требуется реализовать какие-либо двухмерные эффекты над подготовленным кадром как единым целым.

Этапы 1 — 6 3D -конвейера образуют его геометрическую стадию, на которой выполняются интенсивные тригонометрические вычисления с помощью CPU. Однако существует тенденция обеспечения современных игровых 3D -акселераторов специальным процессором, обеспечивающим аппаратное ускорение выполнения геометрической стадии 3D -конвейера.

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

Программным интерфейсом для 3D -акселераторов служит так называемый интерфейс прикладного программирования (Appli-cation Program Interface API). API занимает промежуточное положение между высокоуровневыми прикладными программами и низкоуровневыми командами различных 3D-акселераторов и обеспечивает эффективное преобразование запросов прикладной программы в оптимизированную последовательность низкоуровневых команд. Благодаря API, разработчики прикладных программ избавлены от необходимости работать с низкоуровневыми командами акселератора.

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

DirectX разработана фирмой Microsoft, используется в игровых приложениях, работающих под управлением операционной системы Windows 95/98, и включает в себя несколько узконаправленных API:

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

Direct3D отвечает за работу графической системы в режиме создания трехмерных изображений;

DirectInput обеспечивает аппаратно независимый ввод информации в ПК через клавиатуру, мышь и джойстик;

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

DirectSound управляет использованием ресурсов звуковой системы ПК.

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

DirectX является жестко регламентированным, закрытым стандартом, который не допускает изменений до выхода в свет своей новой версии.

Open GL используется в основном в профессиональных приложениях (CAD, системы трехмерного моделирования, симуляторы и т.п.), работающих под управлением операционной системы Windows NT. Вместе с тем существуют и игры, ориентированные на OpenGL, например Quake.

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

К числу OpenGL-совместимых драйверов относятся следующие:

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

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

Мини-порт — группа специализированных OpenGL-совместимых драйверов, каждый из которых специально разработан для работы с какой-либо одной программой или игрой. Такой мини-порт применяется, когда, например, возникает необходимость поиграть в QuakeGL или Quake II на ПК с Windows 95 и 3D-акселератором, не рассчитанным на использование OpenGL.

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

Game Engine — «игровой движок» — драйвер, разработанный для конкретной 3D-платы и обеспечивающий максимальную производительность за счет непосредственного использования низкоуровневых команд акселератора, без использования API.

Принципиальным отличием API OpenGL от DirectX является то, что OpenGL ориентирован на корректность создаваемых изображений, тогда как для DirectX важны скорость прорисовки и естественность изображения.

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

Для настройки видеосистемы с целью обеспечения максимальной производительности при работе с трехмерной графикой пользователь ПК должен:

при выборе 3D -платы четко представить область ее будущего применения: игры или решение профессиональных задач;

установить в систему требуемый API;

проконтролировать настройку параметров драйвера и/или прикладной программы, задействовав необходимые функции 3D-aкселерации;

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

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