braam
01-29-2003, 09:38 AM
I wrote two versions of expression which would have the same results when rendering.
> 3 locators positioned at different Y-distance from plane
> Plane's incandesent is mapped to ramp.
> Ramp's U Coordinate attribute is connected by the output of setDistanceRange (Set Range node)
> I use expression to determine the distance between the point (Sampler info) and the position of every locator. Determined values are stored into the array which then sorted out to get the minimum value at $array[0]. The minimum value then connect to setDistanceRange.valueX.
si = sampler info node
getDistanceRange = set range node
Version 1: 3 mins to render
float $array[];
int $i;
for ($i=1;$i<4;$i++)
{
float $a = eval("getAttr locator"+$i+".translateX");
float $b = eval("getAttr locator"+$i+".translateY");
float $c = eval("getAttr locator"+$i+".translateZ");
$array[$i-1] = mag(<<$a-si.pointWorldX,$b-si.pointWorldY,
$c-si.pointWorldZ>>);
}
$array = sort($array);
setDistanceRange.valueX = $array[0];
Version 2: 4 seconds to render
float $array[];
$array[0] = mag(<<locator1.translateX-si.pointWorldX, locator1.translateY-si.pointWorldY, locator1.translateZ-si.pointWorldZ>>);
$array[1] = mag(<<locator2.translateX-si.pointWorldX, locator2.translateY-si.pointWorldY, locator2.translateZ-si.pointWorldZ>>);
$array[2] = mag(<<locator3.translateX-si.pointWorldX, locator3.translateY-si.pointWorldY, locator3.translateZ-si.pointWorldZ>>);
$array = sort($array);
setDistanceRange.valueX = $array[0];
What make the rendering slow?
> 3 locators positioned at different Y-distance from plane
> Plane's incandesent is mapped to ramp.
> Ramp's U Coordinate attribute is connected by the output of setDistanceRange (Set Range node)
> I use expression to determine the distance between the point (Sampler info) and the position of every locator. Determined values are stored into the array which then sorted out to get the minimum value at $array[0]. The minimum value then connect to setDistanceRange.valueX.
si = sampler info node
getDistanceRange = set range node
Version 1: 3 mins to render
float $array[];
int $i;
for ($i=1;$i<4;$i++)
{
float $a = eval("getAttr locator"+$i+".translateX");
float $b = eval("getAttr locator"+$i+".translateY");
float $c = eval("getAttr locator"+$i+".translateZ");
$array[$i-1] = mag(<<$a-si.pointWorldX,$b-si.pointWorldY,
$c-si.pointWorldZ>>);
}
$array = sort($array);
setDistanceRange.valueX = $array[0];
Version 2: 4 seconds to render
float $array[];
$array[0] = mag(<<locator1.translateX-si.pointWorldX, locator1.translateY-si.pointWorldY, locator1.translateZ-si.pointWorldZ>>);
$array[1] = mag(<<locator2.translateX-si.pointWorldX, locator2.translateY-si.pointWorldY, locator2.translateZ-si.pointWorldZ>>);
$array[2] = mag(<<locator3.translateX-si.pointWorldX, locator3.translateY-si.pointWorldY, locator3.translateZ-si.pointWorldZ>>);
$array = sort($array);
setDistanceRange.valueX = $array[0];
What make the rendering slow?
