Mercurial > code > home > repos > light9
diff lightsim/sim2 @ 341:f866d4dec57b
openglsim now mixes images
author | drewp@bigasterisk.com |
---|---|
date | Tue, 29 May 2007 18:20:15 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lightsim/sim2 Tue May 29 18:20:15 2007 +0000 @@ -0,0 +1,123 @@ +#!/usr/bin/python2.4 +from __future__ import division +import sys, time, math +import Image, ImageFilter +import Numeric as num +from OpenGL import GL, GLUT, GLU +from OpenGL.GL import * + +def openglSetup(width=512, height=256): + global cardList + + glClearColor (0.0, 0.0, 0.0, 0.0) + glShadeModel (GL_SMOOTH) + glEnable(GL_COLOR_MATERIAL) + + glLightfv(GL_LIGHT0, GL_AMBIENT, [0.0, 0.0, 0.0, 1.0]) + glLightfv(GL_LIGHT0, GL_DIFFUSE, [1.0, 1.0, 1.0, 1.0]) + glLightfv(GL_LIGHT0, GL_POSITION, [0.0, 3.0, 3.0, 0.0]) + glLightModelfv(GL_LIGHT_MODEL_AMBIENT, [0.2, 0.2, 0.2, 1.0]) + glLightModelfv(GL_LIGHT_MODEL_LOCAL_VIEWER, [0]) + + #glFrontFace(GL_CW) + glEnable(GL_LIGHTING) + glEnable(GL_LIGHT0) + #glEnable(GL_AUTO_NORMAL) + #glEnable(GL_NORMALIZE) + glEnable(GL_DEPTH_TEST) + + + glViewport (0, 0, width, height) + glMatrixMode (GL_PROJECTION) + glLoadIdentity () + glFrustum (-1.0, 1.0, -1.0, 1.0, 1.5, 20.0) + glMatrixMode (GL_MODELVIEW) + + cardList = glGenLists(1) + glNewList(cardList, GL_COMPILE) + glColor3f(1,1,1) + glBegin(GL_QUADS) + glTexCoord2f(0.0, 1.0); glVertex3f(-1.0, 0.0, 1.0) + glTexCoord2f(1.0, 1.0); glVertex3f( 1.0, 0.0, 1.0) + glTexCoord2f(1.0, 0.0); glVertex3f( 1.0, 1.0, 1.0) + glTexCoord2f(0.0, 0.0); glVertex3f(-1.0, 1.0, 1.0) + glEnd() + glEndList() + + + +def imageCard(img): + """card facing +Z from -1<x<1 -1<y<1""" + textureData = img.convert(mode="RGBA").tostring() + + glBindTexture(GL_TEXTURE_2D, 0) + glTexImage2D( GL_TEXTURE_2D, 0, GL_RGBA, + 512, #multiImage.size()[0], + 256, #multiImage.size()[1], + 0, + GL_RGBA, GL_UNSIGNED_BYTE, textureData) + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST) + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST) + + glCallList(cardList) + +def setupDraw(): + """per-frame setup""" + glClearColor(0.0, 0.0, 0.0, 0.0) + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT) + glLoadIdentity () + GLU.gluLookAt (0.5, 0.5, 8.0, + 0.5, 0.5, 0.0, + 0.0, 1.0, 0.0) + + glDisable(GL_TEXTURE_2D) + +correctFrameStart = None +def drawFrame(): + global correctFrameStart + t1 = time.time() + setupDraw() + + matching = False + glPushMatrix() + try: + glTranslatef(1, -.9, 3.2) + # flip to compensate for the camera facing the user + glScalef(-1, 1, 1) + + glDisable(GL_LIGHTING) + glEnable(GL_TEXTURE_2D) + +# imageCard(Image.open("skyline/bg.png")) + imageCard(Image.open("skyline/cyc-lo-red.png")) + +## if grab.lastFrame: +## imageCard(grab.lastFrame) +## glEnable(GL_LIGHTING) +## glDisable(GL_TEXTURE_2D) +## if grab.seenPose: +## for colorName, pos in grab.seenPose.pos.items(): +## cube(color=(x / 255 for x in vision.colors[colorName]), +## center=((1-pos[0]) * 2 - 1, pos[1] * 2 - 1, 1), +## side=.1, wire=False) +## matching = game.pose.compare(grab.seenPose) + glEnable(GL_LIGHTING) + glDisable(GL_TEXTURE_2D) + finally: + glPopMatrix() + + + glFlush() + #print "draw", time.time() - t1 + +GLUT.glutInit(sys.argv) +window = GLUT.glutCreateWindow("sim2") +openglSetup() +GLUT.glutDisplayFunc(drawFrame) +def menu(arg): + print "hi", arg +GLUT.glutCreateMenu(menu) +GLUT.glutAddMenuEntry("hi", 1) +GLUT.glutAttachMenu(GLUT.GLUT_RIGHT_BUTTON) + +GLUT.glutMainLoop()