[vtkusers] Pseudo Animation Freezes Interactor

Yu-Xi Lim vtk at limyuxi.org
Fri Sep 30 11:39:27 EDT 2005


Mischa Thesberg wrote:
> I managed to properly texture my cone and now I have the image on the 
> cone changing every couple of milliseconds (which it needs to do) to 
> make it seem like a movie is being projected on the cone (it is really a 
> sequence of jpeg's).  The problem is while this repainting is happening 
> (which is always) the interactor is frozen by an hour glass and I can't 
> move or interact with the cone/actor which is important.  My animation 
> loop works as such:
> 
>        for i in range(100,260):
>            time.sleep(0.03)
>            givable = "C:/Conics/1-32-04/9-28-2005 1-32-04 PM-0%d" % 
> i+".jpg"  #cycle through the sequentially named jpegs
>            jpgReader.SetFileName(givable)
>            atext.SetInput(jpgReader.GetOutput())
>            renWin.Render()
> 
> How do I make it so that the interactor is completely usable as this 
> stream of jpegs is being written onto it?  Hopefully it doesn't involve 
> complicated threading.  Any help is appreciated.  Thank You

I guess you figured out, sleep disables the GUI while it's sleeping.
You'd probably want to use some kind of timer with a callback, and
unfortunately, it isn't as straightforward as using sleep. And yes, it
involves threads, but I don't think it's too complicated.

I'm assuming you aren't using a GUI toolkit like wx or Tk? Check the
python docs on the threading module, specifically the Timer class. Just
off the top of my head, it may look something like this:

import threading

def animate():
     # do relevant jpeg changing steps here

t = threading.Timer(0.1, animate) # call animate after 0.1 seconds
t.start()




More information about the vtkusers mailing list