!!! Updated, now even more stupid !!!
proc camSave (string $actCam)
{
global string $keyAtts[];
global float $atVals[];
string $getAtts[];
int $sizeAtts;
clear $keyAtts;
// create a list of keyable attributes
clear $getAtts;
$getAtts = `listAttr -k -u $actCam`;
for ($i=0; $i<(size($getAtts)); $i++)
{
$keyAtts[(size ($keyAtts))] = ($actCam + "." + $getAtts[$i]);
$atVals[$i] = `getAttr $keyAtts[$i]`;
}
}
proc buildIt(string $actCam) {
global int $k;
global string $shaders[];
//assign names to new palette
$shaders = {
"flesh", "black", "white", "tongue", "gums", "brown"
};
//assign rgba values to the new palette
float $r[] = {float(0.8),(0.05),(1.0),(0.95),(0.96),(0.5)};
float $g[] = {float(0.65),(0.05),(1.0),(0.3),(0.5),(0.3)};
float $b[] = {float(0.5),(0.05),(1.0),(0.25),(0.5),(0.15)};
//create the shaders
$i = 0;
for ($one in $shaders)
{
shadingNode -n $one -asShader lambert;
sets -renderable true -noSurfaceShader true -empty -name ($one + "SG");
connectAttr -f ($one + ".outColor") ($one + "SG.surfaceShader");
setAttr ($one+".colorR") ($r[$i]) ;
setAttr ($one+".colorG") ($g[$i]) ;
setAttr ($one+".colorB") ($b[$i]) ;
$i++ ;
};
spaceLocator -p 0 0 0 -n pointer;
setAttr "pointer.visibility" 0;
sphere -ch on -o on -po 0 -ax 0 1 0 -r 1.9 -nsp 4 -n eyeBallL;
sets -e -forceElement whiteSG;
duplicate -n pupil;
scale -r 0.43 0.43 0.43 ;
move -r -os -wd 0 1.2 0 ;
sets -e -forceElement blackSG;
parent pupil eyeBallL;
duplicate -n eyeBallR eyeBallL;
move -r 3.9 0 0 eyeBallR;
string $lnr[] = {"L", "R"};
for ($one in $lnr){
aimConstraint -offset 0 0 0 -weight 1 -aimVector 0 1 0 -upVector 1 0 0 -worldUpType "vector" -worldUpVector 0 0 -1 pointer ("eyeBall"+$one);
setAttr ("eyeBall"+$one+".translateY") -6;
}
string $sph[] = `sphere -ssw 0 -esw 351 -ch on -o on -po 0 -ax 0 1 0 -r 4.339298 -nsp 4 -n "face"`;
rename $sph[1] "makeFace";
setAttr ($sph[0]+".translateX") 2.079;
setAttr ($sph[0]+".translateY") -12.749;
setAttr ($sph[0]+".translateZ") 0.814;
setAttr ($sph[0]+".rotateY") -29.276;
setAttr ($sph[0]+".rotateZ") 90;
for ($xyz in {"X", "Y", "Z"}){
setAttr ($sph[0]+".scale"+$xyz) 1.361;
}
sets -e -forceElement fleshSG;
string $butes[] = {".translateX",".translateY",".translateZ",".rotateX",".rotateY",".rotateZ",".scaleX",".scaleY"};
float $vals[] = {float (0),(60),(-2),(-90),(0),(0),(1),(1)};
for ($i=0;$i<8;$i++){
setAttr ($actCam+$butes[$i]) $vals[$i];
}
select -cl;
}
proc lookAtMe()
{
float $return[];
global string $keyAtts[];
global float $atVals[];
global int $lookAtMeIndex;
string $actCam;
$actCam = `lookThru -q`;
if ($lookAtMeIndex == 0)
{
$lookAtMeIndex = -1;
}
if (!`scriptJob -ex $lookAtMeIndex`)
{
$lookAtMeIndex = `scriptJob -kws -ie lookAtMeScriptJob`;
camSave($actCam);
buildIt($actCam);
}
else
{
scriptJob -k $lookAtMeIndex -f;
for ($one in {"face", "pointer", "eyeBallL", "eyeBallR", "black", "brown", "flesh", "gums", "tongue", "white"})
{
delete $one;
}
for ($i=0;$i<(size($keyAtts));$i++)
{
setAttr ($keyAtts[$i]) $atVals[$i];
}
}
}
global proc lookAtMeScriptJob()
{
float $pos[] = `autoPlace -useMouse`;
move $pos[0] $pos[1] $pos[2] pointer;
}
lookAtMe;