//Tendrilgen v0.03 //by Fred LeMaster 2004 $radius = 0.1; $gen1freq = 1; $gen1amp = 1; $gen1mod = 1.5; //get our original curve $guideCurve = `selectedNodes -do`; $muscleCurve = $guideCurve; offsetCurve -d 0.1 -n guideCurveOffset; //$limit is the sample density $limit = 100; for ($i=0; $i<$limit; $i++) { //get points from curve select $guideCurve; eval ("float $guidePoint" + $i + "[] = `pointOnCurve -top 1 -pr ($i * 0.01)`"); eval ("vector $guidePointVec" + $i + " = <<$guidePoint" + $i + "[0], $guidePoint" + $i + "[1], $guidePoint" + $i + "[2]>>"); eval ("float $guidePointTan" + $i + "[] = `pointOnCurve -top 1 -nt -pr ($i * 0.01)`"); eval ("$guidePointTanVec" + $i + " = <<$guidePointTan" + $i + "[0], $guidePointTan" + $i + "[1], $guidePointTan" + $i + "[2]>>"); select guideCurveOffset; eval ("float $guidePointOffset" + $i + "[] = `pointOnCurve -top 1 -pr ($i * 0.01)`"); //get Normals eval ("float $guidePointNorm" + $i + "[];"); eval ("$guidePointNorm" + $i + "[0] = $guidePoint" + $i + "[0] - $guidePointOffset" + $i + "[0]"); eval ("$guidePointNorm" + $i + "[1] = $guidePoint" + $i + "[1] - $guidePointOffset" + $i + "[1]"); eval ("$guidePointNorm" + $i + "[2] = $guidePoint" + $i + "[2] - $guidePointOffset" + $i + "[2]"); eval ("vector $guidePointNormVec" + $i + " = unit(<<$guidePointNorm" + $i + "[0], $guidePointNorm" + $i + "[0], $guidePointNorm" + $i + "[0]>>)"); eval("vector $guidePointNorm2Vec" + $i + " = cross($guidePointTanVec" + $i + ", $guidePointNormVec" + $i + ")"); } //make a few circles for extrusion eval("circle -r $radius -nrz 0 -nrx 1 -c $guidePoint0[0] $guidePoint0[1] $guidePoint0[2] -n gen1Circle"); //Create Offset Curve Points for Generation 1 curves float $offCurvea = 0; vector $localPosition = << 0, 0, 0 >>; float $localOffset = 1; for ($n=0; $n<11; $n++) { $offCurve = "curve -d 3 "; for ($curParam=0; $curParam<$limit; $curParam++) { $offCurve = $offCurve + "-p "; eval("vector $localPosition = $guidePointVec" + $curParam + " + ($guidePointNormVec" + $curParam + " * cos((" + $curParam + " + ($n * $gen1mod)) * $gen1freq ) * $gen1amp) + ($guidePointNorm2Vec" + $curParam + " * sin((" + $curParam + "+ ($n * $gen1mod)) * $gen1freq ) * $gen1amp)"); $offCurve = $offCurve + $localPosition + " "; } //gnereate curves from previous data and set the keyframes for the growth print($offCurve + "\n"); eval("$gen1Curve" + $n + " = `" + $offCurve + "`"); eval("extrude -ch true -rn true -po 0 -et 2 -ucp 0 -fpt 0 -upn 0 -scale .001 -rsp 1 gen1Circle $gen1Curve" + $n); int $subCurveOffset = (1 + $n) * 2; $subCurve2max = "subCurve" + $subCurveOffset + ".max"; setKeyframe -t 1 -v 0 $subCurve2max; setKeyframe -t 120 -v 1 $subCurve2max; }