//
//?
//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;
?}
}