Технологии построения трехмерного изображения

Технологии построения трехмерного изображения

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

Основные понятия

Прежде всего нам предстоит познакомиться с основными понятиями трехмерной графики. К таким понятиям относятся вершина, полигон и текстура.

 

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

Поскольку речь идет о трехмерной графике, то любой объект представляется в ви­де набора точек, называемых вершинами, в трехмерном пространстве. Каждая вершина в трехмерном пространстве характеризуется тремя координатами, а сис­тема координат определяется тремя осями: горизонтальной (X), вертикальной (Y) и глубины (Z). Соединяя вершины между собой, можно любую трехмерную по­верхность аппроксимировать набором полигонов (многоугольников), простейши­ми из которых являются треугольники. Положение этих полигонов и задается вершинами. Понятно, что для формирования изображения полигоны необходимо закрасить. Для этого часто прибегают к текстурам. Текстура — это двухмерное изображение, которое может «натягиваться» на трехмерные объекты с учетом их формы и положения.

Текстурирование трехмерных поверхностей — это самый распространенный метод закрашивания. Если бы мы попробовали смоделировать кирпичную стену без технологии наложения текстур, нам потребовалось бы прорисовывать множество отдельных граней для моделирования множества кирпичей. Текстура дает больше реализма и требует меньше вычислительных ресурсов, позволяя оперировать со всей стеной как с единой поверхностью. Все текстуры хранятся в памяти, обычно установленной на видеокарте.

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

Для решения этой задачи применяется метод, называемый Z-буферизацией. В так называемом Z-буфере (буфере глубины) хранятся значения глубины всех пикселов (Z-координаты). Когда рассчитывается новый пиксел, его глубина сравнивается со значениями глубин уже рассчитанных пикселов с теми же координатами X и Y. Если новый пиксел имеет значение глубины больше какого-либо значения в Z-буфере, то новый пиксел не записывается в буфер для отображения, если меньше — запи­сывается.

Процесс обработки текстур и информации кадрового буфера называется рендерин­гом (или процессом закраски).

Аппаратная реализация Z-буферизации значительно увеличивает производитель­ность графической подсистемы. Главная характеристика Z-буфера — это его раз­решающая способность. Она критична для высококачественного отображения сцен с большой глубиной. Чем выше разрешающая способность, тем выше дискретность Z-координат и точнее выполняется рендеринг удаленных объектов. Если при рен­деринге разрешающей способности не хватает, может случиться, что два перекры­вающихся объекта получат одну и ту же координату Z, что вызовет искажение изображения. Как правило, видеокарты имеют 32-разрядный Z-буфер.

Кроме буфера глубины, позволяющего отсекать невидимые поверхности, для соз­дания реалистичных трехмерных изображений необходимо учитывать, что объек­ты могут быть полупрозрачными. Эффект полупрозрачности создается путем объединения цвета исходного пиксела с пикселом, уже находящимся в буфере. В результате цвет точки является комбинацией цветов переднего и заднего планов. Для учета прозрачности объектов используется так называемый альфа-коэффи­циент прозрачности, который имеет значение от 0 до 1 для каждого цветового пиксела.

Очевидно, что для создания реалистичной картины происходящего на экране не­обходимо частое обновление его содержимого. При формировании каждого сле­дующего кадра ЗО-акселератор проходит весь путь подсчета заново, поэтому он должен обладать немалым быстродействием. Но в ЗБ-графике применяются и дру­гие методы придания плавности движению. Наиболее распространенный — метод двойной буферизации (Double Buffering).

Для двойной буферизации требуется наличие двух областей, зарезервированных в буфере кадров. Метод Double Buffering использует два буфера кадров для полу­чения изображения: один для отображения картинки, другой для рендеринга. В то время как отображается содержимое одного буфера, в другом происходит рендеринг. Когда очередной кадр обработан, буферы переключаются (меняются местами). Без применения двойной буферизации изображение не будет иметь требуемой плав­ности, то есть будет прерывистым.

Технологии повышения реалистичности трехмерного изображения

Для повышения реалистичности отображения наложенных на полигоны текстур ис­пользуются самые различные технологии: сглаживания (Anti-Aliasing), MIP mapping, текстурной фильтрации и т. д.

Технология сглаживания (Anti-Aliasing)

Anti-Aliasing — это технология устранения эффекта ступенчатых краев.

Изображение на экране состоит из множества мелких точек — пикселов, которые, как маленькие кирпичики, формируют любое изображение. Однако из-за того, что пикселы имеют конечный размер, на краях трехмерных объектов можно различить так называемую лестницу, или ступенчатые края. Чтобы минимизировать эффект лестницы, проще всего увеличить разрешение экрана (уменьшив тем самым мини­мальный размер формируемых пикселов). Правда, такой способ минимизации паразитного эффекта подходит не всегда, поскольку это зависит от конкретного монитора, а если речь идет об игре — то и от возможности игры переключаться на более высокое разрешение. Если избавиться от ступенчатого эффекта за счет по­вышения разрешения монитора нельзя, можно использовать технологию Anti- Aliasing, которая позволяет визуально сгладить эффект лестницы. Наиболее часто используемая для этого техника — это создание плавного перехода от цвета линии или края к цвету фона. Цвет точки, лежащей на границе объектов, определяется как среднее значение цветов двух граничных точек.

Существует несколько базовых технологий Anti-Aliasing. Первоначально техноло­гии сглаживания применялись лишь к отдельным объектам, однако с повышением производительности графических процессоров получила широкое распространение технология полноэкранного сглаживания (Full Screen Anti-Aliasing, FSAA).

Суть данной технологии заключается в том, что графический процессор рассчиты­вает изображение в гораздо большем разрешении, чем разрешение экрана, а затем сжимает его до установленного значения. Например, при разрешении экрана 800 х 600 и установке режима FS АА 2×2 изображение будет рассчитываться в раз­решении 1600 х 1200, а затем сжиматься до 800 х 600 и выводиться на экран.

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

Технология MIP mapping

Одна из самых распространенных технологий, используемых для улучшения ка­чества текстурирования трехмерных объектов, называется MIP mapping.

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

Для решения подобных проблем используется технология MIP mapping, которая подразумевает возможность использования набора текстур с различной степенью детализации. То есть на базе каждой текстуры создается целый набор текстур с меньшим уровнем детализации. Текстуры такого набора называются М1Р-карта- ми (MIP тар).

В простейшем случае наложения текстуры для каждого пиксела изображения определяется соответствующая ему МIP-карта согласно таблице детализации (Level Of Detail, LOD). Далее из MIP-карты выбирается только один тексел (пик­сел карты), который присваивается пикселу.

Технологии фильтрации

Как правило, технология MIP mapping используется в сочетании с технологиями фильтрации, призванными исправить артефакты MIP-текстурирования. Например, при удалении объекта все дальше от точки наблюдения происходит переход от низко­го к высокому MIP тар-уровню. В момент нахождения объекта в переходном состоя­нии от одного MIP тар-уровня к другому появляется особый тип ошибок визуали­зации — явно различимые границы перехода от одного MIP тар-уровня к другому.

Смысл фильтрации состоит в том, что цвет пикселов объекта рассчитывается по соседним точкам текстуры (текселам). Существует несколько типов фильтрации, поддерживаемых видеокартами.

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

2.   Трилинейная. Также призвана удалять артефакты, возникающие при исполь­зовании MIP-текстурирования. При трилинейной фильтрации для определения цвета пиксела берется среднее значение цвета восьми текселов, по четыре из двух соседних текстур, и в результате семи операций смешивания определяется цвет пиксела. При использовании трилинейной фильтрации возможен вывод на экран текстурированного объекта с плавно выполненными переходами от одного МIP-уровня к следующему. Таким образом решается большинство про­блем, связанных с MIP-текстурированием и ошибками из-за неправильного расчета глубины сцены (depth aliasing).

3. Анизотропная. Самая прогрессивная на сегодняшний день технология фильт­рации, при использовании которой один-единственный пиксел может рассчи­тываться по 8-32 текселам. Для сравнения, в простейшем варианте фильтрации, билинейной, для расчета цвета пиксела используется всего четыре ближайших тексела.

Яндекс.Метрика