MetaFusion/Reference/SuperRiggingEditor/scripts/SGBlendShapeMirrorTarget.mel
2025-02-03 22:58:41 +08:00

70 lines
1.7 KiB
Plaintext

//******************************************************************************
//
// 版权所有: 玉溪时光科技有限公司
// 联系邮箱: q.100@qq.com
// 开发日期: 2023/08/08
//
//******************************************************************************
global proc SGBlendShapeMirrorTarget (int $direction, int $axis, int $targetIds[], string $blendShape){
if(!`objExists $blendShape`)
{
warning -n ("No Exists BlendShape:" + $blendShape);
return;
}
int $originalSymmetry = `symmetricModelling -q -s`;
string $symmetrySpace, $symmetryAxis;
if ($originalSymmetry)
{
$symmetrySpace = `symmetricModelling -q -about`;
if ($symmetrySpace == "topo")
$symmetryAxis = blendShapeGetTopoSymmetryEdge();
else
$symmetryAxis = `symmetricModelling -q -axis`;
}
int $geometryIndices[] = `blendShape -q -gi $blendShape`;
string $cmd;
for($geometry in $geometryIndices)
{
$cmd += "blendShape -e ";
for($targetId in $targetIds)
{
$cmd += "-mt " + $geometry + " " + $targetId + " ";
}
$cmd += "-md " + $direction + " ";
if ($axis == 4)
{
$cmd += "-ss 0 ";
}
else
{
$cmd += "-ss 1 ";
if ($axis == 1)
$cmd += "-sa x ";
else if ($axis == 2)
$cmd += "-sa y ";
else if ($axis == 3)
$cmd += "-sa z ";
}
$cmd += $blendShape + "; ";
}
if (!$originalSymmetry || size($symmetryAxis) == 0)
$cmd += "eval -ue 0 \"symmetricModelling -s 0\";";
else if ($symmetrySpace == "topo")
$cmd += "eval -ue 0 \"symmetricModelling -e -about " + $symmetrySpace + " -s 1 " + $symmetryAxis + "\";";
else
$cmd += "eval -ue 0 \"symmetricModelling -e -about " + $symmetrySpace + " -axis " + $symmetryAxis + " -s 1\";";
eval($cmd);
}