Прямоугольный экстент прилегает к цилиндру плотно даже в том случае, если он длинный и тонкий, если только цилиндр не повернут в сторону относительно координатных осей. (В упражнениях в конце раздела вам предлагается оценить вероятность ложных тревог для различных случаев.)

Экстенты, сформированные в мировых и базовых координатах

Рис. 14.38. Экстенты, сформированные в мировых и базовых координатах

Экстенты в базовых координатах обычно охватывают объекты более плотно. На рис. 14.53, в приведен базовый конический цилиндр, окруженный сферическим и прямоугольным экстентами. Сферический экстент прилегает к цилиндру достаточно плотно, а прямоугольный - очень плотно.

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

Листинг 14.13. Тестирование относительно сферических экстентов внутри метода hit() для цилиндра

bool TaperedCylinder"opengl1_990.html">⇐ Предыдущая| |Следующая ⇒