作品:《在Maya和UE5中制作批量重命名工具》
Completed Image:
Introduction:
《Maya重命名工具》,是我在腾讯天美工作室,担任技术美术实习生时,最常见也最实用的一个工具,这也是我认为逻辑清晰,也非常容易制作的工具。特别是在辅助程序组进行批量创建模型,测试性能的时候,自己创建一个这样的工具,能够大大提高工作效率。
这里分享两个工具制作:
- UE5 Widget工具蓝图,应用于UE5引擎内的资源管理。可以快速使用内置的函数库,来通过节点连接的方式,制作出简单的重命名工具。
- Python in Maya,应用于Maya软件内的资源管理,通过在maya中使用Python的Maya API 工具,来制作出简单有效的重命名工具。
UE5-Widget工具展示:
UE5 widget 工具不多赘述,逻辑原理与python同理。
Design Thinking:
建立窗口
- 创建后缀字典:
1 | SUFFIXES = { |
- 创建类,设定窗口名称
- Tips:创建类的目的是把相关的代码封装在一起,并提供可重复使用的接口和工具,方便管理和维护代码。在这个例子中,RenamerUi 类的目的是创建 Maya 的批量重命名工具的用户界面。使用类可以把 UI 元素封装在一起,并在需要时方便地创建、显示、删除等。
- 在创建窗口前,先删去之前的同名窗口
1 | class RenamerUi(object): |
- 建立窗口并命名
1 | # 建立窗口 |
UI界面
主控件
- 设置界面内的主控件,并依附于窗口
- 创建UI:选择方法
1 | # 选择界面 |
UI- 重命名
子控件与输入窗口
“Rename”窗口不需要输入值,因此使用
cmds.frameLayout()
命令创建栏目,并使用bgs=True添加颜色使用
cmds.textFieldGrp()
命令创建帧布局窗口小部件,返回的值为字符串使用
columnWidth1/2=
命令控制标签和帧布局窗口的宽度
1 | # 名称窗口 |
- 读取整数字段,控制后缀名的数值位数
1 | cls.padding = cmds.intField(width=50, |
布局排版
- 使用
cmds.formLayout()
命令,控制各控件进行排版 - 例如:
ac=(cls.autoSuffix_cbg, "left", 0, cls.suffix_tfg)
表示将autoSuffix_cbg
这个控件的左侧对齐到suffix_tfg
这个控件的右侧,并且二者之间没有空白区域
1 | cmds.formLayout(rename_form_layout, e=True, af=(cls.name_tfg, "top", 6)) |
UI- 搜索和替换
- 使用相同方法创建搜索和替换的UI界面,在此不多赘述…
- 最后加入
cmds.showWindow(main_window)
打开窗口
1 | # Search and Replace UI |
重命名函数
退出设定
- 如果关闭窗口,则退出UI界面
1 |
|
自动后缀设定
- 如果自动后缀功能开启,则无法使用后缀重命名
1 | @classmethod |
重命名函数
获取值
- 获取UI中所有的值,并保存到相应变量
- 定义appending中的counter初始值为1,以作后用
1 |
|
方法判定
- 判定选择方法,如果 hierarchy_data = 2,则代表选择了第二个选项,代表选择了hierarchy
- 如果用户选择了hierarchy,则使用
cmds.listRelatives()
获取所有后代物体,并选中(很好用!) - 若选择的是select,则只选择场景中选中的模型
1 | if hierarchy_data == 2: |
获取后缀
- 错误判定,若未选择模型,则提示报错
- 检查box里是否选择了自动后缀,若无,则获取用户输入的后缀信息
- 若有,则获取层级下的所有子对象的type,并对照字典一一赋予
1 | if len(sel) < 1: |
重命名:
"{0}{1}{2}{3}".format(prefix_data, rename_data, str(counter).zfill(padding_data), suffix_data
中的"{0}{1}{2}{3}".
表示将后方的4个数值合并为一个新的字符串- 每复制一个物体,计数器增加1
- 最后清除选择
1 | cmds.rename("{0}{1}{2}{3}".format(prefix_data, rename_data, str(counter).zfill(padding_data), suffix_data)) |
搜索与替换函数:
获取值
- 定义搜索与替换函数
- 获取搜索、替换和方法值
1 |
|
判定与替换:
- 同上:获取所选模型,并保存到sel变量中(selection缩写)
- 使用str.replace命令,把新名称替换旧名称
1 | if hierarchy_data == 2: |
- !!!重点:
replace
是 Python 字符串方法,用于替换字符串中的子字符串。注意!这只是在 Python 中修改了字符串,它并不会实际更改场景中物体的名称。因此,要更改场景中的物体名称,还是需要使用cmds.rename(oldname,newname)
命令(血的教训!!!)
- Title: 作品:《在Maya和UE5中制作批量重命名工具》
- Author: Shuhang Luan
- Created at: 2023-02-01 16:05:07
- Updated at: 2023-03-19 10:37:37
- Link: https://archieluan.github.io/2023/02/01/rename-maya-tool/
- License: This work is licensed under CC BY-NC-SA 4.0.
预览: