
| Процессоры | Системные платы | Видеосистема | Носители информации | Мультимедиа | Периферия | Коммуникации | Поиск по сайту |
Что такое 3D графика?
ВступлениеВопрос о том, что же является двигателем всей компьютерной индустрии, давно заботит многих пользователей. То ли это фирма Intel, которая, не переставая, выпускает и выпускает новые процессоры. Но кто тогда заставляет их покупать? Может, во всем виноват Microsoft, который непрерывно делает свои окна больше и краше? Да нет, можно ведь довольствоваться старыми версиями программ - тем более спектр их возможностей практически не изменяется. Вывод напрашивается сам собой - во всем виноваты игры. Да, именно игры стремятся все более и более уподобиться реальному миру, создавая его виртуальную копию, хотят все более мощных ресурсов.
Вся история компьютерной графики на PC является тому подтверждением. Вспомните, в начале были
тетрисы, диггеры, арканоиды. Вся графика заключалась в перерисовке небольших участков экрана,
спрайтов, и нормально работала даже на XT. Но прошли те времена. Взошла звезда симуляторов.
Назревало новое аппаратное решение. И решение это оказалось, в общем-то, лежащим на поверхности. Раз
пользователи хотят играть в трехмерном виртуальном мире, то процесс его создания (вспомним минуты
ожидания, проведенные за 3D Studio перед появлением очередной картинки) надо кардинально ускорить.
А раз центральный процессор с этой задачей справляется из рук вон плохо, было принято революционное
решение - сделать специализированный. А поскольку операционной системы на PC с текстурными окнами, уплывающими назад, в туман, пока нет, и не предвидится, весь аппарат трехмерной графики можно пока применить только к играм, что успешно делает все цивилизованное человечество. Модель
Для изображения трехмерных объектов на экране монитора требуется проведение серии процессов
(обычно называемых конвейером) с последующей трансляцией результата в двумерный вид. Первоначально,
объект представляется в виде набора точек, или координат, в трехмерном пространстве. Трехмерная система координат
определяется тремя осями: горизонтальной, вертикальной и глубины, обычно называемых, соответственно осями x, y и z.
Объектом может быть дом, человек, машина, самолет или целый 3D мир и координаты определяют положение вершин (узловых точек),
из которых состоит объект, в пространстве. Соединив вершины объекта линиями, мы получим каркасную модель, называемую
так из-за того, что видимыми являются только края поверхностей трехмерного тела. Каркасная модель
определяет области, составляющие поверхности объекта, которые могут быть заполнены цветом, текстурами и
освещаться лучами света.
![]() Рис. 1: Каркасная модель куба
Даже при таком упрощенном объяснении конвейера 3D графики становится ясно, как много требуется вычислений
для прорисовки трехмерного объекта на двумерном экране. Можно представить, насколько увеличивается объем требуемых вычислений
над системой координат, если объект движется.
![]() Рис. 2: Модель самолета с закрашенными поверхностями Роль APIПрограммируемый интерфейс приложений (API) состоит из функций, управляющих 3D конвейером на программном уровне, но при этом может использовать преимущества аппаратной реализации 3D, в случае наличия этой возможности. Если имеется аппаратный ускоритель, API использует его преимущества, если нет, то API работает с оптимальными настройками, рассчитанными на самые обычные системы. Таким образом, благодаря применению API, любое количество программных средств может поддерживаться любым количеством аппаратных 3D ускорителей. Для приложений общего и развлекательного направления, существуют следующие API:
Для профессиональных приложений, работающих под управлением WindowsNT доминирует интерфейс OpenGL.
Компания Autodesk, крупнейший производитель инженерных приложений, разработала свой собственный API,
называемый Heidi. Существование и доступность 3D интерфейсов, поддерживающих множество графических подсистем и приложений, увеличивает потребность в аппаратных ускорителях трехмерной графике, работающих в режиме реального времени. Развлекательные приложения, главный потребитель и заказчик таких ускорителей, но не стоит забывать и о прфессиональных приложениях для обработки 3D графики, работающих под управлением Windows NT, многие из которых переносятся с высокопроизводительных рабочих станций, типа Silicon Graphics, на PC платформу. Интернет приложения сильно выиграют от невероятной маневренности, интуитивности и гибкости, которые обеспечивает применение трехмерного графического интерфейса. Взаимодействие в World Wide Web будет гораздо проще и удобнее, если будет происходить в трехмерном пространстве. Графический ускорительРынок графических подсистем до появления понятия малтимедиа был относительно прост в развитии. Важной вехой в развитии был стандарт VGA (Video graphics Array), разработанный компанией IBM в 1987 году, благодаря чему производители видеоадаптеров получили возможность использовать более высокое разрешение (640х480) и большую глубину представления цвета на мониторе компьютера. С ростом популярности ОС Windows, появилась острая потребность в аппаратных ускорителях двумерной графики, чтобы разгрузить центральный процессор системы, вынужденный обрабатывать дополнительные события. Отвлечение CPU на обработку графики существенно влияет на общую производительность GUI (Graphical User Interface) - графического интерфеса пользователя, а так как ОС Windows и приложениям для нее требуется как можно больше ресурсов центрального процессора, обработка графики осуществлялась с более низким приоритетом, т.е. делалась очень медленно. Производители добавили в свои продукты функции обработки двумерной графики, такие, как прорисовка окон при открытии и свертовании, аппаратный курсор, постоянно видимый при перемещении указателя, закраска областей на экране при высокой частоте регенерации изображения. Итак, появился процессор, обеспечивающий ускорение VGA (Accelerated VGA - AVGA), также известный, как Windows или GUI ускоритель, который стал обязательным элементом в современных компьютерах. Внедрение малтимедиа создало новые проблемы, вызванные добавлением таких компонентов, как звук и цифровое видео к набору двумерных графических функций. Сегодня легко заметить, что многие продукты AVGA поддерживают на аппаратном уровне обработку цифрового видео. Следовательно, если на Вашем мониторе видео проигрывается в окне, размером с почтовую марку - пора установить в Вашей машине малтимедиа ускоритель. Малтимедиа ускоритель (multimedia accelerator) обычно имеет встроенные аппаратные функции, позволяющие масштабировать видеоизображение по осям x и y, а также аппаратно преобразовывать цифровой сигнал в аналоговый, для вывода его на монитор в формате RGB. Некоторые малтимедиа акселлераторы могут также иметь встроенные возможности декомпресси цифрового видео. Разработчики графических подсистем должны исходить из требований, частично диктуемых размерами компьютерного монитора, частично под влиянием GUI, и частмчно под влиянием графического процессора. Первичный стандарт VGA с разрешением 640х480 пикселов был адекватен 14" мониторам, наиболее распространенных в то время. Сегодня наиболее предпочтительны мониторы с размером диагонали трубки 17", благодаря возможности выводить изображения с разрешением 1024х768 и более. Основной тенденцией при переходе от VGA к малтимедиа ускорителям была возможность размещения как можно больше визуальной информации на мониторе компьютера. Использование 3D графики является логичным развитием этой тенденции. Огроммные объемы визуальной информации могут быть втиснуты в ограниченное пространство экрана монитора, если она представляется в трехмерном виде. Обработка трехмерной графики в режиме реального времени дает возможность пользователю легко оперировать представляемыми данными. Игровые двигатели (Games engines)
Первое правило компьютерных игр - нет никаких правил. Традиционно, разработчики игр
больше заинтересованы в крутой графике своих программ, чем следованию рекомендаций технарей. Не взирая на то,
что в распоряжении разработчиков имеется множество трехмерных API, например - Direct3D, некоторые
программисты идут по пути создания собственного 3D игрового интерфейса или двигателя.
Собственные игровые двигатели - один из путей для разработчиков добиться невероятной реалистичности
изображения, фактически на пределе возможностей графического программирования.
Нет ничего более желанного для разработчика, чем иметь прямой доступ к аппаратным функциям компонентов системы. Несколько известных разработчиков создали свои собственные игровые двигатели, работающие с оптимальным использованием аппаратных ускорителей графики, которые принесли им известность и деньги. Например, двигатели Interplay для Descent II и id Software для Quake, обеспечивают истинную трехмерность действия, используя наполную аппаратные функции 3D, если они доступны. Графика без компромисов
Разговоры, ведущиеся уже довольно долгое время, о перспективах применения трехмерной графики в таких
областях, как развлечения и бизнес, допредела подогрели интерес потенциальных пользователей, на рынке
уже появился новый тип продуктов. Эти новые технологические решения, совмещают в себе великолепную
поддержку 2D графики, соответствующую сегодняшним требованиям к Windows акселлераторам, аппаратную
поддержку функций 3D графики и проигрывают цифровое видео с требуемой частотой смены кадров.
Технология 3D-графики
Пусть нам все-таки удалось убедить Вас попробовать трехмерную графику в действии (если Вы до сих пор
не сделали это), и Вы решили сыграть в одну из трехмерных игр, предназначенных для применения
3D-видеокарты. Попробуем разобраться, какие же технические решения позволяют 3D-видеокартам передавать виртуальную действительность с такой реалистичностью. Каким образом изобразительным средствам PC удалось достигнуть уровня профессиональных студий, занимающихся трехмерной графикой. Часть вычислительных операций, связанных с отображением и моделированием трехмерного мира переложено теперь на 3D-акселератор, который является сердцем 3D-видеокарты. Центральный процессор теперь практически не занят вопросами отображения, образ экрана формирует видеокарта. В основе этого процесса лежит реализация на аппаратном уровне ряда эффектов, а также применение несложного математического аппарата. Попробуем разобраться, что же конкретно умеет графический 3D-процессор.
Возвращаясь к нашему примеру с симулятором гонок, задумаемся, каким образом достигается реалистичность
отображения поверхностей дороги или зданий, стоящих на обочине. Для этого применяется распространенный
метод, называемый текстурирование (texture mapping).
Очевидно, что когда поверхности текстурируются, необходим учет перспективы, например, при отображении
дороги с разделительной полосой, уходящей за горизонт. Перспективная коррекция необходима для того,
чтобы текстурированные объекты выглядели правильно. Она гарантирует, что битмэп правильно наложится
на разные части объекта - и те, которые ближе к наблюдателю, и на более далекие. При наложении текстур, в принципе, также можно увидеть швы между двумя ближайшими битмэпами. Или, что бывает чаще, в некоторых играх при изображении дороги или длинных коридоров заметно мерцание во время движения. Для подавления этих трудностей применяется фильтрация (обычно Bi- или tri-линейная). Билинейная фильтрация - метод устранения искажений изображения. При медленном вращении или движении объекта могут быть заметны перескакивания пикселов с одного места на другое, что и вызывает мерцание. Для снижения этого эффекта при билинейной фильтрации для отображения точки поверхности берется взвешенное среднее четырех смежных текстурных пикселов. Трилинейная фильтрация несколько сложнее. Для получения каждого пиксела изображения берется взвешенное среднее значение результатов двух уровней билинейной фильтрации. Полученное изображение будет еще более четкое и менее мерцающее.
Текстуры, с помощью которых формируется поверхность объекта, изменяют свой вид в зависимости от
изменения расстояния от объекта до положения глаз зрителя. При движущемся изображении, например, по
мере того, как объект удаляется от зрителя, текстурный битмэп должен уменьшаться в размерах вместе с
уменьшением размера отображаемого объекта. Для того чтобы выполнить это преобразование, графический
процессор преобразует битмэпы текстур вплоть до соответствующего размера для покрытия поверхности
объекта, но при этом изображение должно оставаться естественным, т.е. объект не должен деформироваться
непредвиденным образом.
Но вернемся в наш гоночный автомобиль. Сама дорога уже выглядит реалистично, но проблемы наблюдаются
с ее краями! Вспомните, как выглядит линия, проведенная на экране не параллельно его краю. Вот и у
нашей дороги появляются "рваные края". И для борьбы с этим недостатком изображения применяется
anti-aliasing.
Мы подходим к ключевому моменту функционирования всех 3D-алгоритмов. Предположим, что трек, по которому
ездит наша гоночная машина, окружен большим количеством разнообразных объектов - строений, деревьев,
людей. Z-буферизация при аппаратной реализации сильно увеличивает производительность. Тем не менее, z-буфер занимает большие объемы памяти: например даже при разрешении 640x480 24-разрядный z-буфер будет занимать около 900 Кб. Эта память должна быть также установлена на 3D-видеокарте.
Разрешающая способность z-буфера - самый главный его атрибут. Она критична для высококачественного
отображения сцен с большой глубиной. Чем выше разрешающая способность, тем выше дискретность
z-координат и точнее выполняется рендеринг удаленных объектов. Если при рендеринге разрешающей
способности не хватает, то может случиться, что два перекрывающихся объекта получат одну и ту же
координату z, в результате аппаратура не будет знать какой объект ближе к наблюдателю, что может
вызвать искажение изображения.
Кроме вышеперечисленных основ, трехмерные графические платы обычно имеют возможность воспроизведения некоторого количества дополнительных функций. Например, если бы Вы на своем гоночном автомобиле въехали бы в песок, то обзор бы затруднился поднявшейся пылью. Для реализации таких и подобных эффектов применяется fogging (затуманивание). Этот эффект образуется за счет комбинирования смешанных компьютерных цветовых пикселов с цветом тумана (fog) под управлением функции, определяющей глубину затуманивания. С помощью этого же алгоритма далеко отстоящие объекты погружаются в дымку, создавая иллюзию расстояния.
Реальный мир состоит из прозрачных, полупрозрачных и непрозрачных объектов. Для учета этого
обстоятельства, применяется alpha blending - способ передачи
информации о прозрачности полупрозрачных объектов. Эффект полупрозрачности создается путем
объединения цвета исходного пиксела с пикселом, уже находящимся в буфере.
Очевидно, что для создания реалистичной картины происходящего на экране необходимо частое обновление
его содержимого. При формировании каждого следующего кадра, 3D-акселератор проходит весь путь
подсчета заново, поэтому он должен обладать немалым быстродействием. Но в 3D-графике применяются и
другие методы придания плавности движению. Ключевой - Double Buffering.
В заключение обсуждения алгоритмов, применяемых в 3D-графических акселераторах, попробуем разобраться,
каким же образом применение всех эффектов по отдельности позволяет получить целостную картину.
3D-графика реализуется с помощью многоступенчатого механизма, называемого конвейером рендеринга.
Конвейер рендеринга может быть разделен на 2 стадии: геометрическая обработка и растеризация.
На первой стадии геометрической обработки выполняется преобразование координат (вращение, перенос и
масштабирование всех объектов), отсечение невидимых частей объектов, расчет освещения, определение
цвета каждой вершины с учетом всех световых источников и процесс деления изображения на более мелкие
формы. Для описания характера поверхности объекта она делится на всевозможные многоугольники. На второй стадии к изображению применяются все описанные эффекты в следующей последовательности: удаление скрытых поверхностей, наложение с учетом перспективы текстур (используя z-буфер), применение эффектов тумана и полупрозрачности, anti-aliasing. После этого очередная точка считается готовой к помещению в буфер со следующего кадра. Из всего вышеуказанного можно понять, для каких целей используется память, установленная на плате 3D-акселератора. В ней хранятся текстуры, z-буфер и буфера следующего кадра. При использовании шины PCI, использовать для этих целей обычную оперативную память нельзя, так как быстродействие видеокарты существенно будет ограничено пропускной способностью шины. Именно по этому для развития 3D-графики особенно перспективно продвижение шины AGP, позволяющее соединить 3D-чип с процессором напрямую и тем самым организовать быстрый обмен данными с оперативной памятью. Это решение, к тому же, должно удешевить трехмерные акселераторы за счет того, что на борту платы останется лишь немного памяти собственно для кадрового буфера. ЗаключениеПовсеместное внедрение 3D-графики вызвало увеличение мощности компьютеров без какого-либо существенного увеличения их цены. Пользователи ошеломлены открывающимися возможностями и стремятся попробовать их у себя на компьютерах. Множество новых 3D-карт позволяют пользователям видеть трехмерную графику в реальном времени на своих домашних компьютерах. Эти новые акселераторы позволяют добавлять реализм к изображениям и ускорять вывод графики в обход центрального процессора, опираясь на собственные аппаратные возможности. Хотя в настоящее время трехмерные возможности используются только в играх, думается, деловые приложения также смогут впоследствии извлечь из них выгоду. Например, средства автоматизированного проектирования уже нуждаются в выводе трехмерных объектов. Теперь создание и проектирование будет возможно и на персональном компьютере благодаря открывающимся возможностям. Трехмерная графика, возможно, сможет также изменить способ взаимодействия человека с компьютером. Использование трехмерных интерфейсов программ должно сделать процесс общения с компьютером еще более простым, чем в настоящее время. |
||||||
| При подготовке материала использовалась информация из Diamond White Papers | ||||||
| Комментарии? Поправки? Дополнения? pavel@ixbt.com |

| Процессоры | Системные платы | Видеосистема | Носители информации | Мультимедиа | Периферия | Коммуникации | Поиск по сайту |
Copyright (c) by iXBT, 1998. Produced by pavel@ixbt.com & gavric@ixbt.com Дизайн (с) 1998 студия РусАрт |