// This script creates Lattice Deformer to selected objects.
// Also, it creates expression to each Lattice Point to add noise animation.
global proc latticeNoise()
{
int $division_s = 12;
int $division_t = 9;
int $division_u = 9;
float $amplitude = 0.01;
float $freq = 1.0;
string $lattice_name[] = `lattice -divisions $division_s $division_t $division_u -objectCentered true -ldv 2 2 2`;
int $i = 0,$j = 0,$k = 0, $count = 0;
for($i = 0; $i < $division_u; $i++)
for($j = 0; $j < $division_t; $j++)
for($k = 0; $k < $division_s; $k++){
string $exp = "";
float $def_position[] = `getAttr ($lattice_name[1] + ".pt[" + $k + "][" + $j + "][" + $i +"]")`;
$exp = $lattice_name[1] + "Shape.controlPoints[" + $count + "].xValue = noise(time*" + $freq + "+" + $count + ")*" + $amplitude + "+" + $def_position[0] + ";\r\n" +
$lattice_name[1] + "Shape.controlPoints[" + $count + "].yValue = noise(time*" + $freq + "+" + $count + "+ 100)*" + $amplitude + "+" + $def_position[1] + ";\r\n" +
$lattice_name[1] + "Shape.controlPoints[" + $count + "].zValue = noise(time*" + $freq + "+" + $count + "+ 200)*" + $amplitude + "+" + $def_position[2] + ";";
expression -s $exp -o ($lattice_name[1] + "Shape") -ae 1 -uc all;
if($count > 100000) break; // To prevent infinite loop.
$count++;
}
}
latticeNoise;