38 lines
1.1 KiB
Python
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"
|
|
) |