This project will go far with a community like this.

I thought my question was pretty specific.  Clearly I have a lot to
learn. Other people will ask this question, let it be a lesson to
them.

Thanks for your help guys.


On Feb 13, 4:43 am, "Txema Vicente" <[EMAIL PROTECTED]> wrote:
> >> have you readhttp://catb.org/~esr/faqs/smart-questions.html?
> > I feel the replies so far have been very reasonable.
>
> Me too.
> Try harder.
>
> # OpenGL Projections
> #---------------------------------
> from pyglet import window,image
> from pyglet.window import key
> from pyglet.gl import *
>
> def opengl_init():
>     glEnable(GL_BLEND)
>     glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA)
>     glDepthFunc(GL_LEQUAL)
>
> def your_test_code():
>     glColor4f(1,1,1,1)
>     glBegin(GL_LINES)
>     glVertex3f(0,0,0)
>     glVertex3f(640,480,0)
>     glEnd()
>
> class camera():
>     mode=1
>     x,y,z=0,0,512
>     rx,ry,rz=30,-45,0
>     w,h=640,480
>     far=8192
>     fov=60
>
>     def view(self,width,height):
>         self.w,self.h=width,height
>         glViewport(0, 0, width, height)
>         print "Viewport "+str(width)+"x"+str(height)
>         if self.mode==2: self.isometric()
>         elif self.mode==3: self.perspective()
>         else: self.default()
>
>     def default(self):
>         glMatrixMode(GL_PROJECTION)
>         glLoadIdentity()
>         glOrtho(0, self.w, 0, self.h, -1, 1)
>         glMatrixMode(GL_MODELVIEW)
>
>     def isometric(self):
>         glMatrixMode(GL_PROJECTION)
>         glLoadIdentity()
>         glOrtho(-self.w/2.,self.w/2.,-self.h/2.,self.h/2.,0,self.far)
>         glMatrixMode(GL_MODELVIEW)
>
>     def perspective(self):
>         glMatrixMode(GL_PROJECTION)
>         glLoadIdentity()
>         gluPerspective(self.fov, float(self.w)/self.h, 0.1, self.far)
>         glMatrixMode(GL_MODELVIEW)
>
>     def key(self, symbol, modifiers):
>         if symbol==key.F1:
>             self.mode=1
>             self.default()
>             print "Projection: Pyglet default"
>         elif symbol==key.F2:
>             print "Projection: 3D Isometric"
>             self.mode=2
>             self.isometric()
>         elif symbol==key.F3:
>             print "Projection: 3D Perspective"
>             self.mode=3
>             self.perspective()
>         elif self.mode==3 and symbol==key.NUM_SUBTRACT:
>             self.fov-=1
>             self.perspective()
>         elif self.mode==3 and symbol==key.NUM_ADD:
>             self.fov+=1
>             self.perspective()
>         else: print "KEY "+key.symbol_string(symbol)
>
>     def drag(self, x, y, dx, dy, button, modifiers):
>         if button==1:
>             self.x-=dx*2
>             self.y-=dy*2
>         elif button==2:
>             self.x-=dx*2
>             self.z-=dy*2
>         elif button==4:
>             self.ry+=dx/4.
>             self.rx-=dy/4.
>
>     def apply(self):
>         glLoadIdentity()
>         if self.mode==1: return
>         glTranslatef(-self.x,-self.y,-self.z)
>         glRotatef(self.rx,1,0,0)
>         glRotatef(self.ry,0,1,0)
>         glRotatef(self.rz,0,0,1)
>
> def x_array(list):
>     return (GLfloat * len(list))(*list)
>
> def axis(d=200):
>     vertices,colors=[],[]
>     #XZ RED
>     vertices.extend([-d, 0,-d, d, 0,-d, d, 0, d,-d, 0, d])
>     for i in range (0,4): colors.extend([1,0,0,0.5])
>     #YZ GREEN
>     vertices.extend([ 0,-d,-d, 0,-d, d, 0, d, d, 0, d,-d])
>     for i in range (0,4): colors.extend([0,1,0,0.5])
>     #XY BLUE
>     vertices.extend([-d,-d, 0, d,-d, 0, d, d, 0,-d, d, 0])
>     for i in range (0,4): colors.extend([0,0,1,0.5])
>     return x_array(vertices),x_array(colors)
> AXIS_VERTICES,AXIS_COLORS=axis()
>
> def draw_vertex_array(vertices,colors,mode=GL_LINES):
>     glEnableClientState(GL_VERTEX_ARRAY)
>     glEnableClientState(GL_COLOR_ARRAY)
>     glColorPointer(4, GL_FLOAT, 0, colors)
>     glVertexPointer(3, GL_FLOAT, 0, vertices)
>     glDrawArrays(GL_QUADS, 0, len(vertices)/3)
>     glDisableClientState(GL_VERTEX_ARRAY)
>     glDisableClientState(GL_COLOR_ARRAY)
>
> def draw_axis():
>     glEnable(GL_DEPTH_TEST)
>     draw_vertex_array(AXIS_VERTICES,AXIS_COLORS,GL_QUADS)
>     glDisable(GL_DEPTH_TEST)
>
> print "OpenGL playground for newbies"
> print "---------------------------------"
> print "Projection matrix -> F1, F2, F3"
> print "Camera -> Drag LMB,CMB,RMB"
> print ""
> cam=camera()
> win = window.Window(resizable=True)
> win.on_resize=cam.view
> win.on_key_press=cam.key
> win.on_mouse_drag=cam.drag
> opengl_init()
>
> while not win.has_exit:
>     win.dispatch_events()
>     glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)
>     cam.apply()
>     draw_axis()
>     your_test_code()
>     win.flip()
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"pyglet-users" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/pyglet-users?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to