Merge branch 'main' into viseme-dev

This commit is contained in:
Yusarina
2024-07-25 00:57:08 +01:00
committed by GitHub
18 changed files with 712 additions and 200 deletions
+18 -15
View File
@@ -2,6 +2,7 @@ import bpy
from ..core.register import register_wrap
from .panel import AvatarToolkitPanel
from ..functions.translations import t
from ..core.common import get_selected_armature
@register_wrap
class AvatarToolkitOptimizationPanel(bpy.types.Panel):
@@ -14,19 +15,21 @@ class AvatarToolkitOptimizationPanel(bpy.types.Panel):
def draw(self, context):
layout = self.layout
layout.label(text=t("Optimization.options.label"))
armature = get_selected_armature(context)
row = layout.row()
row.scale_y = 1.2
row.operator("avatar_toolkit.combine_materials", text=t("Optimization.combine_materials.label"))
layout.separator(factor=0.5)
row = layout.row(align=True)
row.scale_y = 1.2
row.operator("avatar_toolkit.join_all_meshes", text=t("Optimization.join_all_meshes.label"))
row.operator("avatar_toolkit.join_selected_meshes", text=t("Optimization.join_selected_meshes.label"))
# Add optimization options here
if armature:
layout.label(text=t("Optimization.options.label"))
row = layout.row()
row.scale_y = 1.2
row.operator("avatar_toolkit.combine_materials", text=t("Optimization.combine_materials.label"))
layout.separator(factor=0.5)
row = layout.row(align=True)
row.scale_y = 1.2
row.operator("avatar_toolkit.join_all_meshes", text=t("Optimization.join_all_meshes.label"))
row.operator("avatar_toolkit.join_selected_meshes", text=t("Optimization.join_selected_meshes.label"))
row.operator("avatar_toolkit.remove_doubles_safely", text="Remove Doubles Safely")
else:
layout.label(text="Please select an armature in Quick Access")
+5 -69
View File
@@ -6,7 +6,8 @@ from ..functions.translations import t
from ..core.import_pmx import import_pmx
from ..core.import_pmd import import_pmd
from ..core.importer import import_fbx
from ..functions.import_anything import ImportAnyModel
from ..core.common import get_selected_armature, set_selected_armature
@register_wrap
class AvatarToolkitQuickAccessPanel(bpy.types.Panel):
@@ -21,6 +22,8 @@ class AvatarToolkitQuickAccessPanel(bpy.types.Panel):
layout = self.layout
layout.label(text=t("Quick_Access.options"))
layout.prop(context.scene, "selected_armature", text="Select Armature")
row = layout.row()
row.label(text=t("Quick_Access.import_export.label"), icon='IMPORT')
@@ -28,29 +31,9 @@ class AvatarToolkitQuickAccessPanel(bpy.types.Panel):
row = layout.row(align=True)
row.scale_y = 1.5
row.operator("avatar_toolkit.import_menu", text=t("Quick_Access.import"))
row.operator(ImportAnyModel.bl_idname, text=t("Quick_Access.import"))
row.operator("avatar_toolkit.export_menu", text=t("Quick_Access.export"))
@register_wrap
class AVATAR_TOOLKIT_OT_import_menu(bpy.types.Operator):
bl_idname = "avatar_toolkit.import_menu"
bl_label = t("Quick_Access.import_menu.label")
bl_description = t("Quick_Access.import_menu.desc")
def execute(self, context: Context):
return {'FINISHED'}
def invoke(self, context: Context, event):
wm = context.window_manager
return wm.invoke_popup(self, width=200)
def draw(self, context: Context):
layout = self.layout
layout.label(text="Select Import Method")
layout.operator("avatar_toolkit.import_pmx", text=t("Quick_Access.import_pmx"))
layout.operator("avatar_toolkit.import_pmd", text=t("Quick_Access.import_pmd"))
layout.operator("avatar_toolkit.import_fbx", text="Import FBX")
@register_wrap
class AVATAR_TOOLKIT_OT_export_menu(bpy.types.Operator):
bl_idname = "avatar_toolkit.export_menu"
@@ -74,51 +57,6 @@ class AVATAR_TOOLKIT_OT_export_menu(bpy.types.Operator):
layout.operator("avatar_toolkit.export_resonite", text=t("Quick_Access.select_export_resonite.label"))
layout.operator("avatar_toolkit.export_fbx", text="Export FBX")
@register_wrap
class AVATAR_TOOLKIT_OT_import_pmx(bpy.types.Operator):
bl_idname = "avatar_toolkit.import_pmx"
bl_label = t("Quick_Access.import_pmx")
filepath: bpy.props.StringProperty(subtype="FILE_PATH")
def execute(self, context: Context):
import_pmx(self.filepath)
return {'FINISHED'}
def invoke(self, context: Context, event):
context.window_manager.fileselect_add(self)
return {'RUNNING_MODAL'}
@register_wrap
class AVATAR_TOOLKIT_OT_import_pmd(bpy.types.Operator):
bl_idname = "avatar_toolkit.import_pmd"
bl_label = t("Quick_Access.import_pmd")
filepath: bpy.props.StringProperty(subtype="FILE_PATH")
def execute(self, context: Context):
import_pmd(self.filepath)
return {'FINISHED'}
def invoke(self, context: Context, event):
context.window_manager.fileselect_add(self)
return {'RUNNING_MODAL'}
@register_wrap
class AVATAR_TOOLKIT_OT_import_fbx(bpy.types.Operator):
bl_idname = "avatar_toolkit.import_fbx"
bl_label = "Import FBX"
filepath: bpy.props.StringProperty(subtype="FILE_PATH")
def execute(self, context):
import_fbx(self.filepath)
return {'FINISHED'}
def invoke(self, context, event):
context.window_manager.fileselect_add(self)
return {'RUNNING_MODAL'}
@register_wrap
class AVATAR_TOOLKIT_OT_export_fbx(bpy.types.Operator):
bl_idname = 'avatar_toolkit.export_fbx'
@@ -129,5 +67,3 @@ class AVATAR_TOOLKIT_OT_export_fbx(bpy.types.Operator):
def execute(self, context):
bpy.ops.export_scene.fbx('INVOKE_DEFAULT')
return {'FINISHED'}
+16 -5
View File
@@ -2,7 +2,9 @@ import bpy
from ..core.register import register_wrap
from .panel import AvatarToolkitPanel
from bpy.types import Context
from ..functions.digitigrade_legs import CreateDigitigradeLegs
from ..functions.translations import t
from ..core.common import get_selected_armature
@register_wrap
class AvatarToolkitToolsPanel(bpy.types.Panel):
@@ -15,9 +17,18 @@ class AvatarToolkitToolsPanel(bpy.types.Panel):
def draw(self, context: Context):
layout = self.layout
layout.label(text=t("Tools.tools_title.label"))
layout.separator(factor=0.5)
armature = get_selected_armature(context)
if armature:
layout.label(text=t("Tools.tools_title.label"))
layout.separator(factor=0.5)
row = layout.row(align=True)
row.scale_y = 1.5
row.operator("avatar_toolkit.convert_to_resonite", text=t("Tools.convert_to_resonite.label"))
row = layout.row(align=True)
row.scale_y = 1.5
row.operator("avatar_toolkit.convert_to_resonite", text=t("Tools.convert_to_resonite.label"))
row = layout.row(align=True)
row.operator("avatar_toolkit.remove_doubles_safely", text="Remove Doubles Safely")
row = layout.row(align=True)
row.operator(CreateDigitigradeLegs.bl_idname, text="Create Digitigrade Legs")
else:
layout.label(text="Please select an armature in Quick Access")