Пример #1
0
def create_teapot(color=None):
    """
    Create a OpenGL teapot.

    :param color: Object color
    :type color: list
    :return: OpenGL list
    """
    obj = _gl.glGenLists(1)
    _gl.glNewList(obj, _gl.GL_COMPILE)
    _gl.glPushMatrix()
    if color is not None:
        _gl.glColor4fv(color)
    _gl.glRotate(90, 1, 0, 0)
    # noinspection PyBroadException
    try:
        _glut.glutSolidTeapot(1.0)
    except:
        if not _FIGURES_ERRS[4]:
            _print_gl_error(
                'OpenGL actual version doest not support glutSolidTeapot function'
            )
        _FIGURES_ERRS[4] = True
    _gl.glPopMatrix()
    _gl.glEndList()
    return obj
Пример #2
0
def create_teapot_textured(texture_list):
    """
    Creates a teapot textured.

    :param texture_list: Texture OpenGL list
    :return: Object list
    """
    obj = _gl.glGenLists(1)
    _gl.glNewList(obj, _gl.GL_COMPILE)
    _gl.glPushMatrix()
    for _i in range(len(texture_list)):
        _gl.glActiveTexture(_gl.GL_TEXTURE0 + _i)
        _gl.glEnable(_gl.GL_TEXTURE_2D)
        _gl.glBindTexture(_gl.GL_TEXTURE_2D, texture_list[_i])
    _gl.glRotate(90, 1, 0, 0)
    # noinspection PyBroadException
    try:
        _glut.glutSolidTeapot(1.0)
    except:
        if not _FIGURES_ERRS[4]:
            _print_gl_error(
                'OpenGL actual version does not support glutSolidTeapot function'
            )
        _FIGURES_ERRS[4] = True
    for _i in range(len(texture_list)):
        _gl.glActiveTexture(_gl.GL_TEXTURE0 + _i)
        _gl.glDisable(_gl.GL_TEXTURE_2D)
    _gl.glPopMatrix()
    _gl.glEndList()
    return obj
Пример #3
0
 def draw_teapot():
     if fill.value:
         gl.glEnable (gl.GL_LIGHTING)
         gl.glEnable (gl.GL_DEPTH_TEST)
         gl.glColor3f(color[0],color[1],color[2])
         gl.glPolygonOffset (1, 1)
         gl.glEnable (gl.GL_POLYGON_OFFSET_FILL)
         if shape.value == 0:
             glut.glutSolidCube(1)
         elif shape.value == 1:
             glut.glutSolidTorus(0.25, 0.50, 32, 32)
         else:
             glut.glutSolidTeapot(.75)
     gl.glDisable (gl.GL_LIGHTING)
     gl.glDisable (gl.GL_POLYGON_OFFSET_FILL)
     gl.glEnable (gl.GL_LINE_SMOOTH)
     gl.glEnable (gl.GL_BLEND)                     
     gl.glDepthMask (gl.GL_FALSE)
     gl.glColor4f(0,0,0,.5)
     if shape.value == 0:
         glut.glutWireCube(1)
     elif shape.value == 1:
         glut.glutWireTorus(0.25, 0.50, 32, 32)
     else:
         glut.glutWireTeapot(.75)
     gl.glDepthMask (gl.GL_TRUE)
Пример #4
0
 def draw_teapot():
     if fill.value:
         gl.glEnable(gl.GL_LIGHTING)
         gl.glEnable(gl.GL_DEPTH_TEST)
         gl.glColor3f(color[0], color[1], color[2])
         gl.glPolygonOffset(1, 1)
         gl.glEnable(gl.GL_POLYGON_OFFSET_FILL)
         if shape.value == 0:
             glut.glutSolidCube(1)
         elif shape.value == 1:
             glut.glutSolidTorus(0.25, 0.50, 32, 32)
         else:
             glut.glutSolidTeapot(.75)
     gl.glDisable(gl.GL_LIGHTING)
     gl.glDisable(gl.GL_POLYGON_OFFSET_FILL)
     gl.glEnable(gl.GL_LINE_SMOOTH)
     gl.glEnable(gl.GL_BLEND)
     gl.glDepthMask(gl.GL_FALSE)
     gl.glColor4f(0, 0, 0, .5)
     if shape.value == 0:
         glut.glutWireCube(1)
     elif shape.value == 1:
         glut.glutWireTorus(0.25, 0.50, 32, 32)
     else:
         glut.glutWireTeapot(.75)
     gl.glDepthMask(gl.GL_TRUE)
Пример #5
0
def Display():
    global angle

    gl.glMatrixMode(gl.GL_MODELVIEW)
    #Borramos la escena
    gl.glClear(gl.GL_COLOR_BUFFER_BIT | gl.GL_DEPTH_BUFFER_BIT)

    #Dibuja taza
    gl.glPushMatrix()
    gl.glColor3f(1.0, 1.0, 1.0)
    gl.glTranslatef(0.0, 0.0, -1.0)
    gl.glRotatef(angle, 0.0, 1.0, 0.0)
    glut.glutSolidTeapot(0.3)
    gl.glPopMatrix()

    #Dibuja Cubo
    gl.glPushMatrix()
    gl.glColor3f(0.0, 1.0, 0.0)
    gl.glTranslatef(0.0, 0.0, -4.0)
    gl.glRotatef(angle, 0.0, 1.0, 0.0)
    #gl.glRotatef(angle,0.0,1.0,0.0)
    gl.glTranslatef(1.0, 0.0, 0.0)
    glut.glutSolidCube(0.1)
    gl.glPopMatrix()

    glut.glutSwapBuffers()
    gl.glFlush()
Пример #6
0
def Display ():
	global angle

	gl.glMatrixMode(gl.GL_MODELVIEW)
	#Borramos la escena
	gl.glClear (gl.GL_COLOR_BUFFER_BIT | gl.GL_DEPTH_BUFFER_BIT)

	#Dibuja taza
	gl.glPushMatrix()
	gl.glColor3f (1.0, 1.0, 1.0)
	gl.glTranslatef(0.0,0.0,-1.0)
	gl.glRotatef(angle,0.0,1.0,0.0)
	glut.glutSolidTeapot(0.3)
	gl.glPopMatrix()

	#Dibuja Cubo
	gl.glPushMatrix()
	gl.glColor3f (0.0, 1.0, 0.0)
	gl.glTranslatef(0.0,0.0,-4.0)
	gl.glRotatef(angle,0.0,1.0,0.0)
	#gl.glRotatef(angle,0.0,1.0,0.0)
	gl.glTranslatef(1.0,0.0,0.0)
	glut.glutSolidCube(0.1)
	gl.glPopMatrix()

	glut.glutSwapBuffers()
	gl.glFlush()
Пример #7
0
 def DrawGL(self):
     if self.uninitialised:
         glNewList(self.DispList, GL_COMPILE)
         glRotatef(45.0, 0.0, 0.0, 1.0)
         glBindTexture(GL_TEXTURE_2D, self.texName[0])
         GLUT.glutSolidTeapot(2.0)
         glEndList()
         self.uninitialised = 0
     glCallList(self.DispList)
Пример #8
0
 def DrawGL(self):
   if self.uninitialised:
     glNewList(self.DispList, GL_COMPILE)
     glRotatef(45.0, 0.0, 0.0, 1.0)
     glBindTexture(GL_TEXTURE_2D, self.texName[0])
     GLUT.glutSolidTeapot(2.0)
     glEndList()
     self.uninitialised = 0
   glCallList(self.DispList)
Пример #9
0
def update():
    print 'update'
    GL.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT)
    GL.glMaterialfv(GL.GL_FRONT, GL.GL_AMBIENT, [0.1745, 0.0, 0.1, 0.0])
    GL.glMaterialfv(GL.GL_FRONT, GL.GL_DIFFUSE, [0.1, 0.0, 0.6, 0.0])
    GL.glMaterialfv(GL.GL_FRONT, GL.GL_SPECULAR, [0.7, 0.6, 0.8, 0.0])
    GL.glMaterialf(GL.GL_FRONT, GL.GL_SHININESS, 80)
    GLUT.glutSolidTeapot(0.5)
    GL.glFlush()
Пример #10
0
def display():
    gl.glClear(gl.GL_COLOR_BUFFER_BIT|gl.GL_DEPTH_BUFFER_BIT)
    gl.glPushMatrix()
    color = [1.0,0.5,0.5,1.]
    gl.glMaterialfv(gl.GL_FRONT,gl.GL_DIFFUSE,color)
#    glut.glutSolidSphere(2,20,20)
    glut.glutSolidTeapot(0.5)
    gl.glPopMatrix()
    glut.glutSwapBuffers()
    return
Пример #11
0
    def ogl_draw(self):
        gl.glPolygonMode(gl.GL_FRONT_AND_BACK, gl.GL_LINE)

        gl.glClear(gl.GL_COLOR_BUFFER_BIT | gl.GL_DEPTH_BUFFER_BIT)
        oglut.GLUT_KEY_UP
        glu.gluLookAt(4.0, 3.0, -3.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0)
        #built in model
        oglut.glutSolidTeapot(1)

        print("please overrider ogl_draw")
Пример #12
0
def draw_teapot(size):
    ''' Draw a red teapot at the origin. '''

    GL.glEnable(GL.GL_LIGHTING)
    GL.glEnable(GL.GL_LIGHT0)
    GL.glEnable(GL.GL_DEPTH_TEST)
    GL.glClear(GL.GL_DEPTH_BUFFER_BIT)

    # draw red teapot
    GL.glMaterialfv(GL.GL_FRONT, GL.GL_AMBIENT, [0,0,0,0])
    GL.glMaterialfv(GL.GL_FRONT, GL.GL_DIFFUSE, [1.0,1.0,1.0,0.0])
    GL.glMaterialfv(GL.GL_FRONT, GL.GL_SPECULAR, [0.7,0.6,0.6,0.0])
    GL.glMaterialf(GL.GL_FRONT, GL.GL_SHININESS, 0.25*128.0)
    GLUT.glutSolidTeapot(size)
Пример #13
0
def display():
    global wmngr_glut
    gl.glClearColor(0.3, 0.5, 0.8, 1.0)
    gl.glClear(gl.GL_COLOR_BUFFER_BIT | gl.GL_DEPTH_BUFFER_BIT)
    gl.glEnable(gl.GL_DEPTH_TEST)

    wmngr_glut.camera.set_gl_camera()

    gl.glEnable(gl.GL_LIGHTING)
    glut.glutSolidTeapot(0.1)

    gl.glDisable(gl.GL_LIGHTING)
    gl.glLineWidth(3)
    glut.glutSwapBuffers()
Пример #14
0
 def draw_teapot():
     gl.glEnable (gl.GL_LIGHTING)
     gl.glEnable (gl.GL_DEPTH_TEST)
     gl.glColor3f(1,1,0)
     gl.glPolygonOffset (1, 1)
     gl.glEnable (gl.GL_POLYGON_OFFSET_FILL)
     glut.glutSolidTeapot(.5)
     gl.glDisable (gl.GL_LIGHTING)
     gl.glDisable (gl.GL_POLYGON_OFFSET_FILL)
     gl.glEnable (gl.GL_LINE_SMOOTH)
     gl.glDepthMask (gl.GL_FALSE)
     gl.glColor4f(0,0,0,.25)
     glut.glutWireTeapot(.5)
     gl.glDepthMask (gl.GL_TRUE)
def display():
    start = time.time()

    gl.glClear(gl.GL_COLOR_BUFFER_BIT |gl.GL_DEPTH_BUFFER_BIT) 

    gl.glPushMatrix()
    gl.glRotatef(rot['x'], 1.0, 0.0, 0.0)
    gl.glRotatef(rot['y'], 0.0, 1.0, 0.0)
    gl.glRotatef(rot['z'], 0.0, 0.0, 1.0)

    gl.glLightfv(gl.GL_LIGHT0, gl.GL_DIFFUSE, [1.0,1.0,1.0,1.0]);
    gl.glLightfv(gl.GL_LIGHT0, gl.GL_POSITION,[0.4,0.0,-1.0,0.0]); 
    gl.glPopMatrix()

    gl.glPushMatrix()
    gl.glTranslate(-.5, 0, 0) 
    gl.glRotatef(rot['x'], 1.0, 0.0, 0.0)
    gl.glRotatef(rot['y'], 0.0, 1.0, 0.0)
    gl.glRotatef(rot['z'], 0.0, 0.0, 1.0)

    glut.glutSolidTeapot(.29)
    gl.glPopMatrix()

    gl.glPushMatrix()
    gl.glTranslate(.5, 0, 0) 
    gl.glRotatef(rot['x'], 1.0, 0.0, 0.0)
    gl.glRotatef(rot['y'], 0.0, 1.0, 0.0)
    gl.glRotatef(rot['z'], 0.0, 0.0, 1.0)

    glut.glutSolidTeapot(.29)
    glut.glutSwapBuffers()
    gl.glPopMatrix()

    end = time.time()

    per = max([0,PERIOD-end+start])
    glut.glutTimerFunc(int(per), redraw, 0)
    glut.glutSwapBuffers()
Пример #16
0
def draw():
   global orientation
   GL.glEnable(GL.GL_DEPTH_TEST)
   GL.glDepthFunc(GL.GL_LEQUAL)

   GL.glMatrixMode(GL.GL_PROJECTION)
   GL.glLoadIdentity()
   
   #GLU.gluLookAt(position[0], position[1], position[2], 
   #              position[0]  , position[1], position[2]  -  1,
   #              0, 1, 0)
   GLU.gluLookAt(0,0,0,0,0,-  1,
                 0, 1, 0)
   GL.glFrustum(-.2, .2, -.1, .1, .1, 1000)
   GL.glViewport(0, 0, 1512, 800)
   
   GL.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT)
      

   
   
   GL.glMatrixMode(GL.GL_MODELVIEW)
   GL.glLoadIdentity()
   
   
   mulmat3(orientation)
   
   GL.glTranslatef(position[0], position[1], position[2])
   
   #draw sky
   GL.glEnable(GL.GL_TEXTURE_2D) 
   GL.glBindTexture(GL.GL_TEXTURE_2D, skytexID) 
   #GL.glDisable( GL.GL_LIGHTING)
   GL.glBlendFunc (GL.GL_SRC_ALPHA, GL.GL_ONE)
   GL.glEnable(GL.GL_TEXTURE_2D) 
   GL.glTexParameterf(GL.GL_TEXTURE_2D, GL.GL_TEXTURE_MAG_FILTER, GL.GL_NEAREST)
   GL.glTexParameterf(GL.GL_TEXTURE_2D, GL.GL_TEXTURE_MIN_FILTER, GL.GL_NEAREST) 
   GL.glTexEnvf(GL.GL_TEXTURE_ENV, GL.GL_TEXTURE_ENV_MODE, GL.GL_DECAL)
   
   
   
   d = 1000
   
   GL.glPushMatrix()
   GL.glScalef(-500, 500, 500)
   GL.glBegin(GL.GL_QUADS)
   GL.glTexCoord2f(0.0, 0.0)
   GL.glVertex3f(-1.0, -1.0, 1.0)
   GL.glTexCoord2f(1.0, 0.0)
   GL.glVertex3f( 1.0, -1.0, 1.0)
   GL.glTexCoord2f(1.0, 1.0)
   GL.glVertex3f( 1.0, 1.0, 1.0)
   GL.glTexCoord2f(0.0, 1.0)
   GL.glVertex3f(-1.0, 1.0, 1.0)
   GL.glTexCoord2f(1.0, 0.0)
   GL.glVertex3f(-1.0, -1.0, -1.0)
   GL.glTexCoord2f(1.0, 1.0)
   GL.glVertex3f(-1.0, 1.0, -1.0)
   GL.glTexCoord2f(0.0, 1.0)
   GL.glVertex3f( 1.0, 1.0, -1.0)
   GL.glTexCoord2f(0.0, 0.0)
   GL.glVertex3f( 1.0, -1.0, -1.0)
   GL.glTexCoord2f(0.0, 1.0)
   GL.glVertex3f(-1.0, 1.0, -1.0)
   GL.glTexCoord2f(0.0, 0.0)
   GL.glVertex3f(-1.0, 1.0, 1.0)
   GL.glTexCoord2f(1.0, 0.0)
   GL.glVertex3f( 1.0, 1.0, 1.0)
   GL.glTexCoord2f(1.0, 1.0)
   GL.glVertex3f( 1.0, 1.0, -1.0)
   GL.glTexCoord2f(1.0, 1.0)
   GL.glVertex3f(-1.0, -1.0, -1.0)
   GL.glTexCoord2f(0.0, 1.0)
   GL.glVertex3f( 1.0, -1.0, -1.0)
   GL.glTexCoord2f(0.0, 0.0)
   GL.glVertex3f( 1.0, -1.0, 1.0)
   GL.glTexCoord2f(1.0, 0.0)
   GL.glVertex3f(-1.0, -1.0, 1.0)
   GL.glTexCoord2f(1.0, 0.0)
   GL.glVertex3f( 1.0, -1.0, -1.0)
   GL.glTexCoord2f(1.0, 1.0)
   GL.glVertex3f( 1.0, 1.0, -1.0)
   GL.glTexCoord2f(0.0, 1.0)
   GL.glVertex3f( 1.0, 1.0, 1.0)
   GL.glTexCoord2f(0.0, 0.0)
   GL.glVertex3f( 1.0, -1.0, 1.0)
   GL.glTexCoord2f(0.0, 0.0)
   GL.glVertex3f(-1.0, -1.0, -1.0)
   GL.glTexCoord2f(1.0, 0.0)
   GL.glVertex3f(-1.0, -1.0, 1.0)
   GL.glTexCoord2f(1.0, 1.0)
   GL.glVertex3f(-1.0, 1.0, 1.0)
   GL.glTexCoord2f(0.0, 1.0)
   GL.glVertex3f(-1.0, 1.0, -1.0)
   GL.glEnd()
   GL.glEnable( GL.GL_LIGHTING)
   
   GL.glDisable(GL.GL_TEXTURE_2D) 
   
   
   GL.glPopMatrix()
   
   GL.glLightfv(GL.GL_LIGHT0, GL.GL_POSITION, [1, 1, 1, 0])
   
   
   for pot in teapots:
       
       GL.glPushMatrix()
       
       if pot[3]: #teapot is found
           GL.glMaterialfv(GL.GL_FRONT_AND_BACK,  GL.GL_AMBIENT,  [0, 1, 0, 1])
           GL.glTranslatef(pot[0], pot[1] + 5, pot[2])
           GLUT.glutSolidTeapot(7)
       else:
           GL.glMaterialfv(GL.GL_FRONT_AND_BACK,  GL.GL_AMBIENT,  [1, 0, 1, 1])
           GL.glTranslatef(pot[0], pot[1], pot[2])
           GLUT.glutSolidTeapot(3)
       GL.glPopMatrix()
   
   GL.glScalef(1000, 100, 1000)
   GL.glEnableClientState(GL.GL_VERTEX_ARRAY);
   vertexVBO.bind()
   # when GL_ARRAY_BUFFER is bound to vertex buffer
   triBuffer.bind()
   GL.glVertexPointer(3, GL.GL_FLOAT, 0, None);
   
   normVBO.bind()
   # when GL_ARRAY_BUFFER is bound to normal buffer
   GL.glEnableClientState(GL.GL_NORMAL_ARRAY);
   GL.glNormalPointer(GL.GL_FLOAT, 0, None);
   
   GL.glMaterialfv(GL.GL_FRONT_AND_BACK,  GL.GL_AMBIENT,  [.8, .8, .8, 1])
   if useVBO:
       GL.glDrawElements(GL.GL_TRIANGLES, numtris*3, GL.GL_UNSIGNED_INT, None)
   else:
       for tri in tris:
           GL.glColor3f(1, 1, 1)
           GL.glBegin(GL.GL_TRIANGLES)
           for vert in tri:
               norm = norms[vert]
               vert = verts[vert]
               GL.glNormal3f(norm[0], norm[1], norm[2])
               
               
               GL.glVertex3f(vert[0], vert[1], vert[2])
           GL.glEnd()
   
   
   GL.glFlush()