2014-08-31 336 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