2013-04-27 3 views
3

Графы сцены дают вам возможность рассуждать о своей позиции -> если один узел не нужно визуализировать, дети этого узла также не нужно визуализировать.Есть ли альтернатива сценарию?

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

Мне было интересно, существует ли совершенно другой подход к уменьшению сложности сцены?

ответ

7

Если один узел не нужно визуализировать, дети этого узла также не нужно визуализировать.

Это неправда. Подумайте о том, что родительский узел находится только немного вне поля зрения, но ребенок явно находится в пределах видимости.

Сцены не являются инструментом для определения видимой/невидимой геометрии. Сценографы управляют геометрическими, трансформационными иерархиями между объектами. Галактики → Звезды → Планеты → Луны, или такие.

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

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

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

Таким образом, между стоимостью восстановления всего дерева или балансировкой требуется компромисс.

На яркой стороне некогда столь же идеальная невидимая поверхностная дискриминация, которая требовалась во времена программных растеризаторов, давно исчезла.

Мы сейчас живем в периоды, когда графические процессоры имеют значительные резервы для переутомления и подход «хуже лучше» часто дает хорошие результаты. Очень хороший подход - позволить GPU и CPU взаимодействовать в обходе очень простого, только слабо связанного BVH, на основе Осевые выровненные прямоугольные шкафы (AABB), в которых перекрываются узлы дерева и видимость подвыбора, путем отправки границы AABB обращается к графическому процессору для сухого рендера, который не создает пикселов, но собирает статистику, сколько, если бы какой-либо из ограничивающего объема фактически был нарисован. Это очень популярный метод, и он дает очень хорошие результаты.

+0

«Подумайте о том, что родительский узел находится только немного вне поля зрения, но ребенок явно находится в пределах видимости». - Я не уверен. Если родитель только частично не учитывается, то он будет считаться видимым и, следовательно, его детьми. Не могли бы вы уточнить, что именно вы имели в виду? – miloszmaki

+0

@miloszmaki: Представьте прямоугольник экстентов ((-1, -1), (1, 1)), назовем это окном просмотра. Теперь представьте, что объект, границы которого образованы прямоугольником ((1,05, 0,5), (1, 0,95)).Очевидно, что более поздний прямоугольник находится вне области просмотра, но не очень далеко. Теперь визуализируем объект, родившийся таким образом, с относительным положением (-0,5, 0); этот объект снова будет в пределах области просмотра. – datenwolf

+0

Я думаю, что дочерние узлы должны быть полностью закрыты его родителем, не так ли? – miloszmaki