Основы 3D технологий
Олег Татарников
Современный мир находится в постоянном движении. Все, что было
изобретено в прошедшие десятилетия, объединяется сегодня в новые
мощные технологии, а то, что еще вчера было примером блестящих передовых
решений, становится обыденным.
Глобальные перемены коснулись и 3D-графики. Ее возможности трудно
переоценить: она вносит не только больший реализм в компьютерное
искусство, кино- и видеоиндустрию, но оказывает влияние и на способы
нашего общения с машиной. Несмотря на то, что компьютерное проектирование
и работа с трехмерными объектами практикуются уже в течение нескольких
десятилетий, только в последние два-три года, после появления мощных
домашних компьютеров, стали наблюдаться серьезный прогресс и беспрецедентная
динамика развития 3D-графики.
Представление объектов
3D-объект - это объемное тело, у которого есть длина, ширина и
глубина - свойства, которых у компьютерных изображений не было в
течение многих лет. Ведь в действительности 3D-объекты существуют
только в памяти компьютера и отображаются на плоской поверхности
экрана по законам перспективы. Трехмерный объект характеризуется
своей формой и текстурой поверхности.
Форма - это геометрия объекта, которая в простейшем случае описывается
серией взаимосвязанных в трехмерном пространстве точек (вершин)
и многоугольников (граней - замкнутых двумерных фигур с тремя или
более сторонами). Например, куб имеет восемь вершин и шесть граней.
Причем раньше для простоты в большинстве случаев в качестве базовых
многоугольников выбирались треугольники. Несколько сотен или даже
тысяч таких треугольников соединялись друг с другом и образовывали
сложные трехмерные сетки. Теперь же в трехмерных пакетах все больше
используется моделирование гладких поверхностей в форме сплайнов,
или так называемое твердотельное моделирование (solid modeling).
Причем вычислительные мощности современных компьютеров возросли
настолько, что позволяют отображать такие поверхности даже в текстурированном
виде практически в реальном времени.
Текстура (лат. textura) - это особенности строения твердого вещества,
обусловленные характером расположения его составных частей (кристаллов,
зерен и т.п.) (Словарь иностранных слов. М., 1993). В компьютерной
графике текстура описывает самые разные свойства поверхности объектов:
цвет, прозрачность, отражающую способность, шероховатость и т.п.
Для текстур обычно используются изображения, имитирующие материал,
из которого сделана поверхность моделируемого объекта или так называемые
карты поверхности, отражения, рельефа и т.п.
На моделируемой сцене размещаются источники света, при необходимости
вводится осветляющий (обычный) или затемняющий (для эмуляции ночных
условий) туман и задается точка обзора (камера).
Далее в дело вступает компьютер, которому, чтобы отобразить 3D-объект
на экране, приходится выполнять весьма точные математические расчеты:
сначала производится разбиение поверхности
(Tesselation), то есть объект, образованный плоскими или криволинейными
поверхностями, приводится, как правило, к сеточному виду, причем
обычно поверхность разбивается на простейшие элементы - треугольники.
Для криволинейных поверхностей производится аппроксимация с точностью,
достаточной для имитации гладкой поверхности;
затем выполняются геометрические преобразования (Geometry Transformation)
3D-объекта, то есть перемещения, вращения и масштабирование. Трансформация
в математическом смысле - это перемножение координат вершин на матрицу
соответствующего преобразования;
рассчитывается освещенность сцены (Lighting) в зависимости от
количества источников, их расположения и типа: рассеянный свет (Ambient),
точечный источник света (Spot), направленный источник света (Omni)
и т.п.;
затем выполняется отсечение (Clipping), то есть для снижения
непроизводительных затрат выявляются те части объекта, которые будут
видны с заданной точки обзора. С помощью отсечения из дальнейшего
рассмотрения удаляются части объекта (если они заданы), выходящие
за границы экрана или не попадающие в область просчета, расположенную
между ближней и дальней плоскостями отсечения, то есть между Near
и Far Clipping planes. Другими словами, обычно задается некоторая
область в пространстве, по выходе из которой объекты или их части
не рассматриваются;
далее, на основании данных об освещенности, начинает работать
один из алгоритмов затенения (Shading). Чаще всего используются
простые методы: плоскостной (Flat), Гуро (Gouraud) и Фонга (Phong).
При плоскостном затенении на основании данных об освещенности вершин
треугольника рассчитывается среднее значение освещенности всей его
поверхности. Этот метод самый быстрый, но при его использовании
практически невозможно получить сколько-нибудь реальное изображение
гладкой поверхности. При затенении по методу Гуро на основании данных
об освещенности вершин интерполируются значения освещенности по
ребрам треугольника, а после этого по градиенту рассчитываются значения
освещенности для каждой точки ограниченного ими треугольника. Метод
дает существенно лучший результат по качеству, но порождает эффект
звездчатых бликов. Затенение по Фонгу работает совершенно иначе:
нормали, первоначально заданные в вершинах, интерполируются по всей
поверхности объекта (причем для внутренних точек можно задать свой
закон изменения нормали), имитируя таким образом произвольную кривизну,
а уже затем на основании данных о такой "кривизне", расположении
источников света и положении наблюдателя для каждой точки поверхности
рассчитывается ее освещенность. Последний метод дает один из лучших
результатов и широко используется в программах 3D-моделирования;
затем, используя информацию о глубине, компьютер проецирует полученную
поверхность на плоскость (Projection) для создания на двумерном
экране иллюзии глубины (обозначает перспективу);
удаляются невидимые поверхности (Hidden Surface Removal), то
есть те части объектов, которые закрыты другими частями или объектами;
и, наконец, при помощи более сложных алгоритмов выполняются окончательный
просчет и растеризация (Rasterisation) 3D-объекта. На этом этапе
компьютер использует информацию о текстурах (их может быть несколько
для одной поверхности) с учетом их взаимодействия, то есть производится
учет прозрачности, перспективы, уровня и метода детализации. На
этом этапе окончательно выясняется, как объект взаимодействует со
светом: какого он должен быть цвета, какое количество света должно
отражаться от каждой его грани, должны ли возникать какие-либо тени
и отражения. На этом этапе применяются алгоритмы трассировки луча
(Ray Tracing) или излучательности (Radiosity) - самые сложные и
качественные методы построения реалистичных изображений. Наиболее
распространен алгоритм обратной трассировки луча: от наблюдателя
через точку строящегося изображения проводят луч и, учитывая все
его отражения от объектов, вычисляют цвет результирующего пиксела.
Излучательность - это алгоритм просчета, при котором фотореалистичные
изображения создаются путем просчета взаимных отражений света между
объектами. Без этого часто кажется, что в трехмерной сцене чего-то
не хватает. Классический пример: отсветы лавы на стенах кратера
вулкана или блики на лицах от костра. Однако при просчете этим методом
теряется такой визуальный компонент, как отраженная энергия, порожденная
отражениями и световыми бликами. Поэтому иногда применяют метод
гибридной излучательности, который выполняет просчет как рассеивающегося
света (по алгоритму излучательности), так и отраженного (по алгоритму
трассировки луча), и в результате получаются сцены, демонстрирующие
оба этих аспекта. Некоторые эффекты добавляются интерактивно уже
на этапе обработки изображения и мгновенно появляются при визуализации
поверх уже готовой картинки;
окончательная обработка (Post processing) - самая последняя стадия
работы с уже готовым изображением. На этом этапе можно сделать,
например, сглаживание границ объектов после их растеризации (Antialiasing),
в частном случае это удаление так называемого лестничного эффекта,
проявляющегося на наклонных линиях. Для чего изображение, например,
изначально рассчитывается в большем разрешении, чем выводимое на
экран, и уменьшается с вычислением среднего значения цвета для матрицы
из нескольких рядом стоящих пикселов исходного изображения.
Моделирование
По мере развития 3D-индустрии проблема моделирования встает особенно
остро. И хотя многие разработчики достаточно опытны, чтобы моделировать
сложные конструкции самим, не у всех есть время для детального исследования,
необходимого при такой работе.
Выходят из положения по-разному: обращаются к художнику с просьбой
тщательно и аккуратно выстроить модель по фотографиям или в фирму
типа Viewpoint DataLabs, которая за $300-1000 продаст уже готовую
полигональную или NURBS-модель нужного объекта или сделает ее на
заказ. Такая модель состоит из нескольких десятков тысяч многоугольников
и поставляется в нескольких форматах, включая форматы наиболее популярных
3D-пакетов. В придачу к ней за небольшую дополнительную плату дадут
и полный набор редактируемых текстур, что еще более ускорит работу.
Невероятно
масштабные 3D-модели, как, например, эту, можно строить разными
способами: по фотографиям, по чертежам или непосредственно отсканировав
макет
Полигональная (то есть каркасная) модель - это ядро любого 3D-проекта,
по сути, основная несущая конструкция, на которую накладываются
поверхностные текстуры, образующие достоверный, близкий к реальному
миру объект. Такие модели начали разрабатывать еще в 60-х годах
и применять в системах автоматизированного проектирования. Традиционно
они строятся из полигональных сеток. Количество многоугольников
в таких сетках соответствует количеству деталей объекта, и чем более
детальными становятся модели, тем большее количество многоугольников
они насчитывают. Этот процесс имеет свою оборотную сторону: чем
больше многоугольников входит в модель, тем большие мощности нужны
для работы с нею. Эту особенность необходимо учитывать, планируя
изготовление той или иной модели.
Относительно новая область 3D-моделирования - NURBS-модели. NURBS
(Non-Uniform Rational B-Splines - неоднородные рациональные В-сплайны)
- это математически определяемые кривые, или сплайны. Криволинейные
поверхности, построенные из таких сплайнов, получаются плавными
и гладкими, в отличие от традиционных полигональных сеток, которым
все труднее соперничать с реальностью. В настоящее время такие модели
составляют лишь небольшую долю от общего числа используемых в работе,
но, вероятно, с ростом мастерства аниматоров и художников их количество
будет расти, особенно после того, как в таких пакетах, как 3D Studio
MAX 2, начали предлагать NURBS-инструментарий в дешевом секторе
рынка. Особую ценность в данной ситуации приобретают усилия, направленные
на ускорение просчета таких моделей, поскольку, как и прежде, важно,
чтобы они были сконструированы с минимальным количеством наложений,
срезов и т.п.
Методы, используемые при построении моделей, варьируются не только
от компании к компании, но и от проекта к проекту. Воссоздать динозавра
или построить мотоцикл "Харлей-Дэвидсон" - это ведь не одно и то
же. Причем в самом процессе моделирования большинство компаний используют
разные 3D-пакеты. На первом месте стоит задача построить достоверную
поверхность. При этом по-прежнему широко используются фотографические
материалы, планы, чертежи и рисунки (особенно в маленьких компаниях),
хотя все большее распространение получают различные методы оцифровки
объектов.


Три
неотъемлимых составных части трехмерного объекта. На первом этапе
объект представляет собой набор вершин (у куба их восемь), соединенных
многоугольниками. На втором этапе в изображении появляется перспектива,
а на третьем - становится видна текстура поверхности с деталями
Многие специалисты для оцифровки своих объектов используют, например,
сканер 8ft FaroArm - более совершенный вариант оригинального 3D-сканера,
созданного в начале 80-х годов. По сути, это контактный щуп, который
при помощи нескольких потенциометров, установленных на складной
арматуре с шарнирными соединениями, считывает информацию о том,
в каком месте находится головка, и преобразует эту информацию в
координаты X, Y и Z в трехмерном пространстве. Достаточно сделать
необходимое количество замеров, и сетка готова.
Устройство это довольно сложное, гораздо сложнее примитивных первоначальных
считывателей. В сканере применена система противовесов; он автоматически
учитывает изменения температуры и компенсирует соответствующие расширения
и сжатия материалов. Это портативное устройство может работать с
объектами вписывающимися в сферу диаметром до 3,65 м и имеет точность
до 0,3 мм.
Система
MicroScribe 3D компании Immersion Corporation позволяет построить
трехмерную модель оцифровав объект вручную по специальной нанесенной
на объект сетке
Существует аналогичная, но более дешевая, технология. Компания
Immersion Corporation, специализирующаяся на 3D-сканерах и являющаяся
лидером в области периферийных игровых устройств с обратной связью,
представляет 3D-сканеры нижнего уровня. Ее MicroScribe 3D имеет
рабочую сферу диаметром всего 1,27 м, зато стоит $3000.
Одно из основных преимуществ таких систем - высочайшая степень
контроля за процессом оцифровки со стороны оператора-модельщика.
Как и в случае применения технологии оцифровки движения (motion
capture), после оцифровки неподвижной модели неизбежно требуется
довольно трудоемкая дополнительная обработка, в ходе которой данные
сначала нужно вычистить, а затем привести в пригодную для работы
форму. Однако, тщательно спланировав исходную сетку, многие из этих
трудностей можно избежать. Сначала на исходный объект карандашом
наносятся контрольные линии; затем оператор-модельщик решает, где
к сетке нужно добавить деталей, а где следовать естественным изгибам
- все это в зависимости от назначения модели. Цель всех этих манипуляций
- добиться того, чтобы окончательная сетка была как можно более
рациональной.
В идеале нужно оцифровывать непосредственно тот объект, модель
которого строится. Когда это невозможно, часто вместо него используется
физический макет.
Конечно, самая передовая технология захвата статичных 3D-данных
- это технология лазерного сканирования. Побудительным толчком к
началу исследований в области оптических технологий послужили низкая
скорость и недостаточная точность контактных датчиков. Из трех основных
направлений, по которым могла бы развиваться эта технология (сканирование
по точкам, зонам и полосам), наилучшие результаты за самое короткое
время показала технология сканирования по полосам.
Ее суть заключается в том, что на поверхность модели проецируется
световая полоса, и ее положение записывается внешними видеокамерами.
Таким образом, по мере сканирования модели от одного края до другого,
выстраивается точный образ ее поверхности. Проблема заключается
в необходимости обрабатывать при этом огромный объем генерируемых
данных. Чтобы полностью отснять 3D-объект, необходимо сделать несколько
сканов. Сведение этих сканов в единую непрерывную модель, удаление
дублирующих данных и отсеивание ошибок (которые неизбежно возникают,
когда обрабатывается громадное количество точек, выражающееся семизначными
числами) - задача, конечно, непростая.
Лос-анджелесская компания Cyberware стала первой фирмой, выпустившей
систему такого рода на рынок в конце 80-х годов. Вслед за сканером
с прагматичным названием Head Scanner (в буквальном переводе "головной
сканер" или "сканер головы") в начале 90-х годов был выпущен Whole
Body Scanner - "сканер всего тела". Технология оказалась довольно
популярной, и в течение нескольких лет появилось довольно много
производителей подобных устройств. В конце концов, они эволюционировали
настолько, что стало возможным сканирование не только формы поверхности,
но и цвета (текстуры) за один проход. Работают эти устройства чрезвычайно
быстро и точно (например, сканирование головы занимает не более
15 секунд, и за это время генерируется около 250 тысяч опорных точек),
но по-прежнему остаются очень дорогими. Скажем, WB4 Body Scanner
компании Cyberware обойдется в 410 тысяч долларов, а расценки на
сканирование в специализированных бюро начинаются от двух тысяч
долларов за час.
Эта технология имеет и другие недостатки. Возникают проблемы с
отражающими поверхностями (что неудивительно), а также с выступами,
расщелинами и другими участками, где трудно отслеживать световую
полосу. Кроме того, поскольку процесс полностью автоматизирован,
оператор-модельщик оказывается выключенным из рабочего цикла, то
есть он не может приступить к работе до тех пор, пока не закончится
сканирование. В результате получаются иногда слишком громоздкие
сетки, для которых требуется большой объем дополнительной обработки.
Однако на рынке представлены и более дешевые сканеры, нижний уровень
цен которых составляет примерно 20 тысяч долларов. Специалисты большинства
компаний убеждены, что эти устройства достойны того, чтобы работать
над снижением их цен. Но даже если лазерные сканеры или контактные
датчики действительно когда-нибудь выйдут на массовый потребительский
рынок, перед пользователем все равно будет стоять все тот же вопрос:
"Строить или покупать?", то есть или тратить несколько недель на
то, чтобы найти или вылепить модель, отсканировать ее, а затем вычистить
полученные данные и упаковать их в приличную 3D-модель, или подобрать
в каталоге готовую? Судя по всему, расширение библиотек каркасных
моделей продолжится и дальше.
Визуализация
Отображение трехмерных объектов - очень трудоемкая задача, даже
если речь идет только о визуализации. Если же объект необходимо
еще и анимировать, компьютеру приходится выполнять такие вычисления
несколько десятков раз в секунду. А если объект не один, да еще
с многочисленными источниками света, дымками, туманностями и тому
подобными эффектами? Ведь подобные сцены сегодня встречаются почти
в каждой компьютерной игре.
Одна
из семи разновидностей модели лягушки, предлагаемых компанией Viewpoint
Основная часть функций отображения трехмерных объектов на плоском
экране при моделировании встроена сегодня прямо в операционную систему,
чтобы программистам не приходилось писать их самостоятельно. Это
делается посредством так называемых API (Application Programming
Interface) - обширных библиотек функций, упрощающих работу с 3D-объектами
и их перерисовку на экране. На PC родным API является Direct3D,
который (как часть DirectX) поставляется в комплекте с операционной
системой Windows 95/98. На компьютерах Mac эта роль отводится QuickDraw
3D.
Однако, помимо этого, существуют и сотни других 3D API, ориентированных
на выполнение различных задач: от сложного 3D-моделирования до простой
3D-игры. Для трехмерных игр важнейшим фактором является скорость:
чтобы игра была интересной, необходимо перерисовывать объекты на
экране как можно быстрее. В задачах трехмерного моделирования, напротив,
важно чтобы объекты перерисовывались как можно точнее. Поэтому в
таких программах окончательный просчет запускается редко - это очень
длительная процедура, а все построения приходится делать под управлением
все того же API.
Для ускорения отображения 3D-графики на экране изображения перерисовываются
в память на виртуальные экраны (кодовые буферы), аналогично снимкам
экранов в памяти компьютера. В одном из буферов может быть записана
базовая форма объекта, в другом - наложенная на него текстура, в
остальных - освещение, прозрачность, альфа-канал (проще говоря,
маска) и другие эффекты. Таким образом, перед выдачей объекта на
экран компьютер должен за один проход скомпилировать все необходимые
графические эффекты и сгенерировать изображение. Оборотная сторона
такого ускорения - колоссальные объемы необходимой оперативной памяти,
причем, чем выше разрешение экрана, тем больше памяти требуется
на такие буферы.
Окончательный
просчет и построение общей композиции сцены отнимают много времени,
поэтому большую часть элементов этой картинки лучше купить в готовом
виде в банке моделей - в результате сроки производства радикально
сократятся
Однако для окончательной визуализации изображения применяются сложные
программные решения, практически не использующие аппаратуры. Наиболее
известными пакетами для фотореалистичного, программируемого и интерактивного
просчета являются Mental Ray компании Mental Images и RenderMan
компании Pixar. Mental Ray имеет продвинутые решения для просчета
с использованием алгоритма трассировки луча (как известно, RenderMan
трассировку лучей не использует). Компания Mental Images производит,
по общему признанию, лучший алгоритм просчета по алгоритму трассировки
луча, который остается в то же время и самым быстрым, а также полностью
распределяемым по сети. Только RenderMan дает лучшее качество, чем
MentalRay, но для этого RenderMan нужно тщательно программировать.
Оба пакета имеют свои собственные библиотеки алгоритмов визуализации
и процедурных текстур, а, научившись писать свои собственные алгоритмы
(шейдеры), можно еще больше повысить коэффициент полезности этих
программ.
RenderMan, в свою очередь, является промышленным стандартом для
алгоритмов просчета и используется практически во всех проектах,
связанных с киноиндустрией.
Аппаратура
В последние годы практически во все графические карты стали встраиваться
3D-акселераторы, которые берут на себя большую часть работы центрального
процессора. На таких картах обычно устанавливается очень быстрый
специализированный процессор, дополнительный чип - 2D RAMDAC (цифроаналоговый
преобразователь) и комплект очень быстрой памяти. Сегодня типичная
карта имеет 8 МБ памяти, а на некоторых есть по 32 МБ и даже больше.
Поначалу 3D-акселераторы использовали 3D API, родные для тех платформ,
для которых они разрабатывались: на PC использовались акселераторы
DirectX, на Mac - QuickDraw 3D. Однако быстроразвивающаяся индустрия
компьютерных игр породила уйму новых API и соответствующих чипов-акселераторов.
Некоторые из них со временем исчезли с рынка, другие до сих пор
процветают. Производители аппаратных средств (таких, как 3Dfx) разработали
набор графических микросхем Voodoo (впоследствии ему на смену пришел
Voodoo2). Благодаря своей чудовищной скорости и относительно простому
для программирования API под названием Glaid, этот набор графических
микросхем завоевал чрезвычайную популярность как среди любителей
компьютерных игр, так и среди разработчиков и производителей графических
карт.
Однако для 3D-моделирования он не подходит, так как может обсчитывать
изображение только на полный экран, а не в окно. Кроме того, его
возможности ограничены всего лишь 16-разрядным цветом, сравнительно
небольшими текстурными картами и несложными моделями (для игр всего
этого вполне достаточно, поскольку здесь важнее всего скорость).
К счастью, в 1992 г. компания Silicon Graphics разработала потенциальную
систему и для профессиональных проблем - это язык описания графических
данных OpenGL. Он был разработан в виде 3D API для приложений высокого
уровня. Помимо возможности отображать объекты с текстурными картами
высокого разрешения, он позволяет точно просчитывать освещение сцен
и вводить в них туман, OpenGL обладает еще и кроссплатформенной
совместимостью. Кроме того, заложенные в нем процедуры обладают
достаточной скоростью для того, чтобы их можно было использовать
и в играх. Конечно, OpenGL не обеспечивает такой производительности,
как 3Dfx Glaid, но небольшие потери в скорости компенсируются той
легкостью, с которой этот API можно переносить с одной платформы
на другую и даже с одного графического акселератора на другой, так
как большинство из них при наличии соответствующих драйверов работают
с OpenGL.
Обычно, если 3D-акселератор имеет только аппаратный блок растеризации
(как правило, с текстурированием), он выполняет только последние
стадии просчета. Если имеется так называемое ядро подготовки треугольников
(Triangle Setup Engine), то ускоритель выполняет при обработке изображения
еще и триангуляцию. Ну, а если у него имеется еще и специализированный
геометрический процессор (Geometry Engine), то он берет на себя
все стадии обработки изображения.
Вообще говоря, сейчас принято выделять в 3D-акселераторе несколько
основных частей, характеристики которых дают базовое представление
о 3D-акселераторе, это: блок геометрии, блок растеризации и память,
включающая кадровый буфер (Frame buffer), буфер глубины (Z-буфер),
буфер шаблонов и специальную текстурную память (Texture memory).
Выбор акселератора
Если вы хотите подобрать себе 3D-акселератор нужно, прежде всего,
ознакомиться с профессиональной терминологией. Сложный мир трехмерной
графики породил массу терминов: Z-буфер, билинейная и трилинейная
фильтрация и др. К счастью, и здесь есть общий знаменатель - Frame
Rate, то есть скорость смены кадров - количество кадров, которые
карта может обрабатывать за одну секунду. Этот параметр зависит
от того, насколько сложные вещи отображаются на экране, и от сложности
моделей, однако многие производители называют средние скорости,
характерные для игр просто в качестве отправной точки.
Если у вас новая модель PC с портом AGP (Accelerated Graphics Port),
то вам нужна карта именно такого типа, поскольку она сможет взаимодействовать
с процессором и оперативной памятью вашего компьютера гораздо быстрее,
чем карта с интерфейсом PCI (Peripheral Component Interconnect).
И чем быстрее взаимодействуют эти узлы, тем быстрее графика отображается
на вашем дисплее. Помните, что 3D-программы страшно прожорливы:
им нужна большая оперативная память, поэтому покупать необходимо
карты с максимальным объемом оперативной памяти. Для профессионального
3D-моделирования и просчета можно было бы рекомендовать иметь на
карте память 32 МБ или больше. Кроме того, необходимо, чтобы карта
обеспечивала работу OpenGL, и чтобы к ней прилагался набор приличных
драйверов низкого уровня, поскольку сегодня в профессиональном трехмерном
мире именно этот API становится стандартом де-факто. В большинстве
3D-приложений и даже в некоторых играх в самом ближайшем будущем
будет, скорее всего, использоваться именно этот API.
В
последние годы 3D-акселератор (карта или процессор) стал такой же
важной деталью компьютера, как и центральный процессор. Без него
отображеие трехмерных объектов и работа с ними проходит мучительно
медленно
Основными способами, применяемыми для увеличения мощности 3D-ускорителей,
являются: увеличение скорости работы графического процессора и памяти
(повышение тактовой частоты), увеличение пропускной способности
интерфейса памяти, увеличение числа модулей обработки 3D-графики
и, наконец, применение геометрических ускорителей.
Увеличение скорости работы графического процессора за счет обыкновенного
повышения тактовой частоты является самым простым и, пожалуй, самым
дешевым способом увеличения скорости работы 3D-ускорителя, однако
этот путь сопряжен с проблемами технологического плана. Повышение
частоты работы неизбежно увеличивает энергопотребление, соответственно
и нагрев микросхемы. Принимая во внимание, что сложность микросхем
растет очень быстрыми темпами и число транзисторов, соответственно
и площадь самих микросхем, неуклонно возрастают, нельзя не увидеть,
что эта проблема встает сегодня с особой остротой, и уменьшение
ее влияния возможно только с переходом на 0,25 мкм технологию и
далее.
Повышение скорости работы памяти имеет значение в том случае, когда
скорость обработки графики намного превышает скорость передачи необходимых
для обработки данных. Учитывая глубокую конвейеризацию и детерминированность
всех процессов в 3D-графике, это достаточно эффективный путь, особенно
при наличии нескольких обрабатывающих модулей, имеющих общую шину
передачи данных. К тому же снимается проблема, связанная с наличием
быстрого RAMDAC, которому такеже нужен постоянный доступ к памяти.
Увеличение числа модулей обработки 3D-графики идет сейчас двумя
путями. Первый связан с увеличением числа модулей, отвечающих за
наложение текстур (обычно их используется два). Это помогает при
мультитекстурировании, когда каждый модуль накладывает одну из нескольких
текстур на объект. Другой путь - это простое наращивание числа самих
3D-ускорителей и/или геометрических процессоров. Компания Metabyte
сообщила в начале года о разработке технологии PGC, позволяющей
ставить практически любые 3D-акселераторы параллельно, чтобы каждый
ускоритель обрабатывал только свою часть изображения.
Установка на ускоритель геометрического процессора позволяет снизить
нагрузку на центральный процессор в части геометрической обработки
сцены и достичь более высоких скоростей обработки графики. В этом
случае центральный процессор практически не участвует в графической
обработке, и общая производительность определяется только скоростью
самого 3D-ускорителя. По заявлениям разработчиков, производительность
их геометрических процессоров на порядки превышает производительность
центрального процессора на специализированных графических операциях.
В заключение можно высказать предположение, что в недалеком будущем
появится самое разнообразное и исключительное по мощности аппаратное
и программное обеспечение для 3D-графики, значительно снизятся цены
на него. Ожидается буквально массовый выпуск недорогих 3D-акселераторов,
оборудованных геометрическим процессором, которые будут поддерживать
и большие текстуры, и компрессию, и аппаратный, причем 32-разрядный,
просчет. Однако не стоит расслабляться! В таких условиях особое
значение приобретают обучение и постоянное совершенствование технологий
применения нового оборудования и программ. При этом требования к
профессионализму аниматора не только не снижаются, а наоборот, возрастают.
Как говорил Джордж Лукас: "Работу над кинофильмом никогда нельзя
закончить, ее можно только прекратить".
Fahrenheit
Компании SGI и Microsoft работают над новым 3D API (Application
Programming Interface) под кодовым названием Fahrenheit. Цель данного
совместного проекта - соединить переработанные API OpenGL и
Direct 3D в единую кроссплатформенную 3D-архитектуру, которая позволит
разработчикам программного обеспечения писать программы для операционных
систем Windows и Unix. Идея состоит в том , чтобы использовать развитые
3D-функции OpenGL и доступность Direct 3D.
Создания API Fahrenheit приведет к тому, что сторонним фирмам станет
гораздо проще разрабатывать программное обеспечение и аппаратное
обеспечение, а у пользователей появится единое решение, как для
игр, так и для профессиональных приложений, таких, как CAD/CAM и
3D-моделирование. Будущие версии драйверов для уже существующих
наборов микросхем смогут извлекать выгоду из этого проекта, вызывая
подпрограммы непосредственно из операционной системы. В результате
карты-акселераторы станут дешевыми, а программное обеспечение более
совместимым. Поставки разработчикам различных компонентов программного
обеспечения в рамках проекта Fahrenheit начнуться в следующем году,
а приложения на его основе появится к концу 2000 года (хотя никакой
официальной даты пока назначено не было). Fahrenheit вряд ли потеснит
Voodoo на рынке компьютерных игр, но для профессионалов, то есть
для вас, он будет иметь огромное значение.
[дальше]