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

236 lines
6.8 KiB
Plaintext

//******************************************************************************
//
// 版权所有: 玉溪时光科技有限公司
// 联系邮箱: q.100@qq.com
// 开发日期: 2024/03/01
//
//******************************************************************************
global proc SGExportFBXWindow (){
if (!`window -ex SuperRiggingEditor`){
return;
}
if (`window -ex exportFBXWin`){
deleteUI -window exportFBXWin;
}
string $All = "All";
string $ExportHeadFBX = "Export Head LOD To FBX";
string $ExportSelectHeadFBX = "Export Select Head To FBX";
string $ExportBodyFBX = "Export Body LOD To FBX";
string $ExportSelectBodyFBX = "Export Select Body To FBX";
if(`SGDescriptor -l` == "ZH"){
$All = "全选";
$ExportHeadFBX = "导出头部LOD到FBX";
$ExportSelectHeadFBX = "导出选择的头部到FBX";
$ExportBodyFBX = "导出身体LOD到FBX";
$ExportSelectBodyFBX = "导出选择的身体到FBX";
}
window -p SuperRiggingEditor -w 310 -h 100 -t "ExportFBX" -s true -tb true exportFBXWin;
columnLayout -adj 1 -columnAttach "both" 5 -rowSpacing 2 -columnWidth 150 ;
separator -height 10 -style "in";
checkBoxGrp -vis 1 -cw4 55 55 55 55 -ncb 4 -la4 "LOD0" "LOD1" "LOD2" "LOD3" -v1 1 -v2 0 -v3 0 -v4 0 export_FBX_Check_1;
checkBoxGrp -vis 1 -cw4 55 55 55 55 -ncb 4 -la4 "LOD4" "LOD5" "LOD6" "LOD7" -v1 0 -v2 0 -v3 0 -v4 0 export_FBX_Check_2;
separator -height 10 -style "in";
rowLayout -adj 2 -nc 2 -cw2 45 20;
checkBox -cc "SGExportHeadCheckCommand" -l $All -v 0 check_Select_All_1;
button -l $ExportHeadFBX -al "center" -c "SGExportHeadCommand;" ;
setParent..;
button -l $ExportSelectHeadFBX -al "center" -c "SGExportSelectHeadCommand;" ;
separator -height 10 -style "in";
rowLayout -adj 2 -nc 2 -cw2 45 20;
checkBox -cc "SGExportBodyCheckCommand" -l $All -v 0 check_Select_All_2;
button -l $ExportBodyFBX -al "center" -c "SGExportBodyCommand;" ;
setParent..;
button -l $ExportSelectBodyFBX -al "center" -c "SGExportSelectBodyCommand;" ;
separator -height 10 -style "in";
showWindow exportFBXWin;
}
global proc SGExportFBX (string $file){
FBXResetExport;
FBXExportBakeComplexAnimation -v true;
FBXExportBakeComplexStart -v 1;
FBXExportBakeComplexStep -v 1;
FBXExportBakeComplexEnd -v 1;
FBXExportConstraints -v true;
FBXExportSkeletonDefinitions -v true;
FBXExportInputConnections -v true;
FBXExportSmoothingGroups -v true;
FBXExportSkins -v true;
FBXExportShapes -v true;
FBXExportCameras -v false;
FBXExportLights -v false;
FBXExportUpAxis "y";
FBXExport -f $file -s;
print ($file + ": Export completed...\n");
}
global proc SGExportHeadCheckCommand (){
int $v = `checkBox -q -v check_Select_All_1`;
checkBoxGrp -e -v1 $v -v2 $v -v3 $v -v4 $v export_FBX_Check_1;
checkBoxGrp -e -v1 $v -v2 $v -v3 $v -v4 $v export_FBX_Check_2;
}
global proc SGExportBodyCheckCommand (){
int $v = `checkBox -q -v check_Select_All_2`;
checkBoxGrp -e -v1 $v -v2 $v -v3 $v -v4 $v export_FBX_Check_1;
}
global proc SGExportHeadCommand (){
if(!`pluginInfo -q -l "fbxmaya"`){
loadPlugin "fbxmaya";
}
if(!`objExists "DHIhead:root"`){
error -n "Missing “DHIhead:root” joint...";
return;
}
SGRenameBlendShapes;
int $lod0 = `checkBoxGrp -q -v1 export_FBX_Check_1`;
int $lod1 = `checkBoxGrp -q -v2 export_FBX_Check_1`;
int $lod2 = `checkBoxGrp -q -v3 export_FBX_Check_1`;
int $lod3 = `checkBoxGrp -q -v4 export_FBX_Check_1`;
int $lod4 = `checkBoxGrp -q -v1 export_FBX_Check_2`;
int $lod5 = `checkBoxGrp -q -v2 export_FBX_Check_2`;
int $lod6 = `checkBoxGrp -q -v3 export_FBX_Check_2`;
int $lod7 = `checkBoxGrp -q -v4 export_FBX_Check_2`;
int $lods[] = {$lod0,$lod1,$lod2,$lod3,$lod4,$lod5,$lod6,$lod7};
for ($i=0; $i<size($lods); $i++){
if($lods[$i]){
string $exportGrp = "head_lod" + $i + "_grp";
string $groupMembers[] = `ls -dag -geometry $exportGrp`;
if(`size($groupMembers)`){
string $path = `SGDescriptor -p`;
string $name = `SGDescriptor -n`;
string $filePath = $path + "/" + $name +"_lod" + $i + "_head.fbx";
select -cl;
select -r $exportGrp;
select -add "DHIhead:root";
SGExportFBX $filePath;
}
else{
error -n ("\"" + $exportGrp + "\" No geometry found within the group...");
}
}
}
SGResetBlendShapes;
string $folderPath = `SGDescriptor -p`;
$folderPath = `substituteAllString $folderPath "/" "\\"`;
system("explorer " + $folderPath);
}
global proc SGExportSelectHeadCommand (){
if(!`pluginInfo -q -l "fbxmaya"`){
loadPlugin "fbxmaya";
}
if(!`objExists "DHIhead:root"`){
error -n "Missing “DHIhead:root” joint...";
return;
}
string $sel[] = `ls -sl`;
if(!size($sel)){
error -n "Selection is empty...";
return;
}
SGRenameBlendShapes;
select -cl;
select -r $sel;
select -add "DHIhead:root";
string $path = `SGDescriptor -p`;
string $name = `SGDescriptor -n`;
string $filePath = $path + "/" + $name +"_lod" + "_head.fbx";
SGExportFBX $filePath;
SGResetBlendShapes;
string $folderPath = `SGDescriptor -p`;
$folderPath = `substituteAllString $folderPath "/" "\\"`;
system("explorer " + $folderPath);
}
global proc SGExportBodyCommand (){
if(!`pluginInfo -q -l "fbxmaya"`){
loadPlugin "fbxmaya";
}
if(!`objExists "DHIbody:root"`){
error -n "Missing “DHIbody:root” joint...";
return;
}
int $lod0 = `checkBoxGrp -q -v1 export_FBX_Check_1`;
int $lod1 = `checkBoxGrp -q -v2 export_FBX_Check_1`;
int $lod2 = `checkBoxGrp -q -v3 export_FBX_Check_1`;
int $lod3 = `checkBoxGrp -q -v4 export_FBX_Check_1`;
int $lods[] = {$lod0,$lod1,$lod2,$lod3};
for ($i=0; $i<size($lods); $i++){
if($lods[$i]){
string $exportGrp = "body_lod" + $i + "_grp";
string $groupMembers[] = `ls -dag -geometry $exportGrp`;
if(`size($groupMembers)`){
string $path = `SGDescriptor -p`;
string $name = `SGDescriptor -n`;
string $filePath = $path + "/" + $name +"_lod" + $i + "_body.fbx";
select -cl;
select -r $exportGrp;
select -add "DHIbody:root";
SGExportFBX $filePath;
}
else{
error -n ("\"" + $exportGrp + "\" No geometry found within the group...");
}
}
}
string $folderPath = `SGDescriptor -p`;
$folderPath = `substituteAllString $folderPath "/" "\\"`;
system("explorer " + $folderPath);
}
global proc SGExportSelectBodyCommand (){
if(!`pluginInfo -q -l "fbxmaya"`){
loadPlugin "fbxmaya";
}
if(!`objExists "DHIbody:root"`){
error -n "Missing “DHIbody:root” joint...";
return;
}
string $sel[] = `ls -sl`;
if(!size($sel)){
error -n "Selection is empty...";
return;
}
select -cl;
select -r $sel;
select -add "DHIbody:root";
string $path = `SGDescriptor -p`;
string $name = `SGDescriptor -n`;
string $filePath = $path + "/" + $name +"_lod" + "_body.fbx";
SGExportFBX $filePath;
string $folderPath = `SGDescriptor -p`;
$folderPath = `substituteAllString $folderPath "/" "\\"`;
system("explorer " + $folderPath);
}