def __init__(self, title='', fps=60, fullscreen=False, size=(800, 600), offset=(0, 0)): self.title = title self.fps = fps self.fullscreen = fullscreen self.size = size self.width, self.height = offset self.delta = 0 self.currentFrame = self.get_time() self.lastFrame = self.get_time() if self.fullscreen: self.surface = pygame.display.set_mode(self.size, FULLSCREEN | HWSURFACE | DOUBLEBUF | OPENGL) else: self.surface = pygame.display.set_mode(self.size, DOUBLEBUF | OPENGL) pygame.display.set_caption(self.title) ratio = (self.width ** 2 + self.height ** 2) / 325 glClearColor(0.83137254902, 0.83137254902, 0.83137254902, 1) gluPerspective(60, (size[0] / size[1]), 0.1, 1000.0) gluLookAt(0.0, 0.0, 3.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0) gluLookAt(4 * ratio, 4 * ratio, 8 * ratio, 0, 0, 0, 0, 0, 1) glRotatef(135, 0, 0, 1) glRotatef(5, 0, 0, 1) glTranslatef(-self.width / 2, self.height / 2 + 1, 0) glEnable(GL_DEPTH_TEST) glEnable(GL_LINE_SMOOTH) glEnable(GL_POLYGON_SMOOTH) glHint(GL_LINE_SMOOTH_HINT, GL_NICEST) glHint(GL_POLYGON_SMOOTH_HINT, GL_NICEST) glEnable(GL_BLEND) glLineWidth(1) glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA)
def draw(self): """Render the link with OpenGL""" glPushMatrix() glTranslatef(self.pos[0], self.pos[1], self.pos[2]) # move to location glMultMatrixf(self.q_rot.transformation_matrix.T ) # then rotate to desired orientation glScale(self.size[0], self.size[1], self.size[2]) # scale to the desired size glColor3f(self.color[0], self.color[1], self.color[2]) # set the drawing color self.draw_cube() glPopMatrix() glBegin(GL_LINES) glVertex3fv(self.pos + self.get_r()) glVertex3fv(self.pos + self.get_r() + self.display_force) glEnd()
def run(self): pygame.init() display = (400, 400) pygame.display.set_mode(display, DOUBLEBUF | OPENGL) # view angle, aspect ratio, z_near, z_far (z's are clipping planes) gluPerspective(90, 1, 1.0, 50.0) glTranslatef(0.0, 0.0, -20) # move cube away from screen (zoom out) glRotatef(0, 0, 0, 0) while True: for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() quit() # clear GL frame glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT) # draw 3D hand Animation.drawHand() # refresh the frame pygame.display.flip()
def main(): pygame.init() display = (400, 400) pygame.display.set_mode(display, DOUBLEBUF | OPENGL) # view angle, aspect ratio, z_near, z_far (z's are clipping planes) gluPerspective(90, 1, 1.0, 50.0) glTranslatef(0.0, 0.0, -20) # move cube away from screen (zoom out) glRotatef(0, 0, 0, 0) # Open serial port and parse serial input inside a thread #ser = serial.Serial('COM3', 9600) # Bhavit's PORT ser = serial.Serial('/dev/ttyACM0', 9600) #Bhavesh's PORT serialThread = threading.Thread(target=HandsOn.parseSerialHandData, args=(ser, )) serialThread.setDaemon(True) serialThread.start() pseudoMainThread = threading.Thread(target=HandsOn.pseudoMain) pseudoMainThread.setDaemon(True) pseudoMainThread.start() while True: for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() ser.close() quit() # clear GL frame glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT) # draw 3D hand drawHand() # refresh the frame pygame.display.flip()
def main(): pygame.init() display = (400,400) pygame.display.set_mode(display, DOUBLEBUF|OPENGL) # view angle, aspect ratio, z_near, z_far (z's are clipping planes) gluPerspective(90, 1, 1.0, 50.0) glTranslatef(0.0, 0.0, -20) # move cube away from screen (zoom out) glRotatef(0, 0, 0, 0) # Open serial port and parse serial input inside a thread #ser = serial.Serial('COM3', 9600) # Bhavit's PORT ser = serial.Serial('/dev/ttyACM0', 9600) #Bhavesh's PORT serialThread = threading.Thread(target=HandsOn.parseSerialHandData, args=(ser,)) serialThread.setDaemon(True) serialThread.start() pseudoMainThread = threading.Thread(target=HandsOn.pseudoMain) pseudoMainThread.setDaemon(True) pseudoMainThread.start() while True: for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() ser.close() quit() # clear GL frame glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT) # draw 3D hand drawHand() # refresh the frame pygame.display.flip()
def drawHand(): """Draws the 3D hand using euler angles and finger joint angles""" touchThres = 2000 # clear previous rotations and reset scene glLoadIdentity() gluPerspective(90, 1, 1.0, 50.0) glTranslatef(0.0, 0.0, -20) # move cube away from screen (zoom out) # rotate using Euler angles glRotatef(share_var.pitch, 1, 0, 0) glRotatef(share_var.yaw, 0, 1, 0) glRotatef(share_var.roll, 0, 0, 1) ## draw knuckles and fingers # pinky knuckle glTranslatef(3.0, 0, -3.5) glRotatef(-share_var.flexPinkyFinger, 1, 0, 0) glTranslatef(0, 0, -2.0) drawBox(1, 1, 4, share_var.touchPinkySide > touchThres) # pinky finger glTranslatef(0, 0, -2.0) glRotatef(-share_var.flexPinkyFinger, 1, 0, 0) glTranslatef(0, 0, -1.5) drawBox(1, 1, 3, share_var.touchPinkyTop > touchThres) glTranslatef(0, 0, 1.5) glRotatef(share_var.flexPinkyFinger, 1, 0, 0) glTranslatef(0, 0, 2.0) # end pinky finger glTranslatef(0, 0, 2.0) glRotatef(share_var.flexPinkyFinger, 1, 0, 0) glTranslatef(-3.0, 0, 3.5) # end pinky knuckle # ring knuckle glTranslatef(1.6, 0, -3.0) glRotatef(-share_var.flexRingKnuckle, 1, 0, 0) glTranslatef(0, 0, -2.5) drawBox(1, 1, 5, share_var.touchRing > touchThres) # ring finger glTranslatef(0, 0, -3.5) glRotatef(-share_var.flexRingFinger, 1, 0, 0) glTranslatef(0, 0, -2.0) drawBox(1, 1, 4, False) glTranslatef(0, 0, 2.0) glRotatef(share_var.flexRingFinger, 1, 0, 0) glTranslatef(0, 0, 3.5) # end ring finger glTranslatef(0, 0, 2.5) glRotatef(share_var.flexRingKnuckle, 1, 0, 0) glTranslatef(-1.6, 0, 3.0) # end ring knuckle # middle knuckle glTranslatef(-0.2, 0, -3.5) glRotatef(-share_var.flexMiddleKnuckle, 1, 0, 0) glTranslatef(0, 0, -3.0) drawBox(1, 1, 6.0, share_var.touchMidSide > touchThres) # middle finger glTranslatef(0, 0, -3.5) glRotatef(-share_var.flexMiddleFinger, 1, 0, 0) glTranslatef(0, 0, -2.5) drawBox(1, 1, 5, share_var.touchMidTop > touchThres) glTranslatef(0, 0, 2.5) glRotatef(share_var.flexMiddleFinger, 1, 0, 0) glTranslatef(0, 0, 3.5) # end middle finger glTranslatef(0, 0, 3.0) glRotatef(share_var.flexMiddleKnuckle, 1, 0, 0) glTranslatef(0.2, 0, 3.5) # end middle knuckle # index knuckle glTranslatef(-2.0, 0, -3.0) glRotatef(-share_var.flexIndexKnuckle, 1, 0, 0) glTranslatef(0, 0, -2.5) drawBox(1, 1, 5, share_var.touchIndSide > touchThres) # index finger glTranslatef(0, 0, -3.5) glRotatef(-share_var.flexIndexFinger, 1, 0, 0) glTranslatef(0, 0, -2.0) drawBox(1, 1, 4, share_var.touchIndTop > touchThres) glTranslatef(0, 0, 2.0) glRotatef(share_var.flexIndexFinger, 1, 0, 0) glTranslatef(0, 0, 3.5) # end index finger glTranslatef(0, 0, 2.5) glRotatef(share_var.flexIndexKnuckle, 1, 0, 0) glTranslatef(2.0, 0, 3.0) # end index knuckle # thumb knuckle glTranslatef(-3.2, 0, -1.5) glRotatef(40, 0, 1, 0) # rotate thumb sideways glRotatef(-share_var.flexThumbKnuckle, 0.3, 0, -0.1) glTranslatef(0, 0, -2.0) drawBox(1, 1, 3.5, False) # thumb glTranslatef(0, 0, -2.0) glRotatef(-share_var.flexThumb, 1, 0, 0) glTranslatef(0, 0, -1.0) drawBox(1, 1, 2, False) glTranslatef(0, 0, 1.0) glRotatef(share_var.flexThumb, 1, 0, 0) glTranslatef(0, 0, 2.0) # end thumb glTranslatef(0, 0, 2.0) glRotatef(share_var.flexThumbKnuckle, 0.3, 0, -0.1) glRotatef(-40, 0, 1, 0) # become parallel to palm again glTranslatef(3.2, 0, 1.5) # end thumb knuckle ## draw the palm drawBox(6, 1, 6, False)
def drawHand(): """Draws the 3D hand using euler angles and finger joint angles""" touchThres = 2000 # clear previous rotations and reset scene glLoadIdentity() gluPerspective(90, 1, 1.0, 50.0) glTranslatef(0.0, 0.0, -20) # move cube away from screen (zoom out) # rotate using Euler angles glRotatef(share_var.pitch, 1, 0, 0) glRotatef(share_var.yaw, 0, 1, 0) glRotatef(share_var.roll, 0, 0, 1) ## draw knuckles and fingers # pinky knuckle glTranslatef(3.0,0,-3.5) glRotatef(-share_var.flexPinkyFinger, 1, 0, 0) glTranslatef(0,0,-2.0) drawBox(1,1,4,share_var.touchPinkySide > touchThres) # pinky finger glTranslatef(0,0,-2.0) glRotatef(-share_var.flexPinkyFinger,1,0,0) glTranslatef(0,0,-1.5) drawBox(1,1,3,share_var.touchPinkyTop > touchThres) glTranslatef(0,0,1.5) glRotatef(share_var.flexPinkyFinger,1,0,0) glTranslatef(0,0,2.0) # end pinky finger glTranslatef(0,0,2.0) glRotatef(share_var.flexPinkyFinger, 1, 0, 0) glTranslatef(-3.0,0,3.5) # end pinky knuckle # ring knuckle glTranslatef(1.6,0,-3.0) glRotatef(-share_var.flexRingKnuckle, 1, 0, 0) glTranslatef(0,0,-2.5) drawBox(1,1,5,share_var.touchRing > touchThres) # ring finger glTranslatef(0,0,-3.5) glRotatef(-share_var.flexRingFinger,1,0,0) glTranslatef(0,0,-2.0) drawBox(1,1,4,False) glTranslatef(0,0,2.0) glRotatef(share_var.flexRingFinger,1,0,0) glTranslatef(0,0,3.5) # end ring finger glTranslatef(0,0,2.5) glRotatef(share_var.flexRingKnuckle, 1, 0, 0) glTranslatef(-1.6,0,3.0) # end ring knuckle # middle knuckle glTranslatef(-0.2,0,-3.5) glRotatef(-share_var.flexMiddleKnuckle, 1, 0, 0) glTranslatef(0,0,-3.0) drawBox(1,1,6.0,share_var.touchMidSide > touchThres) # middle finger glTranslatef(0,0,-3.5) glRotatef(-share_var.flexMiddleFinger,1,0,0) glTranslatef(0,0,-2.5) drawBox(1,1,5,share_var.touchMidTop > touchThres) glTranslatef(0,0,2.5) glRotatef(share_var.flexMiddleFinger,1,0,0) glTranslatef(0,0,3.5) # end middle finger glTranslatef(0,0,3.0) glRotatef(share_var.flexMiddleKnuckle, 1, 0, 0) glTranslatef(0.2,0,3.5) # end middle knuckle # index knuckle glTranslatef(-2.0,0,-3.0) glRotatef(-share_var.flexIndexKnuckle, 1, 0, 0) glTranslatef(0,0,-2.5) drawBox(1,1,5,share_var.touchIndSide > touchThres) # index finger glTranslatef(0,0,-3.5) glRotatef(-share_var.flexIndexFinger,1,0,0) glTranslatef(0,0,-2.0) drawBox(1,1,4,share_var.touchIndTop > touchThres) glTranslatef(0,0,2.0) glRotatef(share_var.flexIndexFinger,1,0,0) glTranslatef(0,0,3.5) # end index finger glTranslatef(0,0,2.5) glRotatef(share_var.flexIndexKnuckle, 1, 0, 0) glTranslatef(2.0,0,3.0) # end index knuckle # thumb knuckle glTranslatef(-3.2,0,-1.5) glRotatef(40,0,1,0) # rotate thumb sideways glRotatef(-share_var.flexThumbKnuckle, 0.3, 0, -0.1) glTranslatef(0,0,-2.0) drawBox(1,1,3.5,False) # thumb glTranslatef(0,0,-2.0) glRotatef(-share_var.flexThumb,1,0,0) glTranslatef(0,0,-1.0) drawBox(1,1,2,False) glTranslatef(0,0,1.0) glRotatef(share_var.flexThumb,1,0,0) glTranslatef(0,0,2.0) # end thumb glTranslatef(0,0,2.0) glRotatef(share_var.flexThumbKnuckle, 0.3, 0, -0.1) glRotatef(-40,0,1,0) # become parallel to palm again glTranslatef(3.2,0,1.5) # end thumb knuckle ## draw the palm drawBox(6,1,6,False)