maya删除没用的节点

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

maya删除没用的节点
/////////////////////////////////////////////////////////////////// ////////////////////////////////
/////////////////////////////////////////////////////////////////// ////////////////////////////////
// SCRIPT: jrLightLinksCleanUp.mel
// Edited James Roy
// JamesRoy@/doc/3b6737329.html, //
// DESCRIPTION: This handy script removes all the redundant lightlinks in the current scene.
//
// MAIN PROC: jrLightLinksCleanUp()
/////////////////////////////////////////////////////////////////// ////////////////////////////////
/////////////////////////////////////////////////////////////////// ////////////////////////////////
global proc jrLightLinksCleanUp()
{
{
int $i=0;
for($i=0; $i < 20; $i++)
{
string $errorObj[] = `ls -type "unknown"`;
for($obj in $errorObj)
catch( `delete $obj` );
}
}
//`timerX`用来计算共用了多少时间。

//申明一个浮点变量$startTime,申明一个浮点变量$elaspedTime,申明整数变量$min,申明整数变量$sec。

float $startTime = `timerX`;
float $elaspedTime;
int $min;
int $sec;
//申明字符串变量$lightLinker的同时,将场景中类型为lightLinker的节点名称存入字符串变量$lightLinker中。

string $lightLinker[] = `ls -typ lightLinker`;
//申明一个整数变量$numOfLinker,并将lightLinker节点的的数量存入整数变量$numOfLinker中。

int $numOfLinker = size($lightLinker);
//申明一个整数变量$numOfbadLinks,在执行程序时将坏的lightLinker存入其中。

int $numOfbadLinks = 0;
//申明一个整数变量$numOfAllLinks,在执行程序时将最终所有的lightLinker存入其中。

int $numOfAllLinks = 0;
//申明字符串变量$linkedPair。

string $linkedPair[] = {};
//换行打印"jrLightLinksCleanUp:",然后再换行打印"-------------------------------"。

print "\njrLightLinksCleanUp:\n";
print "-------------------------------\n";
//对于字符串变量$lightLinker中的每一个成员,都执行
//11111111111111111111111111111111111111111111111 1111111111111111111111111111111111111111111111111111 11111111111111111111111111111
for ($i=0; $i
{
//跳出一个进程表来显示进度。

progressWindow -title ("Checking '" + $lightLinker[$i] + "' (" + ($i+1) + "/" + $numOfLinker + ") ...")
-isInterruptable 1 -status ("查询LightLink中, 请等待... ");
//如果该窗口被用户点了放弃按钮,那么打断这次的操作,循环结束。

if ( `progressWindow -query -isCancelled` ) break;
//申明字符串变量$connections,将与每个lightLinker的连接列出存入字符串变量$connections中。

string $connections[] = `listConnections -connections 1 -plugs 1 -destination 0 -source 1 $lightLinker[$i]`;
//申明字符串变量$tmpPair。

string $tmpPair = "";
//申明整数变量$numOfcons,将获得的所有与lightLinker有关联
的节点数量存入变量$numOfcons。

int $numOfcons = size($connections);
//如果有相关的连接存在,例如:lightLinker1.link[0].light defaultLightSet.message
// lightLinker1.link[0].object initialShadingGroup.message
// lightLinker1.link[1].light defaultLightSet.message
// lightLinker1.link[1].object initialParticleSE.message
// lightLinker1.link[2].light defaultLightSet.message
// lightLinker1.link[2].object lambert2SG.message
////////////////////////////////////独立的独立的独立的独立的独立的独立的独立的独立的独立的独立的独立的独立的独立的独立的if (!$numOfcons)
{
//如果没有找到相应的灯光连接,那么中断窗口过程,跳出当前的这个循环操作,继续执行循环后的代码
print ("- Cleaning Up '" + $lightLinker[$i] + "': 没有多余的灯光连接被找到!\n");
progressWindow -endProgress ;
continue;
}
else
{
//有相关的连接存在,例如:lightLinker1.link[0].light defaultLightSet.message
// lightLinker1.link[0].object initialShadingGroup.message
// lightLinker1.link[1].light defaultLightSet.message
// lightLinker1.link[1].object initialParticleSE.message
// lightLinker1.link[2].light defaultLightSet.message
// lightLinker1.link[2].object lambert2SG.message
//那么执行打印,告诉用户总共有多少个连接在清理
print ("- Cleaning Up '" + $lightLinker[$i] + "', All " + ($numOfcons/2) + " Connections\n");
}
////////////////////////////////////独立的独立的独立的独立的独立的独立的独立的独立的独立的独立的独立的独立的独立的独立的//申明整数变量$progress。

//申明整数变量$percentage。

int $progress = 0;
int $percentage = 0;
//执行窗口进程程序,是否结束根据变量$numOfcons的大小
progressWindow -edit -title ("'" + $lightLinker[$i] + "' (" + ($i+1) + "/" + $numOfLinker + ")" + ", " + ($numOfcons/2) + " Connections...") -progress $progress -isInterruptable 1 -min 0 -max $numOfcons;
//申明整数变量$j。

int $j = 0;
//当整数变量$j小于整数变量$numOfcons时,检查到对话框被按了放弃,那么打断所有的程序进程。

//22222222222222222222222222222222222222222222222 2222222222222222222222222222222222222222222222222222 22222222222222222222
while ($j<$numOfcons)
{
if ( `progressWindow -query -isC
ancelled` )
{
warning "用户放弃了!\n";
break;
}
//整数变量$numOfAllLinks的数值自增加
$numOfAllLinks ++;
//将整数变量$j的值赋予整数变量$progress
$progress = $j;
//整数变量$percentage的值等于整数变量$progress的值乘于100再除以整数变量$numOfcons的值
$percentage = $progress * 100 / $numOfcons;
//执行窗口进程程序
progressWindow -edit -progress $progress -status (" 处理LightLinks (" + $percentage + "%) ... ");
//申明字符串变量$LinkIgnoreLit,看是否匹配变量$connections中物体名称,例如link[0],存入字符串变量$LinkIgnoreLit
//申明字符串变量$LinkIgnoreObj,看是否匹配变量$connections中物体名称,例如link[0],存入字符串变量$LinkIgnoreLit
string $LinkIgnoreLit = match("(link){0,1}(ignore){0,1}\\[[0-9]+\\]", $connections[$j]);
string $LinkIgnoreObj = match("(link){0,1}(ignore){0,1}\\[[0-9]+\\]", $connections[$j+2]);
//如果变量$LinkIgnoreLit和变量$LinkIgnoreObj的名称完全相同,那么执行下面的代码
/////////////////////////////////3333333333333333333333333 3333333333333333333333333333333333333333
if ($LinkIgnoreLit == $LinkIgnoreObj)
{
//申明字符串变量$tmpPair,将与lightLinker所连接的节点名称存入变量$tmpPair中
$tmpPair = $connections[$j+1] + ":" + $connections[$j+3];
//如果变量$tmpPair中的名字和变量$linkedPair中的名字有相同的那么执行
/////////////////////////////////4444444444444444444444444 44444444444444444444
if (stringArrayCount($tmpPair, $linkedPair))
{
//断开lightLinker[$j+1]与lightLinker[$j]之间的属性连接
//断开lightLinker[$j+3]与lightLinker[$j+2]之间的属性连接
disconnectAttr $connections[$j+1] $connections[$j];
disconnectAttr $connections[$j+3] $connections[$j+2];
//整数变量$numOfbadLinks自增加(用来记数的)
$numOfbadLinks ++;
}
else
{
//没有匹配的名字那么将名字载入字符串变量$linkedPair中
$linkedPair[size($linkedPair)] = $connections[$j+1] + ":" + $connections[$j+3];
}
/////////////////////////////////4444444444444444444444444 44444444444444444444
//整数变量$j加4
$j += 4;
// print $j;
}
else
{
//如果变量$LinkIgnoreLit和变量$LinkIgnoreObj的名称不相同,那么执行下面的代码
//断开lightLinker[$
j+1]与lightLinker[$j]之间的属性连接
//整数变量$numOfbadLinks自增加(用来记数的)
//整数变量$j加2
disconnectAttr $connections[$j+1] $connections[$j];
$numOfbadLinks ++;
$j += 2;
}
/////////////////////////////////3333333333333333333333333 333333333333333333333333333333333333333333
}
//22222222222222222222222222222222222222222222222
2222222222222222222222222222222222222222222222222222 22222222222222222222
//程序窗口结束
progressWindow -endProgress;
}
//11111111111111111111111111111111111111111111111 1111111111111111111111111111111111111111111111111111 11111111111111111111111111111
$elaspedTime = `timerX -startTime $startTime`;
$min = $elaspedTime/60;
$sec = $elaspedTime%60;
print "\njrLightLinksCleanUp摘要:\n";
print "-------------------------------\n";
print ("- 删除了总共 " + $numOfbadLinks + " 个多余无用的连接 " + $numOfAllLinks + " 灯光连接. (共耗时: " + $min + " 分钟, " + $sec + " 秒)\n");
}
jrLightLinksCleanUp;
// end of script
/*
$object=`pickWalk -d down`;
$n=$object[0]+".message";
$sels=`listConnections -s 1 -p 1 $n`;
for ($sel in $sels)
{
disconnectAttr $n $sel;
}
string $xt_dos[] = `listConnections -s 1 -p 1 defaultObjectSet.message`;
for ( $invalue in $xt_dos )
{
disconnectAttr defaultObjectSet.message $invalue;
}
string $xt_dls[] = `listConnections -s 1 -p 1 defaultLightSet.message`;
for ( $invalue in $xt_dls )
{
disconnectAttr defaultLightSet.message $invalue;
}
string $xt_isg[] = `listConnections -s 1 -p 1 initialShadingGroup.message`;
for ( $invalue in $xt_isg )
{
if($invalue != "initialMaterialInfo.shadingGroup")
{
disconnectAttr initialShadingGroup.message $invalue;
}
}
string $xt_ipse[] = `listConnections -s 1 -p 1 initialParticleSE.message`;
for ( $invalue in $xt_ipse )
{
disconnectAttr initialParticleSE.message $invalue; }
*/
{
int $i=0;
for($i=0; $i < 20; $i++)
{
string $errorObj[] = `ls -type "unknown"`;
for($obj in $errorObj)
delete $obj;
}
}。

相关文档
最新文档