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

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

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


Что такое Z-буфер?(ликбез).

Что такое Z-буфер?(ликбез).

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

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

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

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

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

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

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

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

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

- масштабированием,

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

- смещением и прочими изменениями в течение времени в соответствии с замыслом разработчиков.

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

Вершины. Задают местоположение объекта в трехмерном пространстве; само их положение задается координатами X, Y и 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. Если какая-то поверхность полностью скрыта другими или повёрнута от наблюдателя, то ее совсем не нужно рисовать первой. А если мы исключили операцию рисования, то многоугольник не надо заполнять картой текстуры, в связи с этим уменьшается количество работы для процессора.


Лицензия