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 )
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)
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
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 = ''