Bucket
09-03-2006, 08:03 AM
So this is my first script and it was fun to make but completely fruitless. Is there a way to maintain it's current interactivity and actually make the undo button useful? Basically it is a hand poser.
The script is based on object names so to better understand what it does you might want to download the cheezy hand model I made to test the script.
////Ben's Hand utility Use at your Own Risk
global proc HandPoser ()
{
if (`window -q -ex handPoserWindow`) deleteUI handPoserWindow;
//Main Window
window -title "Ben's Hand Poser Utility" -w 300 -h 200 handPoserWindow;
scrollLayout -hst 0;
columnLayout handPoserLayout;
//handposer Layout
frameLayout -w 500 -h 330 -borderStyle etchedOut -collapsable true -label "Finger Curling Sliders:" poser1;
frameLayout -e -cl true poser1;
//Button Layouts
rowColumnLayout -nc 3 -cw 1 60 -cw 2 245 -cw 3 60;
text "Index ";
floatSliderGrp -field true
-minValue -10 -maxValue 80
-fieldMinValue -100 -fieldMaxValue 100
-value 0
-dc myposeIndex
mySliderA;
button -label "KeyJoints" -c "slumpA";
text "Middle ";
floatSliderGrp -field true
-minValue -10 -maxValue 80
-fieldMinValue -100 -fieldMaxValue 100
-value 0
-dc myposeMiddle
mySliderB;
button -label "KeyJoints" -c "slumpB";
text "Ring ";
floatSliderGrp -field true
-minValue -10 -maxValue 80
-fieldMinValue -100 -fieldMaxValue 100
-value 0
-dc myposeRing
mySliderC;
button -label "KeyJoints" -c "slumpC";
text "Pinky ";
floatSliderGrp -field true
-minValue -10 -maxValue 80
-fieldMinValue -100 -fieldMaxValue 100
-value 0
-dc myposePinky
mySliderD;
button -label "KeyJoints" -c "slumpD";
text "Thumb ";
floatSliderGrp -field true
-minValue -10 -maxValue 80
-fieldMinValue -100 -fieldMaxValue 100
-value 0
-dc myposeThumb
mySliderF;
button -label "KeyJoints" -c "slumpF";
setParent..;
setParent..;
frameLayout -w 500 -h 330 -borderStyle etchedOut -collapsable true -label "Joint Poses:" poser2;
frameLayout -e -cl true poser2;
//Button Layouts
rowColumnLayout -nc 3 -cw 1 100 -cw 2 100 -cw 3 100;
button -label "Open" -c "crumpA";
button -label "Spread" -c "crumpB";
button -label "Merge" -c "crumpC";
button -label "Fist" -c "crumpD";
button -label "Point" -c "crumpE";
button -label "Obscene" -c "crumpF";
button -label "Pick" -c "crumpG";
setParent..;
setParent..;
//Show Main Window Command
showWindow handPoserWindow;
}
HandPoser;
/////////////////////Procedures
proc About () {
confirmDialog -button "ok" -defaultButton "ok" -message "Ben was here" -title "About the author";
}
////////////Fix this stuff
proc myposeIndex ()
{
float $value = `floatSliderGrp -q -v mySliderA`;
setAttr "index.rotateX" $value;
setAttr "indexMid.rotateX" $value;
setAttr "indexEnd.rotateX" $value;
}
proc myposeMiddle ()
{
float $value = `floatSliderGrp -q -v mySliderB`;
setAttr "middle.rotateX" $value;
setAttr "middleMid.rotateX" $value;
setAttr "middleEnd.rotateX" $value;
}
proc myposeRing ()
{
float $value = `floatSliderGrp -q -v mySliderC`;
setAttr "ring.rotateX" $value;
setAttr "ringMid.rotateX" $value;
setAttr "ringEnd.rotateX" $value;
}
proc myposePinky ()
{
float $value = `floatSliderGrp -q -v mySliderD`;
setAttr "pinky.rotateX" $value;
setAttr "pinkyMid.rotateX" $value;
setAttr "pinkyEnd.rotateX" $value;
}
proc myposeThumb ()
{
float $value = `floatSliderGrp -q -v mySliderF`;
setAttr "thumb.rotateX" $value;
setAttr "thumbMid.rotateX" $value;
setAttr "thumbEnd.rotateX" $value;
}
////Button procedures
proc slumpA ()
{
setKeyframe "indexEnd.rx";
setKeyframe "index.rx";
setKeyframe "indexMid.rx";
setKeyframe "indexEnd.ry";
setKeyframe "index.ry";
setKeyframe "indexMid.ry";
setKeyframe "indexEnd.rz";
setKeyframe "index.rz";
setKeyframe "indexMid.rz";
}
proc slumpB ()
{
setKeyframe "middleEnd.rx";
setKeyframe "middle.rx";
setKeyframe "middleMid.rx";
setKeyframe "middleEnd.ry";
setKeyframe "middle.ry";
setKeyframe "middleMid.ry";
setKeyframe "middleEnd.rz";
setKeyframe "middle.rz";
setKeyframe "middleMid.rz";
}
proc slumpC ()
{
setKeyframe "ringEnd.rx";
setKeyframe "ring.rx";
setKeyframe "ringMid.rx";
setKeyframe "ringEnd.ry";
setKeyframe "ring.ry";
setKeyframe "ringMid.ry";
setKeyframe "ringEnd.rz";
setKeyframe "ring.rz";
setKeyframe "ringMid.rz";
}
proc slumpD ()
{
setKeyframe "pinkyEnd.rx";
setKeyframe "pinky.rx";
setKeyframe "pinkyMid.rx";
setKeyframe "pinkyEnd.ry";
setKeyframe "pinky.ry";
setKeyframe "pinkyMid.ry";
setKeyframe "pinkyEnd.rz";
setKeyframe "pinky.rz";
setKeyframe "pinkyMid.rz";
}
proc slumpF ()
{
setKeyframe "thumbEnd.rx";
setKeyframe "thumb.rx";
setKeyframe "thumbMid.rx";
setKeyframe "thumbEnd.ry";
setKeyframe "thumb.ry";
setKeyframe "thumbMid.ry";
setKeyframe "thumbEnd.rz";
setKeyframe "thumb.rz";
setKeyframe "thumbMid.rz";
}
//////////////Curling Finger Procedures
proc crumpA () {
select -r index;
setAttr "index.rotateX" 0;
setAttr "indexMid.rotateX" 0;
setAttr "indexEnd.rotateX" 0;
select -r middle;
setAttr "middle.rotateX" 0;
setAttr "middleMid.rotateX" 0;
setAttr "middleEnd.rotateX" 0;
select -r ring;
setAttr "ring.rotateX" 0;
setAttr "ringMid.rotateX" 0;
setAttr "ringEnd.rotateX" 0;
select -r pinky;
setAttr "pinky.rotateX" 0;
setAttr "pinkyMid.rotateX" 0;
setAttr "pinkyEnd.rotateX" 0;
select -r thumb;
setAttr "thumb.rotateX" 0;
setAttr "thumbMid.rotateX" 0;
setAttr "thumbEnd.rotateX" 0;
}
proc crumpD () {
select -r index;
setAttr "index.rotateX" 62;
setAttr "indexMid.rotateX" 62;
setAttr "indexEnd.rotateX" 62;
select -r middle;
setAttr "middle.rotateX" 62;
setAttr "middleMid.rotateX" 62;
setAttr "middleEnd.rotateX" 62;
select -r ring;
setAttr "ring.rotateX" 62;
setAttr "ringMid.rotateX" 62;
setAttr "ringEnd.rotateX" 62;
select -r pinky;
setAttr "pinky.rotateX" 62;
setAttr "pinkyMid.rotateX" 62;
setAttr "pinkyEnd.rotateX" 62;
select -r thumb;
setAttr "thumb.rotateX" 62;
setAttr "thumbMid.rotateX" 62;
setAttr "thumbEnd.rotateX" 62;
}
proc crumpE () {
select -r index;
setAttr "index.rotateX" 0;
setAttr "indexMid.rotateX" 0;
setAttr "indexEnd.rotateX" 0;
select -r middle;
setAttr "middle.rotateX" 62;
setAttr "middleMid.rotateX" 62;
setAttr "middleEnd.rotateX" 62;
select -r ring;
setAttr "ring.rotateX" 62;
setAttr "ringMid.rotateX" 62;
setAttr "ringEnd.rotateX" 62;
select -r pinky;
setAttr "pinky.rotateX" 62;
setAttr "pinkyMid.rotateX" 62;
setAttr "pinkyEnd.rotateX" 62;
select -r thumb;
setAttr "thumb.rotateX" 62;
setAttr "thumbMid.rotateX" 62;
setAttr "thumbEnd.rotateX" 62;
}
proc crumpG () {
select -r index;
setAttr "index.rotateX" 62;
setAttr "indexMid.rotateX" 62;
setAttr "indexEnd.rotateX" 62;
select -r middle;
setAttr "middle.rotateX" 62;
setAttr "middleMid.rotateX" 62;
setAttr "middleEnd.rotateX" 62;
select -r ring;
setAttr "ring.rotateX" 62;
setAttr "ringMid.rotateX" 62;
setAttr "ringEnd.rotateX" 62;
select -r pinky;
setAttr "pinky.rotateX" 0;
setAttr "pinkyMid.rotateX" 0;
setAttr "pinkyEnd.rotateX" 0;
select -r thumb;
setAttr "thumb.rotateX" 62;
setAttr "thumbMid.rotateX" 62;
setAttr "thumbEnd.rotateX" 62;
}
proc crumpF () {
setAttr "index.rotateX" 62;
setAttr "indexMid.rotateX" 62;
setAttr "indexEnd.rotateX" 62;
select -r middle;
setAttr "middle.rotateX" 0;
setAttr "middleMid.rotateX" 0;
setAttr "middleEnd.rotateX" 0;
select -r ring;
setAttr "ring.rotateX" 62;
setAttr "ringMid.rotateX" 62;
setAttr "ringEnd.rotateX" 62;
select -r pinky;
setAttr "pinky.rotateX" 62;
setAttr "pinkyMid.rotateX" 62;
setAttr "pinkyEnd.rotateX" 62;
select -r thumb;
setAttr "thumb.rotateX" 62;
setAttr "thumbMid.rotateX" 62;
setAttr "thumbEnd.rotateX" 62;
}
The script is based on object names so to better understand what it does you might want to download the cheezy hand model I made to test the script.
////Ben's Hand utility Use at your Own Risk
global proc HandPoser ()
{
if (`window -q -ex handPoserWindow`) deleteUI handPoserWindow;
//Main Window
window -title "Ben's Hand Poser Utility" -w 300 -h 200 handPoserWindow;
scrollLayout -hst 0;
columnLayout handPoserLayout;
//handposer Layout
frameLayout -w 500 -h 330 -borderStyle etchedOut -collapsable true -label "Finger Curling Sliders:" poser1;
frameLayout -e -cl true poser1;
//Button Layouts
rowColumnLayout -nc 3 -cw 1 60 -cw 2 245 -cw 3 60;
text "Index ";
floatSliderGrp -field true
-minValue -10 -maxValue 80
-fieldMinValue -100 -fieldMaxValue 100
-value 0
-dc myposeIndex
mySliderA;
button -label "KeyJoints" -c "slumpA";
text "Middle ";
floatSliderGrp -field true
-minValue -10 -maxValue 80
-fieldMinValue -100 -fieldMaxValue 100
-value 0
-dc myposeMiddle
mySliderB;
button -label "KeyJoints" -c "slumpB";
text "Ring ";
floatSliderGrp -field true
-minValue -10 -maxValue 80
-fieldMinValue -100 -fieldMaxValue 100
-value 0
-dc myposeRing
mySliderC;
button -label "KeyJoints" -c "slumpC";
text "Pinky ";
floatSliderGrp -field true
-minValue -10 -maxValue 80
-fieldMinValue -100 -fieldMaxValue 100
-value 0
-dc myposePinky
mySliderD;
button -label "KeyJoints" -c "slumpD";
text "Thumb ";
floatSliderGrp -field true
-minValue -10 -maxValue 80
-fieldMinValue -100 -fieldMaxValue 100
-value 0
-dc myposeThumb
mySliderF;
button -label "KeyJoints" -c "slumpF";
setParent..;
setParent..;
frameLayout -w 500 -h 330 -borderStyle etchedOut -collapsable true -label "Joint Poses:" poser2;
frameLayout -e -cl true poser2;
//Button Layouts
rowColumnLayout -nc 3 -cw 1 100 -cw 2 100 -cw 3 100;
button -label "Open" -c "crumpA";
button -label "Spread" -c "crumpB";
button -label "Merge" -c "crumpC";
button -label "Fist" -c "crumpD";
button -label "Point" -c "crumpE";
button -label "Obscene" -c "crumpF";
button -label "Pick" -c "crumpG";
setParent..;
setParent..;
//Show Main Window Command
showWindow handPoserWindow;
}
HandPoser;
/////////////////////Procedures
proc About () {
confirmDialog -button "ok" -defaultButton "ok" -message "Ben was here" -title "About the author";
}
////////////Fix this stuff
proc myposeIndex ()
{
float $value = `floatSliderGrp -q -v mySliderA`;
setAttr "index.rotateX" $value;
setAttr "indexMid.rotateX" $value;
setAttr "indexEnd.rotateX" $value;
}
proc myposeMiddle ()
{
float $value = `floatSliderGrp -q -v mySliderB`;
setAttr "middle.rotateX" $value;
setAttr "middleMid.rotateX" $value;
setAttr "middleEnd.rotateX" $value;
}
proc myposeRing ()
{
float $value = `floatSliderGrp -q -v mySliderC`;
setAttr "ring.rotateX" $value;
setAttr "ringMid.rotateX" $value;
setAttr "ringEnd.rotateX" $value;
}
proc myposePinky ()
{
float $value = `floatSliderGrp -q -v mySliderD`;
setAttr "pinky.rotateX" $value;
setAttr "pinkyMid.rotateX" $value;
setAttr "pinkyEnd.rotateX" $value;
}
proc myposeThumb ()
{
float $value = `floatSliderGrp -q -v mySliderF`;
setAttr "thumb.rotateX" $value;
setAttr "thumbMid.rotateX" $value;
setAttr "thumbEnd.rotateX" $value;
}
////Button procedures
proc slumpA ()
{
setKeyframe "indexEnd.rx";
setKeyframe "index.rx";
setKeyframe "indexMid.rx";
setKeyframe "indexEnd.ry";
setKeyframe "index.ry";
setKeyframe "indexMid.ry";
setKeyframe "indexEnd.rz";
setKeyframe "index.rz";
setKeyframe "indexMid.rz";
}
proc slumpB ()
{
setKeyframe "middleEnd.rx";
setKeyframe "middle.rx";
setKeyframe "middleMid.rx";
setKeyframe "middleEnd.ry";
setKeyframe "middle.ry";
setKeyframe "middleMid.ry";
setKeyframe "middleEnd.rz";
setKeyframe "middle.rz";
setKeyframe "middleMid.rz";
}
proc slumpC ()
{
setKeyframe "ringEnd.rx";
setKeyframe "ring.rx";
setKeyframe "ringMid.rx";
setKeyframe "ringEnd.ry";
setKeyframe "ring.ry";
setKeyframe "ringMid.ry";
setKeyframe "ringEnd.rz";
setKeyframe "ring.rz";
setKeyframe "ringMid.rz";
}
proc slumpD ()
{
setKeyframe "pinkyEnd.rx";
setKeyframe "pinky.rx";
setKeyframe "pinkyMid.rx";
setKeyframe "pinkyEnd.ry";
setKeyframe "pinky.ry";
setKeyframe "pinkyMid.ry";
setKeyframe "pinkyEnd.rz";
setKeyframe "pinky.rz";
setKeyframe "pinkyMid.rz";
}
proc slumpF ()
{
setKeyframe "thumbEnd.rx";
setKeyframe "thumb.rx";
setKeyframe "thumbMid.rx";
setKeyframe "thumbEnd.ry";
setKeyframe "thumb.ry";
setKeyframe "thumbMid.ry";
setKeyframe "thumbEnd.rz";
setKeyframe "thumb.rz";
setKeyframe "thumbMid.rz";
}
//////////////Curling Finger Procedures
proc crumpA () {
select -r index;
setAttr "index.rotateX" 0;
setAttr "indexMid.rotateX" 0;
setAttr "indexEnd.rotateX" 0;
select -r middle;
setAttr "middle.rotateX" 0;
setAttr "middleMid.rotateX" 0;
setAttr "middleEnd.rotateX" 0;
select -r ring;
setAttr "ring.rotateX" 0;
setAttr "ringMid.rotateX" 0;
setAttr "ringEnd.rotateX" 0;
select -r pinky;
setAttr "pinky.rotateX" 0;
setAttr "pinkyMid.rotateX" 0;
setAttr "pinkyEnd.rotateX" 0;
select -r thumb;
setAttr "thumb.rotateX" 0;
setAttr "thumbMid.rotateX" 0;
setAttr "thumbEnd.rotateX" 0;
}
proc crumpD () {
select -r index;
setAttr "index.rotateX" 62;
setAttr "indexMid.rotateX" 62;
setAttr "indexEnd.rotateX" 62;
select -r middle;
setAttr "middle.rotateX" 62;
setAttr "middleMid.rotateX" 62;
setAttr "middleEnd.rotateX" 62;
select -r ring;
setAttr "ring.rotateX" 62;
setAttr "ringMid.rotateX" 62;
setAttr "ringEnd.rotateX" 62;
select -r pinky;
setAttr "pinky.rotateX" 62;
setAttr "pinkyMid.rotateX" 62;
setAttr "pinkyEnd.rotateX" 62;
select -r thumb;
setAttr "thumb.rotateX" 62;
setAttr "thumbMid.rotateX" 62;
setAttr "thumbEnd.rotateX" 62;
}
proc crumpE () {
select -r index;
setAttr "index.rotateX" 0;
setAttr "indexMid.rotateX" 0;
setAttr "indexEnd.rotateX" 0;
select -r middle;
setAttr "middle.rotateX" 62;
setAttr "middleMid.rotateX" 62;
setAttr "middleEnd.rotateX" 62;
select -r ring;
setAttr "ring.rotateX" 62;
setAttr "ringMid.rotateX" 62;
setAttr "ringEnd.rotateX" 62;
select -r pinky;
setAttr "pinky.rotateX" 62;
setAttr "pinkyMid.rotateX" 62;
setAttr "pinkyEnd.rotateX" 62;
select -r thumb;
setAttr "thumb.rotateX" 62;
setAttr "thumbMid.rotateX" 62;
setAttr "thumbEnd.rotateX" 62;
}
proc crumpG () {
select -r index;
setAttr "index.rotateX" 62;
setAttr "indexMid.rotateX" 62;
setAttr "indexEnd.rotateX" 62;
select -r middle;
setAttr "middle.rotateX" 62;
setAttr "middleMid.rotateX" 62;
setAttr "middleEnd.rotateX" 62;
select -r ring;
setAttr "ring.rotateX" 62;
setAttr "ringMid.rotateX" 62;
setAttr "ringEnd.rotateX" 62;
select -r pinky;
setAttr "pinky.rotateX" 0;
setAttr "pinkyMid.rotateX" 0;
setAttr "pinkyEnd.rotateX" 0;
select -r thumb;
setAttr "thumb.rotateX" 62;
setAttr "thumbMid.rotateX" 62;
setAttr "thumbEnd.rotateX" 62;
}
proc crumpF () {
setAttr "index.rotateX" 62;
setAttr "indexMid.rotateX" 62;
setAttr "indexEnd.rotateX" 62;
select -r middle;
setAttr "middle.rotateX" 0;
setAttr "middleMid.rotateX" 0;
setAttr "middleEnd.rotateX" 0;
select -r ring;
setAttr "ring.rotateX" 62;
setAttr "ringMid.rotateX" 62;
setAttr "ringEnd.rotateX" 62;
select -r pinky;
setAttr "pinky.rotateX" 62;
setAttr "pinkyMid.rotateX" 62;
setAttr "pinkyEnd.rotateX" 62;
select -r thumb;
setAttr "thumb.rotateX" 62;
setAttr "thumbMid.rotateX" 62;
setAttr "thumbEnd.rotateX" 62;
}
