2015-04-03 1 views
1

Почему заготовка сбрасывается, когда я загружаю, например, 4900 узлов в сцену? Если там 125, все в порядке, 200 все равно нормально, но если их больше, то рендеринг кадров резко драматичен? Корневой узел содержит дочерние элементы, которые содержат (модель (в 3ds) + текстуру + некоторый научный расчет) и все созданные в цикле от 0 до 4899. Я попытался использовать osgUtil :: Optimizer для root после всех дочерних элементов, где на месте, но все еще нет улучшений , Пытался поместить все узлы в один геодезист, но это тоже не помогло. Как достичь баланса между производительностью и количеством узлов?OpenSceneGraph отображает множество узлов

+0

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

ответ

1

4900 узлов кажется ужасным множеством узлов!

Вы должны начать чтение о LOD и PagedLOD. PageLOD улучшит производительность. Идея заключается в том, как это (представьте себе, что первое изображение намного дальше):

Low detail

High detail

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

Кроме того, проверьте, можете ли вы обмениваться узлами. Например, вместо того, чтобы иметь 4 разных колеса, вы просто создаете одно колесо. Затем добавьте 4 PositionAttitudeTransform/MatrixTransform и добавьте колесный узел к каждому из них. То же самое касается StateAttributes, поделитесь им, когда это возможно!

Наконец, если у вас много повторяющихся геометров, взгляните на геометрия instance.

+0

Большое спасибо! Похоже, что производительность получила огромный импульс, но когда я добавляю все узлы в поведение камеры, это странно. Например, если я получаю радиус радиуса сферической сферы камеры до того, как я добавлю целую кучу узлов в сцене, она будет равна примерно 12.5f, но когда все узлы в сцене будут доходить до 18000.0f. И во-вторых, есть ли способ установить бит камеры дальше из окна просмотра (немного уменьшить масштаб). –

+0

Для камеры, посмотрите [здесь] (http://stackoverflow.com/questions/21180092/openscenegraph-set-the-camera-at-an-initial-position); принятый ответ имеет очень полезные комментарии к камере. О вашей другой проблеме: какое неправильное поведение при изменении радиуса камеры? Я не совсем понимаю :) –

+0

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

 Смежные вопросы

  • Нет связанных вопросов^_^