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
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
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)
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)
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()
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()
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)
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()
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
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")
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)
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()
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()
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()