/************************************************************ * * toi_randomRotateScale.mel * * Author: T. Welman, TOI TU Delft, 2010 * version: 2.0 * * This script rotates or scales selected transform nodes randomly. The * interface allows you to set minimum and maximum values for * each axis. * * Usage: * * 1. Load the script (source script) * 2. execute toi_randomRotateScale(); * */ if ( `window -exists toi_randRotator_window` ) { deleteUI toi_randRotator_window; } global proc toi_randomRotateScale ( ) { if ( !`window -exists toi_randRotator_window` ) { window -t "TOI Random Rotate Scale" -w 400 -h 200 -retain toi_randRotator_window; columnLayout -rs 2 toi_randRotateMainCol; checkBoxGrp -l "Rotation" -l1 "enabled" -v1 1 -on1 "frameLayout -e -en 1 -cl 0 toi_randomRotateFrame;" -of1 "frameLayout -e -en 0 -cl 1 toi_randomRotateFrame;" toi_randomRotator_enable; checkBoxGrp -l "Scale" -l1 "enabled" -v1 1 -on1 "frameLayout -e -en 1 -cl 0 toi_randomScaleFrame;" -of1 "frameLayout -e -en 0 -cl 1 toi_randomScaleFrame;" toi_randomScaler_enable; separator -style "none"; button -w 390 -l "Randomly rotate / scale selected objects" -c "toi_doRandomRotateScale()"; separator -style "none"; frameLayout -cll 1 -cl 0 -l "Rotation" toi_randomRotateFrame; columnLayout; floatSliderGrp -field 1 -l "min X" -v 0 -min (-180) -max 180 toi_randomRotator_xmin; floatSliderGrp -field 1 -l "max X" -v 0 -min (-180) -max 180 toi_randomRotator_xmax; floatSliderGrp -field 1 -l "min Y" -v 0 -min (-180) -max 180 toi_randomRotator_ymin; floatSliderGrp -field 1 -l "max Y" -v 0 -min (-180) -max 180 toi_randomRotator_ymax; floatSliderGrp -field 1 -l "min Z" -v 0 -min (-180) -max 180 toi_randomRotator_zmin; floatSliderGrp -field 1 -l "max Z" -v 0 -min (-180) -max 180 toi_randomRotator_zmax; separator -style "none"; rowLayout -nc 2 -cw2 140 200; text -l ""; button -w 80 -l "Reset" -c "floatSliderGrp -e -v 0 toi_randomRotator_xmin; floatSliderGrp -e -v 0 toi_randomRotator_xmax; floatSliderGrp -e -v 0 toi_randomRotator_ymin; floatSliderGrp -e -v 0 toi_randomRotator_ymax; floatSliderGrp -e -v 0 toi_randomRotator_zmin; floatSliderGrp -e -v 0 toi_randomRotator_zmax;"; setParent toi_randRotateMainCol; frameLayout -cll 1 -cl 0 -l "Scale (relative)" toi_randomScaleFrame; columnLayout; floatSliderGrp -field 1 -pre 2 -l "min X" -v 1 -min (0) -max 2 -fmn (-999) -fmx 999 toi_randomScaler_xmin; floatSliderGrp -field 1 -pre 2 -l "max X" -v 1 -min (0) -max 2 -fmn (-999) -fmx 999 toi_randomScaler_xmax; checkBoxGrp -l "Lock" -l1 "Y and Z use the same random value" -ncb 1 -v1 1 -on1 "floatSliderGrp -e -en 0 toi_randomScaler_ymin; floatSliderGrp -e -en 0 toi_randomScaler_ymax; floatSliderGrp -e -en 0 toi_randomScaler_zmin; floatSliderGrp -e -en 0 toi_randomScaler_zmax;" -of1 "floatSliderGrp -e -en 1 toi_randomScaler_ymin; floatSliderGrp -e -en 1 toi_randomScaler_ymax; floatSliderGrp -e -en 1 toi_randomScaler_zmin; floatSliderGrp -e -en 1 toi_randomScaler_zmax;" toi_randomScalerLock; floatSliderGrp -en 0 -field 1 -pre 2 -l "min Y" -v 1 -min (0) -max 2 -fmn (-999) -fmx 999 toi_randomScaler_ymin; floatSliderGrp -en 0 -field 1 -pre 2 -l "max Y" -v 1 -min (0) -max 2 -fmn (-999) -fmx 999 toi_randomScaler_ymax; floatSliderGrp -en 0 -field 1 -pre 2 -l "min Z" -v 1 -min (0) -max 2 -fmn (-999) -fmx 999 toi_randomScaler_zmin; floatSliderGrp -en 0 -field 1 -pre 2 -l "max Z" -v 1 -min (0) -max 2 -fmn (-999) -fmx 999 toi_randomScaler_zmax; separator -style "none"; rowLayout -nc 2 -cw2 140 200; text -l ""; button -w 80 -l "Reset" -c "floatSliderGrp -e -v 1 toi_randomScaler_xmin; floatSliderGrp -e -v 1 toi_randomScaler_xmax; floatSliderGrp -e -v 1 toi_randomScaler_ymin; floatSliderGrp -e -v 1 toi_randomScaler_ymax; floatSliderGrp -e -v 1 toi_randomScaler_zmin; floatSliderGrp -e -v 1 toi_randomScaler_zmax;"; setParent toi_randRotateMainCol; } showWindow toi_randRotator_window; } global proc toi_doRandomRotateScale () { int $rotate = `checkBoxGrp -q -v1 toi_randomRotator_enable`; int $scale = `checkBoxGrp -q -v1 toi_randomScaler_enable`; float $rxmin = `floatSliderGrp -q -v toi_randomRotator_xmin`; float $rxmax = `floatSliderGrp -q -v toi_randomRotator_xmax`; float $rymin = `floatSliderGrp -q -v toi_randomRotator_ymin`; float $rymax = `floatSliderGrp -q -v toi_randomRotator_ymax`; float $rzmin = `floatSliderGrp -q -v toi_randomRotator_zmin`; float $rzmax = `floatSliderGrp -q -v toi_randomRotator_zmax`; int $lock = `checkBoxGrp -q -v1 toi_randomScalerLock`; float $sxmin = `floatSliderGrp -q -v toi_randomScaler_xmin`; float $sxmax = `floatSliderGrp -q -v toi_randomScaler_xmax`; float $symin, $symax, $szmin, $szmax; if ( $lock == 0 ) { $symin = `floatSliderGrp -q -v toi_randomScaler_ymin`; $symax = `floatSliderGrp -q -v toi_randomScaler_ymax`; $szmin = `floatSliderGrp -q -v toi_randomScaler_zmin`; $szmax = `floatSliderGrp -q -v toi_randomScaler_zmax`; } float $val; string $selected[] = `ls -sl -type transform -long`; string $obj; for ( $obj in $selected ) { xform -cp $obj; if ( $rotate ) { rotate -r (rand($rxmin,$rxmax)) (rand($rymin,$rymax)) (rand($rzmin,$rzmax)) $obj; } if ( $scale ) { if ( $lock == 1 ) { $val = rand($sxmin,$sxmax); scale -r ($val) ($val) ($val) $obj; } else { scale -r (rand($sxmin,$sxmax)) (rand($symin,$symax)) (rand($szmin,$szmax)) $obj; } } } }