Пример #1
0
    def getEggTexture(self):
        if self.eggdiffusetexture:
            return self.eggdiffusetexture

        if not self.isTextured():
            return None

        m = EggTexture(self.name + "_diffuse", self.get("map_Kd"))
        m.setFormat(EggTexture.FRgb)
        m.setMagfilter(EggTexture.FTLinearMipmapLinear)
        m.setMinfilter(EggTexture.FTLinearMipmapLinear)
        m.setWrapU(EggTexture.WMRepeat)
        m.setWrapV(EggTexture.WMRepeat)
        self.eggdiffusetexture = m
        return self.eggdiffusetexture
Пример #2
0
    def make_empty_texture(self, type_):
        filepath = 'textures/{}.png'.format(type_.lower())
        path = os.path.dirname(self._output)

        egg_texture = EggTexture(
            os.path.basename(filepath), os.path.join(path, filepath))

        egg_texture.set_wrap_mode(EggTexture.WM_clamp)

        # check if we have patched panda3d
        have_srgb = hasattr(EggTexture, 'F_srgb_alpha')

        if type_[1] == 'Diffuse':
            if have_srgb:
                egg_texture.set_format(EggTexture.F_srgb_alpha)
            else:
                egg_texture.set_format(EggTexture.F_rgba)
        else:
            egg_texture.set_format(EggTexture.F_rgba)

        if type_[1] == 'Diffuse':
            egg_texture.set_env_type(EggTexture.ET_modulate)
        elif type_[1] == 'Normal':
            egg_texture.set_env_type(EggTexture.ET_normal)
        else:
            egg_texture.set_env_type(EggTexture.ET_decal)

        egg_texture.set_priority(type_[0])
        egg_texture.set_stage_name(type_[1])

        return None, egg_texture  # sampler, image
Пример #3
0
    def getEggTexture(self):
        if self.eggdiffusetexture:
            return self.eggdiffusetexture
        if not self.isTextured():
            return None
        m = EggTexture(self.name + "_diffuse", self.get("map_Kd"))

        # Check if texture supports transparency based on extension name
        _, ext = os.path.splitext(self.attrib['map_Kd'])
        if ext.lower() == '.png':
            m.setFormat(EggTexture.FRgba)
        elif ext.lower() in ['.jpg', '.jpeg']:
            # NOTE: JPG format does not support transparency
            m.setFormat(EggTexture.FRgb)
        else:
            logger.debug('Object has texture with extension: %s' % str(ext))
            m.setFormat(EggTexture.FRgb)

        m.setMagfilter(EggTexture.FTLinearMipmapLinear)
        m.setMinfilter(EggTexture.FTLinearMipmapLinear)
        m.setWrapU(EggTexture.WMRepeat)
        m.setWrapV(EggTexture.WMRepeat)
        self.eggdiffusetexture = m
        return self.eggdiffusetexture
Пример #4
0
    def make_texture(self, type_, image_texture):
        filepath = image_texture.image.filepath.lstrip('/')
        path = os.path.dirname(self._output)

        egg_texture = EggTexture(
            image_texture.image.name, os.path.join(path, filepath))

        if image_texture.extension == 'CLIP':
            egg_texture.set_wrap_mode(EggTexture.WM_clamp)
        elif image_texture.extension == 'REPEAT':
            egg_texture.set_wrap_mode(EggTexture.WM_repeat)

        # check if we have patched panda3d
        have_srgb = hasattr(EggTexture, 'F_srgb_alpha')
        num_channels = self.get_num_channels(os.path.join(path, filepath))

        if type_[1] == 'Diffuse':
            if have_srgb:
                if num_channels == 4:
                    egg_texture.set_format(EggTexture.F_srgb_alpha)
                elif num_channels == 3:
                    egg_texture.set_format(EggTexture.F_srgb)
            else:
                if num_channels == 4:
                    egg_texture.set_format(EggTexture.F_rgba)
                elif num_channels == 3:
                    egg_texture.set_format(EggTexture.F_rgb)

        else:
            if num_channels == 4:
                egg_texture.set_format(EggTexture.F_rgba)
            elif num_channels == 3:
                egg_texture.set_format(EggTexture.F_rgb)

        if type_[1] == 'Diffuse':
            egg_texture.set_env_type(EggTexture.ET_modulate)
        elif type_[1] == 'Normal':
            egg_texture.set_env_type(EggTexture.ET_normal)
        else:
            egg_texture.set_env_type(EggTexture.ET_decal)

        egg_texture.set_priority(type_[0])
        egg_texture.set_stage_name(type_[1])

        return None, egg_texture  # sampler, image