Операционная система Windows


 

Меню

Реклама


Что такое 3d графика?

Вопрос о том, что же является двигателем всей компьютерной индустрии, давно тревожит многих пользователей. То ли это фирма Intel, что, не перестаючи, выпускает и выпускает новые процессоры. Но кто тогда вынуждает их покупать? Может, во всем виноватый Microsoft, что беспрестанно делает свои окна больше и краше? Так нет, можно ведь удовлетворяться старыми версиями программ - тем более спектр их возможностей практически не изменяется. Вывод напрашивается сам собой - во всем виноватые игры. Да, именно игры стремятся все более и более уподобиться реальному миру, создавая его виртуальную копию, хотят все более могучих ресурсов.

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

С выходом таких игр, как F19, Formula 1 и т. п., в которых приходилось уже перемалевывать весь экран, предварительно заготавливая его в памяти, всем нам пришлось обзавестись, по крайней мере, 286 процессором. Но прогресс на этом не остановился. Желание уподобить виртуальный мир в игре реальному миру усилилось, и появился Wolf 3d.

Это, можно сказать, первая 3D-гра, в которой был смоделирован який-ниякий, но все-таки реалистичный мир. Для его реализации пришлось использовать верхнюю более 640 Кб память и загнать программу в защищенный режим. Для полноценной игры пришлось установить процессор 80386. Но и мир Wolf 3d страдал недостатками. Хотя стены и были не просто одноцветными прямоугольниками, но для их зафарбування использовалась текстура с небольшим разрешением, потому поверхности выглядели прилично лишь на расстоянии. Конечно, можно было пойти по пути наращивания разрешения текстуры, вспомним, например, DOOM. Тогда нам пришлось опять перейти на более новый процессор и увеличить количество памяти. Правда, все ровно, хотя изображение и улучшилось, но ему были присущи все те же недостатки. Да и плоские объекты и монстры - кому это интересно.

Здесь то и взошла звезда Quake. В этой игре был применен революционный подход - z-буфер, который позволил прибавить объемность всем объектам. Однако вся игра все ровно работала в невысоком разрешении и не отличалась высокой реалистичностью.

Назревало новое аппаратное решение. И решение это оказалось, вообще же, что лежит на поверхности. Раз пользователи хотят играть в трехмерном виртуальном мире, то процесс его создания вспомним минуты ожидания, проведенные за 3d Studio перед появлением дежурной картинки нужно кардинально ускорить. А раз центральный процессор с этой задачей производится из рук совсем плохо, было принято революционное решение - сделать специализированный.

Здесь то и вылез производитель игровых автоматов 3dfx, что сделал эту сказку прошлым с помощью своего графического процессора Voodoo. Человечество предприняло еще один шаг в виртуальный мир.

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

Модель

Для изображения трехмерных объектов на экране монитора нужно проведение серии процессов обычно називаних конвейером со следующей трансляцией результата в двумерный вид. Сначала, объект представляется в виде набора точек, координат ли, в трехмерном пространстве. Трехмерная система координат определяется тремя осями: горизонтальной, вертикальной и глубины, обычно називаних, соответственно осями x, в и z. Объектом может быть дом, человек, машина, самолет ли целый 3d мир и координаты определяют положение вершин узловых точек, из которых состоит объект, в пространстве. Соединив вершины объекта линиями, мы одержимо каркасную модель, називану так из-за того, что видимыми являются только края поверхностей трехмерного тела. Каркасная модель определяет области, которые составляют поверхности объекта, которые могут быть заполнены цветом, текстурой и освещать лучами света.


рис. 1: Каркасная модель куба

Даже при таком упрощенном объяснении конвейера 3d графики становится ясно, как много нужно вычислений для прорисовки трехмерного объекта на двумерном экране. Можно представить, насколько увеличивается объем необходимых вычислений над системой координат, если объект двигается.


рис. 2: Модель самолета с закрашенными поверхнями

Роль Api

Програмувальний интерфейс дополнений API состоит из функций, управляющих 3d конвейером на программном уровне, но при этом может использовать преимущества аппаратной реализации 3d, в случае наличия этой возможности. Если имеется аппаратный ускоритель, API использует его преимущества, если нет, то API работает с оптимальными настройками, рассчитанными на сами обычные системы. Таким образом, благодаря приложению API, любое количество программных средств может поддерживаться любым количеством аппаратных 3d ускорителей.

Для дополнений общего и развлекательного направления, существуют следующие API:

    Microsoft Direct3d Criterion Renderware Argonaut Brender Intel 3dr

Компания Apple продвигает свой собственный интерфейс Rave, созданный на основе их собственного API Quickdraw 3d.

Для профессиональных дополнений, которые работают под управлением WINDOWSNT доминирует интерфейс OPENGL. Компания Autodesk, наибольший производитель инженерных дополнений, разработала свой собственный API, називаний Heidi.
Свои API разработали и такие компании, как Intergraph - RENDERGL, и 3dfx - Glide.

Существование и приступнисть 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 и в, а также аппаратно превращать цифровой сигнал в аналоговый, для вывода его на монитор в формате 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 графики и проигрывают цифровое видео с необходимой частотой изменения кадров.
В принципе, эти продукты можно смело отнести к новому поколению графических подсистем, которые обеспечивают графику без компромиссов, которые занимают достойное место стандартного оборудования в настольных вычислительных системах.
Среди представителей нового поколения можно назвать, как пример, что выплывают продукты:

процессор
    Ticket-to-ride компании number Nine Visual Technologies серия процессоров VIRGE компании s3 Inc. процессор Riva128, разработанный совместно компаниями sgs Thomson и nvidia

Технология 3D-графики

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

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

Вы и когда-то принимали участие в подобных гонках, но впервые изображение будет поражать Вас исключительным реализмом, вынуждая поверить в действительность что происходит. Горизонт, вместе с изъятыми объектами, тонет в утренней дымке. Дорога выглядит чрезвычайно ровно, асфальт являет собой не набор грязно-сирих квадратов, а однотонное покрытие, с нанесенной дорожной разметкой. Деревья уздовж дорогие действительно имеют лиственные кроны, в которых, кажется, можно различить отдельные письма. От всего екрана в целом создается впечатление как от качественной фотографии с реальной перспективой, а не как от жалкой попытки смоделировать реальность.

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

Часть вычислительных операций, связанных с отображением и моделированием трехмерного мира переведено теперь на 3D-акселератор, который является сердцем 3d-видеокарты. Центральный процессор теперь практически не занят вопросами отображения, обид екрана, формирует видеокарта. В основе этого процесса лежит реализация на аппаратном уровне ряда эффектов, а также приложение несложного математического аппарата. Попробуем разобраться, что же конкретно умеет графический 3D-процесор.

Возвращая к нашему приклада с симулятором гонок, задумаемся, каким образом достигается реалистичность отображения поверхностей или дороги домов, которые стоят на обочине. Для этого применяется распространенный метод, називаний текстурирование <а href="ixbt.com/video/3dterms.html#q39">Texture mapping.

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

Очевидно, что когда поверхности текстурируются, необходим учет перспективы, например, при отображении дороги с разделительной полосой, которая идет за горизонт. Перспективная коррекция необходима для того, чтобы текстурированные объекты выглядели правильно. Она гарантирует, что битмеп правильно наложится на разные части объекта - и те, которые ближе к наблюдателю, и на более далеких.

Коррекция с учетом перспективы очень трудоемкая операция, потому нередко можно встретить не совсем верную ее реализацию.

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

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

Трехлинейная фильтрация немного сложнее. Для получения каждого пиксела изображение берется взвешенное среднее значение результатов двух уровней билинейной фильтрации. Полученное изображение будет еще более четко и менее мерцающее.

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

Для того во избежание непредвиденных изменений, большинство управляющей графики процессов создают серии передфильтрованих битмепов текстуры с уменьшенным разрешением, этот процесс называется <а href="ixbt.com/video/3dterms.html#q25">Mip mapping. Потом, графическая программа автоматически определяет, какую текстуру использовать, основываясь на деталях изображения, что уже выведено на экран. Соответственно, если объект уменьшается в размерах, размер его текстурного битмепа тоже уменьшается.

Но вернемся в наш гоночный автомобиль. Сама дорогая уже высматривает реалистично, но проблемы наблюдаются с ее краями! Вспомните, как выглядит линия, проведенная на экране не параллельно его краю. Вот и у нашей дороги появляются рваные края. И для борьбы с этим недостатком изображения применяется <а href="ixbt.com/video/3dterms.html#q6">Anti-aliasing.

Рваны краи

Уровни краи

Это способ обработки интерполяции пикселов для получения более четких краев границь изображения объекта. Больше всего часто используемая техника - создание плавного перехода от цвета или линии края к цвету фона. Цвет точки, которая лежит на граници объектов определяется как среднее цветов двух предельных точек. Однако в некоторых случаях, побочным эффектом anti-aliasing является смазывание blurring краев.

Мы подходим к ключевому моменту функционирования всех 3D-алгоритмив. Допустимо, что трек, по которому ездит наша гоночная машина, окружен большим количеством разнообразных объектов - зданий, деревьев, людей.

Здесь перед 3D-процесором встает главная проблема, как определить, которые из объектов находятся в области видимости, и как они освещены. Причем, знать, что очевидно в данный момент, недостаточно. Необходимо иметь информацию и о взаимном расположении объектов. Для решения этой задачи применяется метод, називаний <а href="ixbt.com/video/3dterms.html#q44">Z-буферизация. Это самый надежный метод удаления спрятанных поверхностей. В так називаному z-буфери сохраняются значения глубины всех пикселей z-координати. Когда рассчитывается рендерится новый пиксел, его глубина сравнивается со значениями, сохраненными в <а href="ixbt.com/video/3dterms.html#q43">Z-буфере, а конкретнее с глубинами уже срендеренных пикселов с теми же координатами x и в. Если новый пиксел имеет значение глубины больше какого-либо значения в z-буфери, новый пиксел не записывается в буфер для отображения, если меньше - то записывается.

Z-буферизация при аппаратной реализации сильно увеличивает производительность. Однако, z-буфер занимает большие объемы памяти: например даже при разрешении 640x480 24-разрядный z-буфер будет занимать около 900 Кб. Эта память должна быть также установлена на 3d-видеокарте.

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

Кроме перечисленных выше основ, трехмерные графические платы обычно имеют возможность воссоздания некоторого количества дополнительных функций. Например, если бы Вы на своем гоночном автомобиле въехали бы в песок, то обзор бы затруднился пылью, которая поднялась. Для реализации таких и подобных эффектов применяется <а href="ixbt.com/video/3dterms.html#q171">Fogging затуманивание. Этот эффект образуется за счет комбинирования смешанных компьютерных цветовых пикселов с цветом тумана <а href="ixbt.com/video/3dterms.html#q17">Fog под управлением функции, которая определяет глубину затуманивания. С помощью этого же алгоритма далеко отдаленные объекты погружаются в дымку, создавая иллюзию расстояния.

Реальный мир состоит из прозрачных, полупрозрачных и непрозрачных объектов. Для учета этого обстоятельства, применяется <а href="ixbt.com/video/3dterms.html#q4">Alpha blending - способ передачи информации о прозрачности полупрозрачных объектов. Эффект полупрозрачности создается путем объединения цвета исходного пиксела из пикселом, что уже находится в буфере.
В итоге цвет точки является комбинацией цветов переднего и заднего плана. Конечно, коэффициент alpha имеет нормализованное значение от 0 до 1 для каждого цветного пиксела. Новый пиксел = alphaколир пиксела А + 1 - alphaколир пиксела В.

Очевидно, что для создания реалистичной картины необходимо частое возобновление, которое происходит на экране, его содержанию. При формировании каждого следующего кадра, 3D-акселератор проходит весь путь подсчета заново, потому он повинен иметь достаточно большое быстродействие. Но в 3D-графику применяются и другие методы придания плавности движения. Ключевой - <а href="ixbt.com/video/3dterms.html#q15">Double Buffering.

Представьте себе старый трюк аниматоров, что рисовали на уголках стопки бумаги персонаж мультику, со слегка изменяемым положением на каждом следующем письме. Пролистав всю стопку, отгибая уголок, мы увидим плавное движение нашего героя. Практически такой же принцип работы имеет и Double Buffering в 3d анимации, то есть следующее положение персонажа уже нарисовано, до того, как текущая страница будет пролистана. Без приложения двойной буферизации изображение не будет иметь необходимую плавность, то есть будет прерывистым. Для двойной буферизации нужно наличие двух областей, зарезервированных в буфере кадров трехмерной графической платы; обе области должны отвечать размеру изображения, выведенного на экран. Метод использует два буфера для получения изображения: один для отображения картинки, другой для рендеринга. В то время как отображается содержание одного буфера, в другом происходит рендеринг. Когда дежурный кадр обработан, буферы переключаются меняются местами. Таким образом, что играет все время видит отличную картинку.

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

Приложение конвейерной обработки позволяет еще ускорить выполнение расчетов за счет того, что вычисления для следующего объекта могут быть начаты к окончанию вычислений предыдущего.

Конвейер рендеринга может быть разделен на 2 стадии: геометрическая обработка и растеризация.

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

На второй стадии к изображению применяются все описаны эффекты в следующей последовательности: удаление спрятанных поверхностей, наложения с учетом перспективы текстуры, используя z-буфер, приложение эффектов тумана и полупрозрачности, anti-aliasing. После этого дежурная точка считается готовой к помещению в буфер из следующего кадра.

Из всего вышеуказанных можно понять, для каких целей используется память, установленная на плате 3D-акселератори. В ней сохраняются текстура, z-буфер и буферы следующего кадра. При использовании шины PCI, использовать для этих целей обычную оперативную память нельзя, потому что быстродействие видеокарты существенно будет ограничено пропускной способностью шины. Именно по этому для развития 3D-графики особенно перспективн продвижение шины AGP, которая позволяет соединить 3d-чип с процессором прямо и тем самым организовать быстрый обмен данными с оперативной памятью. Это решение, к тому же, должны удешевить трехмерные акселераторы за счет того, что на борти платы останется лишь немного памяти собственно для кадрового буфера.

Висновок

Повсеместное внедрение 3D-графики вызывало увеличение мощности компьютеров без какого-либо существенного увеличения их цены. Пользователи потрясены возможностями, которые открываются, и стремятся попробовать их у себя на компьютерах. Множество новых 3D-карт позволяют пользователям видеть трехмерную графику в реальном времени на своих домашних компьютерах. Эти новые акселераторы позволяют добавлять реализм к изображениям и убыстрять вывод графики в обход центрального процессора, опирая на собственные аппаратные возможности.

Хотя в настоящее время трехмерные возможности используются только в играх, кажется, деловые дополнения также смогут впоследствии вытянуть из них выгоду. Например, средству автоматизированного проектирования уже нуждаются в выводе трехмерных объектов. Теперь создание и проектирование будет возможно и на персональном компьютере благодаря возможностям, которые открываются. Трехмерная графика, возможно, сможет также изменить способ взаимодействия человека с компьютером. Использование трехмерных интерфейсов программ должно сделать процесс общения с компьютером еще более простым, чем в данное время.

при подготовке материала использовалась информация из <а href="diamondmm.com">Diamond White Papers