annotate lightsim/sim2 @ 2302:a6b611f32cce

rewrite Effect.ts to operate on new effect graphs
author drewp@bigasterisk.com
date Tue, 30 May 2023 23:58:47 -0700
parents f866d4dec57b
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
341
f866d4dec57b openglsim now mixes images
drewp@bigasterisk.com
parents:
diff changeset
1 #!/usr/bin/python2.4
f866d4dec57b openglsim now mixes images
drewp@bigasterisk.com
parents:
diff changeset
2 from __future__ import division
f866d4dec57b openglsim now mixes images
drewp@bigasterisk.com
parents:
diff changeset
3 import sys, time, math
f866d4dec57b openglsim now mixes images
drewp@bigasterisk.com
parents:
diff changeset
4 import Image, ImageFilter
f866d4dec57b openglsim now mixes images
drewp@bigasterisk.com
parents:
diff changeset
5 import Numeric as num
f866d4dec57b openglsim now mixes images
drewp@bigasterisk.com
parents:
diff changeset
6 from OpenGL import GL, GLUT, GLU
f866d4dec57b openglsim now mixes images
drewp@bigasterisk.com
parents:
diff changeset
7 from OpenGL.GL import *
f866d4dec57b openglsim now mixes images
drewp@bigasterisk.com
parents:
diff changeset
8
f866d4dec57b openglsim now mixes images
drewp@bigasterisk.com
parents:
diff changeset
9 def openglSetup(width=512, height=256):
f866d4dec57b openglsim now mixes images
drewp@bigasterisk.com
parents:
diff changeset
10 global cardList
f866d4dec57b openglsim now mixes images
drewp@bigasterisk.com
parents:
diff changeset
11
f866d4dec57b openglsim now mixes images
drewp@bigasterisk.com
parents:
diff changeset
12 glClearColor (0.0, 0.0, 0.0, 0.0)
f866d4dec57b openglsim now mixes images
drewp@bigasterisk.com
parents:
diff changeset
13 glShadeModel (GL_SMOOTH)
f866d4dec57b openglsim now mixes images
drewp@bigasterisk.com
parents:
diff changeset
14 glEnable(GL_COLOR_MATERIAL)
f866d4dec57b openglsim now mixes images
drewp@bigasterisk.com
parents:
diff changeset
15
f866d4dec57b openglsim now mixes images
drewp@bigasterisk.com
parents:
diff changeset
16 glLightfv(GL_LIGHT0, GL_AMBIENT, [0.0, 0.0, 0.0, 1.0])
f866d4dec57b openglsim now mixes images
drewp@bigasterisk.com
parents:
diff changeset
17 glLightfv(GL_LIGHT0, GL_DIFFUSE, [1.0, 1.0, 1.0, 1.0])
f866d4dec57b openglsim now mixes images
drewp@bigasterisk.com
parents:
diff changeset
18 glLightfv(GL_LIGHT0, GL_POSITION, [0.0, 3.0, 3.0, 0.0])
f866d4dec57b openglsim now mixes images
drewp@bigasterisk.com
parents:
diff changeset
19 glLightModelfv(GL_LIGHT_MODEL_AMBIENT, [0.2, 0.2, 0.2, 1.0])
f866d4dec57b openglsim now mixes images
drewp@bigasterisk.com
parents:
diff changeset
20 glLightModelfv(GL_LIGHT_MODEL_LOCAL_VIEWER, [0])
f866d4dec57b openglsim now mixes images
drewp@bigasterisk.com
parents:
diff changeset
21
f866d4dec57b openglsim now mixes images
drewp@bigasterisk.com
parents:
diff changeset
22 #glFrontFace(GL_CW)
f866d4dec57b openglsim now mixes images
drewp@bigasterisk.com
parents:
diff changeset
23 glEnable(GL_LIGHTING)
f866d4dec57b openglsim now mixes images
drewp@bigasterisk.com
parents:
diff changeset
24 glEnable(GL_LIGHT0)
f866d4dec57b openglsim now mixes images
drewp@bigasterisk.com
parents:
diff changeset
25 #glEnable(GL_AUTO_NORMAL)
f866d4dec57b openglsim now mixes images
drewp@bigasterisk.com
parents:
diff changeset
26 #glEnable(GL_NORMALIZE)
f866d4dec57b openglsim now mixes images
drewp@bigasterisk.com
parents:
diff changeset
27 glEnable(GL_DEPTH_TEST)
f866d4dec57b openglsim now mixes images
drewp@bigasterisk.com
parents:
diff changeset
28
f866d4dec57b openglsim now mixes images
drewp@bigasterisk.com
parents:
diff changeset
29
f866d4dec57b openglsim now mixes images
drewp@bigasterisk.com
parents:
diff changeset
30 glViewport (0, 0, width, height)
f866d4dec57b openglsim now mixes images
drewp@bigasterisk.com
parents:
diff changeset
31 glMatrixMode (GL_PROJECTION)
f866d4dec57b openglsim now mixes images
drewp@bigasterisk.com
parents:
diff changeset
32 glLoadIdentity ()
f866d4dec57b openglsim now mixes images
drewp@bigasterisk.com
parents:
diff changeset
33 glFrustum (-1.0, 1.0, -1.0, 1.0, 1.5, 20.0)
f866d4dec57b openglsim now mixes images
drewp@bigasterisk.com
parents:
diff changeset
34 glMatrixMode (GL_MODELVIEW)
f866d4dec57b openglsim now mixes images
drewp@bigasterisk.com
parents:
diff changeset
35
f866d4dec57b openglsim now mixes images
drewp@bigasterisk.com
parents:
diff changeset
36 cardList = glGenLists(1)
f866d4dec57b openglsim now mixes images
drewp@bigasterisk.com
parents:
diff changeset
37 glNewList(cardList, GL_COMPILE)
f866d4dec57b openglsim now mixes images
drewp@bigasterisk.com
parents:
diff changeset
38 glColor3f(1,1,1)
f866d4dec57b openglsim now mixes images
drewp@bigasterisk.com
parents:
diff changeset
39 glBegin(GL_QUADS)
f866d4dec57b openglsim now mixes images
drewp@bigasterisk.com
parents:
diff changeset
40 glTexCoord2f(0.0, 1.0); glVertex3f(-1.0, 0.0, 1.0)
f866d4dec57b openglsim now mixes images
drewp@bigasterisk.com
parents:
diff changeset
41 glTexCoord2f(1.0, 1.0); glVertex3f( 1.0, 0.0, 1.0)
f866d4dec57b openglsim now mixes images
drewp@bigasterisk.com
parents:
diff changeset
42 glTexCoord2f(1.0, 0.0); glVertex3f( 1.0, 1.0, 1.0)
f866d4dec57b openglsim now mixes images
drewp@bigasterisk.com
parents:
diff changeset
43 glTexCoord2f(0.0, 0.0); glVertex3f(-1.0, 1.0, 1.0)
f866d4dec57b openglsim now mixes images
drewp@bigasterisk.com
parents:
diff changeset
44 glEnd()
f866d4dec57b openglsim now mixes images
drewp@bigasterisk.com
parents:
diff changeset
45 glEndList()
f866d4dec57b openglsim now mixes images
drewp@bigasterisk.com
parents:
diff changeset
46
f866d4dec57b openglsim now mixes images
drewp@bigasterisk.com
parents:
diff changeset
47
f866d4dec57b openglsim now mixes images
drewp@bigasterisk.com
parents:
diff changeset
48
f866d4dec57b openglsim now mixes images
drewp@bigasterisk.com
parents:
diff changeset
49 def imageCard(img):
f866d4dec57b openglsim now mixes images
drewp@bigasterisk.com
parents:
diff changeset
50 """card facing +Z from -1<x<1 -1<y<1"""
f866d4dec57b openglsim now mixes images
drewp@bigasterisk.com
parents:
diff changeset
51 textureData = img.convert(mode="RGBA").tostring()
f866d4dec57b openglsim now mixes images
drewp@bigasterisk.com
parents:
diff changeset
52
f866d4dec57b openglsim now mixes images
drewp@bigasterisk.com
parents:
diff changeset
53 glBindTexture(GL_TEXTURE_2D, 0)
f866d4dec57b openglsim now mixes images
drewp@bigasterisk.com
parents:
diff changeset
54 glTexImage2D( GL_TEXTURE_2D, 0, GL_RGBA,
f866d4dec57b openglsim now mixes images
drewp@bigasterisk.com
parents:
diff changeset
55 512, #multiImage.size()[0],
f866d4dec57b openglsim now mixes images
drewp@bigasterisk.com
parents:
diff changeset
56 256, #multiImage.size()[1],
f866d4dec57b openglsim now mixes images
drewp@bigasterisk.com
parents:
diff changeset
57 0,
f866d4dec57b openglsim now mixes images
drewp@bigasterisk.com
parents:
diff changeset
58 GL_RGBA, GL_UNSIGNED_BYTE, textureData)
f866d4dec57b openglsim now mixes images
drewp@bigasterisk.com
parents:
diff changeset
59 glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST)
f866d4dec57b openglsim now mixes images
drewp@bigasterisk.com
parents:
diff changeset
60 glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST)
f866d4dec57b openglsim now mixes images
drewp@bigasterisk.com
parents:
diff changeset
61
f866d4dec57b openglsim now mixes images
drewp@bigasterisk.com
parents:
diff changeset
62 glCallList(cardList)
f866d4dec57b openglsim now mixes images
drewp@bigasterisk.com
parents:
diff changeset
63
f866d4dec57b openglsim now mixes images
drewp@bigasterisk.com
parents:
diff changeset
64 def setupDraw():
f866d4dec57b openglsim now mixes images
drewp@bigasterisk.com
parents:
diff changeset
65 """per-frame setup"""
f866d4dec57b openglsim now mixes images
drewp@bigasterisk.com
parents:
diff changeset
66 glClearColor(0.0, 0.0, 0.0, 0.0)
f866d4dec57b openglsim now mixes images
drewp@bigasterisk.com
parents:
diff changeset
67 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)
f866d4dec57b openglsim now mixes images
drewp@bigasterisk.com
parents:
diff changeset
68 glLoadIdentity ()
f866d4dec57b openglsim now mixes images
drewp@bigasterisk.com
parents:
diff changeset
69 GLU.gluLookAt (0.5, 0.5, 8.0,
f866d4dec57b openglsim now mixes images
drewp@bigasterisk.com
parents:
diff changeset
70 0.5, 0.5, 0.0,
f866d4dec57b openglsim now mixes images
drewp@bigasterisk.com
parents:
diff changeset
71 0.0, 1.0, 0.0)
f866d4dec57b openglsim now mixes images
drewp@bigasterisk.com
parents:
diff changeset
72
f866d4dec57b openglsim now mixes images
drewp@bigasterisk.com
parents:
diff changeset
73 glDisable(GL_TEXTURE_2D)
f866d4dec57b openglsim now mixes images
drewp@bigasterisk.com
parents:
diff changeset
74
f866d4dec57b openglsim now mixes images
drewp@bigasterisk.com
parents:
diff changeset
75 correctFrameStart = None
f866d4dec57b openglsim now mixes images
drewp@bigasterisk.com
parents:
diff changeset
76 def drawFrame():
f866d4dec57b openglsim now mixes images
drewp@bigasterisk.com
parents:
diff changeset
77 global correctFrameStart
f866d4dec57b openglsim now mixes images
drewp@bigasterisk.com
parents:
diff changeset
78 t1 = time.time()
f866d4dec57b openglsim now mixes images
drewp@bigasterisk.com
parents:
diff changeset
79 setupDraw()
f866d4dec57b openglsim now mixes images
drewp@bigasterisk.com
parents:
diff changeset
80
f866d4dec57b openglsim now mixes images
drewp@bigasterisk.com
parents:
diff changeset
81 matching = False
f866d4dec57b openglsim now mixes images
drewp@bigasterisk.com
parents:
diff changeset
82 glPushMatrix()
f866d4dec57b openglsim now mixes images
drewp@bigasterisk.com
parents:
diff changeset
83 try:
f866d4dec57b openglsim now mixes images
drewp@bigasterisk.com
parents:
diff changeset
84 glTranslatef(1, -.9, 3.2)
f866d4dec57b openglsim now mixes images
drewp@bigasterisk.com
parents:
diff changeset
85 # flip to compensate for the camera facing the user
f866d4dec57b openglsim now mixes images
drewp@bigasterisk.com
parents:
diff changeset
86 glScalef(-1, 1, 1)
f866d4dec57b openglsim now mixes images
drewp@bigasterisk.com
parents:
diff changeset
87
f866d4dec57b openglsim now mixes images
drewp@bigasterisk.com
parents:
diff changeset
88 glDisable(GL_LIGHTING)
f866d4dec57b openglsim now mixes images
drewp@bigasterisk.com
parents:
diff changeset
89 glEnable(GL_TEXTURE_2D)
f866d4dec57b openglsim now mixes images
drewp@bigasterisk.com
parents:
diff changeset
90
f866d4dec57b openglsim now mixes images
drewp@bigasterisk.com
parents:
diff changeset
91 # imageCard(Image.open("skyline/bg.png"))
f866d4dec57b openglsim now mixes images
drewp@bigasterisk.com
parents:
diff changeset
92 imageCard(Image.open("skyline/cyc-lo-red.png"))
f866d4dec57b openglsim now mixes images
drewp@bigasterisk.com
parents:
diff changeset
93
f866d4dec57b openglsim now mixes images
drewp@bigasterisk.com
parents:
diff changeset
94 ## if grab.lastFrame:
f866d4dec57b openglsim now mixes images
drewp@bigasterisk.com
parents:
diff changeset
95 ## imageCard(grab.lastFrame)
f866d4dec57b openglsim now mixes images
drewp@bigasterisk.com
parents:
diff changeset
96 ## glEnable(GL_LIGHTING)
f866d4dec57b openglsim now mixes images
drewp@bigasterisk.com
parents:
diff changeset
97 ## glDisable(GL_TEXTURE_2D)
f866d4dec57b openglsim now mixes images
drewp@bigasterisk.com
parents:
diff changeset
98 ## if grab.seenPose:
f866d4dec57b openglsim now mixes images
drewp@bigasterisk.com
parents:
diff changeset
99 ## for colorName, pos in grab.seenPose.pos.items():
f866d4dec57b openglsim now mixes images
drewp@bigasterisk.com
parents:
diff changeset
100 ## cube(color=(x / 255 for x in vision.colors[colorName]),
f866d4dec57b openglsim now mixes images
drewp@bigasterisk.com
parents:
diff changeset
101 ## center=((1-pos[0]) * 2 - 1, pos[1] * 2 - 1, 1),
f866d4dec57b openglsim now mixes images
drewp@bigasterisk.com
parents:
diff changeset
102 ## side=.1, wire=False)
f866d4dec57b openglsim now mixes images
drewp@bigasterisk.com
parents:
diff changeset
103 ## matching = game.pose.compare(grab.seenPose)
f866d4dec57b openglsim now mixes images
drewp@bigasterisk.com
parents:
diff changeset
104 glEnable(GL_LIGHTING)
f866d4dec57b openglsim now mixes images
drewp@bigasterisk.com
parents:
diff changeset
105 glDisable(GL_TEXTURE_2D)
f866d4dec57b openglsim now mixes images
drewp@bigasterisk.com
parents:
diff changeset
106 finally:
f866d4dec57b openglsim now mixes images
drewp@bigasterisk.com
parents:
diff changeset
107 glPopMatrix()
f866d4dec57b openglsim now mixes images
drewp@bigasterisk.com
parents:
diff changeset
108
f866d4dec57b openglsim now mixes images
drewp@bigasterisk.com
parents:
diff changeset
109
f866d4dec57b openglsim now mixes images
drewp@bigasterisk.com
parents:
diff changeset
110 glFlush()
f866d4dec57b openglsim now mixes images
drewp@bigasterisk.com
parents:
diff changeset
111 #print "draw", time.time() - t1
f866d4dec57b openglsim now mixes images
drewp@bigasterisk.com
parents:
diff changeset
112
f866d4dec57b openglsim now mixes images
drewp@bigasterisk.com
parents:
diff changeset
113 GLUT.glutInit(sys.argv)
f866d4dec57b openglsim now mixes images
drewp@bigasterisk.com
parents:
diff changeset
114 window = GLUT.glutCreateWindow("sim2")
f866d4dec57b openglsim now mixes images
drewp@bigasterisk.com
parents:
diff changeset
115 openglSetup()
f866d4dec57b openglsim now mixes images
drewp@bigasterisk.com
parents:
diff changeset
116 GLUT.glutDisplayFunc(drawFrame)
f866d4dec57b openglsim now mixes images
drewp@bigasterisk.com
parents:
diff changeset
117 def menu(arg):
f866d4dec57b openglsim now mixes images
drewp@bigasterisk.com
parents:
diff changeset
118 print "hi", arg
f866d4dec57b openglsim now mixes images
drewp@bigasterisk.com
parents:
diff changeset
119 GLUT.glutCreateMenu(menu)
f866d4dec57b openglsim now mixes images
drewp@bigasterisk.com
parents:
diff changeset
120 GLUT.glutAddMenuEntry("hi", 1)
f866d4dec57b openglsim now mixes images
drewp@bigasterisk.com
parents:
diff changeset
121 GLUT.glutAttachMenu(GLUT.GLUT_RIGHT_BUTTON)
f866d4dec57b openglsim now mixes images
drewp@bigasterisk.com
parents:
diff changeset
122
f866d4dec57b openglsim now mixes images
drewp@bigasterisk.com
parents:
diff changeset
123 GLUT.glutMainLoop()