Базы данныхИнтернетКомпьютерыОперационные системыПрограммированиеСетиСвязьРазное
Поиск по сайту:
Подпишись на рассылку:

Назад в раздел

Трехмерная графика: от альфа до Z-буферизации.

Трехмерная графика: от альфа до Z-буферизации

Трехмерная графика: от альфа до Z-буферизации


Рон М. Бринкманн


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


1. Трехмерные приложения

Хотя умение быстро воспроизводить изображения трехмерных
твердых тел не является очень насущной необходимостью, некото-
рые прикладные программы извлекают из него большую выгоду. Это,
в частности, проектирование механических деталей и составление
произвольных трехмерных чертежей. Труд проектировщика становит-
ся более производительным, если он может быстро и отчетливо
представлять макет в трех измерениях. Быстрая система воспроиз-
ведения трехмерных изображений позволяет рассматривать модели с
произвольного направления и расстояния, эффектно вращать объект
в пространстве. Если проектировщик желает изменить свойства
своей модели (цвет, освещение и т.д.), система может быстро от-
разить новый результат. Хотя эти возможности в ограниченном
масштабе есть и на PC, они обычно реализованы при помощи специ-
альной аппаратуры, которая управляется специализированными,
нестандартными обращениями, в противоположность рабочим станци-
ям, где большинство графических подсистем применяют промышлен-
ные стандарты, такие как PHIGS и GKS.
Чтобы оценить возможности, необходимые для трехмерной фун-
кциональности, сравним архитектуру графических рабочих станций
и современных PC с VGA монитором. При работе с трехмерными мо-
делями, вы в первую очередь должны уметь преобразовывать инфор-
мацию об объекте из мировых координат к двухмерному представле-
нию, которое появится на экране. В системе, не имеющей специа-
лизированных аппаратных средств для работы с трехмерной графи-
кой, это преобразование должно выполняться центральным процес-
сором, следовательно может занимать недопустимо много времени.
С другой стороны, графические рабочие станции обычно имеют
--------------------

Ron M.Brinkmann - технический консультант проекта Appolo
Systems Division фирмы Hewllett Packard.
- 2 -
Трехмерная графика


специализированые процессоры плавающей точки, или процессоры
преобразования изображений (transform engine) (см. рисунок).
Предназначенные специально для преобразования трехмерного пред-
ставления изображений в двухмерное, они будут существенно уве-
личивать скорость таких преобразований. Однажды полученная, эта
информация сохраняется в памяти экрана графической подсистемы
или в буфере изображения. Система преобразования изображений
непрерывно сканирует буфер изображения, определяя, какие точки
нужно подсвечивать на экране.


Традиционная конфигурация
графических рабочих станций

------------¬ ------------¬ --------¬ ------------¬
¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦
¦Центральный¦Системная¦ Transform ¦ ¦ Видео ¦ ¦ Видео ¦на
¦ процессор ¦=========¦ engine ¦=¦ буфер ¦=¦ конвертор ¦==>
¦ ¦ шина ¦ ¦ ¦ ¦ ¦ ¦TV
L------------ L------------ L-------- L------------


Архитектура графической обработки варьируется от системы к
системе. При наличии достаточно быстрого центрального процессо-
ра в конфигурации многопроцессорной системы, преобразования
представления объекта могут выполнятся центральным процессором,
вместо использования процессора преобразования изображений
(transform engine). Маловероятно, что специализированная аппа-
ратура графических преобразований когда-нибудь станет широко
доступной пользователям PC, - нет достаточного количества прик-
ладных программ, требующих такой поддержки. Кроме того, с рос-
том производительности универсальных процессоров отпадает необ-
ходимость в специализированных средствах. Это действительно
так, если (как и для современных рабочих станций) многопроцес-
сорные PC станут общепринятыми. В отличие от средств трехмерной
графики, экранная память для PC более существенна.


2. Разрешающая способность экрана

Разрешающая способность экрана - это количество адресуемых
точек на экране или пикселов. В отличие от VGA, предлагающего
640 x 480, или около 300 тысяч пикселов, большинство развитых
графических рабочих станций предлагают по крайней мере миллион
точек, как правило 1280 x 1024. Дисплеи с разрешением выше, чем
у VGA, существуют и для PC (например, SuperVGA и TIGA), но они
пока дороги и нестандартизованы. Поэтому пока мало прикладных
программ, использующих преимущества высокой разрешающей способ-
ности этой аппаратуры.
Графические рабочие станции не только имеют более высокое
разрешение, но зачастую также дополнительные неотображаемые
банки экранной памяти, так называемую скрытую память (hidden
memory). Эта специализированная возможность обеспечивает сверх-
- 3 -
Трехмерная графика


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


3. Глубина экрана

Менее известный термин, глубина экрана (screen depth), от-
носится к количеству бит информации, описывающих один пиксел.
Общепринятый способ определения глубины экрана использует коли-
чество доступных экранных плоскостей (plane). Так, система с
восемью битами для одного пиксела - это система с восемью плос-
костями. Применение многоплоскостных систем расширяется на про-
тяжении нескольких последних лет. Некоторые системы описывают
каждый пиксел десятками битов.

-----------T----------¬
--+--------T-+--------¬ ¦
--+--------T-+--------¬ ¦ ¦
--+--------T-+--------¬ ¦ ¦ ¦
--+--------T-+--------¬ ¦ ¦ ¦ ¦
--+--------T-+--------¬ ¦ ¦ ¦ +--
--+--------T-+--------¬ ¦ ¦ ¦ +--
--+--------T-+--------¬ ¦ ¦ ¦ +--
¦ ¦ ¦ ¦ ¦ +--
¦ Видимая ¦ Скрытая ¦ ¦ +-- Количество бит
¦ память ¦ память ¦ +-- на 1 пиксел
¦ ¦ +--
L----------+-----------

Первопричина роста глубины экрана состоит в расширении па-
литры доступных цветов. Единственный бит для пиксела определяет
только будет (1) или не будет (0) точка подсвечена на экране.
Восемь бит для пиксела дают 2**8 вариантов, то есть 256 цветов.
Такая конфигурация обычно называется псевдо-цветной, из-за то-
го, что глаз может легко улавливать разницу между смежными цве-
тами палитры. 24 цветовые плоскости - это граница, при которой
количества цветов оказывается достаточным для точного представ-
ления всего видимого диапазона. Поэтому она известна как систе-
- 4 -
Трехмерная графика


ма с действительными цветами, способная отображать около 16
миллионов вариантов цветов.
Определенная конфигурация буферов изображения как правило
не фиксирована. Зачастую вы можете пожертвовать более высоким
разрешением для расширения палитры. К примеру, 640 x 480 точек
при глубине в 24 плоскости потребуют такого же объема памяти,
как и 1024 x 900 при 8 плоскостях. Ряд графических плат могут
работать более чем в одном режиме. Что-либо большее, чем 24
плоскости - большая редкость для PC. Опять-таки, не существует
промышленных стандартов PC для таких возможностей, и только
считанные пакеты могут использовать все преимущества.


4. Двойная буферизация

Следующий метод, требующий использования дополнительной
экранной памяти, обычно называют двойной буферизацией (double
buffering). Он применяется для обеспечения плавности движения в
быстро меняющихся изображениях (например, при мультипликации).
Даже в простых моделях с быстродействующим аппаратным обеспече-
нием непрерыное перерисовывание объекта может вызвать заметное
мерцание экрана. Оно вызвано необходимостью всякий раз очищать
дисплей перед тем, как система начнет рисовать объект в новой
позиции. Чтобы устранить этот дефект, двойная буферизация поз-
воляет системе рисовать образ в неотображаемой части экранной
памяти, а затем переключать отображение на эту часть. В этом
случае обьект немедленно воспроизводится в новой позиции.
Фактически, этот метод переопределяет некоторое количество
плоскостей (вторичный буфер) как скрытую память и затем меняет
местами два буфера так, что первичный буфер становится неотоб-
ражаемым. Если вы работаете с псевдо-цветными изображениями,
вам нужно два блока памяти глубиной по 8 плоскостей, всего 16
плоскостей, чтобы использовать этот метод. Если вы пожелаете
иметь двухбуферное изображение с действительными цветами, пона-
добится уже 48 плоскостей. Когда формирование вторичного изоб-
ражения завершено, вы сообщаете системе об изменении участка
отображаемой памяти, и следующий кадр изображения возникнет на
экране. Заметим, что такой подход не позволяет вам рисовать бу-
феры быстрее, он только дает ощущение более реалистичного дви-
жения. Пока существует только теоретическая возможность генери-
ровать двойные псевдо-цветные изображения для PC, и слишком ма-
ло программных средств ее реализуют.
- 5 -
Трехмерная графика


5. Z-буферизация


Чтобы понять механизм Z-буферизации, известный также под
более описательным, но менее подходящим термином "глубин-
но-обусловленный алгоритм замещения пикселов" (the
depth-conditional replace-pixel algorithm), вы дожны немного
ознакомится с механизмом моделирования трехмерных объектов на
графических рабочих станциях.
Объект создается как совокупность смежных многогранников,
которая кажется твердым телом. Даже гладкие изогнутые поверх-
ности (например, сферы) будут на самом деле представлены нес-
колькими видами многогранников. Чем меньше части, на которые
дробится изогнутая поверхность, тем более гладкой она будет ка-
заться. (После учета других факторов, программа воспроизведения
изображения будет использовать специальные методы моделирования
освещения и полутонов, чтобы устранить плоский вид). До этого
момента не делалось попыток определить, какие пикселы или мно-
гогранники визуально накрыты другими.
Процессор преобразования изображений (transform engine)
переводит модель из трехмерной системы координат в двухмерные
координаты экрана; но каждый пиксел имеет еще и связанную с ним
глубину (или Z-значение) наряду с (x,y)-координатами и значени-
ем цвета. Результатом этого является список накладывающихся
двухмерных многогранников, которые расположены в расчетной
плоскости видеоэкрана. Список должен быть упорядочен по глуби-
не. Графические рабочие станции, разработанные для моделирова-
ния твердых тел, например Appolo DN 4500DVS, HP 9000 Series 835
TurboSRX, Silicon Graphics Personal Iris, имеют специальную ап-
паратную поддержку для выполнения этой работы. Другие системы
должны выполнять сортировку этого списка как часть прикладной
программы, только в этом случае многогранники будут нарисованы
в такой последовательности, которая гарантирует, что более уда-
ленные многогранники не накроют более близкие. Существует много
алгоритмов такой сортировки, но для моделей с большим числом
многогранников будет затрачено много времени. Более простой ме-
тод - сохранить значение глубины каждого пиксела в специальном
месте памяти, известном как Z-буфер.


6. Удаление невидимых поверхностей

Получение списка многогранников - предварительная стадия в
процессе удаления невидимых поверхностей. Программа моделирова-
ния твердого тела обходит список двухмерных многогранников, об-
рабатывая каждый пиксел соответствующего изображения. Если
Z-значение пиксела больше соответствующего Z-значения, то он
находится за существующим пикселом (относительно человека, си-
дящего за дисплеем) и, следовательно, не отображается. Если же
его Z-значение сигнализирует о том, что пиксел находится перед
существующим, он отображается. В результате цвет пиксела уста-
- 6 -
Трехмерная графика


навливается в соответствии с только что оцененным пикселом, а
новое Z-значение начинает отражать новую глубину. При этом обь-
екты на экране появляются в том порядке, в котором программа
воспроизведения изображения обрабатывает список. В итоге появ-
ляется изображение, визуально совпадающее с оригиналом.
Сколько дополнительной экранной памяти вам понадобится,
чтобы должным образом представить все значения глубины? Восемь
бит для одного пиксела в Z-буфере дает 256 значений глубины.
Для простых моделей этого будет достаточно. Непрактично предс-
тавлять каждое возможное значение глубины. Сначала необходимо
установить диапазон Z-значений для данного объекта. Если обра-
батываемый трехмерный объект имеет, например, площадь около 5
сантиметров, то безопасный диапазон глубины равен 10 сантимет-
рам. Восемь бит Z-буфера позволяют разбить этот диапазон на 256
значений, то есть получить приращение глубины около трети мил-
лиметра. Ошибки округления могут привести к неправильному отоб-
ражению нескольких пикселов, но в основном представление будет
очень точным.
Современные развитые графические рабочие станции предагают
значительно большие буфера - до 32 бит, позволяющие вам эффек-
тивно использовать более 4 биллионов различных градаций глуби-
ны. В некоторых случаях необходима и такая точность.
Общее заблуждение состоит в том, что модель большего объе-
ма, требует больший Z-буфер. Это не всегда справедливо, особен-
но если все элементы выполнены в больших масштабах. Проблемы
возникают, когда нужно работать с моделями, имеющими как боль-
шие, так и очень малые значения глубины.
Рассмотрим модель, состоящую из двух мелких объектов, сое-
диненных 50-метровым цилиндром. Допустим, что необходима точ-
ность глубины по крайней мере в полмиллиметра, чтобы точно
отобразить мелкие объекты. Тогда нужно разделить расстояние в
50 метров на это приращение, что даст более 100 тысяч различных
Z-значений, или, по крайней мере, 17-битовый Z-буфер. Если вы
рассматриваете некоторые современные модели (например, косми-
ческие станции, компоненты которых варьируются от маленьких
болтиков до громадных солнечных батарей), важность точности
глубины существенно возрастает. К счастью, вам не обязательно
дважды тратить память на такую громоздкую Z-буферизацию, если
вы используете двойную буферизацию образа. Как только изображе-
ние нарисовано в одном из буферов, память Z-буфера можно ис-
пользовать для вторичного буфера.


7. Альфа-буферизация

Тогда как Z-буферизация позволяет сохранять значения глубины
пиксела, альфа-буферизация - метод, используемый для определе-
ния коэффициента прозрачности пиксела. Он также известен как
"незаметный переход оттенка в оттенок" (blending). 256 вариан-
тов для коэффициентов прозрачности при использовании восьми би-
- 7 -
Трехмерная графика


тов для альфа-буферизации обычно оказывается более, чем доста-
точно. Значение альфа, равное 255, может говорить о том, что
объект непрозрачный, или светонепроницаем. Это означает, что
пиксел, находящийся ближе к зрителю, будет полностью закрывать
все остальные за ним.
Рассмотрим значение альфа, равное 200. Тогда пиксел проз-
рачен примерно на 22 процента. Это означает, что новый пиксел,
который необходимо нарисовать, получает 78 процентов своего
цвета и 22 процента от ближайшего меньшего по Z-значению пиксе-
ла. Очевидно, что объект, прозрачный на 100 процентов, не рису-
ется.
На самом деле метод альфа-буферизации не моделирует полуп-
розрачное вещество. Это связано с тем, что он не учитывает от-
ражение и преломление света. Объекты, имеющие форму линз с вы-
соким коэффициентом прозрачности, не будут давать эффекты уве-
личительного стекла, для этого необходимо отслеживать прохожде-
ние оптических лучей. Польза метода альфа-буферизации состоит в
его способности показывать внутреннюю структуру твердых тел без
потери значительной части информации о внешней поверхности.
Кроме того, с помощью этого метода можно бороться со сту-
пенчатостью линий и ребер многогранников, используя частично
заполненные пикселы. Эта технология получила название
antialiasing. При этом полупрозрачному пикселу присваивается
значение цвета, основанное как на цвете многогранника, так и на
цвете первоначального фона. Фактически этот метод сохраняет
"под-точечную" информацию и использует ее для определения аль-
фа-значения пиксела на границе. В результате получается более
плавный переход от фона к основному объекту, устраняющий сту-
пенчатый вид линий и границ.


8. Оверлейные плоскости

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


изводительности системы отображения. Вместо этого, система мо-
жет использовать оверлейную плоскость, сохраняя с ее помощью
изображение под курсором. Во многих методах оверлейная плос-
кость трактуется как прозрачный слой, содержащий только изобра-
жение курсора. Такие же правила действуют в оверлейной плоскос-
ти при работе с цветовой палитрой. Если вы пожелаете иметь кур-
сор или текст более, чем двух цветов, вам необходимы дополни-
тельные биты. Четыре оверлейные плоскости позволяют использо-
вать 16 цветов для отображения текста, что обычно более чем
достаточно. Отметим, что некоторые системы могут также исполь-
зовать "подкладываемые" (underlay) оверлейные плоскости для
изображения текстуры фона.


9. Управляющие плоскости (Control-plane)

Графические системы могут также иметь битовые плоскости
для обработки изображения при работе с окнами (рабочие станции
без поддержки оконной организации современными стандартами счи-
таются непригодными для работы). Зачастую экранная память долж-
на быть организована по-разному для различных окон. Для одного
окна могут быть нужны только функции рисования прямых линий,
для другого - полный комплект трехмерной графики, для третьего
- только монохромный текст. Системе, содержащей около 30 экран-
ных плоскостей, неплохо бы уметь воспроизводить в одном окне
изображение в действительных цветах, а в другом - динамически
отображать 12-битовое псевдо-цветное изображение с двойной бу-
феризацией. Ведь для этих вариантов требуется одинаковое число
битовых плоскостей.
Системе могут потребоваться дополнительные битовые плос-
кости для маркировки принадлежности пикселов разным окнам, что-
бы впоследствии их правильно обработать. Битовые плоскости для
такой маркировки получили название управляющих.

- 9 -
Трехмерная графика



-----------¬ -----------¬
-+---------¬¦ -+---------¬¦
-+---------¬¦¦ -+---------¬¦¦
-+---------¬¦¦¦ -+---------¬¦¦¦
-+---------¬¦¦¦¦ -+---------¬¦¦¦¦ -----------¬
-+-- . ----¬¦¦¦+- -+-- . ----¬¦¦¦+- -+---------¬¦
-+-- . ----¬¦¦¦+- -+-- . ----¬¦¦¦+- -+---------¬¦¦
-+-- . ----¬¦¦¦+- -+-- . ----¬¦¦¦+- -+---------¬¦¦¦
-+---------¬¦¦¦+- -+---------¬¦¦¦+- -+---------¬¦¦¦¦
-+---------¬¦¦¦+- -+---------¬¦¦¦+- -+---------¬¦¦¦+-
-+---------¬¦¦¦+- -+---------¬¦¦¦+- -+---------¬¦¦¦+-
-+---------¬¦¦¦+- -+---------¬¦¦¦+- -+---------¬¦¦¦+-
¦ ¦¦¦+- ¦ ¦¦¦+- ¦ ¦¦¦+-
¦ Видимая ¦¦+- ¦ Cкрытая ¦¦+- ¦ Aльфа ¦¦+-
¦ память ¦+- ¦ память ¦+- ¦ буфер ¦+-
¦ +- ¦ +- ¦ +-
L----------- L----------- L-----------
24 плоскости 24 плоскости 8 плоскостей

-----------¬
-+---------¬¦
-+---------¬¦¦
-+---------¬¦¦¦
-+---------¬¦¦¦¦
-+-- . ----¬¦¦¦+-
-+-- . ----¬¦¦¦+-
-+-- . ----¬¦¦¦+-
-+-- . ----¬¦¦¦+-
-+-- . ----¬¦¦¦+-
-+---------¬¦¦¦+- -----------¬ ------------¬
-+---------¬¦¦¦+- -+---------¬¦ -+----------¬¦
-+---------¬¦¦¦+- -+---------¬¦¦ -+----------¬¦¦
-+---------¬¦¦¦+- -+---------¬¦¦¦ -+----------¬¦¦¦
¦ ¦¦¦+- ¦ ¦¦¦¦ ¦ ¦¦¦¦
¦ Z-буфе𠦦+- ¦Оверлейны妦+- ¦Управляющи妦+-
¦ ¦+- ¦ плоскости¦+- ¦ плоскости ¦+-
¦ +- ¦ +- ¦ +-
L----------- L----------- L------------
32 плоскости 4 плоскости 4 плоскости


10. Пути развития

Как видно из рисунка, вам может понадобиться система с
предельно большим буфером изображения. В данном примере при
разрешении 1280 x 1024 пикселов необходимо около 16 миллионов
байт экранной памяти.
Некоторые из рассмотренных методов, особенно Z-буферизация
и альфа-буферизация, используются исключительно для трехмерных
изображений. Другие могут применяться практически во всех гра-
фических приложениях.
С появлением новых методов, при продожающемся удешевлении
памяти, все графические компьтеры будут увеличивать свою экран-
ную память.
- 10 -
Трехмерная графика


Несомненно вы станете свидетелями постоянного увеличения
разрешающей способности PC. Очень немногие прикладные программы
откажутся от соблазна использовать все преимущества высокока-
чественного изображения на экране, но существуют всего две при-
чины, замедляющие спрос: цена и нехватка хорошо построенных
стандартов. Стоимость памяти (как экранной, так и обычной) про-
должает падать, как впрочем и цена высокоразрешающих мониторов.
Миграция алгоритмов и технологий, независимых от разрешающей
способности, позаботится обо всем остальном.


Краткий словарь терминов


Transform engine -
процессор преобразования изображений,
специализированый процессор плавающей точки для пре-
образования трехмерного представления изображений в
двухмерное в графических рабочих станциях.
Hidden memory -
скрытая память,
неотображаемая часть экранной памяти, обеспечивающая
возможность быстрого обновления экрана при мультипли-
кации, генерации растровых изображений, отображении
текстуры, работу с очень большими растровыми обра-
зами.
Double buffering -
двойная буферизация,
метод управления отображаемой и неотображаемой экран-
ной памятью для обеспечения плавности движения в
быстро меняющихся изображениях.
Screen depth -
глубина экрана, количество бит информации, описываю-
щих один пиксел на экране.

  • Главная
  • Новости
  • Новинки
  • Скрипты
  • Форум
  • Ссылки
  • О сайте




  • Emanual.ru – это сайт, посвящённый всем значимым событиям в IT-индустрии: новейшие разработки, уникальные методы и горячие новости! Тонны информации, полезной как для обычных пользователей, так и для самых продвинутых программистов! Интересные обсуждения на актуальные темы и огромная аудитория, которая может быть интересна широкому кругу рекламодателей. У нас вы узнаете всё о компьютерах, базах данных, операционных системах, сетях, инфраструктурах, связях и программированию на популярных языках!
     Copyright © 2001-2024
    Реклама на сайте