Beispiel #1
0
 def draw_axis(self, axis, label):
     if self.minimum_covering_sphere is None:
         self.update_minimum_covering_sphere()
     s = self.minimum_covering_sphere
     scale = max(max(s.box_max()), abs(min(s.box_min())))
     gltbx.fonts.ucs_bitmap_8x13.setup_call_lists()
     gl.glDisable(gl.GL_LIGHTING)
     if self.settings.black_background:
         gl.glColor3f(1.0, 1.0, 1.0)
     else:
         gl.glColor3f(0.0, 0.0, 0.0)
     gl.glLineWidth(1.0)
     gl.glBegin(gl.GL_LINES)
     gl.glVertex3f(0.0, 0.0, 0.0)
     gl.glVertex3f(axis[0] * scale, axis[1] * scale, axis[2] * scale)
     gl.glEnd()
     gl.glRasterPos3f(0.5 + axis[0] * scale, 0.2 + axis[1] * scale,
                      0.2 + axis[2] * scale)
     gltbx.fonts.ucs_bitmap_8x13.render_string(label)
     gl.glEnable(gl.GL_LINE_STIPPLE)
     gl.glLineStipple(4, 0xAAAA)
     gl.glBegin(gl.GL_LINES)
     gl.glVertex3f(0.0, 0.0, 0.0)
     gl.glVertex3f(-axis[0] * scale, -axis[1] * scale, -axis[2] * scale)
     gl.glEnd()
     gl.glDisable(gl.GL_LINE_STIPPLE)
Beispiel #2
0
 def set_lights(self):
     if self.flag_use_lights:
         gl.glMatrixMode(gl.GL_MODELVIEW)
         gl.glPushMatrix()
         gl.glLoadIdentity()
         gl.glEnable(gl.GL_LIGHTING)
         gl.glEnable(gl.GL_LIGHT0)
         gl.glLightfv(gl.GL_LIGHT0, gl.GL_POSITION, self.light0_position)
         gl.glPopMatrix()
Beispiel #3
0
 def enable(self, flag=True):
   from gltbx import gl
   if self.has_rescale_normal:
     mode = self.GL_RESCALE_NORMAL
   else:
     assert self.fallback_to_normalize,\
            "Rescale normals only available from OpenGL 1.2 onward"
     mode = gl.GL_NORMALIZE
   if flag:
     gl.glEnable(mode)
   else:
     gl.glDisable(mode)
Beispiel #4
0
 def enable(self, flag=True):
     from gltbx import gl
     if self.has_rescale_normal:
         mode = self.GL_RESCALE_NORMAL
     else:
         assert self.fallback_to_normalize,\
                "Rescale normals only available from OpenGL 1.2 onward"
         mode = gl.GL_NORMALIZE
     if flag:
         gl.glEnable(mode)
     else:
         gl.glDisable(mode)
Beispiel #5
0
 def setup_fog(self):
     if self.flag_show_fog:
         near, far = self.get_clipping_distances()
         fog_start = near + self.fog_scale_factor * (far - near)
         fog_end = max(fog_start + 5, far)
         gl.glMatrixMode(gl.GL_MODELVIEW)
         gl.glEnable(gl.GL_FOG)
         gl.glFogi(gl.GL_FOG_MODE, gl.GL_LINEAR)
         gl.glFogf(gl.GL_FOG_START, fog_start)
         gl.glFogf(gl.GL_FOG_END, fog_end)
         b = self.background_rgb
         gl.glFogfv(gl.GL_FOG_COLOR, [b[0], b[1], b[2], 1.0])
     else:
         gl.glDisable(gl.GL_FOG)
Beispiel #6
0
 def draw_cell(self, axes, color):
     astar, bstar, cstar = axes[0], axes[1], axes[2]
     gltbx.fonts.ucs_bitmap_8x13.setup_call_lists()
     gl.glDisable(gl.GL_LIGHTING)
     gl.glColor3f(*color)
     gl.glLineWidth(2.0)
     gl.glBegin(gl.GL_LINES)
     gl.glVertex3f(0.0, 0.0, 0.0)
     gl.glVertex3f(*astar.elems)
     gl.glVertex3f(0.0, 0.0, 0.0)
     gl.glVertex3f(*bstar.elems)
     gl.glVertex3f(0.0, 0.0, 0.0)
     gl.glVertex3f(*cstar.elems)
     gl.glEnd()
     gl.glRasterPos3f(*(1.01 * astar).elems)
     gltbx.fonts.ucs_bitmap_8x13.render_string("a*")
     gl.glRasterPos3f(*(1.01 * bstar).elems)
     gltbx.fonts.ucs_bitmap_8x13.render_string("b*")
     gl.glRasterPos3f(*(1.01 * cstar).elems)
     gltbx.fonts.ucs_bitmap_8x13.render_string("c*")
     gl.glEnable(gl.GL_LINE_STIPPLE)
     gl.glLineStipple(4, 0xAAAA)
     farpoint = astar + bstar + cstar
     # a* face
     gl.glBegin(gl.GL_LINE_LOOP)
     gl.glVertex3f(*farpoint.elems)
     gl.glVertex3f(*(farpoint - bstar).elems)
     gl.glVertex3f(*(farpoint - bstar - cstar).elems)
     gl.glVertex3f(*(farpoint - cstar).elems)
     gl.glEnd()
     # b* face
     gl.glBegin(gl.GL_LINE_LOOP)
     gl.glVertex3f(*farpoint.elems)
     gl.glVertex3f(*(farpoint - astar).elems)
     gl.glVertex3f(*(farpoint - astar - cstar).elems)
     gl.glVertex3f(*(farpoint - cstar).elems)
     gl.glEnd()
     # c* face
     gl.glBegin(gl.GL_LINE_LOOP)
     gl.glVertex3f(*farpoint.elems)
     gl.glVertex3f(*(farpoint - bstar).elems)
     gl.glVertex3f(*(farpoint - bstar - astar).elems)
     gl.glVertex3f(*(farpoint - astar).elems)
     gl.glEnd()
     gl.glDisable(gl.GL_LINE_STIPPLE)
Beispiel #7
0
 def draw_spheres(self, solid=False):
     gl.glMatrixMode(gl.GL_MODELVIEW)
     gray = 0.3
     gl.glColor3f(gray, gray, gray)
     if solid:
         gl.glEnable(gl.GL_LIGHTING)
         gl.glEnable(gl.GL_LIGHT0)
         gl.glLightfv(gl.GL_LIGHT0, gl.GL_AMBIENT, [1, 1, 1, 1])
         gl.glLightfv(gl.GL_LIGHT0, gl.GL_POSITION, [0, 0, 1, 0])
         gl.glEnable(gl.GL_BLEND)
         gl.glBlendFunc(gl.GL_SRC_ALPHA, gl.GL_ONE_MINUS_SRC_ALPHA)
         gl.glMaterialfv(gl.GL_FRONT, gl.GL_DIFFUSE, [1, 1, 1, 0.5])
         sphere = gltbx.util.SolidSphere
         grid = 50
     else:
         sphere = gltbx.util.WireSphere
         grid = 20
     for i, (x, r) in enumerate(self.spheres):
         gl.glPushMatrix()
         gl.glTranslated(*(x))
         sphere(radius=r, slices=grid, stacks=grid)
         gl.glPopMatrix()
     if solid:
         gl.glDisable(gl.GL_LIGHTING)
         gl.glDisable(gl.GL_LIGHT0)
         gl.glDisable(gl.GL_BLEND)
Beispiel #8
0
 def setup_lighting(self):
     if self.flag_use_lights:
         gl.glEnable(gl.GL_LIGHTING)
         gl.glEnable(gl.GL_LIGHT0)
         gl.glEnable(gl.GL_BLEND)
         # gl.glBlendFunc(gl.GL_SRC_ALPHA, gl.GL_ONE_MINUS_SRC_ALPHA)
         gl.glBlendFunc(gl.GL_SRC_ALPHA, gl.GL_ZERO)
         gl.glLightModeli(gl.GL_LIGHT_MODEL_TWO_SIDE, gl.GL_TRUE)
         gl.glLightfv(gl.GL_LIGHT0, gl.GL_AMBIENT, [0.0, 0.0, 0.0, 1.0])
         gl.glLightfv(gl.GL_LIGHT0, gl.GL_DIFFUSE, [1, 1, 1, 1])
         gl.glLightfv(gl.GL_LIGHT0, gl.GL_SPECULAR, [0.5, 0.5, 0.5, 1.0])