| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- import vtk
- from threading import Thread
- from math import degrees
- from src.event_server import EventServer
- from src.widgets import FullscreenWidget
- class vtkMultitouchInteractor():
- def __init__(self):
- self.iren = vtk.vtkRenderWindowInteractor()
- self.widget = FullscreenWidget()
- self.server = EventServer(screen)
- widget.on_rotate(self.on_rotate)
- widget.on_pinch(self.on_pinch)
- widget.on_tap(self.on_tap)
- def SetRenderWindow(self, window):
- self.iren.SetRenderWindow(window)
- self.window = window
- def Initialize(self):
- self.iren.Initialize()
- self.renderer.ResetCamera()
- def Start(self):
- #t = Thread(target=self.iren.Start)
- #t.daemon = True
- #t.start()
- #self.server.start()
- thread = Thread(target=self.server.start)
- thread.daemon = True
- thread.start()
- #self.iren.Start()
- try:
- import time
- while True:
- self.window.Render()
- time.sleep(1. / 60)
- except KeyboardInterrupt:
- return
- def SetRenderer(self, renderer):
- self.renderer = renderer
- self.camera = renderer.GetActiveCamera()
- def on_rotate(self, gesture):
- print 'rotate', gesture
- self.camera.Roll(degrees(gesture.get_angle()))
- def on_pinch(self, gesture):
- pass
- def on_tap(self, gesture):
- print 'tap:', gesture
- if __name__ == '__main__':
- from tests.objreader import read_obj
- # Create render window and interactor
- ren = vtk.vtkRenderer()
- win = vtk.vtkRenderWindow()
- win.AddRenderer(ren)
- mt = vtkMultitouchInteractor()
- mt.SetRenderWindow(win)
- # Read OBJ file
- cubemapper = read_obj('tests/cube.obj')
- # Create actor
- cubeactor = vtk.vtkActor()
- cubeactor.SetMapper(cubemapper)
- ren.AddActor(cubeactor)
- mt.SetRenderer(ren)
- mt.Initialize()
- win.Render()
- mt.Start()
|