2014-08-28 1 views
0

VTK 파이썬으로 애니메이션 프로그램을 만들고 있는데,이 애니메이션을 중지하거나 일시 중지하는 방법을 모르겠다. 이 애니메이션. 누군가이 타이머를 멈추는 방법에 대해 말해주십시오. 지금은 내 애니메이션 무한 시간 동안 계속, 내 루프에 대한 내 코드를 넣으려고했지만 중지하지 못했습니다. 내 아래 코드에 유의하십시오. 누군가 친절하게 생각을 나누십시오.VTK 타이머를 중지하는 방법

코드 라인 :

renderWindowInteractor.AddObserver('TimerEvent', cb.execute) 
timerId = renderWindowInteractor.CreateRepeatingTimer(10); 

자세한 코드 라인 :

class vtkTimerCallback(): 

def __init__(self): 

    self.timer_count = 0 
    self.timerCycle=0 

def execute(self,obj,event): 

    self.timerCycle+=1 
    if self.timerCycle==3:  
     self.timerCycle=0  
     for A in range(3): 
      for B in range(2): 
       for C in range(1): 
        self.actor.SetPosition(A,1,C); 
        iren = obj 
        iren.GetRenderWindow().Render() 
        self.timer_count += 1  
    else:   

     for X in range(1): 
      for Y in range(2): 
       for Z in range(3): 
        self.actor.SetPosition(1,Y,Z); 
        iren = obj 
        iren.GetRenderWindow().Render() 
        self.timer_count += 1 



class Cone(): 


def animation(self,obj_renwin): 

    renderwininstance=obj_renwin    
    renderWindowInteractor = vtk.vtkRenderWindowInteractor() 
    renderWindowInteractor.SetRenderWindow(obj_renwin.renwin) 
    obj_renwin.renwin.Render() 
    renderWindowInteractor.Initialize()     

    cb = vtkTimerCallback() 
    cb.actor = obj_renwin.actor 
    for X in range(2): 
     print "animation time is" + str(X) 
     renderWindowInteractor.AddObserver('TimerEvent', cb.execute)  
     timerId = renderWindowInteractor.CreateRepeatingTimer(10); 


cone_Obj = Cone() 

답변

0

내가, 당신이 vtkRenderWindowInteractor 객체로 타이머를 사용하는 것이 생각이 당신이 타이머를 시작합니다

renderWindowInteractor->CreateRepeatingTimer(100); 

그래서, vtkRenderWindowInteractor 일시 중지, 타이머 중지 할 수 있습니다 : 여기

을, 당신은 몇 가지 세부 사항을 참조하십시오 http://www.vtk.org/doc/nightly/html/classvtkRenderWindowInteractor.html#a7ef06e3e7c8cff5767c3b0d328934f55

+0

@flaiv,이 작품을,하지만 난 다시 타이머 애니메이션 기능을 프로그램을 시작하려는 경우 문제는 애니메이션 버튼을 클릭하면 "Python exe가 작동을 멈췄습니다."라는 오류 메시지가 표시되면서 충돌이 발생합니다. 이 오류는 self.renderWindowInteractor.SetRenderWindow (obj_renwin.renwin) 줄에 나타납니다. 재생이나 일시 정지가있는 샘플 애니메이션 프로그램이나 아이디어가 있으십니까? 있다면 공유 할 수 있겠습니까? –

+0

불행히도, 저는 VTK의 타이머로 일한 적이 없었습니다. 나는 타이머가 다른 방법이나 ResetTimer와 같은 인공적인 방법으로 멈출 수 있다고 말하는 "StopTimer"방법이 없다는 것을 보았습니다 ... VTK는 좋은 라이브러리이지만, 많은 질문에 대한 답을 줄 수있는 사람들이 적습니다 ... (몇 주 동안 VTK에서 일하는 사람 중 한 명입니다 ... 많은 도움을주고 싶지만 ... 다른 출처가 될 수는 없습니다. 위키 예제,하지만 그들은 매우 제한되어 almoust는 실제 응용 프로그램에서 사용할 수 없습니다 ... – flaviu2

+0

@ flaiv, 아무 문제, 도와 주셔서 감사합니다 –