MetaFusion/Reference/SuperRiggingEditor/scripts/SGSupplementMeshes.mel

78 lines
2.4 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/01
//
//******************************************************************************
global proc SGSupplementMeshes ()
{
for($i=0; $i<8; $i++){
int $lodList[] = `SGGetMeshes -lod $i`;
string $head = `SGGetMeshes -m $lodList[0]`;
string $deformed = `SGGetMeshes -m 0`;
if(`objExists $head`){
string $source = `SGGetMeshes -cm 0`;
string $sourceBuffer = $source + "_buffer";
$sourceBuffer = `substring $sourceBuffer 2 (size($sourceBuffer))`;
$sourceBuffer = `rename $source $sourceBuffer`;
string $title = "[LOD" + $i + "] Please be patient and wait...";
if(`SGDescriptor -l` == "ZH"){
$title = "[LOD" + $i + "] <20><><EFBFBD><EFBFBD><EFBFBD>ĵȴ<C4B5>...";
}
SGProgressBar -sp;
SGProgressBar -t $title;
string $eyeMesh[], $eye[], $mouthMesh[];
string $json = `SGDescriptor -ti "vertexsInfo"`;
int $eyeIndices[] = `SGReadJson -f $json -k "headEye" -t "int"`;
int $mouthIndices[] = `SGReadJson -f $json -k "headMouth" -t "int"`;
for($j=1; $j<size($lodList); $j++){
if($lodList[$j] < 50){
string $mesh = `SGGetMeshes -m $lodList[$j]`;
if(!`objExists $mesh`){
string $newMesh = `SGGetMeshes -cm $lodList[$j]`;
if(`objExists $newMesh`){
if(`gmatch $newMesh "*eyeshell*"` || `gmatch $newMesh "*eyelashes*"`
|| `gmatch $newMesh "*eyeEdge*"`|| `gmatch $newMesh "*cartilage*"`){
$eyeMesh[size($eyeMesh)] = $newMesh;
}
else if(`gmatch $newMesh "*eyeLeft*"` || `gmatch $newMesh "*eyeRight*"`){
$eye[size($eye)] = $newMesh;
}
else if(`gmatch $newMesh "*teeth*"` || `gmatch $newMesh "*saliva*"`){
$mouthMesh[size($mouthMesh)] = $newMesh;
}
}
}
}
}
SGProgressBar -max 3;
SGProgressBar -apr 1;
if(size($eyeMesh) > 0){
SGRBFDeformer -r 0.01 -rbf 1 -m $sourceBuffer $deformed -pi $eyeIndices -t $eyeMesh;
}
SGProgressBar -apr 1;
if(size($eye) > 0){
SGRBFDeformer -r 0.01 -rbf 1 -d off -m $sourceBuffer $deformed -pi $eyeIndices -t $eye;
}
SGProgressBar -apr 1;
if(size($mouthMesh) > 0){
SGRBFDeformer -r 0.01 -rbf 1 -d off -m $sourceBuffer $deformed -pi $mouthIndices -t $mouthMesh;
}
delete $sourceBuffer;
SGProgressBar -ep;
}
}
}