# Animation

VTKExamples/Python/Utilities/Animation

### Description

This example uses a timer to move a sphere across a scene.

- Contributed by: Bryan Conrad

### Code

Animation.py

    from __future__ import print_function

    import vtk

    class vtkTimerCallback():
        def __init__(self):
            self.timer_count = 0

        def execute(self, obj, event):
            print(self.timer_count)
            self.actor.SetPosition(self.timer_count, self.timer_count, 0)
            iren = obj
            iren.GetRenderWindow().Render()
            self.timer_count += 1

    def main():
        # Create a sphere
        sphereSource = vtk.vtkSphereSource()
        sphereSource.SetCenter(0.0, 0.0, 0.0)
        sphereSource.SetRadius(5)

        # Create a mapper and actor
        mapper = vtk.vtkPolyDataMapper()
        mapper.SetInputConnection(sphereSource.GetOutputPort())
        actor = vtk.vtkActor()
        actor.SetMapper(mapper)
        # prop = actor.GetProperty()

        # Setup a renderer, render window, and interactor
        renderer = vtk.vtkRenderer()
        renderWindow = vtk.vtkRenderWindow()
        # renderWindow.SetWindowName("Test")

        renderWindow.AddRenderer(renderer)
        renderWindowInteractor = vtk.vtkRenderWindowInteractor()
        renderWindowInteractor.SetRenderWindow(renderWindow)

        # Add the actor to the scene
        renderer.AddActor(actor)
        renderer.SetBackground(1, 1, 1)  # Background color white

        # Render and interact
        renderWindow.Render()

        # Initialize must be called prior to creating timer events.
        renderWindowInteractor.Initialize()

        # Sign up to receive TimerEvent
        cb = vtkTimerCallback()
        cb.actor = actor
        renderWindowInteractor.AddObserver('TimerEvent', cb.execute)
        timerId = renderWindowInteractor.CreateRepeatingTimer(100)

        # start the interaction and timer
        renderWindowInteractor.Start()

    if __name__ == '__main__':
        main()