MetaFusion/Reference/SuperRiggingEditor/scripts/SGPose.mel

81 lines
2.3 KiB
Plaintext
Raw 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>: 2024/04/17
//
//******************************************************************************
global proc SGPose(string $pose){
string $axis = `upAxis -q -ax`;
string $poseJoints[] = {
"clavicle_r","clavicle_l",
"upperarm_r","upperarm_l",
"lowerarm_r","lowerarm_l",
"hand_r","hand_l",
"index_metacarpal_r","index_metacarpal_l",
"index_01_r","index_01_l",
"index_02_r","index_02_l",
"middle_metacarpal_r","middle_metacarpal_l",
"middle_01_r","middle_01_l",
"middle_02_r","middle_02_l",
"ring_metacarpal_r","ring_metacarpal_l",
"ring_01_r","ring_01_l",
"ring_02_r","ring_02_l",
"pinky_metacarpal_r","pinky_metacarpal_l",
"pinky_01_r","pinky_01_l",
"pinky_02_r","pinky_02_l"};
string $locator = "MetaHumanLocatorTemp";
if(!`objExists $locator`){
spaceLocator -n $locator;
}
string $locatorGrp = "MetaHumanLocatorGrpTemp";
if(!`objExists $locatorGrp`){
group -em -n $locatorGrp;
parent $locator $locatorGrp;
}
string $jsonFile = `getenv "SG_PATH"` + "files/data/BodyJoints.json";
string $object[] =`SGReadJson -f $jsonFile -t "object"`;
for($i=0; $i<size($object); $i++){
string $jointName[] = `SGReadJson -d $object[$i] -k "joint" -t "string"`;
if(stringArrayContains($jointName[0], $poseJoints)){
float $pos[] = `SGReadJson -d $object[$i] -k $pose -t "double"`;
string $joint_drv = $jointName[0] + "_drv";
delete`parentConstraint -skipRotate x -skipRotate y -skipRotate z -weight 1 $joint_drv $locator`;
if($axis == "y"){
rotate -ws $pos[0] $pos[1] $pos[2] $locator;
}
else if($axis == "z"){
setAttr -type float3 ($locatorGrp + ".r") -90 0 0;
rotate -ws $pos[0] $pos[1] $pos[2] $locator;
setAttr -type float3 ($locatorGrp + ".r") 0 0 0;
}
delete`parentConstraint -skipTranslate x -skipTranslate y -skipTranslate z -weight 1 $locator $joint_drv`;
}
}
delete $locator;
delete $locatorGrp;
refresh;
string $meshs[];
int $meshIndex[] = {0,9,18,26,33,38,42,46,50,51,52,53};
for($i=0; $i<size($meshIndex); $i++){
string $mesh = `SGGetMeshes -m $meshIndex[$i]`;
if(`objExists $mesh`){
$meshs[(size($meshs))] = $mesh;
}
}
//SGMainAmendAxisPose;
SGSkinAmendAxis;
SGBindPoseReset $meshs;
}