Beispiel #1
0
    def render(self, geometry):
        """ Add the sphere to the view.

        :param scene: The view to render the model into
        :type scene: pyglet_helper.objects.View
        """
        # Renders a simple sphere with the #2 level of detail.
        if self.radius == 0.0:
            return
        self.init_model(geometry)

        coverage_levels = [30, 100, 500, 5000]
        lod = self.lod_adjust(geometry, coverage_levels, self.pos, self.radius)
        gl.glPushMatrix()

        self.model_world_transform(geometry.gcf, self.scale).gl_mult()
        self.color.gl_set(self.opacity)

        if self.translucent:
            # Spheres are convex, so we don't need to sort
            gl.glEnable(gl.GL_CULL_FACE)

            # Render the back half (inside)
            gl.glCullFace(gl.GL_FRONT)
            geometry.sphere_model[lod].gl_render()

            # Render the front half (outside)
            gl.glCullFace(gl.GL_BACK)
            geometry.sphere_model[lod].gl_render()
        else:
            # Render a simple sphere.
            geometry.sphere_model[lod].gl_render()
        gl.glPopMatrix()
Beispiel #2
0
    def render(self, scene):
        """Add the cone to the scene.

        :param scene: The view to render the model into
        :type scene: pyglet_helper.objects.View
        """
        if self.radius == 0:
            return

        self.init_model(scene)

        coverage_levels = [10, 30, 90, 250, 450]
        lod = self.lod_adjust(scene, coverage_levels, self.pos, self.radius)

        length = self.axis.mag()
        gl.glPushMatrix()
        self.model_world_transform(scene.gcf,
                                   Vector([length, self.radius,
                                           self.radius])).gl_mult()

        self.color.gl_set(self.opacity)
        if self.translucent:
            gl.glEnable(gl.GL_CULL_FACE)

            # Render the back half.
            gl.glCullFace(gl.GL_FRONT)
            scene.cone_model[lod].gl_render()

            # Render the front half.
            gl.glCullFace(gl.GL_BACK)
            scene.cone_model[lod].gl_render()
        else:
            scene.cone_model[lod].gl_render()
        gl.glPopMatrix()
Beispiel #3
0
    def render(self, scene):
        """Add the cone to the scene.

        :param scene: The view to render the model into
        :type scene: pyglet_helper.objects.View
        """
        if self.radius == 0:
            return

        self.init_model(scene)

        coverage_levels = [10, 30, 90, 250, 450]
        lod = self.lod_adjust(scene, coverage_levels, self.pos, self.radius)

        length = self.axis.mag()
        gl.glPushMatrix()
        self.model_world_transform(scene.gcf, Vector([length, self.radius,
                                                      self.radius])).gl_mult()

        self.color.gl_set(self.opacity)
        if self.translucent:
            gl.glEnable(gl.GL_CULL_FACE)

            # Render the back half.
            gl.glCullFace(gl.GL_FRONT)
            scene.cone_model[lod].gl_render()

            # Render the front half.
            gl.glCullFace(gl.GL_BACK)
            scene.cone_model[lod].gl_render()
        else:
            scene.cone_model[lod].gl_render()
        gl.glPopMatrix()
Beispiel #4
0
 def _set_backface_culling(self, value):
     self._backface_culling = value
     if self._backface_culling:
         gl.glCullFace(gl.GL_BACK)
         gl.glEnable(gl.GL_CULL_FACE)
     else:
         gl.glDisable(gl.GL_CULL_FACE)
Beispiel #5
0
    def render(self, geometry):
        """ Add the sphere to the view.

        :param scene: The view to render the model into
        :type scene: pyglet_helper.objects.View
        """
        # Renders a simple sphere with the #2 level of detail.
        if self.radius == 0.0:
            return
        self.init_model(geometry)

        coverage_levels = [30, 100, 500, 5000]
        lod = self.lod_adjust(geometry, coverage_levels, self.pos, self.radius)
        gl.glPushMatrix()

        self.model_world_transform(geometry.gcf, self.scale).gl_mult()
        self.color.gl_set(self.opacity)

        if self.translucent:
            # Spheres are convex, so we don't need to sort
            gl.glEnable(gl.GL_CULL_FACE)

            # Render the back half (inside)
            gl.glCullFace(gl.GL_FRONT)
            geometry.sphere_model[lod].gl_render()

            # Render the front half (outside)
            gl.glCullFace(gl.GL_BACK)
            geometry.sphere_model[lod].gl_render()
        else:
            # Render a simple sphere.
            geometry.sphere_model[lod].gl_render()
        gl.glPopMatrix()
Beispiel #6
0
    def enable(self):
        gl.glClear(gl.GL_COLOR_BUFFER_BIT | gl.GL_DEPTH_BUFFER_BIT | gl.GL_STENCIL_BUFFER_BIT)


        gl.glDisable(gl.GL_DEPTH_TEST)
        gl.glColorMask(gl.GL_FALSE, gl.GL_FALSE, gl.GL_FALSE, gl.GL_FALSE)

        gl.glEnable(gl.GL_STENCIL_TEST)
        gl.glStencilOp(gl.GL_REPLACE, gl.GL_REPLACE, gl.GL_REPLACE)
        gl.glStencilFunc(gl.GL_ALWAYS, 1, 0xffffffff)

        gl.glEnable(gl.GL_BLEND)
        gl.glBlendFunc(Blend.SRC_ALPHA, Blend.ONE_MINUS_SRC_ALPHA)
        self.ground.draw()

        gl.glColorMask(gl.GL_TRUE, gl.GL_TRUE, gl.GL_TRUE, gl.GL_TRUE)
        gl.glEnable(gl.GL_DEPTH_TEST)

        gl.glStencilFunc(gl.GL_EQUAL, 1, 0xffffffff)
        gl.glStencilOp(gl.GL_KEEP, gl.GL_KEEP, gl.GL_KEEP)

        gl.glPushMatrix()
        gl.glCullFace(gl.GL_FRONT)
        gl.glEnable(gl.GL_NORMALIZE)
        gl.glEnable(gl.GL_BLEND)
        gl.glBlendFunc(Blend.SRC_ALPHA, Blend.ONE_MINUS_SRC_ALPHA)
        self.camera.render(lights=self.lights, effect_pass=1, before_render=self._before_visible)
        gl.glDisable(gl.GL_NORMALIZE)
        gl.glCullFace(gl.GL_BACK)
        gl.glPopMatrix()

        gl.glDisable(gl.GL_STENCIL_TEST)
        
        gl.glEnable(gl.GL_BLEND)
        gl.glBlendFunc(Blend.SRC_ALPHA, Blend.ONE_MINUS_SRC_ALPHA)
        self.ground.draw()
Beispiel #7
0
from glsl import *
from pyglet.gl import (glClear, glClearColor, glEnable, glCullFace,
                       GL_DEPTH_BUFFER_BIT, GL_COLOR_BUFFER_BIT, GL_DEPTH_TEST,
                       GL_CULL_FACE, GL_BACK)
from pyglet.window import key, mouse, Window

from other.old_stuff.mathematics import create_perspective_matrix
from other.old_stuff.shader import Program, VertexShader, FragmentShader

# All calls to OpenGL functions must happen after we've created the context!
window = Window(width=720, height=720)
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)

glEnable(GL_DEPTH_TEST)
glEnable(GL_CULL_FACE)
glCullFace(GL_BACK)
glClearColor(0.1, 0.1, 0.12, 1.0)

object_shader = Program(
    vertex_shader=VertexShader(path='shaders/vertex_shader.txt'),
    fragment_shader=FragmentShader(path='shaders/fragment_shader.txt'),
    uniforms=OrderedDict(
        transform=Mat4(),
        view=Mat4(),
        projection=Mat4(
            *create_perspective_matrix(60, window.width /
                                       window.height, 1, 1000).flatten()),
    ),
    attributes=('location', 'normal', 'texture_coordinate'))

entity = Entity(location=(0, 0, -20))
Beispiel #8
0
        GAME.components.append(renderer)
    if SHAPE == "circle":
        circle_shape = Circle(
            center=Vec2.of(center),
            radius=radius,
            resolution=resolution,
            color=color,
            batch=renderer.batch,
            mode=MODE)
    else:
        rect_shape = Rectangle(
            center=Vec2.of(center),
            width=radius,
            height=radius/2,
            rotation=rotation,
            color=color,
            batch=renderer.batch,
            mode=MODE
        )


gl.glEnable(gl.GL_BLEND)
gl.glBlendFunc(gl.GL_SRC_ALPHA, gl.GL_SRC_ALPHA)
gl.glEnable(gl.GL_LINE_SMOOTH)

gl.glFrontFace(gl.GL_CCW)
gl.glEnable(gl.GL_CULL_FACE)
gl.glCullFace(gl.GL_BACK)

GAME.run()
Beispiel #9
0
 def draw_sensor(self):
     glCullFace(GL_FRONT)
     x, y, z = self.position
     w, h, d = self.dim
     overlap = 0.05
     x += overlap
     z += overlap
     y += overlap
     w -= overlap * 2
     h -= overlap * 2
     d -= overlap * 2
     dx, dy, dz = x + w, y + h, z + d
     alpha = 0.25
     graphics.draw(
         20,
         GL_QUADS,
         (
             "v3f/static",
             (
                 x,
                 y,
                 z,
                 x,
                 y,
                 dz,
                 x,
                 dy,
                 dz,
                 x,
                 dy,
                 z,  # side
                 dx,
                 y,
                 dz,
                 dx,
                 y,
                 z,
                 dx,
                 dy,
                 z,
                 dx,
                 dy,
                 dz,  # side
                 dx,
                 y,
                 z,
                 x,
                 y,
                 z,
                 x,
                 dy,
                 z,
                 dx,
                 dy,
                 z,  # side
                 x,
                 y,
                 dz,
                 dx,
                 y,
                 dz,
                 dx,
                 dy,
                 dz,
                 x,
                 dy,
                 dz,  # side
                 x,
                 y,
                 z,
                 dx,
                 y,
                 z,
                 dx,
                 y,
                 dz,
                 x,
                 y,
                 dz)  # bottom
         ),
         (
             "c4f/static",
             (
                 255,
                 255,
                 255,
                 alpha,  # 1
                 255,
                 255,
                 255,
                 alpha,  # 2
                 255,
                 255,
                 255,
                 alpha,  # 3
                 255,
                 255,
                 255,
                 alpha,  # 4
                 255,
                 255,
                 255,
                 alpha,  # 5
                 255,
                 255,
                 255,
                 alpha,  # 6
                 255,
                 255,
                 255,
                 alpha,  # 7
                 255,
                 255,
                 255,
                 alpha,  # 8
                 255,
                 255,
                 0,
                 alpha,  # 9
                 255,
                 255,
                 0,
                 alpha,  # 10
                 255,
                 255,
                 0,
                 alpha,  # 11
                 255,
                 255,
                 0,
                 alpha,  # 12
                 255,
                 255,
                 0,
                 alpha,  # 13
                 255,
                 255,
                 0,
                 alpha,  # 14
                 255,
                 255,
                 0,
                 alpha,  # 15
                 255,
                 255,
                 0,
                 alpha,  # 16
                 255,
                 0,
                 0,
                 alpha,  # 17
                 255,
                 0,
                 0,
                 alpha,  # 18
                 255,
                 0,
                 0,
                 alpha,  # 19
                 255,
                 0,
                 0,
                 alpha  # 20
             )))
     glCullFace(GL_BACK)