int $startnum = 1; int $endnum = 125; int $startobject = 1; float $distace = 1.5; float $slow = 0.3; string $name = "pCube"; //init //on frame 2 we run through all the objects(except for object number 1) and give them a random rotation and scale them to zero if (frame == 2) { int $z; for ($z = $startnum; $z <=$endnum; $z++) { if ($z != $startobject) { float $rand = rand(1) * 360 ; setAttr ($name + $z + ".rotateX") $rand; setAttr ($name + $z + ".rotateY") $rand; setAttr ($name + $z + ".rotateZ") $rand; setAttr ($name + $z + ".scaleX") 0; setAttr ($name + $z + ".scaleY") 0; setAttr ($name + $z + ".scaleZ") 0; } } } if (frame > 2) { for ($x = $startnum; $x <= $endnum; $x++) { float $attrx = getAttr ($name + $x + ".scaleX"); float $attry = getAttr ($name + $x + ".scaleY"); float $attrz = getAttr ($name + $x + ".scaleZ"); float $attrrx = getAttr ($name + $x + ".rotateX"); float $attrry = getAttr ($name + $x + ".rotateY"); float $attrrz = getAttr ($name + $x + ".rotateZ"); float $attr[3] = `xform -ws -q -piv ($name + $x)`; if (($attrx != 1) || ($attry != 1) || ($attrz != 1) || ($attrrx !=0) || ($attrry !=0) || ($attrrz !=0)) { // now go through all other objects and check // if nearest objects are visible int $y; for ($y = $startnum; $y <=$endnum; $y++) { if ($y != $x) { float $attr2x = getAttr ($name + $y + ".rotateX"); float $attr2sz = getAttr ($name + $y + ".scaleZ"); if ($attr2sz > 0.8) { float $attr2[3] = `xform -ws -q -piv ($name + $y)`; float $distancex = $attr[0] - $attr2[0]; float $distancey = $attr[1] - $attr2[1]; float $distancez = $attr[2] - $attr2[2]; float $dist = sqrt ($distancex*$distancex + $distancey*$distancey + $distancez*$distancez); float $randnum = rand(1); if (($dist <= $distace) && ($randnum > $slow)) { float $attribtemp = getAttr ($name + $x + ".scaleX"); if ($attribtemp < 1) $attribtemp = $attribtemp + (rand(1) / 10); if ($attribtemp > 1) $attribtemp = 1; setAttr ($name + $x + ".scaleX") $attribtemp; $attribtemp = getAttr ($name + $x + ".scaleY"); if ($attribtemp < 1) $attribtemp = $attribtemp + (rand(1) / 10); if ($attribtemp > 1) $attribtemp = 1; setAttr ($name + $x + ".scaleY") $attribtemp; $attribtemp = getAttr ($name + $x + ".scaleZ"); if ($attribtemp < 1) $attribtemp = $attribtemp + (rand(1) / 10); if ($attribtemp > 1) $attribtemp = 1; setAttr ($name + $x + ".scaleZ") $attribtemp; $attribtemp = getAttr ($name + $x + ".rotateX"); if ($attribtemp != 0) { $attribtemp = $attribtemp * 0.75; if (($attribtemp <= 5) && ( $attribtemp >= -5 )) $attribtemp = 0; setAttr ($name + $x + ".rotateX") $attribtemp; } $attribtemp = getAttr ($name + $x + ".rotateY"); if ($attribtemp != 0) { $attribtemp = $attribtemp * 0.75; if (($attribtemp <= 5) && ( $attribtemp >= -5 )) $attribtemp = 0; setAttr ($name + $x + ".rotateY") $attribtemp; } $attribtemp = getAttr ($name + $x + ".rotateZ"); if ($attribtemp != 0) { $attribtemp = $attribtemp * 0.75; if (($attribtemp <= 5) && ( $attribtemp >= -5 )) $attribtemp = 0; setAttr ($name + $x + ".rotateZ") $attribtemp; } } } } } } } }