Merge branch 'Alpha-2' into texture-atlas
This commit is contained in:
+38
-2
@@ -1,9 +1,21 @@
|
||||
import bpy
|
||||
from typing import Set
|
||||
from bpy.types import Panel, Context, UILayout, Operator
|
||||
from bpy.types import Panel, Context, UILayout, Operator, UIList
|
||||
from .main_panel import AvatarToolKit_PT_AvatarToolkitPanel, CATEGORY_NAME
|
||||
from ..core.translations import t
|
||||
|
||||
class AVATAR_TOOLKIT_UL_ZeroWeightBones(UIList):
|
||||
"""UI List for displaying zero weight bones with selection options"""
|
||||
def draw_item(self, context, layout, data, item, icon, active_data, active_propname):
|
||||
if self.layout_type in {'DEFAULT', 'COMPACT'}:
|
||||
row = layout.row(align=True)
|
||||
row.prop(item, "selected", text="")
|
||||
row.label(text=item.name)
|
||||
if item.has_children:
|
||||
row.label(text="", icon='OUTLINER_OB_ARMATURE')
|
||||
if item.is_deform:
|
||||
row.label(text="", icon='MOD_ARMATURE')
|
||||
|
||||
class AvatarToolKit_PT_ToolsPanel(Panel):
|
||||
"""Panel containing various tools for avatar customization and optimization"""
|
||||
bl_label: str = t("Tools.label")
|
||||
@@ -18,6 +30,7 @@ class AvatarToolKit_PT_ToolsPanel(Panel):
|
||||
def draw(self, context: Context) -> None:
|
||||
"""Draw the tools panel interface"""
|
||||
layout: UILayout = self.layout
|
||||
toolkit = context.scene.avatar_toolkit
|
||||
|
||||
# General Tools
|
||||
tools_box: UILayout = layout.box()
|
||||
@@ -45,7 +58,22 @@ class AvatarToolKit_PT_ToolsPanel(Panel):
|
||||
# Weight Tools
|
||||
weight_box: UILayout = bone_box.box()
|
||||
col = weight_box.column(align=True)
|
||||
col.prop(context.scene.avatar_toolkit, "merge_twist_bones", text=t("Tools.merge_twist_bones"))
|
||||
col.prop(toolkit, "merge_twist_bones", text=t("Tools.merge_twist_bones"))
|
||||
col.prop(toolkit, "preserve_parent_bones")
|
||||
col.prop(toolkit, "target_bone_type")
|
||||
col.prop(toolkit, "list_only_mode")
|
||||
|
||||
if toolkit.list_only_mode and len(toolkit.zero_weight_bones) > 0:
|
||||
box = weight_box.box()
|
||||
row = box.row()
|
||||
row.template_list("AVATAR_TOOLKIT_UL_ZeroWeightBones", "",
|
||||
toolkit, "zero_weight_bones",
|
||||
toolkit, "zero_weight_bones_index")
|
||||
|
||||
col = box.column(align=True)
|
||||
col.operator("avatar_toolkit.remove_selected_bones",
|
||||
text=t("Tools.remove_selected_bones"))
|
||||
|
||||
row = col.row(align=True)
|
||||
row.operator("avatar_toolkit.clean_weights", text=t("Tools.clean_weights"), icon='GROUP_BONE')
|
||||
row.operator("avatar_toolkit.clean_constraints", text=t("Tools.clean_constraints"), icon='CONSTRAINT_BONE')
|
||||
@@ -67,3 +95,11 @@ class AvatarToolKit_PT_ToolsPanel(Panel):
|
||||
col.separator(factor=0.5)
|
||||
col.operator("avatar_toolkit.apply_transforms", text=t("Tools.apply_transforms"), icon='OBJECT_DATA')
|
||||
col.operator("avatar_toolkit.clean_shapekeys", text=t("Tools.clean_shapekeys"), icon='SHAPEKEY_DATA')
|
||||
|
||||
# Rigify Tools
|
||||
rigify_box: UILayout = layout.box()
|
||||
col = rigify_box.column(align=True)
|
||||
col.label(text=t("Tools.rigify_title"), icon='ARMATURE_DATA')
|
||||
col.separator(factor=0.5)
|
||||
col.operator("avatar_toolkit.convert_rigify_to_unity", icon='ARMATURE_DATA')
|
||||
col.prop(context.scene.avatar_toolkit, "merge_twist_bones")
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
import bpy
|
||||
from bpy.types import Panel, Context, UILayout
|
||||
from ..core.translations import t
|
||||
|
||||
class AvatarToolKit_PT_UVPanel(Panel):
|
||||
"""Main UV Tools panel for Avatar Toolkit"""
|
||||
bl_label = t("AvatarToolkit.label")
|
||||
bl_idname = "OBJECT_PT_avatar_toolkit_uv_main"
|
||||
bl_space_type = 'IMAGE_EDITOR'
|
||||
bl_region_type = 'UI'
|
||||
bl_category = "Avatar Toolkit"
|
||||
|
||||
def draw(self, context: Context) -> None:
|
||||
layout: UILayout = self.layout
|
||||
|
||||
# Add title section
|
||||
box: UILayout = layout.box()
|
||||
col: UILayout = box.column(align=True)
|
||||
row: UILayout = col.row()
|
||||
row.scale_y = 1.2
|
||||
row.label(text=t("AvatarToolkit.label"), icon='UV')
|
||||
@@ -0,0 +1,27 @@
|
||||
import bpy
|
||||
from bpy.types import Panel, Context, UILayout
|
||||
from ..core.translations import t
|
||||
|
||||
class AvatarToolKit_PT_UVTools(Panel):
|
||||
"""UV Tools panel containing UV manipulation operators"""
|
||||
bl_label = t("Tools.label")
|
||||
bl_idname = "OBJECT_PT_avatar_toolkit_uv_tools"
|
||||
bl_space_type = 'IMAGE_EDITOR'
|
||||
bl_region_type = 'UI'
|
||||
bl_category = "Avatar Toolkit"
|
||||
bl_parent_id = "OBJECT_PT_avatar_toolkit_uv_main"
|
||||
bl_order = 3
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
|
||||
def draw(self, context: Context) -> None:
|
||||
layout: UILayout = self.layout
|
||||
|
||||
tools_box: UILayout = layout.box()
|
||||
col: UILayout = tools_box.column(align=True)
|
||||
col.label(text=t("Tools.uv_title"), icon='UV')
|
||||
col.separator(factor=0.5)
|
||||
|
||||
row: UILayout = col.row(align=True)
|
||||
row.operator("avatar_toolkit.align_uv_edges_to_target",
|
||||
text=t("UVTools.align_edges"),
|
||||
icon='GP_MULTIFRAME_EDITING')
|
||||
Reference in New Issue
Block a user