Свободное взаимодействие с визуализацией VTK - PullRequest
1 голос
/ 05 июня 2019

Я занимаюсь разработкой приложения QT C ++, которое использует VTK для визуализации объектов. Я понял, что когда объекты очень сложны (включает в себя огромное количество узлов), когда пользователь взаимодействует с окнами через указатель мыши (например, для вращения объекта), приложение реагирует медленно, объект не двигаться, и это занимает некоторое время, прежде чем сделать его в конечной позиции.

Конечно, его можно улучшить с помощью более качественного оборудования (конкретно более приличного графического процессора), тем не менее, если я загружаю тот же объект в Paraview, взаимодействие с ним происходит более свободно. Я понял, что во время переходов (например, когда я удерживаю указатель мыши в roder, чтобы вращать объект), объект отображается с меньшим количеством узлов, другими словами, он показывает упрощенное представление объекта во время взаимодействия. Наконец, когда указатель освобождается, объект полностью отображается.

Я хотел бы знать, какие методы предлагает ВТК для реализации такого поведения и, наконец, иметь возможность свободно владеть моим приложением.

1 Ответ

3 голосов
/ 06 июня 2019

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

Для взаимодействия, которое, как кажется, касается вашего вопроса, взгляните на vtkLODActor (актер уровня детализации) https://vtk.org/doc/nightly/html/classvtkLODActor.html#details, который является опорой для улучшения взаимодействия.

Другие вещи, связанные с производительностью, на которые стоит обратить внимание:

  • Глубинный пилинг (довольно дорогой, необходим только в том случае, если вам нужно точно визуализировать перекрывающуюся полупрозрачную геометрию)
  • Сглаживание

Хотя по умолчанию они отключены. Не уверен, с какими именно данными вы работаете, но, исходя из моего опыта работы с полигональными геометриями (vtkPolyData), преобразование моделей в разумное количество полигонов (<30k ячеек достаточно для многих приложений) является обычным этапом последующей обработки. Смотрите, например <code>vtkDecimatePro фильтр.

Также убедитесь, что у вас установлена ​​последняя версия графического драйвера для вашего оборудования.

...