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

383 lines
11 KiB
Plaintext

//******************************************************************************
//
// 版权所有: 玉溪时光科技有限公司
// 联系邮箱: q.100@qq.com
// 开发日期: 2023/08/08
//
//******************************************************************************
//==========DAZ切头工具===========//
global proc SGMesheDetach (string $topology){
if($topology == "DAZG8F"){
SGDAZG8FDetach;
}
else if($topology == "DAZG8M"){
SGDAZG8MDetach;
}
else if($topology == "DAZG9"){
SGDAZG9Detach;
}
else if($topology == "CC3"){
SGCC3Detach;
}
}
global proc SGDAZG8FDetach (){
string $sel[]=`ls -sl`;
string $shapeA[]=`listRelatives -s $sel[0]`;
int $edgesA[] = {
52019,52021,53274,53278,54011,54013,54034,54037,54252,54256,
54289,54291,54600,54602,54624,54626,54648,54650,54674,54676,
54690,54692,54715,54717,54725,54727,57874,57881,58328,58330,
58363,58365,59260,59264,59265,59267,59307,59308,59311,59312,
59332,59344,59348,61354,61355,61385,61387,61395,61396,61397,
63352,63354,64601,64609,65323,65325,65344,65349,65561,65565,
65599,65601,65906,65908,65930,65932,65954,65956,65979,65981,
65995,65997,66024,66026,66033,66035,69124,69127,69540,69542,
69572,69574,70459,70464,70466,70467,70504,70505,70508,70509,
70530,70543,70549,72515,72516,72544,72546,72554,72560,72561};
int $edgesB[] = {
24644,24648,25049,25051,25127,25129,25139,25141,25144,25148,
25663,25665,25671,25673,25677,25683,25695,25697,25701,25705,
25798,25800,25814,25816,25822,25824,25828,25830,25847,25851,
26130,26132,27410,27412,27417,27419,28237,28243,28246,28248,
28250,28251,28304,28306,28604,28611,28996,28998,29066,29068,
29076,29078,29083,29089,29554,29556,29562,29564,29568,29572,
29586,29588,29590,29594,29688,29690,29706,29708,29714,29716,
29723,29725,29734,29738,30012,30014,31292,31294,31298,31300,
32066,32070,32076,32079,32080,32082,32137,32139};
select -cl;
for($e in $edgesA){
select -add ($sel[0]+".e["+$e+"]");
}
DetachComponent;
string $cuuttingA[]=`polySeparate -ch 0 $shapeA[0]`;
select -cl;
for($i=2;$i<size($cuuttingA)-4;$i++){
select -add $cuuttingA[$i];
}
polyUnite -n "DAZ_G8F_TeethA" -ch 0;
select -cl;
select -add $cuuttingA[34];
select -add $cuuttingA[36];
polyUnite -n "DAZ_G8F_EyeLeft" -ch 0;
select -cl;
select -add $cuuttingA[35];
select -add $cuuttingA[37];
polyUnite -n "DAZ_G8F_EyeRight" -ch 0;
rename $cuuttingA[0] "DAZ_G8F_Body";
rename $cuuttingA[1] "DAZ_G8F_HeadA";
string $shapeB[]=`listRelatives -s "DAZ_G8F_HeadA"`;
select -cl;
for($e in $edgesB){
select -add ("DAZ_G8F_HeadA.e["+$e+"]");
}
DetachComponent;
string $cuuttingB[]=`polySeparate -ch 0 $shapeB[0]`;
select -cl;
select -add "DAZ_G8F_TeethA";
select -add $cuuttingB[1];
polyUnite -n "DAZ_G8F_Teeth" -ch 0;
rename $cuuttingB[0] "DAZ_G8F_Head";
catchQuiet (`parent -w "DAZ_G8F_Body"`);
catchQuiet (`parent -w "DAZ_G8F_Head"`);
catchQuiet (`parent -w "DAZ_G8F_Teeth"`);
catchQuiet (`parent -w "DAZ_G8F_EyeLeft"`);
catchQuiet (`parent -w "DAZ_G8F_EyeRight"`);
delete $sel[0];
}
global proc SGDAZG8MDetach (){
string $sel[]=`ls -sl`;
string $shapeA[]=`listRelatives -s $sel[0]`;
int $edgesA[] = {
50883,50885,51704,51708,52433,52435,52456,52459,52674,52678,
56450,56452,56485,56487,57038,57042,57043,57045,57085,57086,
57089,57090,57110,57122,57126,58900,58901,58931,58933,58941,
58942,58943,60178,60180,60993,61001,61707,61709,61728,61733,
61945,61949,65640,65642,65672,65674,66223,66228,66230,66231,
66268,66269,66272,66273,66294,66307,66313,68047,68048,68076,
68078,68086,68092,68093,106855,106857,106902,106904,106926,106928,
106948,106950,106972,106974,106988,106990,107011,107013,107021,107023,
107058,107065,107647,107649,107689,107691,107713,107715,107736,107738,
107759,107761,107775,107777,107802,107804,107811,107813,107844,107847};
int $edgesB[] = {
24301,24396,24400,24801,24803,24879,24881,24891,24893,24896,
24900,25415,25417,25423,25425,25429,25435,25447,25449,25453,
25457,25550,25552,25566,25568,25574,25576,25580,25582,25599,
25603,25882,25884,27162,27164,27169,27171,27989,27995,27998,
28000,28002,28003,28056,28058,28265,28356,28363,28748,28750,
28818,28820,28828,28830,28835,28841,29306,29308,29314,29316,
29320,29324,29338,29340,29342,29346,29440,29442,29458,29460,
29466,29468,29475,29477,29486,29490,29764,29766,31044,31046,
31050,31052,31818,31822,31828,31831,31832,31834,31889,31891};
select -cl;
for($e in $edgesA){
select -add ($sel[0]+".e["+$e+"]");
}
DetachComponent;
string $cuuttingA[]=`polySeparate -ch 0 $shapeA[0]`;
select -cl;
for($i=1;$i<size($cuuttingA)-5;$i++){
select -add $cuuttingA[$i];
}
polyUnite -n "DAZ_G8M_TeethA" -ch 0;
select -cl;
select -add $cuuttingA[34];
select -add $cuuttingA[36];
polyUnite -n "DAZ_G8M_EyeLeft" -ch 0;
select -cl;
select -add $cuuttingA[35];
select -add $cuuttingA[37];
polyUnite -n "DAZ_G8M_EyeRight" -ch 0;
rename $cuuttingA[0] "DAZ_G8M_HeadA";
rename $cuuttingA[33] "DAZ_G8M_Body";
string $shapeB[]=`listRelatives -s "DAZ_G8M_HeadA"`;
select -cl;
for($e in $edgesB){
select -add ("DAZ_G8M_HeadA.e["+$e+"]");
}
DetachComponent;
string $cuuttingB[]=`polySeparate -ch 0 $shapeB[0]`;
select -cl;
select -add "DAZ_G8M_TeethA";
select -add $cuuttingB[1];
polyUnite -n "DAZ_G8M_Teeth" -ch 0;
rename $cuuttingB[0] "DAZ_G8M_Head";
catchQuiet (`parent -w "DAZ_G8M_Body"`);
catchQuiet (`parent -w "DAZ_G8M_Head"`);
catchQuiet (`parent -w "DAZ_G8M_Teeth"`);
catchQuiet (`parent -w "DAZ_G8M_EyeLeft"`);
catchQuiet (`parent -w "DAZ_G8M_EyeRight"`);
delete $sel[0];
}
global proc SGDAZG9Detach (){
string $sel[]=`ls -sl`;
for($i=0; $i<size($sel); $i++){
string $shapeA[]=`listRelatives -s $sel[$i]`;
int $vertex[] = `polyEvaluate -v $shapeA[0]`;
if($vertex[0] == 2120){
string $cuuttingA[]=`polySeparate -ch 0 $shapeA[0]`;
select -cl;
select -add $cuuttingA[0];
select -add $cuuttingA[2];
polyUnite -n "DAZ_G9_EyeLeft" -ch 0;
select -cl;
select -add $cuuttingA[1];
select -add $cuuttingA[3];
polyUnite -n "DAZ_G9_EyeRight" -ch 0;
catchQuiet (`parent -w "DAZ_G9_EyeLeft"`);
catchQuiet (`parent -w "DAZ_G9_EyeRight"`);
//delete $sel[0];
}
else if($vertex[0] == 100676){
int $edgesA[] = {
168825,168827,168837,168839,168849,168851,168856,168860,168869,168873,
168909,168913,168925,168929,169041,169045,169052,169054,169058,169063,
169365,169373,169399,169401,169404,169409,169559,169561,169566,169569,
169589,169595,169676,169683,169699,169701,169956,169960,170016,170020,
175159,175167,175207,175211,175232,175234,175236,175239,175424,175426,
175430,175435,175465,175467,175473,175475,178682,178684,178686,178689,
178903,178905,179014,179016,179018,179021,180696,180698,180708,180710,
180720,180722,180727,180733,180734,180738,180774,180778,180790,180793,
180898,180902,180911,180913,180916,180919,181218,181222,181251,181253,
181258,181261,181419,181421,181424,181431,181442,181446,181530,181533,
181554,181556,181815,181823,181875,181879,186950,186954,186998,187002,
187025,187027,187032,187039,187214,187216,187220,187223,187248,187250,
187257,187259,190435,190437,190444,190449,190658,190660,190769,190771,
190776,190781};
select -cl;
for($e in $edgesA){
select -add ($sel[0]+".e["+$e+"]");
}
DetachComponent;
string $cuuttingA[]=`polySeparate -ch 0 $shapeA[0]`;
rename $cuuttingA[1] "DAZ_G9_Head";
rename $cuuttingA[0] "DAZ_G9_Body";
catchQuiet (`parent -w "DAZ_G9_Head"`);
catchQuiet (`parent -w "DAZ_G9_Body"`);
delete $sel[$i];
}
}
}
global proc SGCC3Detach (){
string $sel[]=`ls -sl`;
for($i=0; $i<size($sel); $i++){
string $shapeA[]=`listRelatives -s $sel[$i]`;
int $vertex[] = `polyEvaluate -v $shapeA[0]`;
if($vertex[0] == 2568){
string $cuuttingA[]=`polySeparate -ch 0 $shapeA[0]`;
select -cl;
select -add $cuuttingA[0];
select -add $cuuttingA[1];
polyUnite -n "CC3_EyeLeft" -ch 0;
select -cl;
select -add $cuuttingA[2];
select -add $cuuttingA[3];
polyUnite -n "CC3_EyeRight" -ch 0;
catchQuiet (`parent -w "CC3_EyeLeft"`);
catchQuiet (`parent -w "CC3_EyeRight"`);
//delete $sel[0];
}
else if($vertex[0] == 56412){
int $edgesA[] = {
34694,34698,35734,35738,35750,35752,36218,36222,36419,36425,
36757,36759,36988,36990,36996,36998,37004,37006,37018,37020,
37026,37028,37183,37185,37232,37234,40736,40738,42575,42581,
43613,43617,43622,43624,44091,44095,44280,44284,44618,44620,
44850,44852,44859,44861,44867,44869,44881,44883,44889,44891,
45032,45034,45081,45083,48507,48509,50556,50560,50562,50563,
51182,51186,51308,51310,51394,51398,51420,51423,51624,51626,
65632,65635,65666,65668,65675,65677,67329,67332,67334,67335,
67957,67965,68078,68080,68168,68170,68194,68196,68394,68396,
82406,82409,82439,82441,82444,82446};
select -cl;
for($e in $edgesA){
select -add ($sel[0]+".e["+$e+"]");
}
DetachComponent;
string $cuuttingA[]=`polySeparate -ch 0 $shapeA[0]`;
rename $cuuttingA[0] "CC3_Head";
rename $cuuttingA[3] "CC3_Body";
select -cl;
select -add $cuuttingA[4];
select -add $cuuttingA[5];
select -add $cuuttingA[6];
select -add $cuuttingA[7];
polyUnite -n "CC3_Eyelashes" -ch 0;
catchQuiet (`parent -w "CC3_Head"`);
catchQuiet (`parent -w "CC3_Body"`);
catchQuiet (`parent -w "CC3_Eyelashes"`);
catchQuiet (`parent -w $cuuttingA[1]`);
catchQuiet (`parent -w $cuuttingA[2]`);
delete $sel[$i];
}
}
}
global proc SGCC3Detach (){
string $sel[]=`ls -sl`;
for($i=0; $i<size($sel); $i++){
string $shapeA[]=`listRelatives -s $sel[$i]`;
int $vertex[] = `polyEvaluate -v $shapeA[0]`;
if($vertex[0] == 56412){
string $shapeA[]=`listRelatives -s $sel[$i]`;
string $obj = $sel[$i];
int $edgesA[] = {
34694,34698,35734,35738,35750,35752,36218,36222,36419,36425,
36757,36759,36988,36990,36996,36998,37004,37006,37018,37020,
37026,37028,37183,37185,37232,37234,40736,40738,42575,42581,
43613,43617,43622,43624,44091,44095,44280,44284,44618,44620,
44850,44852,44859,44861,44867,44869,44881,44883,44889,44891,
45032,45034,45081,45083,48507,48509,50556,50560,50562,50563,
51182,51186,51308,51310,51394,51398,51420,51423,51624,51626,
65632,65635,65666,65668,65675,65677,67329,67332,67334,67335,
67957,67965,68078,68080,68168,68170,68194,68196,68394,68396,
82406,82409,82439,82441,82444,82446};
select -cl;
for($e in $edgesA){
select -add ($sel[$i]+".e["+$e+"]");
}
DetachComponent;
string $cuuttingA[]=`polySeparate -ch 0 $shapeA[0]`;
select -cl;
for($j=0;$j<3;$j++){
select -add $cuuttingA[$j];
}
polyUnite -n "CC_Base_Head_Mesh" -ch 0;
select -cl;
for($j=4;$j<8;$j++){
select -add $cuuttingA[$j];
}
polyUnite -n "CC_Base_Eyelash_Mesh" -ch 0;
rename $cuuttingA[3] "CC_Base_Body_Mesh";
parent -w "CC_Base_Body_Mesh";
delete $obj;
}
else if($vertex[0] == 2568){
select -cl;
string $cuuttingA[]=`polySeparate -ch 0 $shapeA[0]`;
select -cl;
select -add $cuuttingA[0];
select -add $cuuttingA[1];
polyUnite -n "CC_Base_Eye_Right_Mesh" -ch 0;
select -cl;
select -add $cuuttingA[2];
select -add $cuuttingA[3];
polyUnite -n "CC_Base_Eye_Left_Mesh" -ch 0;
}
}
}