示例#1
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
示例#2
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