Смекни!
smekni.com

Возможности графических карт. 3D графика (стр. 1 из 4)

Реферат

Магнитогорск, 2004 г.

3D

Условно компьютерную графику можно разделить на две категории. Первая - это имитация естественных способов рисования, например “холст, масло”, самая известная программа — Fractal Design Painter. Вторая категория - это программы моделирования, в которых художник уже не контролирует каждый элемент изображения, лишь определяет композицию и общие законы построения рисунка. О последних и пойдет разговор. Как известно, существуют программы, которые по одному лишь числу могут выдать завораживающую абстрактную картину, однако здесь от художника ничего не зависит. Совсем другое дело — генераторы ландшафтов (landscape generators). На основании сложных математических процедур они позволяют моделировать реальный мир. В отличие от большинства пакетов трехмерной графики, генераторы ландшафтов оперируют понятиями близкими к геодезии и метеорологии. Облака, положение солнца, поверхность суши или гладь моря — вот составляющие, благодаря которым строятся картины с помощью пакетов такого рода. Пользователь контролирует только время суток, рельеф местности или направление ветра, а программа сама воспроизводит обстановку, которая бы сложилась в реальном мире при данных погодных условиях. Базисом для таких пакетов являются фракталы, описанные ученым из исследовательского центра IBM Бенуа Мандельбротом.

Фракталы - это фигура или часть фигуры, которая может быть разбита на элементы, каждая из которых — уменьшенная копия целого… “Облака - это не сферы, а береговая линия - не прямая”. Это цитата из книги “Фрактальная геометрия природы” Мандельброта, Осталось только применить фрактальную геометрию к построению реалистических пейзажей.

Один из простейших алгоритмов был разработан довольно давно подразделением Lucas Films — Industrial Light & Magic, фирма делала спецэффекты во многих современных фильмах. Но это современные разработки, фрактальные же технологии стали использоваться на заре компьютерной графики. Почему именно фракталы “пришлись ко двору” при генерации ландшафтов, демонстрирует удивительно простой пример построения горы при помощи разбиения базового треугольника на элементы и их случайного смещения.

Любому человеку, хоть раз пытавшемуся изобразить на листе бумаги нечто в трех измерениях, известно, что искомый эффект получается путем соответствующих проекций характерных линий объекта на плоскость и использованием плавных цветопереходов (тени). В данном отношении черный экран монитора ничем не отличается от белого листа бумаги. Единственная сложность состоит в том, что нереальный герой должен иметь несколько более сложные очертания, чем куб, и быстро перемещаться по экрану, желательно интенсивно размахивая несколькими конечностями. Причем большинству монстров присущ инстинкт коллективизма, — стадами любят ходить. С этой, кок оказалось, достаточно нетривиальной задачей справляются следующим образом. Собственно 3D (D от Dimension — “измерение”) объекта непростой формы получают путем создания его полигональной модели. В ней поверхность подопытного разбивается на многоугольники (Poligons), путем сопряжения которых и вырисовывается каркас объекта, от тираннозавра до хлопка взрыва. Вообще говоря, “многоугольник” — это слишком громко сказано. В подавляющем большинстве случаев за основу берут всего лишь треугольники (достигается максимально возможная стандартизация обработки разнообразных каркасов).

За создание каркаса отвечает центральный процессор: он вычисляет вершины треугольников, а затем соединяет их прямыми отрезками. Расчет производится от точки зрения наблюдателя, которая не всегда совпадает с центром экрана. От размера стороны треугольника зависит и точность, реалистичность прорисовки элемента сцены. Перемещение любого объекта осуществляется путем переопределения координат вершин. Эта операция требует огромных вычислительных ресурсов процессора: чем более реальное пытаемся получить изображение, тем больше точек приходится рассчитывать. Все такие расчеты выполняются над действительными числами с плавающей точкой в специальном блоке процессора — FPU (Floating Point Unit). Именно от производительности этого блока в основном зависит скорость прорисовки объекта.

Фирмы-разработчики процессоров именно в этой области особо рекламируют достоинства своих детищ. Сегодня реально существует лишь одна технология, разработанная с предельным вниманием к проблеме вычислений для 3D— 30now! от AMD. Intel пока только усиленно анонсирует процессор с подобной технологией — Katmai. Однако процессоры Pentium изначально превосходили своих конкурентов в области “плавающих” вычислений, что позволяет им прекрасно справляться со всеми расчетами.

Текстуры

Однако “проволочные” герои в “проволочной” обстановке создают некоторые неудобства. Для достижения спецэффектов первоначальный каркас покрывается особыми рисунками — текстурами. Сама процедура нанесения называется Texture Mopping. Вообще говоря, с этой операцией справился бы и процессор, но ему пришлось бы работать весьма долго. Во-первых, хорошие текстуры занимают достаточно много места в памяти, а во-вторых, собственно их нанесение связано с большими объемами специфических вычислений. Для ускорения этой процедуры созданы специальные ЗD-ускорители (акселераторы), которые могут хранить текстуры в своей собственной памяти, а все вычисления реализуются особой микросхемой.

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

Эффекты

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

Расчет тени — Shading — возможен как применительно к площади, так и для каждой вершины отдельно. Последний вариант, естественно, при больших затратах ресурсов дает лучшие результаты. Собственно “тень” получается путем изменения яркости цвета. При повершинном ее расчете цветопереходы будут более плавными.

Однако поверхности в реальной жизни не только поглощают свет, создавая тени, но и отражают его, блестят. В 3D аналогичного результата достигают при помощи эффекта Environment Mapping. Перемещение затененных и блестящих участков по поверхности объекта позволяет создать более реалистичное изображение движения. Поскольку определенный “блеск” может соответствовать каждой текстуре, то комбинирование таких текстур создаст еще более впечатляющие эффекты.

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

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

Следующими по важности после Световых следует поставить эффекты коррекции цвета.

Эффект Antialising производит сглаживание “лестницы” при попиксельном представлении линий за счет вычисления среднего значения цвета между цветами линии и фона. Это, скорей всего, самый “энергоемкий” эффект.

Билинейная фильтрация (Bilinear filtering) решает аналогичную проблему “лестницы” для текстур. Для подопытного элемента текстуры выбираются соседи, усреднением цвета которых и получают искомый результат. Билинейной же она называется потому, что складываются цвета четырех соседей. Однако возможно обобщение и для восьми элементов (трилинейная), фильтрация может, как увеличить качество изображения, так и сделать его размытым. Трилинейная фильтрация часто используется при коррекции изображения перспективы (коррекция как таковая тоже может выступать самостоятельным эффектом).

В следующую группу можно выделить атмосферные эффекты и эффекты прозрачности.

Fogging (depth cueing) — “туман (дымка)” моделирует, как видно из названия, туман, дымку, сумерки. Очень важен для реалистичного отображения сцен, происходящих на открытых пространствах, на “свежем” воздухе, также часто используется для уменьшения объемов вычислений путем ограничения видимости: удаленные в дымку объекты можно прорисовывать с меньшей тщательностью.