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

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

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


Интеллектуальные адаптеры трехмерной графики(3D).

Интеллектуальные адаптеры трехмерной графики(3D).

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

Изображения трехмерных объектов на экране монитора

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

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

Трехмерное изображение отображаемое на экране монитора представляет собой набор отдель­ных групп элементов:

 - группы трехмер­ных объектов,

 - группы источников ос­вещения,

 - группы применяемых тек­стурных карт,

 - группы (или одной) ка­мер.

         Трехмерный объект задается:

 - координатами его вершин в про­странстве сцены;

 -  локальными коорди­натами в пространстве текстурной карты;

 - алгоритмом поведения  -  масштабиро­ванием,

 - углом поворота,

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

Вершины. Задают местоположение объекта в трехмерном пространстве; само их по­ложение задается координатами X, Y и Z.

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

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

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

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

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

Z-буферизация.

Z-буферизация - изначально эта технология применялась в системах автоматизирован­ного проектирования. В двумерном мире объекты не могут располагаться впереди или позади друг друга, поэтому нет проблем с перекрытием. Но в трехмерном мире один объект может находиться впереди другого. Обычно световые лучи не проникают через непрозрачные объекты, поэтому мы видим все, что находится впереди, и не видим того, что позади.

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

Эту идею можно реализовать аппаратно. Решение, состоит в создании параллельно с памятью дисплея другого массива памяти, называемого  Z-буфером. Каждый раз при записи пикселя вычисляется его значение Z. При этом записываются только пиксели с большими значениями Z и обновляются расстояния в Z-буфере. Все остальные пикселы игнорируются. Таким образом, в каждой ячейке Z-буфера хранится расстояние по оси Z (вглубь экрана) для рисуемого пиксела, поэтому легко проверить, затенен ли новый записываемый пиксель или нет.  Z-буфер требует дополнительной памяти, и, чем большая точность нужна для значений  Z, тем больше памяти нужно для запоминания значений Z. Если используется разрешающая способность 640х400 и значения Z в виде 16-разрядных (двухбайтовых) чисел, то нужно иметь 0,5 мегабайта памяти только для Z-буфера. С помощью Z-буфера можно легко решить, какие объекты расположены на переднем плане, но при этом понадобится вдвое больший объем видеопамяти. Почти все современные 3D-ускорители имеют 24-х или 32-битную Z-буферизацию, что в значительной мере повышает разрешающую способность и, как следствие, качество рендеринга.

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

Можно сократить работу процессора, проявив небольшую хитрость при упорядочении объектов по их координатам Z.  Если какая-то поверхность полностью скрыта другими или повёрнута от наблюдателя, то ее совсем не нужно рисовать первой. А если мы исключили операцию рисования, то многоугольник не надо заполнять картой текстуры, в связи с этим уменьшается количество работы для процессора.

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

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

Процесс визуали­зации трехмерной сцены на экране монитора компьютера происходит следующим образом:

1.   В первую очередь определяется со­стояние объектов, принимающих участие в сцене, которую необхо­димо отобразить (активен или нет).

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

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

8.   Далее может следовать этап наложения, какого либо эффекта на уже готовое изображение кадра.


Лицензия