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

Почему мы отсекаем границами канонического отображаемого объема?

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

1. CW не имеет параметров. Алгоритму не требуется никакой дополнительной информации для описания объема отсечения; в нем всегда используются только -1 и 1. Поэтому сам код может быть сделан максимально эффективным.

2. Плоскости CW выровнены по координатным осям (после выполнения перспективного преобразования). Это означает, что по единственной координате (как при ах > - 1) мы можем определить, с какой стороны плоскости располагается точка. Если бы плоскости не были выровнены, то потребовалось бы отнимающее много ресурсов скалярное произведение.

Почему мы производили отсечение в однородных координатах, а не после этапа перспективного деления?

Отсечение не обязательно производить в однородных координатах, однако это делает алгоритм отсечения прозрачным, быстрым и простым. На этапе перспективного деления часть информации теряется: если у вас есть в явном виде значения ах и аш, то вы, разумеется, знаете и знаки каждого из них. Но если вы получаете отношение ах/аа, то вы можете только сказать, имеют ах и aw один и тот же знак или противоположные знаки. Хранение данных в однородных координатах и отсечение точек, более близких к

7.4. Перспективные проекции трехмерных объектов глазу, чем ближняя плоскость, автоматически удаляют точки, располагающиеся позади глаза (например, точка В на рис. 7.20).

В литературе описывались некоторые «неправильные» ситуации, для которых отсечение в однородных координатах является обязательным [Blinn, 30, Foley, 64]. Эти ситуации включают в себя случаи специальных преобразований объектов или конструирование определенного вида поверхностей, для которых исходная точка (ах, ау, а2, aw) имеет отрицательный четвертый компонент, несмотря на то что она находится перед глазом. Но ни один из объектов, моделирование которых мы рассматриваем здесь, не относится к этой категории. Мы делаем вывод, что хотя отсечение в однородных координатах, как правило, не обязательно, оно почти без всяких затрат делает алгоритм более быстрым и простым.


⇐ Предыдущая| |Следующая ⇒