From 5ee392002edaa75c239a726cf453e970cc780cb6 Mon Sep 17 00:00:00 2001 From: Jeffreytsai1004 Date: Fri, 7 Feb 2025 13:36:59 +0800 Subject: [PATCH] update --- scripts/MetaFusion.py | 29 ++++++++++++---- scripts/model.py | 79 +++++++++++++++++++++---------------------- scripts/ui/menu.py | 26 +++++++------- 3 files changed, 75 insertions(+), 59 deletions(-) diff --git a/scripts/MetaFusion.py b/scripts/MetaFusion.py index a87532d..3805516 100644 --- a/scripts/MetaFusion.py +++ b/scripts/MetaFusion.py @@ -39,14 +39,19 @@ from scripts.ui.widgets import ModernTabWidget class MainWindow(QtWidgets.QMainWindow): def __init__(self, parent=None): super(MainWindow, self).__init__(parent) + + # 设置窗口属性 + self.setWindowFlags(QtCore.Qt.Window) + self.setAttribute(QtCore.Qt.WA_DeleteOnClose) + # 设置基础字体大小 font = self.font() - font.setPointSize(9) # 设置基础字号 + font.setPointSize(9) self.setFont(font) - # 设置窗口大小 - self.resize(700, 600) # 调整为更合适的尺寸 - self.setMinimumSize(700, 500) + # 设置窗口尺寸 + self.resize(550, 700) # 调整为更大的初始尺寸 + self.setMinimumSize(550, 700) # 设置最小尺寸限制 self.setup_core_components() @@ -130,9 +135,19 @@ def dock_to_maya(): data.TOOL_WSCL_NAME, label=data.TOOL_NAME, tabToControl=["AttributeEditor", -1], - initialWidth=1400, - minimumWidth=1000, - minimumHeight=800 + initialWidth=550, + initialHeight=700, + minimumWidth=550, + minimumHeight=700, + floating=True, # 设置为悬浮状态 + retain=False # 不保存上次的停靠状态 + ) + + # 确保窗口显示在合适的位置 + cmds.workspaceControl( + data.TOOL_WSCL_NAME, + e=True, + restore=True ) maya_dock_ptr = omui.MQtUtil.findControl(dock_control) diff --git a/scripts/model.py b/scripts/model.py index a80563b..802aa6f 100644 --- a/scripts/model.py +++ b/scripts/model.py @@ -5,18 +5,18 @@ from typing import Dict, List @dataclass class Point3: """ - A model class for representing a 3 dimensional point + 表示三维空间中的点的模型类 - Attributes + 属性 ---------- @type x: float - @param x: The value of x + @param x: x坐标值 @type y: float - @param y: The value of y + @param y: y坐标值 @type z: float - @param z: The value of z + @param z: z坐标值 """ x: float = field(default=0.0) @@ -27,15 +27,15 @@ class Point3: @dataclass class UV: """ - A model class for holding data about the UV + 用于保存UV数据的模型类 - Attributes + 属性 ---------- @type u: float - @param u: The value of u + @param u: u坐标值 @type v: float - @param v: The value of v + @param v: v坐标值 """ u: float = field(default=0.0) @@ -45,15 +45,15 @@ class UV: @dataclass class Layout: """ - A model class for holding data about a single layout + 用于保存单个Layout数据的模型类 - Attributes + 属性 ---------- @type position_index: int - @param position_index: An index representing position + @param position_index: 表示位置的索引 @type texture_coordinate_index: int - @param texture_coordinate_index: A value representing the texture coordinate index + @param texture_coordinate_index: 表示纹理坐标的索引值 """ position_index: int = field(default=0) @@ -63,21 +63,21 @@ class Layout: @dataclass class Topology: """ - A model class for holding data about the topology + 用于保存拓扑数据的模型类 - Attributes + 属性 ---------- @type positions: List[Point3] - @param positions: List of points in space representing the positions + @param positions: 表示位置的空间点列表 @type texture_coordinates: List[UV] - @param texture_coordinates: List of UVs representing the positions + @param texture_coordinates: 表示UV位置的列表 @type layouts: List[Layout] - @param layouts: The list of Layout mappings + @param layouts: Layout映射列表 @type face_vertex_layouts: List[List[int]] - @param face_vertex_layouts: List of face vertex layout indices by face index + @param face_vertex_layouts: 按面索引排列的面顶点Layout索引列表 """ positions: List[Point3] = field(default_factory=list) @@ -89,15 +89,15 @@ class Topology: @dataclass class BlendShape: """ - A model class for holding data about the blend shape + 用于保存BlendShape数据的模型类 - Attributes + 属性 ---------- @type channel: int - @param channel: The index pointing to the blend shape name + @param channel: 指向BlendShape名称的索引 @type deltas: Dict[int, Point3] - @param deltas: A mapping of blend shape indices to the coordinate differences that are made by the blend shape + @param deltas: BlendShape索引到坐标差值的映射 """ channel: int = field(default=None) @@ -107,16 +107,15 @@ class BlendShape: @dataclass class SkinWeightsData: """ - A model class for holding data about the skin weights + 用于保存蒙皮权重数据的模型类 - Attributes + 属性 ---------- - @type values: List[List[float]] - @param values: The skin weight values per vertex index + @param values: 每个顶点索引的蒙皮权重值 @type joint_indices: List[List[int]] - @param joint_indices: The joint indces per vertex index + @param joint_indices: 每个顶点索引的关节索引 """ values: List[List[float]] = field(default_factory=list) @@ -126,21 +125,21 @@ class SkinWeightsData: @dataclass class Mesh: """ - A model class for holding data about the mesh + 用于保存网格数据的模型类 - Attributes + 属性 ---------- @type name: str - @param name: The name of the mesh + @param name: 网格名称 @type topology: Topology - @param topology: Data containing the topology of the mesh + @param topology: 包含网格拓扑数据 @type skin_weights: SkinWeightsData - @param skin_weights: Data representing skin weights + @param skin_weights: 表示蒙皮权重的数据 @type blend_shapes: List[BlendShape] - @param blend_shapes: The list of blend shapes for the mesh + @param blend_shapes: 网格的BlendShape列表 """ name: str = field(default=None) @@ -152,21 +151,21 @@ class Mesh: @dataclass class Joint: """ - A model class for holding data about a single joint + 用于保存单个关节数据的模型类 - Attributes + 属性 ---------- @type name: str - @param name: The name of the joint + @param name: 关节名称 @type translation: Point3 - @param translation: A point in 3 dimensional space which represents the translation of the joint + @param translation: 表示关节位移的三维空间点 @type orientation: Point3 - @param orientation: A point in 3 dimensional space which represents the orientation of the joint + @param orientation: 表示关节方向的三维空间点 @type parent_name: str - @param parent_name: The name of the parent joint + @param parent_name: 父关节名称 """ name: str = field(default=None) diff --git a/scripts/ui/menu.py b/scripts/ui/menu.py index 5b0531c..4291784 100644 --- a/scripts/ui/menu.py +++ b/scripts/ui/menu.py @@ -111,22 +111,23 @@ class MenuManager: def _create_toolbar(self): """创建工具栏""" toolbar = self.parent.addToolBar("主工具栏") - toolbar.setMovable(True) # 允许移动 - toolbar.setFloatable(True) # 允许浮动 + toolbar.setMovable(True) + toolbar.setFloatable(True) + toolbar.setIconSize(QtCore.QSize(24, 24)) - # 定义工具栏按钮 + # 定义工具栏按钮 (text, icon, callback, tooltip) toolbar_items = [ - ("保存DNA", "save.png", menu_utils.save_dna), - ("加载当前项目DNA", "open.png", menu_utils.load_project_dna), + ("保存DNA", "save.png", menu_utils.save_dna, "保存DNA"), + ("加载当前项目DNA", "open.png", menu_utils.load_dna, "加载DNA"), None, - ("创建RL4节点", "connect.png", adjust_utils.create_rl4_node), - ("删除RL4节点", "disconnect.png", adjust_utils.delete_rl4_node), + ("创建RL4节点", "connect.png", adjust_utils.create_rl4_node, "连接表情控制"), + ("删除RL4节点", "disconnect.png", adjust_utils.delete_rl4_node, "断开表情控制"), None, - ("导入FBX蒙皮", "export_skin.png", rigging_utils.import_skin), - ("导出FBX蒙皮", "export_skin.png", rigging_utils.export_skin), + ("导入FBX蒙皮", "import_skin.png", rigging_utils.import_skin, "导入蒙皮"), + ("导出FBX蒙皮", "export_skin.png", rigging_utils.export_skin, "导出蒙皮"), None, - ("帮助文档", "help.png", menu_utils.show_help), - ("关于", "warning.png", menu_utils.show_about) + ("帮助文档", "help.png", menu_utils.show_help, "帮助文档"), + ("关于", "warning.png", menu_utils.show_about, "关于MetaFusion") ] self._add_toolbar_items(toolbar, toolbar_items) @@ -152,11 +153,12 @@ class MenuManager: if item is None: toolbar.addSeparator() else: - text, icon, callback = item + text, icon, callback, tooltip = item # 现在解包4个值 action = QtWidgets.QAction(text, self.parent) if icon: icon_path = os.path.join(data.ICONS_PATH, icon) if os.path.exists(icon_path): action.setIcon(QtGui.QIcon(icon_path)) + action.setToolTip(tooltip) # 设置工具提示 action.triggered.connect(lambda checked=False, fn=callback: fn()) toolbar.addAction(action) \ No newline at end of file