我正在开发一个QT C++应用程序,它使用VTK来可视化对象。我已经意识到,当对象非常复杂(涉及大量节点)时,当用户通过鼠标指针与窗口交互(例如,为了旋转对象)时,应用程序响应缓慢,对象不会移动,并且需要一段时间才能将其渲染到最终位置。
当然,它可以通过更好的硬件(具体地说是更好的GPU)来改进,然而,如果我在Paraview中加载相同的对象,与它的交互会更流畅。我意识到在转换过程中(例如,当我在旋转中按住鼠标指针来旋转对象时),对象会呈现较少的节点,换句话说,它在交互过程中显示了对象的简化表示。最后,当释放指针时,对象将完全呈现。
我想知道VTK提供了什么方法来实现这种行为,并最终能够流畅地使用我的应用程序。
发布于 2019-06-06 10:10:02
流式数据(如注释中所建议的)通常用于数据集太大而无法加载到内存中的情况。
对于交互,这也是你的问题所关心的,看看vtkLODActor
(Level-Of-Detail actor) https://vtk.org/doc/nightly/html/classvtkLODActor.html#details,它是用来改善交互的道具。
其他需要注意的与性能相关的事情:
时才需要
尽管默认情况下这些选项是关闭的。不确定您到底在处理什么数据,但根据我使用多边形几何(vtkPolyData)的经验,将模型抽取为合理数量的多边形(对于许多应用程序来说<30k单元就足够了)是一个常见的后处理步骤。例如,请参阅vtkDecimatePro
过滤器。
还要确保您的硬件安装了最新的图形驱动程序。
https://stackoverflow.com/questions/56458644
复制相似问题