Главная » 3D графика » OpenGL – что дальше ?

RSS

OpenGL – что дальше ?

Не нравитсяНравится   Рейтинг +4

Операции отсечения

Различные способы отсечения также составляют фундамент 3D графики, поэтому естественно, что различные виды отсечения поддерживаются в API и геометрической машине OpenGL. Принципиальное отличие подхода OpenGL Optimizer в том, что здесь отсечение производится над объектами, а не над совокупностью составляющих их примитивов. Отсечение становится очень мощным средством разгрузки графического конвейера – объекты, которые заведомо не нужно рисовать, вообще в него не передаются. OpenGL Optimizer поддерживает три вида отсечения: по видимому объему, по вкладу в изображение и отсечение загороженных частей.

Отсечение по видимому объему основывается на том, что при данной точке наблюдения может быть видна не вся сцена, а только ее часть, лежащая в определенном телесном угле. Чем меньше расстояние до сцены, тем большая ее часть оказывается вне видимого объема, и такая ситуация типична для прогулок по виртуальным архитектурным сооружениям. С другой стороны, если здание рассматривается снаружи, тест по видимому объему не даст никакого эффекта. Алгоритм для такого отсечения устроен иерархически: когда устанавливается, что некоторая область сцены полностью видима/невидима, проверка объектов, лежащих внутри ее, уже не производится. Действие отсечения по видимому объему иллюстрирует рис. 4б. Отсечение по видимому объему уменьшает количество работы, выполняемой аппаратной частью графического конвейера, но эта операция может приводить как к уменьшению, так и к увеличению нагрузки на хост-компьютер. Все зависит от соотношения времени, затраченного на тесты отсечения, и времени, сэкономленного за счет условия, при котором отброшенные части графа сцены не обходятся при генерации кадра. Сбалансировать нагрузку на хост и на графическую аппаратуру можно с помощью средств пространственной организации графа сцены.

Хотя упрощение сцены с помощью уровней детальности весьма полезно для выбора оптимального количества вершин полигонального представления объектов, логическую завершенность этот прием находит в идее явного отбрасывания объектов, размер которых не превосходит некоторого порога ‘малости’. Это второй вид отсечения – отсечение деталей. ‘Малость’ определяется здесь как отношение размера геометрии узла к общему размеру графа сцены и вычисляется, исходя из радиусов соответствующих ограничивающих сфер.

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

Если отсечение загораживания не задействовано, закрытые треугольники будут передаваться в конвейер OpenGL. Это не приведет к изъянам в изображении – генерируемые по закрытым полигонам пикселы будут стерты в тесте буфера глубины. Но тест этот выполняется последним, после того как произведены преобразования вершин и растеризация, и если рассчитывать только на него, большая часть работы графической машины будет проделана вхолостую. Как и в случае с отсечением по видимому объему, отсечение закрытых объектов является средством экономного использования нижележащих процессорных ресурсов графического конвейера.

Данный вид отсечения имеет максимальный эффект для сцен с большим разбросом объектов по глубине. Например, на изображении общего вида автомобиля или другой сложной сборки 95% треугольников будут заслонены. Напротив, в приложениях визуального моделирования объекты не имеют внутренних деталей, и здесь обычно видима большая часть полигонов. В этом случае применение отсечения невидимых частей не скажется существенно на скорости кадров.

Пространственная организация графа сцены

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

Реализованный в OpenGL Optimizer метод пространственного упорядочения основан на классическом понятии октарного дерева, в котором потомки узла соответствуют последовательному разделению родительской области пространства (куба) на 8 равных подобъемов. Однако в OpenGL Optimizer деление пространства производится не совсем так, как в октарном дереве. Плоскости, разбивающие куб, проводятся таким образом, чтобы нагрузка рендеринга всех получающихся объемов была примерно равной: после каждого разрезания число треугольников по обе стороны секущей плоскости одинаково.

Для управления гранулярностью представления задаются два параметра: наименьшее и наибольшее количество треугольников в каждом геометрическом наборе графа сцены. Более тонкое пространственное разбиение уменьшает нагрузку на графическую аппаратуру, но увеличивает время обхода графа – в нем увеличивается число узлов. Известны примеры, в которых правильный выбор гранулярности приводил к уменьшению времени рендеринга более чем на порядок.

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

Страницы : 1 2 3 4 5 6

Таги: ,