View Full Version : MEL headache!
happymat27
03-12-2010, 11:02 AM
Hi,
it's been an age since I've posted up here but I need a little help with MEL and I figured that this would be the place to ask.
So...
Imagine a curve with an unknown number of CV's, I have made a script to count the CV's and attach a cluster to each one. I now need to distribute the clusters along the X axis using 0.005 as a base and the sequence 1,2,4,8,16,32,64....etc as the multiplier.
So the first cluster would be at 0.005, the second at 0.010, the third at 0.020, the fourth at 0.040 and so on.
has anyone got an idea how I could achieve this with MEL?
Cheers,
Mat :)
gster123
03-12-2010, 02:49 PM
Hi Mat,
Hows things, not seen you about for ages?
You could use a if loop, create a variable that contains the start number, then set it for the end and what you need
$varible = whatever it is ;
if ($variable < final number)
{
Do something ;
$variable += increment number ;
}
with the above I think I may have mixed up between MEL and C# at some points! But the theory should work
happymat27
03-12-2010, 03:25 PM
Hey Steve,
yeah all is good thanks... working hard etc.
what about yourself, still at the Uni?
So yeah MEL, or any other programming language, has never been my forte but I've got this script.....
// counting the CV's in the curve
string $curve = "waveCurveShape";
int $numSpans = `getAttr ( $curve + ".spans" )`;
int $degree = `getAttr ( $curve + ".degree" )`;
int $numCVs = $numSpans + $degree;
// this just lets me know how many there are
print $numCVs;
// a cluster for each CV
for ($i=0; $i<=($numCVs - 1); $i++)
{
select -r waveCurve.cv[$i];
newCluster " -envelope 1";
}
// rename and group clusters
for ($i=1; $i<($numCVs +1); $i++)
{
rename ("cluster" +$i +("Handle")) ("waveCluster" +$i);
}
//group clusters to neaten the outliner
for ($i=1; $i<($numCVs +1); $i++)
{
select -add ("waveCluster" +$i);
}
group; xform -os -piv 0 0 0;
rename group1 clusterGroup;
Create any curve and call it waveCurve and then execute the script, it will count the CV's and then create a cluster for each CV.
I can move the clusters one at a time to wherever I want using the CV count ($numCVs) for instance.....
// sets the location in x to the number of cluster -1
for ($i=1; $i<($numCVs +1); $i++)
{
float $c = ($i-1); select -r ("waveCluster" + $i);
move -rpr ($c) 0 0;
}
So waveCluster1 will be at 0,0,0 then waveCluster2 wil be at 1,0,0 etc.
I need the X value to follow the number pattern...
0,1,2,4,8,16,32,64,128.... etc for however many verts/clusters there are in the curve but my MEL-ness is not anywhere near that standard!!
Got any ideas?
Hope you're well,
Mat :)
stwert
03-12-2010, 05:53 PM
for ($i=0; $i<($numCVs); $i++){
float $c = ($i-1); select -r ("waveCluster" + 2^$i);
}
...like that?
Actually I'm not sure what the interior stuff should be, but the function would be 2^$i.
happymat27
03-12-2010, 09:19 PM
Cheers for your thoughts,
I got it sorted.....
int $i;
float $x = 0.005;
for($i = 0; $i < $numberOfCVs; $i++)
{
$x *= 2;
// Do whatever needs to be done
}
Thanks to kbrown for that :)
Doubtless I'll be back again soon when I next get stuck!!
Cheers,
Mat :)
gster123
05-12-2010, 09:43 AM
Hi Mat,
Yeas still there, going ok really. How about yourself?
I'll mail you.
Cheers
Steve
Copyright © 1999-2021 SimplyMaya | Forum Copyright © 2021 vBS, Inc. All rights reserved