| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- import vtk
- from threading import Thread
- from objreader import read_obj
- from touch import MultitouchServer
- class MultitouchInteractor():
- def __init__(self):
- self.iren = vtk.vtkRenderWindowInteractor()
- self.touch_server = MultitouchServer(verbose=1, tuio_verbose=1)
- self.touch_server.bind('rotate', self.on_rotate)
- self.touch_server.bind('pinch', self.on_pinch)
- self.touch_server.bind('tap', self.on_tap)
- def SetRenderWindow(self, window):
- self.iren.SetRenderWindow(window)
- self.window = window
- def Initialize(self):
- self.iren.Initialize()
- def Start(self):
- #self.iren.Start()
- #t = Thread(target=self.iren.Start)
- #t.daemon = True
- #t.start()
- self.touch_server.start(threaded=True, daemon=True)
- try:
- import time
- while True:
- self.window.Render()
- time.sleep(1. / 60)
- except KeyboardInterrupt:
- return
- def SetCamera(self, camera):
- self.camera = camera
- def on_rotate(self, event):
- self.camera.Roll(event.angle)
- def on_pinch(self, event):
- pass
- def on_tap(self, event):
- print 'tap:', event
- if __name__ == '__main__':
- # Create render window and interactor
- ren = vtk.vtkRenderer()
- win = vtk.vtkRenderWindow()
- win.AddRenderer(ren)
- mt = MultitouchInteractor()
- mt.SetRenderWindow(win)
- # Read OBJ file
- cubemapper = read_obj('cube.obj')
- # Create actor
- cubeactor = vtk.vtkActor()
- cubeactor.SetMapper(cubemapper)
- ren.AddActor(cubeactor)
- mt.Initialize()
- mt.SetCamera(ren.GetActiveCamera())
- win.Render()
- mt.Start()
|