Esempio n. 1
0
    def generate_textures(self):
        num_text = len(self.ply['material'])
        
        self.textures = glGenTextures(num_text)
        
        if (num_text == 1):
            self.textures = [self.textures]
        else:
            self.textures = list(self.textures)
        
        for i in xrange(num_text):
            text_id = self.textures[i]
            text_path = self.ply['material'][i]['texture_map'].strip()
            
            if (not len(text_path)):
                self.textures[i] = None
                continue

            glBindTexture(GL_TEXTURE_2D, text_id)

            glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR)
            glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR)
            
            img = QImage(text_path)
            img = QGLWidget.convertToGLFormat(img)
            
            glTexImage2D(GL_TEXTURE_2D, 0, 3, img.width(), img.height(),
                0, GL_RGBA, GL_UNSIGNED_BYTE, img.bits().asstring(img.numBytes()))
            
            glBindTexture(GL_TEXTURE_2D, 0)
            
        if (not any(self.textures)):
            self.textures = None           
Esempio n. 2
0
 def loadFromFile(cls, path, internalFormat=GL_RGBA):
     image = QImage(path)
     image = QGLWidget.convertToGLFormat(image)
     dataFormat = { QImage.Format_ARGB32: GL_RGBA }.get(image.format(), None)
     dataType = GL_UNSIGNED_BYTE
     data = [0] * image.numBytes()
     bits = image.constBits()
     bits.setsize(image.numBytes())
     for i in range(image.numBytes()):
         data[i] = bits[i][0]
     return Texture2D(image.width(), image.height(), internalFormat, dataFormat, dataType, data)
Esempio n. 3
0
    def generate_textures(self):
        num_text = len(self.ply["material"])

        self.textures = glGenTextures(num_text)

        if num_text == 1:
            self.textures = [self.textures]
        else:
            self.textures = list(self.textures)

        for i in xrange(num_text):
            text_id = self.textures[i]
            text_path = self.ply["material"][i]["texture_map"].strip()

            if not len(text_path):
                self.textures[i] = None
                continue

            glBindTexture(GL_TEXTURE_2D, text_id)

            glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR)
            glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR)

            img = QImage(text_path)
            img = QGLWidget.convertToGLFormat(img)

            glTexImage2D(
                GL_TEXTURE_2D,
                0,
                3,
                img.width(),
                img.height(),
                0,
                GL_RGBA,
                GL_UNSIGNED_BYTE,
                img.bits().asstring(img.numBytes()),
            )

            glBindTexture(GL_TEXTURE_2D, 0)

        if not any(self.textures):
            self.textures = None
Esempio n. 4
0
 def setup_skybox(self, image_path):
     self.skybox_textures = glGenTextures(6)
     sides = ('front','left','back','right','top','bottom')
     
     for (tex_id, side) in zip(self.skybox_textures, sides):  
         glBindTexture(GL_TEXTURE_2D, tex_id)
     
         glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR)
         glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR)
     
         img = QImage(image_path+'-'+side+'.png')
         img = QGLWidget.convertToGLFormat(img)
     
         glTexImage2D(GL_TEXTURE_2D, 0, 3, img.width(), img.height(),
             0, GL_RGBA, GL_UNSIGNED_BYTE, img.bits().asstring(img.numBytes()))
         
         glBindTexture(GL_TEXTURE_2D, 0)
     
     self.sky_angles = [uniform(-180.,180.) for i in xrange(3)]
     self.sky_angles_vel = [uniform(-0.5,0.5) for i in xrange(3)]
Esempio n. 5
0
    def setup_skybox(self, image_path):
        self.skybox_textures = glGenTextures(6)
        sides = ('front', 'left', 'back', 'right', 'top', 'bottom')

        for (tex_id, side) in zip(self.skybox_textures, sides):
            glBindTexture(GL_TEXTURE_2D, tex_id)

            glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR)
            glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR)

            img = QImage(image_path + '-' + side + '.png')
            img = QGLWidget.convertToGLFormat(img)

            glTexImage2D(GL_TEXTURE_2D, 0, 3, img.width(), img.height(), 0,
                         GL_RGBA, GL_UNSIGNED_BYTE,
                         img.bits().asstring(img.numBytes()))

            glBindTexture(GL_TEXTURE_2D, 0)

        self.sky_angles = [uniform(-180., 180.) for i in xrange(3)]
        self.sky_angles_vel = [uniform(-0.5, 0.5) for i in xrange(3)]