Используя Qt3D для огромной топографической модели? - PullRequest
1 голос
/ 08 апреля 2020

Моя сцена в настоящее время состоит из огромной топографической модели (Mill. Verticies). Теперь сцена становится более сложной и содержит много меньших трехмерных объектов. Имеет ли смысл переключаться с QFrambufferObject (с C ++ / OpenGL) на Qt3D?

  1. Как насчет скорости?
  2. Какой формат файла (Wavefront OBJ, Stanford Формат треугольника PLY, STL (STereoLithography)) подходит? В настоящее время я загружаю данные из формата .hgt в векторный массив, а затем в QFrambufferObject.
  3. С помощью Qt3D можно загружать только плитки в графической карте, которые в данный момент видны в области просмотра или удалить их, как только они покинут область просмотра при изменении углов камеры?

1 Ответ

1 голос
/ 09 апреля 2020

Сложно сказать. Я предполагаю, что

Имеет ли смысл переключаться

Вы имеете в виду, будет ли это достаточно быстро. Что касается ваших двух моментов:

  1. Qt3D использует assimp для загрузки моделей изнутри, поэтому, если эта библиотека способна загружать файлы hgt, то должен быть Qt3D.

  2. Что вы подразумеваете под перезагрузкой? Меняются ли они динамически в модели? Или вы имеете в виду re-render? Есть QFrustumCullung, но это, кажется, делает целую сущность все еще. Знаете ли вы, состоит ли ваш объект из нескольких частей? Потому что, когда Qt3D загружает модели (то есть целые сцены) из файлов, я думаю, что он сохраняет свою структуру. Если ваша модель разделена на несколько автономных компонентов, возможно, QFrustumCulling улучшает скорость рендеринга, потому что они не рисуются, когда их не просматривают.

Я лично чувствую, что Qt3D медленнее по сравнению с созданным вручную рендером в OpenGL. Но это постоянно улучшается, так что если это не займет много времени, возможно, стоит попробовать. Кроме того, гибкость Qt3D может компенсировать более медленную скорость рендеринга.

...