global proc lightingTools () { if (`window -exists lightingToolWindow`) deleteUI -window lightingToolWindow; window -widthHeight 188 180 -s 0 -title "Lighting Is Fun!" lightingToolWindow; columnLayout -adj 1 mainColumn; separator -h 2; button -label "Set Light Color" -c ltSetColor ltSetColorButton; separator -h 2 -style "none"; button -label "Get Light Color" -c ltGetColor ltGetColorButton; separator -h 2 -style "none"; colorSliderGrp -rgb 1 1 1 -cw2 40 125 -dragCommand ltSetColor -cc ltSetColor lightColorGroup; separator -h 2 -style "none"; separator -h 2; button -label "offset from normal" -c ltOffsetFromVertexNormal ltOffsetFromVertexNormalbutton; floatField -v .25 offsetMultiplierField; separator -h 6 -style "none"; rowLayout -nc 4 -cw4 50 35 35 50; button -label "Ambient" -c "ltMakeLight ambientLight" ambientButton; button -label "Point" -c "ltMakeLight pointLight" pointButton; button -label "Spot" -c "ltMakeLight spotLight" spotButton; button -label "Directional" -c "ltMakeLight directionalLight" directionalButton; setParent ..; showWindow lightingToolWindow; } global proc ltMakeLight(string $lightType) { float $lightColor[3] = `colorSliderGrp -q -rgb lightColorGroup`; $tmp = `eval ($lightType + " -rgb " + $lightColor[0] + " " + $lightColor[1] + " " + $lightColor[2])`; eval ("setAttr " + $tmp + ".decayRate 2"); } global proc ltGetColor () { $sel = `ls -sl`; float $lightColor[3] = eval("getAttr " + $sel[0] + ".color"); colorSliderGrp -e -rgb $lightColor[0] $lightColor[1] $lightColor[2] lightColorGroup; } global proc ltSetColor () { float $lightColor[3] = `colorSliderGrp -q -rgb lightColorGroup`; $sel = `ls -sl`; for ($s in $sel) { select $s; pickWalk -d down; $shape = `ls -sl`; eval("setAttr " + $shape[0] + ".color -type double3 " + $lightColor[0] + " " + $lightColor[1] + " " + $lightColor[2]); } select $sel; } global proc ltOffsetFromVertexNormal () { int $numNormals; float $normX, $normY, $normZ, $multiplier = 0; float $vertPos[3], $normArrayX[], $normArrayY[], $normArrayZ[], $newPos[3], $normXYZ[3]; float $lightColor[3] = `colorSliderGrp -q -rgb lightColorGroup`; string $lightsCreated[]; $sel = `ls -sl -fl`; for ($s in $sel) { select -r $s; $vertPos = `pointPosition -w $s`; $normArrayX = `polyNormalPerVertex -q -x`; $normArrayY = `polyNormalPerVertex -q -y`; $normArrayZ = `polyNormalPerVertex -q -z`; $numNormals = (size($normArrayX)); for ($count = 0; $count < $numNormals; $count++) { $normX = ($normX + $normArrayX[$count]); $normY = ($normY + $normArrayY[$count]); $normZ = ($normZ + $normArrayZ[$count]); } $normX = ($normX / $numNormals); $normY = ($normY / $numNormals); $normZ = ($normZ / $numNormals); $normXYZ = {$normX, $normY, $normZ}; normalize $normXYZ; $multiplier = `floatField -q -v offsetMultiplierField`; $newPos[0] = ($multiplier * $normXYZ[0]) + $vertPos[0]; $newPos[1] = ($multiplier * $normXYZ[1]) + $vertPos[1]; $newPos[2] = ($multiplier * $normXYZ[2]) + $vertPos[2]; $tmp = `pointLight -rgb $lightColor[0] $lightColor[1] $lightColor[2]`;//why doesn't the decayRate flag work? eval ("setAttr " + $tmp + ".decayRate 2"); sAppend $lightsCreated $tmp; move -a $newPos[0] $newPos[1] $newPos[2]; clear $newPos; clear $normXYZ; clear $vertPos; clear $normArrayX; clear $normArrayY; clear $normArrayZ; $normX = 0; $normY = 0; $normZ = 0; } select $lightsCreated; pickWalk -d up; setFocus `getPanel -wf`; }