# # oscTuioTest.py # try to handle the output of "CCV" (nee tbeta) # Bill Thibault May 2009 # All rights reversed. # import sys, pygame from pygame.locals import * import numpy import osc import os pygame.init() size = width, height = 640,480 speed = [2, 2] WHITE = (255,255,255) BLACK = (0, 0, 0) #screen = pygame.display.set_mode((0,0),FULLSCREEN|OPENGL|DOUBLEBUF) #screen = pygame.display.set_mode(size,OPENGL|DOUBLEBUF) screen = pygame.display.set_mode(size, DOUBLEBUF) # # g l o b a l s # X,Y,Z = range(3) fingers = {} livingFingers = [] # # # O S C # # def tuioCursorHandler(*msg): global fingers global livingFingers # print "tuioHandler", msg if msg[0][2] == 'set': finger = msg[0][3] if not finger in fingers: fingers[finger] = [0,0] # msg[0][4] should be X, but seems to be Y. why? fingers[finger][Y] = 1.0-msg[0][4] # msg[0]5] should be Y, but seems to be X. why ? and flipped!?!?!? fingers[finger][X] = 1.0 - msg[0][5] # print 'set', finger, fingers[finger] elif msg[0][2] == 'alive': # go through fingerState and mark the living fingers livingFingers = msg[0][3:] # print 'alive', livingFingers osc.init() #osc.listen('192.168.1.7',9001) osc.listen('127.0.0.1', 3333) osc.bind ( tuioCursorHandler, "/tuio/2Dcur" ) ################################################## # # M A I N L O O P # # clock = pygame.time.Clock() while 1: clock.tick(60) for event in pygame.event.get(): if event.type == pygame.QUIT or \ (event.type == KEYDOWN and event.key == K_ESCAPE): osc.dontListen() pygame.quit() sys.exit() screen.fill(BLACK) for finger in livingFingers: x = fingers[finger][X] * size[0] y = fingers[finger][Y] * size[1] pygame.draw.circle(screen, WHITE, (x,y), 5 ) pygame.display.flip()