Merge branch 'main' into viseme-dev
This commit is contained in:
+18
-15
@@ -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
@@ -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
@@ -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")
|
||||
|
||||
Reference in New Issue
Block a user