4 OpenGL.ERROR_CHECKING = False
\r
5 from OpenGL.GLU import *
\r
6 from OpenGL.GL import *
\r
9 print "Failed to find PyOpenGL: http://pyopengl.sourceforge.net/"
\r
10 hasOpenGLlibs = False
\r
12 def InitGL(window, view3D, zoom):
\r
13 # set viewing projection
\r
14 glMatrixMode(GL_MODELVIEW)
\r
16 size = window.GetSize()
\r
17 glViewport(0,0, size.GetWidth(), size.GetHeight())
\r
19 glLightfv(GL_LIGHT0, GL_POSITION, [1.0, 1.0, 1.0, 0.0])
\r
20 glLightfv(GL_LIGHT1, GL_POSITION, [1.0, 1.0, 1.0, 0.0])
\r
22 glEnable(GL_NORMALIZE)
\r
23 glEnable(GL_LIGHTING)
\r
25 glEnable(GL_DEPTH_TEST)
\r
26 glEnable(GL_CULL_FACE)
\r
29 glClearColor(0.0, 0.0, 0.0, 1.0)
\r
33 glMatrixMode(GL_PROJECTION)
\r
35 aspect = float(size.GetWidth()) / float(size.GetHeight())
\r
37 gluPerspective(45.0, aspect, 1.0, 1000.0)
\r
39 glOrtho(-aspect, aspect, -1, 1, -1000.0, 1000.0)
\r
41 glMatrixMode(GL_MODELVIEW)
\r
43 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT)
\r
45 def DrawMachine(machineSize):
\r
48 glDisable(GL_LIGHTING)
\r
49 glBegin(GL_LINE_LOOP)
\r
51 glVertex3f(machineSize.x, 0, 0)
\r
52 glVertex3f(machineSize.x, machineSize.y, 0)
\r
53 glVertex3f(0, machineSize.y, 0)
\r
57 for i in xrange(0, int(machineSize.x), 10):
\r
59 glVertex3f(i, machineSize.y, 0)
\r
60 for i in xrange(0, int(machineSize.y), 10):
\r
62 glVertex3f(machineSize.x, i, 0)
\r
65 glBegin(GL_LINE_LOOP)
\r
66 glVertex3f(0, 0, machineSize.z)
\r
67 glVertex3f(machineSize.x, 0, machineSize.z)
\r
68 glVertex3f(machineSize.x, machineSize.y, machineSize.z)
\r
69 glVertex3f(0, machineSize.y, machineSize.z)
\r
73 glVertex3f(0, 0, machineSize.z)
\r
74 glVertex3f(machineSize.x, 0, 0)
\r
75 glVertex3f(machineSize.x, 0, machineSize.z)
\r
76 glVertex3f(machineSize.x, machineSize.y, 0)
\r
77 glVertex3f(machineSize.x, machineSize.y, machineSize.z)
\r
78 glVertex3f(0, machineSize.y, 0)
\r
79 glVertex3f(0, machineSize.y, machineSize.z)
\r
83 glTranslate(-5,-5,0)
\r
101 glDisable(GL_DEPTH_TEST)
\r
105 glTranslate(23,0,0)
\r
106 noZ = ResetMatrixRotationAndScale()
\r
108 glVertex3f(-0.8,1,0)
\r
109 glVertex3f(0.8,-1,0)
\r
110 glVertex3f(0.8,1,0)
\r
111 glVertex3f(-0.8,-1,0)
\r
118 glTranslate(0,23,0)
\r
119 ResetMatrixRotationAndScale()
\r
121 glVertex3f(-0.8, 1,0)
\r
122 glVertex3f( 0.0, 0,0)
\r
123 glVertex3f( 0.8, 1,0)
\r
124 glVertex3f(-0.8,-1,0)
\r
132 glTranslate(0,0,23)
\r
133 ResetMatrixRotationAndScale()
\r
135 glVertex3f(-0.8, 1,0)
\r
136 glVertex3f( 0.8, 1,0)
\r
137 glVertex3f( 0.8, 1,0)
\r
138 glVertex3f(-0.8,-1,0)
\r
139 glVertex3f(-0.8,-1,0)
\r
140 glVertex3f( 0.8,-1,0)
\r
145 glEnable(GL_DEPTH_TEST)
\r
147 def ResetMatrixRotationAndScale():
\r
148 matrix = glGetFloatv(GL_MODELVIEW_MATRIX)
\r
150 if matrix[3][2] > 0:
\r
152 scale2D = matrix[0][0]
\r
163 if matrix[3][2] != 0.0:
\r
164 matrix[3][0] /= -matrix[3][2] / 100
\r
165 matrix[3][1] /= -matrix[3][2] / 100
\r
166 matrix[3][2] = -100
\r
168 matrix[0][0] = scale2D
\r
169 matrix[1][1] = scale2D
\r
170 matrix[2][2] = scale2D
\r
171 matrix[3][2] = -100
\r
174 glLoadMatrixf(matrix)
\r
177 def DrawBox(vMin, vMax):
\r
178 glBegin(GL_LINE_LOOP)
\r
179 glVertex3f(vMin.x, vMin.y, vMin.z)
\r
180 glVertex3f(vMax.x, vMin.y, vMin.z)
\r
181 glVertex3f(vMax.x, vMax.y, vMin.z)
\r
182 glVertex3f(vMin.x, vMax.y, vMin.z)
\r
185 glBegin(GL_LINE_LOOP)
\r
186 glVertex3f(vMin.x, vMin.y, vMax.z)
\r
187 glVertex3f(vMax.x, vMin.y, vMax.z)
\r
188 glVertex3f(vMax.x, vMax.y, vMax.z)
\r
189 glVertex3f(vMin.x, vMax.y, vMax.z)
\r
192 glVertex3f(vMin.x, vMin.y, vMin.z)
\r
193 glVertex3f(vMin.x, vMin.y, vMax.z)
\r
194 glVertex3f(vMax.x, vMin.y, vMin.z)
\r
195 glVertex3f(vMax.x, vMin.y, vMax.z)
\r
196 glVertex3f(vMax.x, vMax.y, vMin.z)
\r
197 glVertex3f(vMax.x, vMax.y, vMax.z)
\r
198 glVertex3f(vMin.x, vMax.y, vMin.z)
\r
199 glVertex3f(vMin.x, vMax.y, vMax.z)
\r
203 glEnable(GL_CULL_FACE)
\r
204 for face in mesh.faces:
\r
205 glBegin(GL_TRIANGLES)
\r
209 glNormal3f(face.normal.x, face.normal.y, face.normal.z)
\r
210 glVertex3f(v1.x, v1.y, v1.z)
\r
211 glVertex3f(v2.x, v2.y, v2.z)
\r
212 glVertex3f(v3.x, v3.y, v3.z)
\r
213 glNormal3f(-face.normal.x, -face.normal.y, -face.normal.z)
\r
214 glVertex3f(v1.x, v1.y, v1.z)
\r
215 glVertex3f(v3.x, v3.y, v3.z)
\r
216 glVertex3f(v2.x, v2.y, v2.z)
\r