如何在VTK中暂停和重新启动动画

时间:2014-08-31 18:46:48

标签: python vtk

我正在尝试在VTK中制作一个动画程序,我可以在其中制作VTK对象的动画 但我没有做暂停动画和重新启动动画,我最近知道停止VTK计时器,但如果我再次点击动画按钮启动然后程序崩溃跟随错误,我只有一个线索,以下行崩溃,但这条线将在第一次动画按钮点击时工作,但在第二次按钮点击失败!!第二个功能" animation_Stop"是我试图通过破坏整个功能来停止功能,所以我希望我能避免程序崩溃,但它也是一个失败!

错误:

python.exe已停止工作

错误行:

self.renderWindowInteractor.SetRenderWindow(obj_renwin.renwin)

请注意我动画的详细代码行,有人请帮我重启 并在vtk python中暂停动画

def animation(self,obj_renwin,X):

    if X==1: 

           print "start or restart animation"

           self.renderWindowInteractor = vtk.vtkRenderWindowInteractor()      
           objRen=self.renderWindowInteractor.GetRenderWindow()                   
           self.renderWindowInteractor.SetRenderWindow(obj_renwin.renwin)                         
           obj_renwin.renwin.Render()
           self.renderWindowInteractor.Initialize()
           cb = vtkTimerCallback()
           cb.actor = obj_renwin.actor
           self.renderWindowInteractor.AddObserver('TimerEvent', cb.execute)
           self.timerId = self.renderWindowInteractor.CreateRepeatingTimer(5);


    if X==2:

        print "stop animation"                       
        self.renderWindowInteractor.DestroyTimer(self.timerId)



def animation_Stop(self,obj_renwin):

    print "stop animation"        
    #self.animation(obj_renwin,1).destroy()
    del (ConeRender.Cone.animation)

1 个答案:

答案 0 :(得分:0)

如果你这样开始vtkTimer:

vtkSmartPointer<vtkTimerCallback> cb = 
vtkSmartPointer<vtkTimerCallback>::New();
interactor->AddObserver(vtkCommand::TimerEvent, cb);

您可以考虑使用

停止/暂停计时器
vtkCommand::EndInteraction

interactor->InvokeEvent(vtkCommand::TimerEvent, cb);

[只是片刻思考,你可以尝试一下] ...... :)