Exemple #1
0
        def random_luminance():
            data = numpy.random.random_integers(0, 255, 32 * 32).astype('uint8')
            data.shape = (32,32,-1)

            from pygly import gl
            if gl.is_legacy():
                texture = Texture2D(data=data, internal_format=GL.GL_LUMINANCE)
            else:
                texture = Texture2D(data=data, swizzle='rrr', internal_format=GL.GL_RGB)
            return texture
    def load_texture_directory(self, directory):
        print 'Loading images from', directory

        extensions = [
            '.png',
            '.jpg',
            '.jpeg',
            '.tif',
            '.bmp',
            '.exr',
        ]

        for filename in os.listdir(directory):
            name, extension = os.path.splitext(filename)

            if extension not in extensions:
                continue

            try:
                print filename,
                full_path = '%s/%s' % (directory, filename)
                texture = Texture2D.from_file(full_path)
                self.textures.append((filename, texture))
            except Exception as e:
                print 'Exception:', e
                # ensure we unbound our textures
                GL.glBindTexture(GL.GL_TEXTURE_2D, 0)
    def load_texture_directory( self, directory ):
        print 'Loading images from', directory

        extensions = [
            '.png',
            '.jpg',
            '.jpeg',
            '.tif',
            '.bmp',
            '.exr',
            ]

        for filename in os.listdir( directory ):
            name, extension = os.path.splitext( filename )

            if extension not in extensions:
                continue

            try:
                print filename,
                full_path = '%s/%s' % (directory, filename)
                texture = Texture2D.from_file(full_path)
                self.textures.append((filename, texture))
            except Exception as e:
                print 'Exception:', e
                # ensure we unbound our textures
                GL.glBindTexture( GL.GL_TEXTURE_2D, 0 )
Exemple #4
0
    def setup_scene(self):
        """Creates the scene to be rendered.
        Creates our camera, scene graph, 
        """
        # don't call 'SimpleApplication's setup_scene
        CoreApplication.setup_scene(self)

        # setup our GL state
        # enable z buffer
        glEnable(GL_DEPTH_TEST)

        # enable back face culling
        glEnable(GL_CULL_FACE)
        glCullFace(GL_BACK)

        # load our texture
        # use the PIL decoder as the pyglet one is broken
        # and loads most images as greyscale
        path = os.path.join(os.path.dirname(__file__),
                            '../../data/md2/sydney.bmp')
        image = Image.open(path)
        self.texture = Texture2D(GL_TEXTURE_2D)
        self.texture.bind()
        self.texture.set_min_mag_filter(min=GL_LINEAR, mag=GL_LINEAR)
        # load the image from PIL
        # MD2 textures are inverted
        pygly.pil_texture.set_pil_image(self.texture, image, flip=False)
        self.texture.unbind()

        # create a grid of cubes
        self.grid_root = SceneNode('grid_root')
        self.scene_node.add_child(self.grid_root)

        # store a list of renderables
        path = os.path.join(os.path.dirname(__file__),
                            '../../data/md2/sydney.md2')

        self.mesh_node = RenderCallbackNode('mesh', None, self.render_node)
        # rotate the mesh to face the camera
        self.mesh_node.transform.object.rotate_y(math.pi)

        self.mesh_node.mesh = MD2_Mesh(path)
        self.mesh_node.mesh.load()

        # attach to our scene graph
        self.grid_root.add_child(self.mesh_node)

        # scale the node
        #self.mesh_node.transform.scale = 0.2

        # store current animation
        self.animation_number = 0
        self.set_animation(self.animation_number)
Exemple #5
0
        def create_texture(data, format):
            # convert data to a  1D texture
            # first convert to a 1D array
            # and then to GLubyte format

            # create a texture
            texture = Texture2D(GL_TEXTURE_1D_ARRAY)
            texture.bind()

            # disable texture filtering
            texture.set_min_mag_filter(min=GL_NEAREST, mag=GL_NEAREST)

            # set the texture data
            texture.set_image(
                data.astype('float32').flat, [data.shape[1], data.shape[0]],
                format)

            texture.unbind()

            return texture
 def uint8_rgb():
     data = numpy.linspace(0, 255, 32 * 32 * 3).astype('uint8')
     data.shape = (32, 32, -1)
     texture = Texture2D(data=data)
     return texture
 def float32_rgb():
     data = numpy.linspace(0.0, 1.0, 32 * 32 * 3).astype('float32')
     data.shape = (32, 32, -1)
     texture = Texture2D(data=data)
     return texture
 def random_rgb():
     data = numpy.random.random_integers(0, 255,
                                         32 * 32 * 3).astype('uint8')
     data.shape = (32, 32, -1)
     texture = Texture2D(data=data)
     return texture
Exemple #9
0
    def setup_scene(self):
        """Creates the scene to be rendered.
        Creates our camera, scene graph, 
        """
        # don't call 'SimpleApplication's setup_scene
        CoreApplication.setup_scene(self)

        # setup our GL state
        # enable z buffer
        glEnable(GL_DEPTH_TEST)

        # enable back face culling
        glEnable(GL_CULL_FACE)
        glCullFace(GL_BACK)

        # load our texture
        # use the PIL decoder as the pyglet one is broken
        # and loads most images as greyscale
        path = os.path.join(os.path.dirname(__file__),
                            '../../data/md2/sydney.bmp')
        image = Image.open(path)
        self.texture = Texture2D(GL_TEXTURE_2D)
        self.texture.bind()
        self.texture.set_min_mag_filter(min=GL_LINEAR, mag=GL_LINEAR)
        # load the image from PIL
        # MD2 textures are inverted
        pygly.pil_texture.set_pil_image(self.texture, image, flip=False)
        self.texture.unbind()

        # create a grid of cubes
        self.grid_root = SceneNode('grid_root')
        self.scene_node.add_child(self.grid_root)

        # create a number of cubes
        # the grid will extend from -5 to +5
        x, z = numpy.mgrid[-5:5:11j, -5:5:11j]
        x = x.flatten()
        z = z.flatten()

        positions = numpy.vstack((x, numpy.zeros(x.shape), z))
        positions = positions.T

        # set the distance between the models
        positions *= 4.5

        # store a list of renderables
        self.renderables = []

        path = os.path.join(os.path.dirname(__file__),
                            '../../data/md2/sydney.md2')

        for position in positions:
            node = RenderCallbackNode('node-%s' % position, None,
                                      self.render_node)
            node.mesh = MD2_Mesh(path)
            node.mesh.load()

            # attach to our scene graph
            self.grid_root.add_child(node)
            self.renderables.append(node)

            # move and scale the node
            node.transform.inertial.translation = position
            node.transform.scale = 0.2

        # create a range of animation times
        # 0.0 <= x < num_frames
        self.frames = numpy.linspace(0.0,
                                     float(
                                         self.renderables[0].mesh.num_frames),
                                     len(positions),
                                     endpoint=False)

        # create an array that will store our frame rates
        self.frame_rate = numpy.zeros(len(self.renderables), dtype=numpy.float)

        self.animation = ''