Introduction to Maya - Modeling Fundamentals Vol 2
This course will look in the fundamentals of modeling in Maya with an emphasis on creating good topology. It's aimed at people that have some modeling experience in Maya but are having trouble with complex objects.
# 1 03-12-2010 , 11:02 AM
happymat27's Avatar
Subscriber
Join Date: Jul 2004
Posts: 1,257

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 user added image

# 2 03-12-2010 , 02:49 PM
gster123's Avatar
Moderator
Join Date: May 2005
Location: Manchester Uk
Posts: 6,300
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


"No pressure, no diamonds" Thomas Carlyle
# 3 03-12-2010 , 03:25 PM
happymat27's Avatar
Subscriber
Join Date: Jul 2004
Posts: 1,257
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 user added image


Last edited by happymat27; 03-12-2010 at 03:28 PM.
# 4 03-12-2010 , 05:53 PM
EduSciVis-er
Join Date: Dec 2005
Location: Toronto
Posts: 3,374
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.

# 5 03-12-2010 , 09:19 PM
happymat27's Avatar
Subscriber
Join Date: Jul 2004
Posts: 1,257
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 user added image

Doubtless I'll be back again soon when I next get stuck!!

Cheers,

Mat user added image

# 6 05-12-2010 , 09:43 AM
gster123's Avatar
Moderator
Join Date: May 2005
Location: Manchester Uk
Posts: 6,300
Hi Mat,

Yeas still there, going ok really. How about yourself?

I'll mail you.

Cheers

Steve


"No pressure, no diamonds" Thomas Carlyle
Posting Rules Forum Rules
You may not post new threads | You may not post replies | You may not post attachments | You may not edit your posts | BB code is On | Smilies are On | [IMG] code is On | HTML code is Off

Similar Threads