vtk_interactor.py 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. import vtk
  2. from threading import Thread
  3. from math import degrees
  4. from src.event_server import EventServer
  5. from src.widgets import FullscreenWidget
  6. class vtkMultitouchInteractor():
  7. def __init__(self):
  8. self.iren = vtk.vtkRenderWindowInteractor()
  9. self.widget = FullscreenWidget()
  10. self.server = EventServer(screen)
  11. widget.on_rotate(self.on_rotate)
  12. widget.on_pinch(self.on_pinch)
  13. widget.on_tap(self.on_tap)
  14. def SetRenderWindow(self, window):
  15. self.iren.SetRenderWindow(window)
  16. self.window = window
  17. def Initialize(self):
  18. self.iren.Initialize()
  19. self.renderer.ResetCamera()
  20. def Start(self):
  21. #t = Thread(target=self.iren.Start)
  22. #t.daemon = True
  23. #t.start()
  24. #self.server.start()
  25. thread = Thread(target=self.server.start)
  26. thread.daemon = True
  27. thread.start()
  28. #self.iren.Start()
  29. try:
  30. import time
  31. while True:
  32. self.window.Render()
  33. time.sleep(1. / 60)
  34. except KeyboardInterrupt:
  35. return
  36. def SetRenderer(self, renderer):
  37. self.renderer = renderer
  38. self.camera = renderer.GetActiveCamera()
  39. def on_rotate(self, gesture):
  40. print 'rotate', gesture
  41. self.camera.Roll(degrees(gesture.get_angle()))
  42. def on_pinch(self, gesture):
  43. pass
  44. def on_tap(self, gesture):
  45. print 'tap:', gesture
  46. if __name__ == '__main__':
  47. from tests.objreader import read_obj
  48. # Create render window and interactor
  49. ren = vtk.vtkRenderer()
  50. win = vtk.vtkRenderWindow()
  51. win.AddRenderer(ren)
  52. mt = vtkMultitouchInteractor()
  53. mt.SetRenderWindow(win)
  54. # Read OBJ file
  55. cubemapper = read_obj('tests/cube.obj')
  56. # Create actor
  57. cubeactor = vtk.vtkActor()
  58. cubeactor.SetMapper(cubemapper)
  59. ren.AddActor(cubeactor)
  60. mt.SetRenderer(ren)
  61. mt.Initialize()
  62. win.Render()
  63. mt.Start()