#!/usr/bin/env python # -*- coding: utf-8 -*- import maya.cmds as cmds import sys import os import importlib def run(): # 获取选中的对象 selected = cmds.ls(selection=True, transforms=True) # 检查是否选择了两个对象 if len(selected) != 2: raise RuntimeError(f"请选择两个多边形对象!") # 检查每个选中对象的类型 for obj in selected: shapes = cmds.listRelatives(obj, shapes=True) for shape in shapes: if cmds.nodeType(shape) != "mesh": raise RuntimeError(f"选中的几何体不是多边形对象!") # 检查第一个对象是否绑定了蒙皮 shapes = cmds.listRelatives(selected[0], shapes=True) # 获取蒙皮 skin = cmds.listConnections(shapes[0], type="skinCluster") if not skin: raise RuntimeError(f"第一个选中的对象没有绑定蒙皮簇!") # 执行 extractDeltas 命令 从变形网格中提取建模的修正形状 cmds.extractDeltas(s=selected[0], c=selected[1]) # 选择第二个对象 cmds.select(selected[1], replace=True) # 导入并运行 bsIndex 计算修正形状的索引, 指定 bsIndex 的路径为当前路径 BSINDEX_PATH = os.path.dirname(os.path.abspath(__file__)) sys.path.append(BSINDEX_PATH) import bsIndex importlib.reload(bsIndex) bsIndex.calc() if __name__ == "__main__": run()