【MEL】maya相机抖动插件

昨晚抽空改了个相机抖动的插件。核心是给相机的shake节点加个noise:


代码:

//written by dango @ magic animation studio
//2018/5/4






global proc getName ()
//--------------------------------------------------------------------------------------
{
	string $camSel[] = `ls -sl` ; 
	textField -e -tx $camSel[0] camNameField ;
	//select $camSel[0];
	//lookThroughModelPanel $camSel[0] modelPanel4;
	}


//--------------------------------------------------------------------------------------	
global proc addSomeNoise ()
//--------------------------------------------------------------------------------------


{
   
 string $qCamName = `textField -q -tx camNameField`;
  float $qHV1 = `floatSliderGrp -q -v value01H`;
  float $qHV2 = `floatSliderGrp -q -v value02H`;
  //string $qHV3 = `floatField -q -v value03H`;
  float $qVV1 = `floatSliderGrp -q -v value01V`;
  float $qVV2 = `floatSliderGrp -q -v value02V`;
  
    string $qShake = `checkBox -q -v shakeEn`;
        //string $qShakeOver = `checkBox -q -v overShakeEn`;
//print ($qCamName+"_shuiping_PinLv")


 
 if(!(`objExists ($qCamName+".shuiping_PinLv")`)){addAttr -sn "shuiping_PinLv" -at "float"  -dv 0.2 -min 0.00 -max 1   $qCamName;setAttr -k on ($qCamName+".shuiping_PinLv");}
 if(!(`objExists ($qCamName+".shuzhi_PinLv")`)){addAttr -sn "shuzhi_PinLv" -at "float" -dv 0.2 -min 0.00 -max 1 $qCamName;setAttr -k on ($qCamName+".shuzhi_PinLv");}
 if(!(`objExists ($qCamName+".shuiping_FuDu")`)){addAttr -sn "shuiping_FuDu" -at "float" -min 0.00 -max 30 -dv 5 $qCamName;setAttr -k on ($qCamName+".shuiping_FuDu");}
 if(!(`objExists ($qCamName+".shuzhi_FuDu")`)){addAttr -sn "shuzhi_FuDu" -at "float" -min 0.00 -max 30 -dv 5 $qCamName;setAttr -k on ($qCamName+".shuzhi_FuDu");}
 
 if(!(`objExists ($qCamName+".kaiguan")`)){addAttr  -sn "kaiguan" -at "bool"  -dv 1 $qCamName;setAttr -k on ($qCamName+".kaiguan");}
 
 connectAttr  ($qCamName+".kaiguan") ($qCamName+".shakeEnabled");
 
 setAttr ($qCamName+".shuiping_PinLv") $qHV1;
 setAttr ($qCamName+".shuzhi_PinLv") $qVV1;
 setAttr ($qCamName+".shuiping_FuDu") $qHV2;
 setAttr ($qCamName+".shuzhi_FuDu") $qVV2;
 
 
 //float $qVV11 = `getAttr ($qCamName+".shuzhi_PinLv")`;
// float $qVV21 = `getAttr ($qCamName+".shuzhi_FuDu")`;
// float $qHV11 = `getAttr ($qCamName+".shuiping_PinLv")`;
// float $qHV21 = `getAttr ($qCamName+".shuiping_FuDu")`;
 
     if(`objExists ($qCamName+"shakeVertical")`){
  expression -e -s  ($qCamName+".verticalShake=noise(frame*"+($qCamName+".shuzhi_PinLv")+")/"+"1000*"+($qCamName+".shuzhi_FuDu"))  -o "" -ae 1 -uc all  ($qCamName+"shakeVertical") ;
  expression -e -s ($qCamName+".horizontalShake=noise((-frame)*"+ ($qCamName+".shuiping_PinLv")+")/"+"1000*"+($qCamName+".shuiping_FuDu"))  -o "" -ae 1 -uc all  ($qCamName+"shakeHorizontal") ;
   
     }
else{
  
  expression  -s  ($qCamName+".verticalShake=noise(frame*"+ ($qCamName+".shuzhi_PinLv")+")/"+"1000*"+($qCamName+".shuzhi_FuDu")) -n ($qCamName+"shakeVertical") -ae 1 -uc all ;
  expression -s ($qCamName+".horizontalShake=noise((-frame)*"+($qCamName+".shuiping_PinLv")+")/"+"1000*"+($qCamName+".shuiping_FuDu")) -n ($qCamName+"shakeHorizontal") -ae 1 -uc all ;
}
//enableShakeOver;
enableShake;
deleteUI ShakeWindow;
 }
  
//--------------------------------------------------------------------------------------	
global proc enableShake ()
//--------------------------------------------------------------------------------------


{
     string $qCamName = `textField -q -tx camNameField`;
    string $shp[] = `listRelatives -shapes $qCamName`;
    string $qShake = `checkBox -q -v shakeEn`;




   if($qShake == "1"){
      if(`objExists ($qCamName+".kaiguan")`)setAttr ($qCamName+".kaiguan") 1;
  }
else{
      if(`objExists ($qCamName+".kaiguan")`) setAttr ($qCamName+".kaiguan") 0;
    }
} 
/* 
//--------------------------------------------------------------------------------------	
global proc enableShakeOver ()
//--------------------------------------------------------------------------------------


{
     string $qCamName = `textField -q -tx camNameField`;
// string $shp[] = `listRelatives -shapes $qCamName`;
        string $qShakeOver = `checkBox -q -v overShakeEn`;




   if($qShakeOver == "1"){
      setAttr ($qCamName+".shakeOverscanEnabled") 1;
  }
else{
      setAttr ($qCamName+".shakeOverscanEnabled") 0;
    }
} 
 */


//--------------------------------------------------------------------------------------	
global proc shakeWindowProc ()
//--------------------------------------------------------------------------------------


{
	 
     if (`window -q -ex ShakeWindow`) deleteUI ShakeWindow;
    window    -title "DH_PhoenixShakeCamTool " -w 400 -h 80 ShakeWindow;
    columnLayout -cw 500 -adjustableColumn 1;
		menuBarLayout;
		menu -l "help" -pmc "authorWindow";
		setParent ..;
		separator -w 300 ;
         columnLayout -adj 1 ;
         //separator -w 400 -h 15;
            text -al "left" "获取相机名字 ";
      
      //separator -w 400 -h 15;
    			rowLayout -nc 4;// -cw4 60 60 50 50 ;
				textField  -w 110 -text "" -ed 0 camNameField ;
				button -l "<<" -bgc .3 0.5 .1 -ann "选择相机然后点击按钮" -c getName;
					
    		checkBox -l "开/关Shake" -v 1  -cc enableShake shakeEn ;


	    	//checkBox -l "Overscan" -v 1 -cc enableShakeOver overShakeEn ;
      setParent..;
          separator -w 300 -h 15;
    	text  -fn "boldLabelFont"  -bgc .1 .2 .3  -w 295 " -----    调整数值    -----" ;
    	separator -w 300 -h 15;
    	columnLayout -adj 1;
    	text -al "left" "                     频率                                                            幅度";
       rowColumnLayout -nc 3 ; 
        
        text -al "left"  "水平振动:";
	 	floatSliderGrp -pre 3  -field true  -w 200 -min 0.01 -max 1 -value 0.2 value01H;
	 	//text "" textB;
	 	floatSliderGrp -pre 3 -field true  -w 200 -min .1 -max 30 -value 5 value02H;
	 	//floatField -w 70 -en 1 -v 200 value03H;
 
    setParent..;
        rowColumnLayout  -nc 5 ;
        text -al "left" "竖直振动:";


	 	floatSliderGrp -pre 3 -field true  -w 200 -min 0.01 -max 1 -value 0.2 value01V;
	 	//text "" textA;
	 	floatSliderGrp -pre 3 -field true  -w 200 -min .1 -max 30 -value 5 value02V;
        text "  ";
    setParent..;




      columnLayout -adj 1 ;//-adj 1;
      separator -w 300 -h 15;
	button -w 295 -label "振动!" -ann ("增加振动")  -c addSomeNoise  -bgc .1 .7 .4 ;
    setParent..;
   	  //window -e -w 280 -h 70 ShakeWindow;
    showWindow ;
 }
 
global proc authorWindow(){
 confirmDialog -title "help" 
			-message "author: wangdonghao @ magic animation\n分机号:Magic--004\nwechat: 18250844478"
    		-button "ok"  
			-defaultButton "ok"
    		-cancelButton "ok" 
			-dismissString "No";
}


 shakeWindowProc;
 

猜你喜欢

转载自blog.csdn.net/u012945135/article/details/80202820