MetaFusion/scripts/utils/CopySkin.py
2025-02-07 05:10:30 +08:00

38 lines
1.1 KiB
Python

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import maya.cmds as cmds
import maya.mel as mel
def 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"
)