| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- import vtk
- from threading import Thread
- from math import degrees
- from src.gesture_server import GestureServer
- from src.trackers.transform import TransformationTracker
- from src.trackers.tap import TapTracker
- from src.window import FullscreenWindow
- class vtkMultitouchInteractor():
- def __init__(self):
- self.iren = vtk.vtkRenderWindowInteractor()
- self.server = GestureServer()
- self.window = FullscreenWindow(server=self.server)
- transform = TransformationTracker(window=self.window)
- transform.rotate(self.on_rotate)
- transform.pinch(self.on_pinch)
- tap = TapTracker(window=self.window)
- tap.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()
|