Update definition.py
This commit is contained in:
@@ -21,6 +21,10 @@ import os
|
||||
#===================================== IMPORT FUNCTIONS ===================================
|
||||
from scripts.utils import utils_definition as utils_definition
|
||||
from scripts.ui import ui_utils
|
||||
import config
|
||||
|
||||
# 导入图标路径
|
||||
ICONS_PATH = config.ICONS_PATH
|
||||
|
||||
#========================================== WIDGETS ==========================================
|
||||
# 全局变量存储UI控件
|
||||
@@ -28,6 +32,24 @@ definition_tabs = None
|
||||
dna_elements = {}
|
||||
definition_buttons = {}
|
||||
|
||||
def set_button_icon(button, icon_name):
|
||||
"""
|
||||
设置按钮图标,使用Maya默认图标
|
||||
|
||||
Args:
|
||||
button: 要设置图标的按钮
|
||||
icon_name: 图标文件名
|
||||
"""
|
||||
# 使用Maya内置图标
|
||||
from maya import cmds
|
||||
|
||||
# 设置按钮图标使用Maya的图标
|
||||
button.setIcon(QtGui.QIcon(":/{}".format(icon_name)))
|
||||
button.setIconSize(QtCore.QSize(24, 24)) # 图标尺寸
|
||||
print(f"成功设置按钮图标: {icon_name}")
|
||||
|
||||
# 注意:如果图标加载失败,我们会看到一个空图标,但不会引起错误
|
||||
|
||||
def widgets():
|
||||
"""
|
||||
创建定义系统UI控件
|
||||
@@ -40,7 +62,6 @@ def widgets():
|
||||
# 创建各类元素列表
|
||||
dna_elements["lod_list"] = QtWidgets.QListWidget()
|
||||
dna_elements["lod_list"].setObjectName("LodList")
|
||||
dna_elements["lod_list"].setMaximumHeight(150)
|
||||
|
||||
dna_elements["mesh_list"] = QtWidgets.QListWidget()
|
||||
dna_elements["mesh_list"].setObjectName("MeshList")
|
||||
@@ -87,22 +108,63 @@ def widgets():
|
||||
dna_elements["refresh_animmap"].setObjectName("RefreshButton")
|
||||
dna_elements["refresh_animmap"].setFixedWidth(60)
|
||||
|
||||
# 创建LOD和Meshes特殊按钮
|
||||
dna_elements["define_lod_joint"] = QtWidgets.QPushButton("定义LOD关节")
|
||||
set_button_icon(dna_elements["define_lod_joint"], "layerEditor.png")
|
||||
dna_elements["define_lod_joint"].setMinimumHeight(28)
|
||||
dna_elements["define_lod_joint"].setStyleSheet("text-align: left; padding-left: 30px;")
|
||||
dna_elements["define_lod_joint"].setToolTip("定义LOD关节")
|
||||
|
||||
dna_elements["create_geometry"] = QtWidgets.QPushButton("创建几何体")
|
||||
set_button_icon(dna_elements["create_geometry"], "polyCube.png")
|
||||
dna_elements["create_geometry"].setMinimumHeight(28)
|
||||
dna_elements["create_geometry"].setStyleSheet("text-align: left; padding-left: 30px;")
|
||||
dna_elements["create_geometry"].setToolTip("创建几何体")
|
||||
|
||||
# 功能按钮
|
||||
# 写入组按钮
|
||||
definition_buttons["write_joint_defaults"] = QtWidgets.QPushButton("写入关节默认位置")
|
||||
set_button_icon(definition_buttons["write_joint_defaults"], "HIKCharacterToolBodyPart.png")
|
||||
|
||||
definition_buttons["write_geometry"] = QtWidgets.QPushButton("写入几何体")
|
||||
definition_buttons["write_skinning"] = QtWidgets.QPushButton("写入蒙皮")
|
||||
set_button_icon(definition_buttons["write_geometry"], "polyCube.png")
|
||||
|
||||
definition_buttons["write_skinning"] = QtWidgets.QPushButton("写入蒙皮权重")
|
||||
set_button_icon(definition_buttons["write_skinning"], "paintSkinWeights.png")
|
||||
|
||||
definition_buttons["write_blendshapes"] = QtWidgets.QPushButton("写入混合变形目标")
|
||||
set_button_icon(definition_buttons["write_blendshapes"], "blendShape.png")
|
||||
|
||||
# 创建组按钮
|
||||
definition_buttons["create_blendshapes"] = QtWidgets.QPushButton("创建混合变形")
|
||||
set_button_icon(definition_buttons["create_blendshapes"], "blendShapeEditor.png")
|
||||
|
||||
definition_buttons["bind_skin"] = QtWidgets.QPushButton("绑定蒙皮")
|
||||
set_button_icon(definition_buttons["bind_skin"], "smoothSkin.png")
|
||||
|
||||
definition_buttons["unbind_skin"] = QtWidgets.QPushButton("取消蒙皮")
|
||||
set_button_icon(definition_buttons["unbind_skin"], "detachSkin.png")
|
||||
|
||||
# 工具组按钮
|
||||
definition_buttons["reposition_head"] = QtWidgets.QPushButton("重新定位头部关节")
|
||||
set_button_icon(definition_buttons["reposition_head"], "HIKCharacterToolSkeleton.png")
|
||||
|
||||
definition_buttons["reposition_body"] = QtWidgets.QPushButton("重新定位身体关节")
|
||||
set_button_icon(definition_buttons["reposition_body"], "HIKCharacterToolSkeleton.png")
|
||||
|
||||
definition_buttons["reposition_all"] = QtWidgets.QPushButton("重新定位全身关节")
|
||||
set_button_icon(definition_buttons["reposition_all"], "HIKCharacterToolSkeleton.png")
|
||||
|
||||
definition_buttons["quick_preset"] = QtWidgets.QPushButton("快速创建预设")
|
||||
set_button_icon(definition_buttons["quick_preset"], "QR_QuickRigTool.png")
|
||||
|
||||
# 设置按钮样式
|
||||
for button in definition_buttons.values():
|
||||
button.setMinimumHeight(28)
|
||||
# 设置按钮文本对齐方式,使图标在左侧,文本在右侧
|
||||
button.setStyleSheet("text-align: left; padding-left: 30px;")
|
||||
# 设置工具提示与按钮文本相同
|
||||
button.setToolTip(button.text())
|
||||
|
||||
#========================================== LAYOUTS ==========================================
|
||||
def layouts(parent_tab=None):
|
||||
@@ -147,6 +209,7 @@ def layouts(parent_tab=None):
|
||||
|
||||
lod_layout.addWidget(lod_header)
|
||||
lod_layout.addWidget(dna_elements["lod_list"])
|
||||
lod_layout.addWidget(dna_elements["define_lod_joint"])
|
||||
|
||||
# 创建Meshes区域
|
||||
mesh_widget = QtWidgets.QWidget()
|
||||
@@ -164,6 +227,7 @@ def layouts(parent_tab=None):
|
||||
|
||||
mesh_layout.addWidget(mesh_header)
|
||||
mesh_layout.addWidget(dna_elements["mesh_list"])
|
||||
mesh_layout.addWidget(dna_elements["create_geometry"])
|
||||
|
||||
# 添加到左侧垂直分割控件
|
||||
left_splitter.addWidget(lod_widget)
|
||||
@@ -231,8 +295,12 @@ def layouts(parent_tab=None):
|
||||
# 设置右侧分割控件比例
|
||||
right_splitter.setSizes([200, 200, 200])
|
||||
|
||||
# 设置左侧分割控件比例
|
||||
left_splitter.setSizes([150, 450])
|
||||
# 设置左侧分割控件比例 - 使其均等
|
||||
left_splitter.setSizes([300, 300])
|
||||
|
||||
# 设置左侧分割控件的伸缩因子,使两个模块均等分配空间
|
||||
left_splitter.setStretchFactor(0, 1) # LOD区域伸缩因子为1
|
||||
left_splitter.setStretchFactor(1, 1) # Meshes区域伸缩因子为1
|
||||
|
||||
# 添加到主分割控件
|
||||
main_splitter.addWidget(left_splitter)
|
||||
@@ -253,23 +321,35 @@ def layouts(parent_tab=None):
|
||||
# 创建功能分组
|
||||
write_group = QtWidgets.QGroupBox("写入")
|
||||
write_layout = QtWidgets.QVBoxLayout(write_group)
|
||||
write_layout.setAlignment(QtCore.Qt.AlignTop) # 设置向顶部对齐
|
||||
write_layout.setContentsMargins(4, 8, 4, 4) # 减小内边距
|
||||
write_layout.setSpacing(4) # 减小间距
|
||||
write_layout.addWidget(definition_buttons["write_joint_defaults"])
|
||||
write_layout.addWidget(definition_buttons["write_geometry"])
|
||||
write_layout.addWidget(definition_buttons["write_skinning"])
|
||||
write_layout.addWidget(definition_buttons["write_blendshapes"])
|
||||
write_layout.addStretch() # 添加弹性空间,使按钮向顶部对齐
|
||||
|
||||
create_group = QtWidgets.QGroupBox("创建")
|
||||
create_layout = QtWidgets.QVBoxLayout(create_group)
|
||||
create_layout.setAlignment(QtCore.Qt.AlignTop) # 设置向顶部对齐
|
||||
create_layout.setContentsMargins(4, 8, 4, 4) # 减小内边距
|
||||
create_layout.setSpacing(4) # 减小间距
|
||||
create_layout.addWidget(definition_buttons["create_blendshapes"])
|
||||
create_layout.addWidget(definition_buttons["bind_skin"])
|
||||
create_layout.addWidget(definition_buttons["unbind_skin"])
|
||||
create_layout.addStretch() # 添加弹性空间,使按钮向顶部对齐
|
||||
|
||||
tools_group = QtWidgets.QGroupBox("工具")
|
||||
tools_layout = QtWidgets.QVBoxLayout(tools_group)
|
||||
tools_layout.setAlignment(QtCore.Qt.AlignTop) # 设置向顶部对齐
|
||||
tools_layout.setContentsMargins(4, 8, 4, 4) # 减小内边距
|
||||
tools_layout.setSpacing(4) # 减小间距
|
||||
tools_layout.addWidget(definition_buttons["reposition_head"])
|
||||
tools_layout.addWidget(definition_buttons["reposition_body"])
|
||||
tools_layout.addWidget(definition_buttons["reposition_all"])
|
||||
tools_layout.addWidget(definition_buttons["quick_preset"])
|
||||
tools_layout.addStretch() # 添加弹性空间,使按钮向顶部对齐
|
||||
|
||||
# 添加到底部布局
|
||||
bottom_layout.addWidget(write_group)
|
||||
@@ -317,6 +397,10 @@ def connections():
|
||||
dna_elements["refresh_joint"].clicked.connect(lambda: refresh_list("joint_list"))
|
||||
dna_elements["refresh_blendshape"].clicked.connect(lambda: refresh_list("blendshape_list"))
|
||||
dna_elements["refresh_animmap"].clicked.connect(lambda: refresh_list("animmap_list"))
|
||||
|
||||
# 连接LOD和Meshes特殊按钮点击事件
|
||||
dna_elements["define_lod_joint"].clicked.connect(lambda: print("定义LOD关节功能待实现"))
|
||||
dna_elements["create_geometry"].clicked.connect(lambda: print("创建几何体功能待实现"))
|
||||
|
||||
# 列表选择变化处理函数
|
||||
def on_list_selection_changed(list_key):
|
||||
|
Reference in New Issue
Block a user