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