MetaFusion/scripts/Reference/SGCopySkin.py

44 lines
1.2 KiB
Python
Raw Normal View History

2025-01-17 02:30:36 +08:00
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
版权所有: 清泉时代科技有限公司
联系方式: q.100@qq.com
创建日期: 2023/08/08
"""
import maya.cmds as cmds
import maya.mel as mel
def sg_copy_skin():
"""
复制蒙皮权重
- 从第一个选中的模型复制蒙皮权重到其他选中的模型
- 如果目标模型已有蒙皮会先解绑再重新绑定
"""
# 获取选中的模型
meshes = cmds.ls(selection=True)
# 获取源模型的影响骨骼
joints = cmds.skinCluster(meshes[0], query=True, influence=True)
# 处理每个目标模型
for mesh in meshes[1:]:
# 检查是否已有蒙皮变形器
skin_cluster = mel.eval(f'findRelatedSkinCluster("{mesh}")')
# 如果存在蒙皮变形器则解绑
if cmds.objExists(skin_cluster):
cmds.skinCluster(mesh, edit=True, unbind=True)
# 创建新的蒙皮变形器
cmds.skinCluster(joints, mesh)
# 复制蒙皮权重
cmds.copySkinWeights(
sourceShape=meshes[0],
destinationShape=mesh,
noMirror=True,
surfaceAssociation="closestPoint",
influenceAssociation="closestJoint"
)