This commit is contained in:
2025-05-08 23:57:22 +08:00
parent 24acc2a6f1
commit 7094a5886a
18 changed files with 442 additions and 583 deletions

View File

@@ -11,8 +11,8 @@ Definition UI Module for Plugin
- 工具:重新定位头部关节,重新定位身体关节,重新定位全身关节,快速创建预设
"""
#========================================= IMPORT =========================================
from Qt import QtWidgets, QtCore, QtGui
from Qt.QtCompat import wrapInstance
from scripts.ui.Qt import QtWidgets, QtCore, QtGui
from scripts.ui.Qt.QtCompat import wrapInstance
from maya import OpenMayaUI as omui
import maya.cmds as cmds
import maya.mel as mel
@@ -51,8 +51,7 @@ TOOL_WIDTH = config.TOOL_WIDTH
TOOL_HEIGHT = config.TOOL_HEIGHT
#========================================= LOCATION =======================================
from scripts.ui import localization
LANG = localization.LANG
get_text = localization.get_text
TEXT = localization.TEXT
class DefinitionUI(ui_utils.BaseUI):
"""
@@ -64,27 +63,19 @@ class DefinitionUI(ui_utils.BaseUI):
"""
初始化定义系统UI
"""
super(DefinitionUI, self).__init__() # 不传递parent参数给BaseUI
# 设置单例实例
DefinitionUI._instance = self
super().__init__(parent)
# 创建主控件
self.main_widget = QtWidgets.QWidget(parent)
self.main_widget = QtWidgets.QWidget()
self.main_widget.setObjectName("definitionMainWidget")
# 初始化控件、布局和按钮字典
self.controls = {}
self.layouts = {}
self.buttons = {}
self.splitters = {}
# 创建UI组件
self.create_widgets()
self.create_layouts()
self.create_connections()
# 注意:移除了这里的分割器元素添加代码
# 更新UI文本
self.update_language()
#========================================= WIDGET =======================================
def create_widgets(self):
@@ -93,7 +84,7 @@ class DefinitionUI(ui_utils.BaseUI):
包括按钮、标签、列表等
"""
# 标题标签 - 使用HTML格式化标题
title_text = f"<h4 style='margin:0;padding:5px;'>{get_text('definition_title', 'DNA定义')}</h4>"
title_text = f"<h4 style='margin:0;padding:5px;'>{TEXT('definition_title', 'DNA定义')}</h4>"
self.controls["title_label"] = QtWidgets.QLabel(title_text)
self.controls["title_label"].setObjectName("definitionTitleLabel")
self.controls["title_label"].setAlignment(QtCore.Qt.AlignCenter)
@@ -124,7 +115,7 @@ class DefinitionUI(ui_utils.BaseUI):
self.controls["lods_list"].setObjectName("lodsList")
# 定义LOD关联按钮
self.buttons["define_lod_relations"] = QtWidgets.QPushButton(get_text("define_lod_relations", "定义LOD关联"))
self.buttons["define_lod_relations"] = QtWidgets.QPushButton(TEXT("define_lod_relations", "定义LOD关联"))
self.buttons["define_lod_relations"].setIcon(ui_utils.load_icon("layerEditor.png"))
self.buttons["define_lod_relations"].setObjectName("defineLodRelationsButton")
@@ -137,7 +128,7 @@ class DefinitionUI(ui_utils.BaseUI):
self.controls["meshes_list"].setObjectName("meshesList")
# 创建几何体按钮
self.buttons["create_geometry"] = QtWidgets.QPushButton(get_text("create_geometry", "创建几何体"))
self.buttons["create_geometry"] = QtWidgets.QPushButton(TEXT("create_geometry", "创建几何体"))
self.buttons["create_geometry"].setIcon(ui_utils.load_icon("polyCube.png"))
self.buttons["create_geometry"].setObjectName("createGeometryButton")
@@ -168,61 +159,61 @@ class DefinitionUI(ui_utils.BaseUI):
# 底部工具面板
# 写入部分
self.controls["write_label"] = QtWidgets.QLabel(get_text("Write", "写入"))
self.controls["write_label"] = QtWidgets.QLabel(TEXT("Write", "写入"))
self.controls["write_label"].setObjectName("WriteLabel")
self.controls["write_label"].setAlignment(QtCore.Qt.AlignCenter)
self.buttons["write_neutral_pose_joint_position"] = QtWidgets.QPushButton(get_text("Write Neutral Pose Joint Position", "写入中性Pose关节位置"))
self.buttons["write_neutral_pose_joint_position"] = QtWidgets.QPushButton(TEXT("Write Neutral Pose Joint Position", "写入中性Pose关节位置"))
self.buttons["write_neutral_pose_joint_position"].setIcon(ui_utils.load_icon("HIKCharacterToolBodyPart.png"))
self.buttons["write_neutral_pose_joint_position"].setObjectName("WriteNeutralPoseJointPositionButton")
self.buttons["write_geometry"] = QtWidgets.QPushButton(get_text("Write Geometry", "写入几何体"))
self.buttons["write_geometry"] = QtWidgets.QPushButton(TEXT("Write Geometry", "写入几何体"))
self.buttons["write_geometry"].setIcon(ui_utils.load_icon("polyCube.png"))
self.buttons["write_geometry"].setObjectName("WriteGeometryButton")
self.buttons["write_skin_weight"] = QtWidgets.QPushButton(get_text("Write Skin Weight", "写入蒙皮权重"))
self.buttons["write_skin_weight"] = QtWidgets.QPushButton(TEXT("Write Skin Weight", "写入蒙皮权重"))
self.buttons["write_skin_weight"].setIcon(ui_utils.load_icon("paintSkinWeights.png"))
self.buttons["write_skin_weight"].setObjectName("WriteSkinWeightButton")
self.buttons["write_blendshape_target"] = QtWidgets.QPushButton(get_text("Write Blendshape Target", "写入BS对象"))
self.buttons["write_blendshape_target"] = QtWidgets.QPushButton(TEXT("Write Blendshape Target", "写入BS对象"))
self.buttons["write_blendshape_target"].setIcon(ui_utils.load_icon("blendShape.png"))
self.buttons["write_blendshape_target"].setObjectName("WriteBlendshapeTargetButton")
# 创建部分
self.controls["create_label"] = QtWidgets.QLabel(get_text("Create", "创建"))
self.controls["create_label"] = QtWidgets.QLabel(TEXT("Create", "创建"))
self.controls["create_label"].setObjectName("CreateLabel")
self.controls["create_label"].setAlignment(QtCore.Qt.AlignCenter)
self.buttons["create_blendshapes_for_mesh"] = QtWidgets.QPushButton(get_text("Create Blendshapes For Mesh", "为模型创建Blendshape"))
self.buttons["create_blendshapes_for_mesh"] = QtWidgets.QPushButton(TEXT("Create Blendshapes For Mesh", "为模型创建Blendshape"))
self.buttons["create_blendshapes_for_mesh"].setIcon(ui_utils.load_icon("blendShapeEditor.png"))
self.buttons["create_blendshapes_for_mesh"].setObjectName("CreateBlendshapeForMeshButton")
self.buttons["create_skin_for_mesh"] = QtWidgets.QPushButton(get_text("Create Skin For Mesh", "为模型创建绑定蒙皮"))
self.buttons["create_skin_for_mesh"] = QtWidgets.QPushButton(TEXT("Create Skin For Mesh", "为模型创建绑定蒙皮"))
self.buttons["create_skin_for_mesh"].setIcon(ui_utils.load_icon("smoothSkin.png"))
self.buttons["create_skin_for_mesh"].setObjectName("CreateSkinForMeshButton")
self.buttons["unbind_skin_for_mesh"] = QtWidgets.QPushButton(get_text("Unbind Skin For Mesh", "为模型取消绑定蒙皮"))
self.buttons["unbind_skin_for_mesh"] = QtWidgets.QPushButton(TEXT("Unbind Skin For Mesh", "为模型取消绑定蒙皮"))
self.buttons["unbind_skin_for_mesh"].setIcon(ui_utils.load_icon("detachSkin.png"))
self.buttons["unbind_skin_for_mesh"].setObjectName("UnbindSkinForMeshButton")
# 工具部分
self.controls["tools_label"] = QtWidgets.QGroupBox(get_text("Tools", "工具"))
self.controls["tools_label"] = QtWidgets.QGroupBox(TEXT("Tools", "工具"))
self.controls["tools_label"].setObjectName("ToolsLabel")
self.controls["tools_label"].setAlignment(QtCore.Qt.AlignCenter)
self.buttons["new_head_netural_joint_transform"] = QtWidgets.QPushButton(get_text("New Head Netural Joint Transform", "重新定位头部关节"))
self.buttons["new_head_netural_joint_transform"] = QtWidgets.QPushButton(TEXT("New Head Netural Joint Transform", "重新定位头部关节"))
self.buttons["new_head_netural_joint_transform"].setIcon(ui_utils.load_icon("HIKCharacterToolSkeleton.png"))
self.buttons["new_head_netural_joint_transform"].setObjectName("NewHeadNeturalJointTransformButton")
self.buttons["new_body_netural_joint_transform"] = QtWidgets.QPushButton(get_text("New Body Netural Joint Transform", "重新定位身体关节"))
self.buttons["new_body_netural_joint_transform"] = QtWidgets.QPushButton(TEXT("New Body Netural Joint Transform", "重新定位身体关节"))
self.buttons["new_body_netural_joint_transform"].setIcon(ui_utils.load_icon("HIKCharacterToolSkeleton.png"))
self.buttons["new_body_netural_joint_transform"].setObjectName("NewBodyNeturalJointTransformButton")
self.buttons["new_netural_joint_transform"] = QtWidgets.QPushButton(get_text("New Netural Joint Transform", "重新定位全身关节"))
self.buttons["new_netural_joint_transform"] = QtWidgets.QPushButton(TEXT("New Netural Joint Transform", "重新定位全身关节"))
self.buttons["new_netural_joint_transform"].setIcon(ui_utils.load_icon("HIKCharacterToolSkeleton.png"))
self.buttons["new_netural_joint_transform"].setObjectName("NewNeturalJointTransformButton")
self.buttons["quick_create_preset"] = QtWidgets.QPushButton(get_text("Quick Create Preset", "快速创建预设"))
self.buttons["quick_create_preset"] = QtWidgets.QPushButton(TEXT("Quick Create Preset", "快速创建预设"))
self.buttons["quick_create_preset"].setIcon(ui_utils.load_icon("QR_QuickRigTool.png"))
self.buttons["quick_create_preset"].setObjectName("QuickCreatePreset")
@@ -324,7 +315,7 @@ class DefinitionUI(ui_utils.BaseUI):
self.layouts["bottom_panel"].setSpacing(10)
# 写入部分QGroupBox
self.controls["write_group"] = QtWidgets.QGroupBox(get_text("Write", "写入"))
self.controls["write_group"] = QtWidgets.QGroupBox(TEXT("Write", "写入"))
self.controls["write_group"].setObjectName("writeGroup")
self.layouts["write_layout"] = QtWidgets.QVBoxLayout()
self.layouts["write_layout"].setSpacing(5)
@@ -336,7 +327,7 @@ class DefinitionUI(ui_utils.BaseUI):
self.controls["write_group"].setLayout(self.layouts["write_layout"])
# 创建部分QGroupBox
self.controls["create_group"] = QtWidgets.QGroupBox(get_text("Create", "创建"))
self.controls["create_group"] = QtWidgets.QGroupBox(TEXT("Create", "创建"))
self.controls["create_group"].setObjectName("createGroup")
self.layouts["create_layout"] = QtWidgets.QVBoxLayout()
self.layouts["create_layout"].setSpacing(5)
@@ -347,7 +338,7 @@ class DefinitionUI(ui_utils.BaseUI):
self.controls["create_group"].setLayout(self.layouts["create_layout"])
# 工具部分QGroupBox
self.controls["tools_group"] = QtWidgets.QGroupBox(get_text("Tools", "工具"))
self.controls["tools_group"] = QtWidgets.QGroupBox(TEXT("Tools", "工具"))
self.controls["tools_group"].setObjectName("toolsGroup")
self.layouts["tools_layout"] = QtWidgets.QVBoxLayout()
self.layouts["tools_layout"].setSpacing(5)