MetaFusion/scripts/Reference/SGSaveBlendShape.py

63 lines
1.9 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
def sg_save_blend_shape():
"""
保存所有网格的混合变形目标
"""
# 保存混合变形映射
cmds.SGSaveBlendShapeMappings(0)
# 初始化进度条
cmds.SGProgressBar(sp=True)
# 遍历前50个网格
for mesh_index in range(50):
# 获取网格
mesh = cmds.SGGetMeshes(m=mesh_index)
if cmds.objExists(mesh):
# 获取混合变形器
blend_shape = cmds.SGGetBlendShape(mesh)
if cmds.objExists(blend_shape):
# 获取混合变形目标数量
count = cmds.blendShape(blend_shape, query=True, weightCount=True)
if count:
# 设置进度条
cmds.SGProgressBar(max=count)
cmds.SGProgressBar(t=f"[{blend_shape}] Save Target Mesh...")
# 处理每个混合变形目标
for index in range(count):
# 更新进度条
cmds.SGProgressBar(apr=1)
# 重新生成目标并保存
bs_name = cmds.sculptTarget(
blend_shape,
edit=True,
regenerate=True,
target=index
)
cmds.SGSaveBlendShapes(bs=mesh_index, i=index, value=bs_name[0])
# 删除临时目标
cmds.delete(bs_name)
# 结束进度条
cmds.SGProgressBar(ep=True)
# 如果直接运行此脚本
if __name__ == '__main__':
sg_save_blend_shape()