示例#1
0
	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)
示例#2
0
 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()
示例#3
0
    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()
示例#4
0
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()
示例#5
0
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()
示例#6
0
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)
示例#7
0
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)