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