多米诺骨牌v.1MEL语言

//
// 
//Script Name:多米诺骨牌v.1
//Author:疯狂小猪 
//Last Updated: 2011.10.5
//Email:wzybwj@163.com
// 
//----------------------------------------------------------------------------
//----------------------------------------------------------------------------

global proc createDmn()
{
 if (`window -ex dmn`)
            deleteUI dmn;

     window
            -t "多米诺骨牌v.1" 
            -w 400 -h 300
            -menuBar true
            -menuBarVisible true
            dmn;
     menu
            -label "edit"
            -tearOff 0;
       menuItem
              -label "默认设置" -c "err";
       menuItem
              -label "退出"
              -c "deleteUI dmn";
     menu
           -label "help"
           -tearOff 0;
     
     
     columnLayout
                -cw 300   
                -adj true   
                -rowSpacing 5 ;
       button  
                -h 30
                -l "拾取曲线"
                -al "center"
                -c "loadCurve"
                selectLabel;
       textFieldGrp
               
                 -l  "曲线选择"
                 loadCurve;
                      
     columnLayout   
                -adj true
                -cal "left"       
                -rowSpacing 5 ;
       separator
                -style "in";
       text  
            -fn boldLabelFont
              -al "left"
              -l "创建设置:";
       intSliderGrp
                -field true
                -l"骨牌间隔"   
                -minValue 1 -maxValue 100.0
                -fieldMinValue 1 -fieldMaxValue 100
                -value 10 jiange;
       intSliderGrp
                -field true
                -l"距离长度"   
                -minValue 400 -maxValue 1000
                -fieldMinValue 400 -fieldMaxValue 1000
                -value 400 changdu;
       floatSliderGrp
                -field true
                -l"骨牌宽度"   
                -minValue 0 -maxValue 10
                -fieldMinValue 0 -fieldMaxValue 10
                -value 1.25 x;
       floatSliderGrp
                -field true
                -l"骨牌高度"   
                -minValue 0 -maxValue 10
                -fieldMinValue 0 -fieldMaxValue 10
                -value 3 y;
       floatSliderGrp
                -field true
                -l"骨牌厚度"   
                -minValue 0 -maxValue 10
                -fieldMinValue 0 -fieldMaxValue 10
                -value 0.3 z;
       separator
                -height 5
                -style "in";
       text  
              -fn boldLabelFont
              -al "left"
              -l "速度设置:";
      
       intSliderGrp
                -field true
                -l"单体倒塌速度"   
                -minValue 1 -maxValue 100.0
                -fieldMinValue 1 -fieldMaxValue 100
                -value 20 dtsudu;
       intSliderGrp
                -field true
                -l"全局倒塌速度"   
                -minValue 1 -maxValue 50
                -fieldMinValue 1 -fieldMaxValue 50
                -value 15 qjsudu;
       intSliderGrp
                -field true
                -l"倒塌角度极限"   
                -minValue 50 -maxValue 90
                -fieldMinValue 50 -fieldMaxValue 90
                -value 84 singleRot;
     columnLayout
                -adj 1     
                -cal "left"
                -cat "both" 5
                -columnWidth 68
                -rowSpacing 5;


       button  
                -h 30
                -l"创建骨牌"
                -al "center"
                -c "createDmn";
       button
                -h 30
                -l"删除骨牌"
                -al "center"
                 -c "deleteGp ";
       button
                -h 30
                -l"删除曲线"
                -al "center"
                -c "deleteCurve";
       button
                -h 30
                -l"创建动画"
                -c "addMotion"
                -al "center";
       button
                -h 30
                -l"删除动画"
                -c "deleteMotion"
                -al "center";
    
     setParent..;
     showWindow dmn;
}

global proc dmn()
{   
     $curveName = `textFieldGrp -q -tx loadCurve`;

     $mp = `intSliderGrp
                            -q -v changdu`;
     $jiange = `intSliderGrp
                            -q -v jiange`;
     $x = `floatSliderGrp
                            -q -v x`;
     $y = `floatSliderGrp
                            -q -v y`;
     $z = `floatSliderGrp
                            -q -v z`;
            polyCube
                   -ch on
                   -o on
                   -w $x
                   -h $y
                   -d $z
                   -cuv 4
                   -n gp1;
            move 
                   -r 0 ($y/2*-1) 0 gp1.scalePivot gp1.rotatePivot ;
            setAttr "gp1.translateY" ($y/2*-1);
            group
                   -name "gp";
            xform
                   -os
                   -piv 0 0 0;
            select
                   -cl  ;

            select
                   -r gp1  $curveName ;
            pathAnimation
                         -fractionMode true
                         -follow true
                         -followAxis z
                         -upAxis y
                         -worldUpType "vector"
                         -worldUpVector 0 1 0
                         -inverseUp false
                         -inverseFront false
                         -bank false
                         -startTimeU 1
                         -endTimeU                         
                         $mp;

                 for($ee=$jiange;$ee<=$mp;$ee+=$jiange)
                    {
                      currentTime $ee;
                      select
                            -r gp1 ;
                      duplicate
                            -rr;
                     }
             currentTime 1;
             cycleCheck -e 0;
             delete motionPath1;
}

 

 

global proc createDmn()
{    
    

     if(`objExists curve1`)
       {
            if(`objExists gp`)
              {
               delete gp;
               dmn;
               }
           else
               {
               dmn;        
                }          
         }
     else
         {
          confirmDialog
                       -message "你必须创建一条曲线!"
                       -button "确定";
                      
          }
  
}

 

 

global proc deleteCurve()
{
           select -cl;
           SelectAllNURBSCurves;
           $selection = `ls -sl`;
                  if(`size($selection)` == 0)
                        confirmDialog
                                     -message "场景中没有可删除曲线"
                                     -button "确定";
                  else
                      delete;
}

 

global proc deleteGp()
{
           if(`objExists gp`)
               delete gp;
           else
               confirmDialog
                            -message "场景中没有可删除的骨牌模型!"
                            -button "确定";
}

 

global proc loadCurve()
{
           $select = `ls -sl`;
            if(`size($select)` == 0)
             {
                             confirmDialog
                                           -message "你什么都没有选择"
                                           -button "确定";
             }
            else
            {
                 $selectShap = `listRelatives -f $select[0]` ;
                
                 if(`nodeType $selectShap` != "nurbsCurve")  
                   {
                             confirmDialog
                                           -button "确定"
                                           -message "你选择的不是曲线物体";
                    }
                 else
                    {
                     textFieldGrp -e -tx $selectShap loadCurve;
                     }
            }
           
}

global proc addMotion()
{
if(`objExists dmnMotion`)
    {
     delete dmnMotion;
      }
expression -s "select -cl;\r\nselect \"gp*\";\r\n$select = `ls -sl`;\r\n$num = (`size($select)` -1 )/2;\r\nint $singleSpeed = `intSliderGrp -q -v dtsudu`;\r\nint $globalSpeed = `intSliderGrp -q -v qjsudu`;\r\nint $finalRot = `intSliderGrp -q -v singleRot`;\r\n\r\n\r\n\r\nfor($i=1;$i<=$num;$i++)\r\n{\r\n string $attr=\"gp\"+$i+\".rx\";\r\n $rot=linstep(0+$i*$globalSpeed,$singleSpeed+$i*$globalSpeed,frame)*$finalRot;\r\n setAttr $attr $rot;\r\n}"  -o "" -n "dmnMotion" -ae 1 -uc all ;
}


global proc deleteMotion()
{
if(`objExists dmnMotion`)
{
      currentTime 1;
      delete dmnMotion;
 }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值