Files
blender-portable-repo/scripts/addons/GLBTextureTools/Panels/panel.py
T
2026-03-17 14:58:51 -06:00

261 lines
11 KiB
Python

import bpy
from .. Functions import gui_functions
# from .. Update import addon_updater_ops
class GTT_ResolutionPanel(bpy.types.Panel):
bl_idname = "GLBTEXTOOLS_PT_resolution_panel"
bl_label = "Global Settings"
bl_space_type = "VIEW_3D"
bl_region_type = "UI"
bl_category = 'GLB Texture Tools'
# bl_parent_id = "TEXTURETOOLS_PT_parent_panel"
bl_order = 0
def draw(self, context):
layout = self.layout
scene = context.scene
box = layout.box()
column = box.column()
column.prop(scene, "img_bake_size")
column.prop(scene,"img_file_format")
column.prop(scene,"affect")
column.prop(scene.cycles,"device")
class GTT_BakeTexturePanel(bpy.types.Panel):
bl_idname = "GLBTEXTOOLS_PT_bake_panel"
bl_label = "Baking"
bl_space_type = "VIEW_3D"
bl_region_type = "UI"
bl_category = 'GLB Texture Tools'
bl_order = 1
def draw(self, context):
layout = self.layout
scene = context.scene
data = bpy.data
bake_settings = bpy.context.scene.bake_settings
row = layout.row()
row.prop(bake_settings, 'open_bake_settings_menu', text="Bake Settings", icon = 'TRIA_DOWN' if bake_settings.open_bake_settings_menu else 'TRIA_RIGHT' )
if bake_settings.open_bake_settings_menu:
box = layout.box()
col = box.column(align = True)
row = col.row(align = True)
row.prop(scene.bake_settings, 'pbr_bake', text="PBR",toggle = True)
row.prop(scene.bake_settings, 'pbr_samples', text="Samples",toggle = True)
row = col.row(align = True)
row.prop(scene.bake_settings, 'ao_bake', text="AO",toggle = True)
row.prop(scene.bake_settings, 'ao_samples', text="Samples")
row = col.row(align = True)
row.prop(scene.bake_settings, 'lightmap_bake', text="Lightmap",toggle = True)
row.prop(scene.bake_settings, 'lightmap_samples', text="Samples")
if bake_settings.pbr_bake:
row = box.row()
# col = row.collumn()
row.prop(scene.bake_settings, 'mute_texture_nodes', text="Mute Texture Mapping")
# row.prop(scene.bake_settings, 'bake_image_clear', text="Clear Bake Image")
if bake_settings.lightmap_bake or bake_settings.ao_bake:
row = box.row()
row.prop(scene.bake_settings, 'bake_image_name', text="")
row = box.row()
row.prop(scene.bake_settings, 'baking_groups',text="")
row.operator("object.select_lightmap_objects",text="",icon="RESTRICT_SELECT_OFF")
if bake_settings.lightmap_bake:
try:
box.prop(scene.world.node_tree.nodes["Background"].inputs[1],'default_value',text="World Influence")
except:
pass
if bake_settings.ao_bake:
box.prop(scene.world.light_settings,"distance",text="AO Distance")
box.prop(scene.bake_settings, 'unwrap_margin', text="UV Margin")
box.prop(scene.bake_settings, 'bake_margin', text="Bake Margin")
split = box.split()
col = split.column(align=True)
col.prop(scene.bake_settings, 'unwrap', text="Unwrap")
col.prop(scene.bake_settings, 'bake_image_clear', text="Clear Bake Image")
col = split.column(align=True)
col.prop(scene.bake_settings, 'denoise', text="Denoise")
if bake_settings.denoise:
col.prop(scene.bake_settings, 'show_texture_after_bake', text="Show Texture after Bake")
# LIGHTMAPPED OBJECT LIST
# row = layout.row()
# row.prop(scene.bake_settings, 'open_object_bake_list_menu', text="Lightmapped Objects", icon = 'TRIA_DOWN' if bake_settings.open_object_bake_list_menu else 'TRIA_RIGHT' )
# BAKE LIST
if bake_settings.open_object_bake_list_menu:
layout.template_list("GTT_BAKE_IMAGE_UL_List", "", data, "objects", scene.bake_settings, "bake_object_index")
row = layout.row(align=True)
row.scale_y = 2.0
row.operator("object.gtt_bake_operator",text="Bake Textures")
row.operator("scene.open_textures_folder",icon='FILEBROWSER')
class GTT_VisibilityPanel(bpy.types.Panel):
bl_idname = "GLBTEXTOOLS_PT_visibility_panel"
bl_label = "Visibility"
bl_space_type = "VIEW_3D"
bl_region_type = "UI"
bl_category = 'GLB Texture Tools'
bl_order = 2
def draw(self, context):
layout = self.layout
scene = context.scene
col = layout.column()
row = col.row()
row.operator("object.switch_org_mat_operator",icon = 'NODE_MATERIAL', text="Show Original Material")
row.operator("object.switch_bake_mat_operator",icon = 'MATERIAL', text="Show Baked Material")
# row = col.row(align=True)
layout.prop(scene.texture_settings,"preview_lightmap",text="Show without Lightmap" if scene.texture_settings.preview_lightmap else "Preview Lightmap on Material", icon="SHADING_RENDERED" if scene.texture_settings.preview_bake_texture else "NODE_MATERIAL")
layout.prop(scene.texture_settings,"preview_bake_texture", text="Show Material" if scene.texture_settings.preview_bake_texture else "Preview Baked Texture", icon="SHADING_RENDERED" if scene.texture_settings.preview_bake_texture else "NODE_MATERIAL")
class GTT_CleanupPanel(bpy.types.Panel):
bl_idname = "GLBTEXTOOLS_PT_cleanup_panel"
bl_label = "Cleanup"
bl_space_type = "VIEW_3D"
bl_region_type = "UI"
bl_category = 'GLB Texture Tools'
bl_order = 3
def draw(self, context):
layout = self.layout
row = layout.row()
row.operator("image.clean_textures",text="Clean Textures",icon = 'OUTLINER_OB_IMAGE')
row.operator("material.clean_materials",text="Clean Materials",icon = 'NODE_MATERIAL')
row = layout.row()
row.operator("material.clean_lightmap",text="Clean Lightmap",icon = 'MOD_UVPROJECT')
row.operator("material.clean_ao_map",text="Clean AO Map",icon = 'TRASH')
row = layout.row()
# row.operator("scene.clean_unused_images",text="Clean Unused Images",icon = 'TRASH')
class GTT_TextureSelectionPanel(bpy.types.Panel):
bl_idname = "GLBTEXTOOLS_PT_tex_selection_panel"
bl_label = "Texture"
bl_space_type = "VIEW_3D"
bl_region_type = "UI"
bl_category = 'GLB Texture Tools'
# bl_parent_id = "TEXTURETOOLS_PT_parent_panel"
bl_order = 4
def draw(self, context):
layout = self.layout
scene = context.scene
data = bpy.data
texture_settings = bpy.context.scene.texture_settings
# UI LIST
gui_functions.headline(layout,(0.6,"IMAGE NAME"),(0.5,"SIZE"),(1,"KB"))
layout.template_list("GTT_TEX_UL_List", "", data, "images", scene.texture_settings, "texture_index")
row = layout.row()
row.prop(texture_settings, 'open_texture_settings_menu', text="Texture Settings", icon = 'TRIA_DOWN' if texture_settings.open_texture_settings_menu else 'TRIA_RIGHT' )
if texture_settings.open_texture_settings_menu:
box = layout.box()
box.prop(scene.texture_settings, 'show_all_textures', text="Show all Textures")
box.prop(scene.texture_settings, 'show_per_material', text="Show Textures per Material")
box.prop(scene.texture_settings, 'operate_on_all_textures', text="Operate on all Textures in List")
box.label(text="If scaled images don't get saved/exported, try unpacking before scaling !")
row = box.row()
row.operator("file.unpack_all",text="Unpack")
row.operator("file.pack_all",text="Pack")
# Select Material by Texture
row = layout.row()
row.prop(scene.texture_settings,"open_sel_mat_menu",text="Select Material by Texture", icon = 'TRIA_DOWN' if scene.texture_settings.open_sel_mat_menu else 'TRIA_RIGHT' )
if scene.texture_settings.open_sel_mat_menu:
box = layout.box()
col = box.column(align = True)
col.operator("scene.select_mat_by_tex",text="Select Material",icon='RESTRICT_SELECT_OFF')
col = box.column(align = True)
if len(scene.materials_found) > 0:
col.label(text="Texture found in Material :")
for mat in scene.materials_found:
col.label(text=mat)
else:
col.label(text="Texture not used")
# Scale and Clean
row = layout.row()
row.scale_y = 2.0
row.operator("image.scale_image",text="Scale Image",icon= 'FULLSCREEN_EXIT')
class GTT_UVPanel(bpy.types.Panel):
bl_idname = "GLBTEXTOOLS_PT_UV_panel"
bl_label = "UV"
bl_space_type = "VIEW_3D"
bl_region_type = "UI"
bl_category = "GLB Texture Tools"
bl_options = {'DEFAULT_CLOSED'}
bl_order = 5
def draw(self, context):
layout = self.layout
uv_settings = context.scene.uv_settings
box = layout.box()
row = box.row()
row.prop(uv_settings,"uv_name", text="UV Name")
row.prop(uv_settings,"uv_slot", text="UV Slot")
row = box.row()
row.operator("object.add_uv",text="Add UV",icon = 'ADD').uv_name = uv_settings.uv_name
row.operator("object.remove_uv",text="Remove UV",icon = 'REMOVE').uv_slot = uv_settings.uv_slot
row.operator("object.set_active_uv",text="Set Active",icon = 'RESTRICT_SELECT_OFF').uv_slot = uv_settings.uv_slot
class GTT_HelpPanel(bpy.types.Panel):
bl_idname = "GLBTEXTOOLS_PT_help_panel"
bl_label = "Help"
bl_space_type = "VIEW_3D"
bl_region_type = "UI"
bl_category = "GLB Texture Tools"
bl_order = 6
def draw(self,context):
layout = self.layout
lang = bpy.app.translations.locale
if lang == 'en_US':
layout.label(text="Find out how to use this addon")
layout.operator("scene.open_link",text="Add-on Documentation",icon='HELP').url = "https://govie.de/en/tutorials-blender/?utm_source=blender-add-on&utm_medium=button#glb_texture_tools"
if lang == 'de_DE':
layout.label(text="Hilfe zur Bedienung des Add-ons")
layout.operator("scene.open_link",text="Add-on Documentation",icon='HELP').url = "https://govie.de/tutorials-blender/?utm_source=blender-add-on&utm_medium=button#glb_texture_tools"