Технологии построения трехмерного изображения
Современные технологии формирования трехмерного изображения и придания ему реалистичности чрезвычайно сложны, и детальное их рассмотрение выходит за рамки данной книги. Поэтому мы лишь вкратце опишем базовые технологии, которые фигурируют в качестве характеристик современных видеокарт. Основные понятия · вершина; · полигон; · текстура. Любой трехмерный объект, каким бы сложным он ни был, можно представить в виде набора простейших полигонов, которыми являются треугольники. Поскольку речь идет о трехмерной графике, то любой объект представляется в виде набора точек, называемых вершинами, в трехмерном пространстве. Каждая вершина в трехмерном пространстве характеризуется тремя координатами, а система координат определяется тремя осями: горизонтальной (X), вертикальной ( Y) и глубины (Z). Соединяя вершины между собой, можно любую трехмерную поверхность аппроксимировать набором полигонов (многоугольников), простейшими из которых являются треугольники. Положение этих полигонов и задается вершинами. Понятно, что для формирования изображения полигоны необходимо закрасить. Для этого часто прибегают к текстурам. Текстура — это двумерное изображение, которое может «натягиваться» на трехмерные объекты с учетом их формы и положения. Текстурирование трехмерных поверхностей — это самый распространенный метод закрашивания. К примеру, если бы мы попробовали смоделировать кирпичную стену без технологии наложения текстур, нам потребовалось бы прорисовывать множество отдельных граней для моделирования множества кирпичей. Текстура дает больше реализма и требует меньше вычислительных ресурсов, позволяя оперировать со всей стеной как с единой поверхностью. Все текстуры хранятся в памяти, обычно установленной на видеокарте. Для того чтобы придать реалистичность формируемому изображению, необходимо рассчитать, какие именно объекты должны выводиться на экран, а какие не должны попасть в поле зрения. К примеру, если один объект находится спереди, а второй позади, то часть второго объекта должна быть невидимой. Для решения этой задачи применяется метод, называемый Z-буферизацией. В так называемом Z-буфере (буфере глубины) хранятся значения глубины всех пикселов (Z-координаты). Когда рассчитывается новый пиксел, его глубина сравнивается со значениями глубин уже рассчитанных пикселов с теми же координатами Xи Y. Если новый пиксел имеет значение глубины больше какого-либо значения в Z-буфере, то новый пиксел не записывается в буфер для отображения, если меньше — записывается. Процесс обработки текстур и информации кадрового буфера называется рендерингом (или процессом закраски). Аппаратная реализация Z-буферизации значительно увеличивает производительность графической подсистемы. Главная характеристика Z-буфера — это его разрешающая способность. Она критична для высококачественного отображения сцен с большой глубиной. Чем выше разрешающая способность, тем выше дискретность Z-координат и точнее выполняется рендеринг удаленных объектов. Если при рендеринге разрешающей способности не хватает, может случиться, что два перекрывающихся объекта получат одну и ту же координату Z, что вызовет искажение изображения. Как правило, видеокарты имеют 32-разрядный Z-буфер. Кроме буфера глубины, позволяющего отсекать невидимые поверхности, для создания реалистичных трехмерных изображений необходимо учитывать, что объекты могут быть полупрозрачными. Эффект полупрозрачности создается путем объединения цвета исходного пиксела с пикселом, уже находящимся в буфере. В результате цвет точки является комбинацией цветов переднего и заднего плана. Для учета прозрачности объектов используется так называемый alpha-коэффициент прозрачности, который имеет значение от 0 до 1 для каждого цветового пиксела. Очевидно, что для создания реалистичной картины происходящего на экране необходимо частое обновление его содержимого. При формировании каждого следующего кадра ЗD-акселератор проходит весь путь подсчета заново, поэтому он должен обладать немалым быстродействием. Но в ЗD-графике применяются и другие методы придания плавности движению. Наиболее распространенный — метод двойной буферизации (Double Buffering). Для двойной буферизации требуется наличие двух областей, зарезервированных в буфере кадров. Метод Double Buffering использует два буфера кадров для получения изображения: один для отображения картинки, другой для рендеринга. В то время как отображается содержимое одного буфера, в другом происходит рендеринг. Когда очередной кадр обработан, буферы переключаются (меняются местами). Без применения двойной буферизации изображение не будет иметь требуемой плавности, то есть будет прерывистым. ©2015 arhivinfo.ru Все права принадлежат авторам размещенных материалов.
|