MetaFusion/Reference/SuperRiggingEditor/scripts/SGBlendShapeFlipTarget.mel

68 lines
1.6 KiB
Plaintext
Raw Permalink Normal View History

2025-02-03 22:58:41 +08:00
//******************************************************************************
//
// <20><>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD>: <20><>Ϫʱ<CFAA><CAB1><EFBFBD>Ƽ<EFBFBD><C6BC><EFBFBD><EFBFBD>޹<EFBFBD>˾
// <20><>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD>: q.100@qq.com
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: 2023/08/08
//
//******************************************************************************
global proc SGBlendShapeFlipTarget (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`;
}
string $cmd;
int $geometryIndices[] = `blendShape -q -gi $blendShape`;
for($geometry in $geometryIndices)
{
$cmd += "blendShape -e ";
for($targetId in $targetIds)
{
$cmd += "-ft " + $geometry + " " + $targetId + " ";
}
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);
}