VTK - 与多个对象交互

时间:2014-12-23 21:47:39

标签: c++ image-processing render vtk

我对VTK很新,我真的很喜欢使用它。

现在,我希望独立地与多个对象进行交互。例如,如果我在渲染窗口中有5个对象,我只想移动,旋转并与所选对象进行交互;而其余4个物体都停留在原处。

目前,相机正在进行魔术,当我旋转独立物体时,其他物体同时移动,我不希望这种情况发生。

我还想将所有对象存储在内存中。

我打算使用C ++。

这是我的班级结构......

class ScreenObjects
{
   vtkActor (LinkedList); // I intend on using a linkedlist to store all the actors

   public:
   ScreenObjects(); // Constructor. Initializes vtkActor to null.
   void readSTLFile(); // Reads the STL File
   bool setObject(); // Sets current object, so you can only interact with the selected object
}

我在课堂上遗漏了很多功能和细节,因为我不知道还有哪些内容可供使用。我也在考虑将两个物体连在一起,但同样,我也不知道如何在课堂上加入这些物品;任何有关的信息都将受到赞赏。

如果能得到我的想法,我会非常感激。这对我来说是一件非常有趣的事情,这对我来说意义重大,我的意思是从内心深处。

1 个答案:

答案 0 :(得分:0)

首先,您应该阅读一些教程和演示文稿,例如: http://www.cs.rpi.edu/~cutler/classes/visualization/F10/lectures/03_interaction.pdf

我说因为你现在正在移动相机。

然后你应该看看VTK的例子。它们对所有VTK课程都非常有帮助。 特别是对你的问题看看: http://www.vtk.org/Wiki/VTK/Examples/Cxx/Interaction/Picking

基本上你必须创建一个 vtkRenderWindowInteractor 派生类来获取鼠标事件(onMouseDown,onMouseUp,onMouseMove,...)。

并使用 vtkPropPicker 将光线从鼠标位置拍摄到3D视图并获取vtkActor。

现在你可以在你的vtkRenderWindowInteractor派生类中存储onMouseDown你要移动的vtkActor和currentMouse位置。当用户释放鼠标(onMouseUp)时,只需获取新鼠标位置并使用onMouseDown / onMouseUp位置的差异来修改vtkActor位置。

相关问题