Давно стали привычными термины 3D-графика, 3D-акселератор, но терминология, используемая при описании технических характеристик оборудования современных видеосистем, у многих специалистов вызывает затруднения, так как не все знакомы с принципами построения трехмерных высококачественных цветных изображений на плоском экране современного монитора. В данной учебно-методической разработке рассматриваются особенности 3D-акселераторов и современные технологии трехмерной графики.
Системы виртуальной реальности и трехмерной визуализации переносят зрителя в вымышленный мир, позволяющий перемещаться в очень высоко детализированной обстановке. Такие миры реализуются посредством каркасных структур, например, стен, полов и потолков и др., на которые наносятся текстуры, представляющие собой цветные шаблоны.
На плоском экране монитора высококачественные изображения трехмерных объектов могут состоять из огромного количества элементов. В программах создания трехмерной графики используется технология хранения в памяти и обработки не самих изображений, а набора абстрактных графических элементов, составляющих эти изображения. До недавнего времени для преобразования этих абстрактных элементов в "живые" образы, помимо программ создания трехмерной графики, требовались специальные приложения. Они сильно загружали процессор, память, системный интерфейс , и, как следствие, замедлялась работа всех остальных приложений. Однако новое поколение микросхем графических акселераторов, установленных на большинстве современных видеоадаптеров, успешно решает эту проблему, беря на себя всю работу по расшифровке и формированию на экране изображений трехмерных объектов. Процессор теперь менее загружен, и общая производительность системы повысилась.
Главной функцией программ создания трехмерной графики является преобразование графических абстрактных объектов в изображения на экране монитора компьютера. Обычно абстрактные объекты включают три составляющих:
Вершины. Задают местоположение объекта в трехмерном пространстве; само их положение задается координатами X, Y и Z.
Примитивы. Это простые геометрические объекты, с помощью которых конструируются более сложные объекты. Их положение задается расположением определяющих точек (обычно вершин). Для конструирования изображений трехмерных объектов при построении примитивов учитывается также эффект перспективы.
Текстуры. Это двухмерные изображения, или поверхности, налагаемые на примитивы. Точки текстуры называются текселами.
Эти абстрактные математические описания должны быть визуализированы, т.е. преобразованы в видимую форму. Процедура визуализации основывается на жестко стандартизированных функциях, предназначенных для составления выводимого на экран целостного изображения из отдельных абстракций. Ниже представлены две стандартные функции:
геометризация – это определение размеров, ориентации и расположения примитивов в пространстве и расчет влияния источников света.
растеризация - преобразование примитивов в пиксели на экране с нанесением нужных затенений и текстур.
Создание трехмерных изображений требует большой работы. Простые акселераторы должны только рисовать многоугольники и планировать текстуры. Более сложные акселераторы могут частично выполнять функции предшествующих этапов, например, позволяя блоку вычисления вершин передавать на следующий этап координаты в виде десятичных чисел, что уменьшает загрузку процессора.
Последовательность этапов создания трехмерных изображений
Геометрическая обработка. Программа хранит местоположение объектов в мировых координатах, упрощая связи между различными объектами. Большинство вычислений происходит в процессоре.
Преобразование и отображение. Программа преобразует трехмерные координаты в пространстве (3D-координаты) в координаты на плоскости (2D-координаты) и использует текстуры. Работа в основном выполняется аппаратурой.
Описание этапов создания трехмерных изображений
Вычисление координат вершин. Процессор вычисляет позицию каждой вершины для каждого объекта в мировой системе координат.
Отсечение краев. Изображаемые объекты могут не вписываться в пределы видимой области. Выступающие части должны быть удалены, поэтому процессор отсекает края объекта по границам рисуемой области - по одному многоугольнику за один раз.
Отбрасывание скрытых поверхностей. Изображать невидимые поверхности излишне. Процессор должен распознавать видимые поверхности и отбрасывать невидимые.
Вычисление координат проекций. Дисплей работает всего лишь как двумерное устройство, наподобие куска стекла, через которое вы смотрите на трехмерную сцену. Чтобы промоделировать это в компьютере, нам нужно пересчитать координаты проекций вершин каждого многоугольника из системы координат в пространстве в систему координат на плоскости (поверхности экрана).
Закрашивание поверхностей. Как только мы получаем набор двумерных многоугольников, мы можем красить поверхность каждого из них теневой картой текстуры.
В современных видеоадаптерах, в которых графический процессор может выполнять функции ускорения трехмерной графики, встраиваются специальные электронные схемы, которые выполняют растеризацию гораздо быстрее, чем программное обеспечение.
Большинство современных наборов микросхем 3D-акселераторов обеспечивают выполнение следующих функций растеризации:
Растровое преобразование. Определение того, какие пиксели экрана покрываются каждым из примитивов.
Обработка полутонов. Цветовое наполнение пикселей с плавными цветовыми переходами между объектами.
Образование текстуры. Наложение на примитивы двухмерных изображений и поверхностей.
Определение видимости поверхностей. Определение пикселей, покрываемых ближайшими к зрителю объектами.
Анимация. Быстрое и четкое переключение между последовательными кадрами движущегося изображения.
В наиболее совершенных 3D-акселераторах могут быть использованы геометрические процессоры (например, FGX-1), которые ускоряют всю стадию геометрической обработки, в том числе трансформацию (если 3D-акселератор поддерживает операции с матрицами) и освещение.