Смекни!
smekni.com

Подбор видеокарты для дизайнерского моделирования (стр. 9 из 16)

Некоторые картинки изначально двумерны. Многие простые символы должны быть понятны с первого взгляда. Поэтому, чем проще они нарисованы, тем лучше. Вот главное отличие 2D графики от 3D: двумерная графика хороша для выражения чего-либо простого за максимально короткое для понимания время. Трехмерная графика может дать больше информации, но на ее усвоение требуется большее время. Если перевод двумерной картинки в трехмерный вид сводится к добавлению некоторого количества информации, то перевод 3D статичной картинки в движущееся изображение требует намного большего. Для большинства из нас компьютеры или современные приставки являются наиболее привычным способом знакомства с трехмерной графикой. Компьютерные игры или видеоролики изготавливаются с помощью созданных компьютером картинок. Обычно процесс создания реалистичной трехмерной сцены разбивается на три важных шага:

- создание виртуального 3D мира.

- выбор части мира, которая будет демонстрироваться на экране.

- задание представления для каждого пикселя на экране для максимальной реалистичности изображения.

Виртуальный 3D мир это не просто эскиз такого мира. Чтобы вам лучше в этом разобраться, приведем пример из реального мира. Рассмотрим вашу руку и стол под ней. Ваша рука обладает характеристиками, которые определяют способы движения руки и ее вид. Пальцы примыкают к ладони и послушно сгибаются в суставах. Если шлепнуть рукой по столу, то он не брызнет во все стороны, так как стол всегда твердый и цельный. Ваша рука не может пройти сквозь стол. Всю эту информацию нельзя получить, просто взглянув на рисунок предмета. Но сколько бы фотографий вы ни сделали, на любой из них ваши пальцы будут сгибаться в суставах, и примыкать к ладони, стол будет всегда твердым, а не жидким. Так ведут себя вещи в реальном мире, и они всегда будут себя так вести. Объекты же виртуального трехмерного мира не существуют в природе, в отличие от вашей руки. Все они - искусственные, а все их свойства задаются программой. Разработчики используют специальные инструменты для аккуратного описания 3D мира, чтобы каждый объект вел себя, так как ему положено. В любой момент экран демонстрирует только крошечную частичку виртуального трехмерного мира компьютерной игры. Показываемая часть определяется способом задания мира, направлением, куда вы пожелаете в нем пойти и точкой, в которую вы будете при этом смотреть. Независимо от того, какой путь вы выберите: вперед или назад, вверх или вниз, вправо или влево, виртуальный 3D мир вокруг вас определит, что вы увидите из вашей позиции по направлению вашего взгляда. Смысл увиденного вами не должен меняться от сцены к сцене. Если вы смотрите на объект с одной и той же дистанции, то он должен сохранять те же размеры независимо от направления взгляда. Способ движения и вид каждого объекта должны убеждать вас в том, что он имеет постоянную массу, что он всегда твердый или мягкий, жесткий или гибкий и т.д. Программисты, создающие компьютерные игры, затрачивают огромные усилия на описание 3D мира, чтобы вы могли восхищаться этим миром и не встречать в нем ничего, что бы разубедило вас в его реальности. Вы же не хотите увидеть, как два твердых объекта проходят друг сквозь друга? Это сразу бы напомнило вам об иллюзорности виртуального мира. И третий шаг включает в себя, по крайней мере, столько же компьютерных вычислений, как и первые два шага вместе взятые, если не больше. Причем этот шаг должен выполняться в реальном времени в играх и видеороликах. Прежде чем изображение станет реалистичным, объекты проходят несколько стадий обработки. Самые важные стадии это создание формы (shape), обтягивание текстурами, освещение, создание перспективы, глубины резкости (depth of field) и сглаживания (anti-aliasing). Так как же создается это третье измерение. Есть два основных подхода. Можно сделать псевдотрехмерные сэмплы, а потом обработать их по принципам двухмерной графики, лишь изредка касаясь простейших законов третьего измерения. А можно создать модель трехмерного мира, а потом спроецировать часть его на плоскость экрана. Так делают все современные трехмерные игры. Однако трехмерный мир надо как-то смоделировать. Пользоваться при этом наработками из растрового 2D — неудобно. Графика будет тяжеловесной и тормозной. Нужен другой способ... Постойте, а какая у нас самая прогрессивная технология в 2D? Конечно же, векторная графика. И весит мало, и обсчитывается сравнительно быстро. Есть у нее и свои недостатки, но достоинств больше. Почти полное переложение основ векторной графики в 3D — это технология NURBS (более подробно она рвссмотрена в разделе). А самый распространенный способ моделирования 3D — частичное переложение основ векторной графики. В целом это называется 3D конвейер. Процесс построения 3D-изображения можно разделить на три последовательных этапа. На первом этапе объект преобразуется в мозаичную модель, т.е. происходит его разделение на множество многоугольников (полигонов). Следующий этап включает в себя геометрические преобразования и установки освещения. Наконец, заключительный этап, так называемый "рендеринг" (rendering), который является наиболее важным для качества 3D-изображения, создает двумерное изображение из полученных на предыдущих этапах многоугольников. Любая трехмерная модель (из которых, в конечном счете, и состоит виртуальный мир) представляется в виде некоторого числа пересекающихся плоскостей. Излишки плоскостей обрезаются.

В итоге остаются двухмерные многоугольники, помещенные в трехмерную систему координат. Такой многоугольник называется полигоном.


1.19 Воплощение видеокарт

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

Как и у обычного процессора, у видеопроцессора есть определенное количество конвейеров. Каждый конвейер выполняет свою очередь команд, поэтому — чем больше конвейеров, тем больше операций сможет видеопроцессор выполнять одновременно. Как и в центральном процессоре, в нем есть блок предсказания ветвлений, арифметико-логический блок и так далее. Сходства можно перечислять долго, поэтому поговорим о различиях. В первую очередь это текстурные блоки — своеобразные конвейеры, рассчитывающие наложение текстур на объекты. Чем больше текстурных блоков, тем больше текстур на один и тот же объект акселератор сможет наложить за один проход. Однако если на объект накладывается всего одна текстура, будет работать только первый текстурный блок — остальные останутся не у дел. Поэтому количество текстурных блоков важно исключительно для мультитекстурирования. Одна из важнейших характеристик любого акселератора — скорость закраски или fillrate. Она показывает, сколько пикселей или текселей может акселератор обработать за одну секунду. Соответственно, fillrate измеряется в мегапикселях в секунду или мегатекселях в секунду. Цифры, показывающие количество бит информации, нужных для создания одного изображения, отображают лишь часть требуемой вычислительной мощности.

Для того чтобы намекнуть вам о величине суммарной загрузки процессора, мы поговорим о математическом процессе, называемом трансформацией (transform). Трансформация используется всякий раз, когда мы изменяем угол зрения на какой либо объект. Например, картинка машины, движущейся на нас, становится больше с помощью трансформации. Другим примером трансформации является преобразование созданного 3D мира в 2D форму на экране компьютера.Давайте посмотрим, какое же количество вычислений задействовано в такой трансформации, при этом учитывайте, что она используется во всех трехмерных играх. Сейчас мы разберемся, чем же занимается компьютер. Даже в простой анимации требуется выполнить множество расчетов. Стены и мебель имеют текстуры, которыми покрыты каркасы. С помощью световых лучей предметы отбрасывают тени. Также следует заметить, что по мере продвижения камеры по офису, некоторые объекты появляются из-за угла или стены и становятся видимыми. Таким образом вы наблюдаете эффект использования Z-буфера. А так как все это происходит еще до вывода изображения на экран монитора, то становится очевидным: даже самым крутым современным процессорам (CPU) требуется помощь для реализации трехмерных игр или графики. Для этого и были разработаны графические ускорители. Все современные акселераторы обладают важнейшим блоком с кодовой аббревиатурой T&L — Transforming and Lighting (трансформация и освещение), который можно условно разделить на три части. Модуль трансформации (Transformation) преобразует трехмерные координаты в двумерные, привязанные к конкретной точке пространства, из которой наблюдатель смотрит на мир, и к направлению его взгляда. Именно здесь рассчитывается проекция перспективы. Модуль отсечения (Clipping) — отсекает от готовой сцены области, которые находятся вне зоны видимости. В простейшем случае область отсечения задается шестью плоскостями. Все, что выходит за границы области, ограниченной этими плоскостями, дальше не обрабатывается. Но если большой полигон попадает и в видимую область, и в невидимую, его, естественно, оставляют или, же обрабатывают только частично. Модуль освещения (Lighting) отвечает за освещение всех объектов сцены. Причем речь идет не, только о восьми аппаратно-обрабатываемых источниках света, но и вторичном свете. К примеру, луч света упал на ровную гладкую поверхность, оставив там блик, отразился от нее и нарисовал на потолке световой круг. С появлением этого модуля стали возможны динамические эффекты освещения: качающиеся лампочки, Солнце, которое движется по небу в реальном времени...До появления этих трех модулей все операции, которые они выполняют, приходилось делать центральному процессору. Теперь он разгружен для более важных вещей, например, расчета искусственного интеллекта. Мы разобрали все этапы изготовления трехмерной картинки — от полигонального каркаса до готового изображения на экране монитора. Однако в современных играх помимо стандартной, полигональной технологии представления трехмерной графики используются и другие, альтернативные. У каждой из таких технологий — своя область применения, свои достоинства и недостатки. Естественно, используй современные игры исключительно полигоны да текстуры, трехмерные миры не были бы такими яркими, насыщенными и динамичными. Ну что ж, давайте познакомимся с новыми героями: NURBS, вокселями, трассировкой лучей и шейдерами.