如何用Python/maya.cmds实现UV选择转UV壳边界及包含边以拆分UV壳?
Maya 2022 按UV壳拆分对象的Python脚本
功能说明
实现将选中对象按UV壳拆分为独立部件,执行流程:选中对象所有UV点 → 转换为UV壳边界边 → 切换选择为拓扑边 → 分离组件 → 拆分对象为独立部件。
完整脚本
import maya.cmds as cmds def split_by_uv_shell(): # 检查选中对象 selected_objs = cmds.ls(selection=True, objectsOnly=True) if not selected_objs: cmds.warning("请先选中一个多边形对象") return target_obj = selected_objs[0] # 切换到UV组件模式并选中所有UV点 cmds.selectMode(component=True) cmds.selectType(uv=True) cmds.select(f"{target_obj}.map[:]", replace=True) # 将UV选择转换为UV壳边界边 cmds.polySelectConstraint(mode=3, type=0x0008, shellBorder=True) cmds.polySelectConstraint(disable=True) # 切换选择类型为拓扑边 cmds.selectType(edge=True) # 分离边界边对应的组件 cmds.polyChipOff(dup=False, keepFacesTogether=False) # 拆分对象为独立部件 cmds.polySeparate(target_obj) cmds.select(target_obj, replace=True) cmds.rename(f"{target_obj}_split") # 执行拆分 split_by_uv_shell()
关键命令解析
cmds.polySelectConstraint(mode=3, type=0x0008, shellBorder=True):替换当前选择为UV壳边界边,mode=3表示覆盖现有选择,type=0x0008指定筛选UV边界类型,shellBorder=True开启UV壳边界筛选。cmds.polyChipOff(dup=False, keepFacesTogether=False):分离选中边对应的组件,dup=False不复制面,keepFacesTogether=False允许面独立分离。cmds.polySeparate(target_obj):将分离后的组件拆分为独立的多边形对象。
使用注意事项
- 仅支持单个多边形对象处理,若选中多个对象需调整脚本逻辑。
- 执行前建议保存场景,避免意外修改。
内容的提问来源于stack exchange,提问作者Karan Bhandari
相关产品推荐
相关产品推荐

