Simply Maya User Community

Simply Maya User Community (https://simplymaya.com/forum/index.php)
-   Maya Basics & Newbie Lounge (https://simplymaya.com/forum/forumdisplay.php?f=31)
-   -   MEL headache! (https://simplymaya.com/forum/showthread.php?t=34700)

happymat27 03-12-2010 11:02 AM

MEL headache!
 
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


All times are GMT. The time now is 06:37 AM.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Simply Maya 2018