Алгоритм удаления нелицевых граней
Если сцена состоит только из выпуклых многогранников, то внутренние грани многоугольников никогда не будут видны. Рис.8.6. Анализ лицевой грани
Но у такого выпуклого многогранника часть граней будет повернута от наблюдателя (нелицевые грани). Следовательно, они тоже не будут видны наблюдателю. Принцип отбраковки нелицевых граней поясняется на рис.8.6. Внешняя сторона многоугольника будет видима наблюдателю только в том случае, если нормаль к плоскости многоугольника будет направлена к наблюдателю. Обозначим через θ; угол между внешней нормалью плоскости многоугольника и направлением на наблюдателя, тогда многоугольник будет представлять лицевую грань объекта только том случае, если -90° < θ; < 90°, или, что то же самое, если . Если уравнение плоскости, в которой лежит многоугольник, имеет вид ax+by + cz + d = 0, то для определения, является ли грань лицевой или нелицевой, потребуется только проверить знак коэффициента с. Такую проверку можно выполнить как программно, так и аппаратно. При использовании отбраковки нелицевых граней нужно только тщательно проанализировать, допустимо ли это делать с учетом специфики конкретного приложения. Этот вид отсечения обычно также автоматически осуществляется стандартными API и ожидаемый от него эффект – удаление примерно половины граней в пирамиде видимости.
|