2014-08-31 338 views
1

我想在VTK中做一个动画程序,在这个程序中我可以使VTK对象动画 但我没有做到暂停动画和重新开始动画,我最近才知道要动画停止VTK计时器,但如果我再次单击动画按钮开始然后程序崩溃与以下错误,我只有一个线索,下面的行崩溃,但此行将工作在第一次动画按钮单击但失败点击第二个按钮!!第二个函数“animation_Stop”是我试图通过摧毁整个函数来停止函数,所以我希望我可以避免程序崩溃,但它也是一个失败!如何在VTK中暂停和重新启动动画

错误:

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) 

回答

0

如果启动vtkTimer这样的:

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

你可以考虑停止/暂停定时器

vtkCommand::EndInteraction 

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

[这仅仅是一个瞬间想,你可以试试看吧:) :)

+0

不错,让我试试! – 2014-09-01 13:23:42