<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-10546302</id><updated>2011-08-11T07:29:36.666-07:00</updated><title type='text'>melGeek</title><subtitle type='html'>Mastering the MEL scripting language of Maya is a challenge,  and we're up for it.  We will need a place to post, think out loud, and vent.  Maybe we can help out new users as well...  feel free to comment.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://melgeek.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10546302/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://melgeek.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Chad</name><uri>http://www.blogger.com/profile/06513380975140487678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://www.streamload.com/smap2d/pics/me.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>23</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-10546302.post-115579086888120489</id><published>2006-08-16T21:57:00.000-07:00</published><updated>2006-08-16T22:01:08.896-07:00</updated><title type='text'>Talk to Maya</title><content type='html'>WOW! &lt;a href="http://www.ddmel.com/"&gt;This&lt;/a&gt; looks like it could be really interesting.  I hope to try it tomorrow.  It's a plug-in that allows you to issue commands to Maya via your microphone and voice recognition.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10546302-115579086888120489?l=melgeek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://melgeek.blogspot.com/feeds/115579086888120489/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10546302&amp;postID=115579086888120489&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10546302/posts/default/115579086888120489'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10546302/posts/default/115579086888120489'/><link rel='alternate' type='text/html' href='http://melgeek.blogspot.com/2006/08/talk-to-maya.html' title='Talk to Maya'/><author><name>Chad</name><uri>http://www.blogger.com/profile/06513380975140487678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://www.streamload.com/smap2d/pics/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10546302.post-114963667321132953</id><published>2006-06-06T16:28:00.000-07:00</published><updated>2006-06-06T16:32:17.020-07:00</updated><title type='text'>Batching in MEL</title><content type='html'>People speak of "batching" in Maya.  All this means is let the computer do the repetitive work for you.  For a specific example, lets say that half way through the animation phase, your art director decides the main character of your game really needs to have a green hat to "communicate the angst of the characters plight to the player better".  &lt;br /&gt;&lt;br /&gt;For each animation already complete, you'll need to import a hat model and then constrain it to the characters head.  This is the boring monotonous part of production.  Help MEL help you.  Maya doesn't have a built in Batch function, but it is easy enough to quickly code something up.&lt;br /&gt;&lt;br /&gt;This example will demonstate the code I like to use for simple batching.  You can utilize these concepts to automate which ever tasks it is you'll need to perform to a list of files.  &lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;string $fullPathAndName = `fileDialog`;&lt;br /&gt;string $sourcePath = dirname($fullPathAndName);&lt;br /&gt;string $sourcePath = ($sourcePath + "/");&lt;br /&gt;string $myFiles[] = `getFileList -fld $sourcePath -filespec "*.mb"`;&lt;br /&gt;for ($eachFile in $myFiles)&lt;br /&gt;{&lt;br /&gt;//your tasks go here&lt;br /&gt;}&lt;br /&gt;print ("Done doing stuff for all the files in this directory " + "\"" + $sourcePath + "\"" + "!" + "\n");&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Let's break that down into bit sized chucks of understanding ...&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;string $fullPathAndName = `fileDialog`;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;The &lt;em&gt;fileDialog&lt;/em&gt; command launches an 'Open' window.  By selecting any file in that directory, the script will now know the network path AND filename of whatever file is chosen.  Store that in the &lt;code&gt;$fullPathAndName&lt;/code&gt; variable.&lt;br /&gt;&lt;br /&gt;Next you need to get just the path to the file so you and MEL know what directory to work on.  Luckily Maya has a built in &lt;code&gt;dirname&lt;/code&gt; command.  You provide the command a full path and filename string and it will automatically return just the directory path.  Store that in the &lt;code&gt;$sourcePath&lt;/code&gt; variable.&lt;br /&gt;&lt;br /&gt;The one drawback to the &lt;code&gt;dirname&lt;/code&gt; command is it doesn't include the trailing "/" at the end so you'll have to reassign the &lt;code&gt;$sourcePath&lt;/code&gt; variable to include its current contents plus the trailing "/".  This line &lt;code&gt;string $sourcePath = ($sourcePath + "/");&lt;/code&gt; does exactly that.&lt;br /&gt;&lt;br /&gt;Now you know the directory to process.  Next you'll tell Maya to look at all the files in that directory and store them in a list.  &lt;code&gt;string $myFiles[] = `getFileList -fld $sourcePath -filespec "*.mb"`;&lt;/code&gt; is the key here.  The command &lt;code&gt;getFileList&lt;/code&gt; does what it says, you're telling MEL where to get the files from by the &lt;code&gt; -fld $sourcePath&lt;/code&gt; bit.  I am sure you can guess that the &lt;em&gt;-fld&lt;/em&gt; is short for folder.  Use a string array called &lt;code&gt;$myFiles[]&lt;/code&gt; or something similar to store the files.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;At this point its just simple &lt;em&gt;for loops&lt;/em&gt; and other custom code to do what you like to each file.  In our example, you'd import the hat, return the character to the bind pose, constrain the hat to the head, and "be kind and rewind" the animation.  Lastly, you can print out a report of what happened.  If you use error checking properly, you can even note what files failed for whatever reason.  More on error checking later as it deserves a post all it's own.&lt;br /&gt;&lt;br /&gt;PS- I (Chad) have moved my blog over to &lt;a href="http://www.chadmoore.net"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10546302-114963667321132953?l=melgeek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://melgeek.blogspot.com/feeds/114963667321132953/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10546302&amp;postID=114963667321132953&amp;isPopup=true' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10546302/posts/default/114963667321132953'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10546302/posts/default/114963667321132953'/><link rel='alternate' type='text/html' href='http://melgeek.blogspot.com/2006/06/batching-in-mel.html' title='Batching in MEL'/><author><name>Chad</name><uri>http://www.blogger.com/profile/06513380975140487678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://www.streamload.com/smap2d/pics/me.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10546302.post-112672016701698749</id><published>2005-09-14T10:47:00.000-07:00</published><updated>2005-09-14T10:49:27.016-07:00</updated><title type='text'>Sorry Bryan</title><content type='html'>Cheers,&lt;br /&gt;Chad&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10546302-112672016701698749?l=melgeek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://melgeek.blogspot.com/feeds/112672016701698749/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10546302&amp;postID=112672016701698749&amp;isPopup=true' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10546302/posts/default/112672016701698749'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10546302/posts/default/112672016701698749'/><link rel='alternate' type='text/html' href='http://melgeek.blogspot.com/2005/09/sorry-bryan.html' title='Sorry Bryan'/><author><name>Chad</name><uri>http://www.blogger.com/profile/06513380975140487678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://www.streamload.com/smap2d/pics/me.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10546302.post-112615133490043686</id><published>2005-09-07T20:47:00.000-07:00</published><updated>2005-09-07T20:48:54.906-07:00</updated><title type='text'>Master Class Notes</title><content type='html'>If you were at the Motion Builder Master Class I (Chad) co-presented this year at siggraph and are missing the final notes, let me know by commenting and I'll see what I can do to get them to you.&lt;br /&gt;&lt;br /&gt;Cheers,&lt;br /&gt;Chad&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10546302-112615133490043686?l=melgeek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://melgeek.blogspot.com/feeds/112615133490043686/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10546302&amp;postID=112615133490043686&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10546302/posts/default/112615133490043686'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10546302/posts/default/112615133490043686'/><link rel='alternate' type='text/html' href='http://melgeek.blogspot.com/2005/09/master-class-notes.html' title='Master Class Notes'/><author><name>Chad</name><uri>http://www.blogger.com/profile/06513380975140487678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://www.streamload.com/smap2d/pics/me.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10546302.post-112560248202028558</id><published>2005-09-01T12:01:00.000-07:00</published><updated>2005-09-01T12:29:28.453-07:00</updated><title type='text'>Workflow improvements: Connection Editor</title><content type='html'>I work with the connection editor almost continuously throughout the day and I got to thinking that it would save me a lot of time if the connection editor would just open up based on a selection with things already loaded. So here we go:&lt;br /&gt;&lt;br /&gt;I decided that I would like it to load the first selection to the left side of the connection editor, as I always have it set to from -&gt; to. Then anything else selected would open on the right side.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;// SCRIPT: ijConnectionEditor&lt;br /&gt;// AUTHOR: Ian Jones - mel@shrtcww.com&lt;br /&gt;// DATE: September 1, 2005&lt;br /&gt;// Version: 1.0&lt;br /&gt;//&lt;br /&gt;// DESCRIPTION: Opens the connection editor and loads left/right side based on&lt;br /&gt;//                 a selection&lt;br /&gt;//&lt;br /&gt;// ASSUMPTIONS: Connection Editor is set to: from -&gt; to&lt;br /&gt;//&lt;br /&gt;global proc ijConnectionEditor()&lt;br /&gt;{&lt;br /&gt;    // Save the current selection/size&lt;br /&gt;    string $selection[] = `ls -sl`;&lt;br /&gt;    int $numSelections = `size($selection)`;&lt;br /&gt;&lt;br /&gt;    ConnectionEditor;&lt;br /&gt;   &lt;br /&gt;    // If selection[0] exists: load to the left side of the CE&lt;br /&gt;    if ( $numSelections &gt; 0 )nodeOutliner -e -replace ( $selection[0] ) connectWindow|tl|cwForm|connectWindowPane|leftSideCW;&lt;br /&gt;   &lt;br /&gt;    // If selection[1] exists: load to the right side of the CE&lt;br /&gt;    if ( $numSelections &gt; 1 ) nodeOutliner -e -replace ( $selection[1] ) connectWindow|tl|cwForm|connectWindowPane|rightSideCW;&lt;br /&gt;&lt;br /&gt;   &lt;br /&gt;    // If more than 2 objects selected &lt;br /&gt;    // add additional to the right side.&lt;br /&gt;    if ( $numSelections &gt; 1 )&lt;br /&gt;    for( $n=2; $n&lt;($numSelections ); $n++ )&lt;br /&gt;    {&lt;br /&gt;        nodeOutliner -e -addObject $selection[( $n )] connectWindow|tl|cwForm|connectWindowPane|rightSideCW;&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Already saving me a bunch of time. Hope you enjoy.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10546302-112560248202028558?l=melgeek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://melgeek.blogspot.com/feeds/112560248202028558/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10546302&amp;postID=112560248202028558&amp;isPopup=true' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10546302/posts/default/112560248202028558'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10546302/posts/default/112560248202028558'/><link rel='alternate' type='text/html' href='http://melgeek.blogspot.com/2005/09/workflow-improvements-connection.html' title='Workflow improvements: Connection Editor'/><author><name>IanJones</name><uri>http://www.blogger.com/profile/12516012514167651916</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10546302.post-112537833255973128</id><published>2005-08-29T22:01:00.000-07:00</published><updated>2005-08-29T22:05:32.563-07:00</updated><title type='text'>Batches?  We DO need stinking batches</title><content type='html'>First off, thanks to Josh and Ian for the posts.  We're running the gamut from workflow enhacements to full on UI creation.  Booya.  &lt;br /&gt;&lt;br /&gt;I am tinkering with my next post, which I hope to have up by this weekend.  I want to talk a bit about creating a batch script.&lt;br /&gt;&lt;br /&gt;Do you have a lot of files that you need to alter in the same way?  Do you wish that there was a way to automatically process all these files at once?  Well batching is for you!&lt;br /&gt;&lt;br /&gt;More soon.&lt;br /&gt;&lt;br /&gt;Cheers,&lt;br /&gt;Chad&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10546302-112537833255973128?l=melgeek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://melgeek.blogspot.com/feeds/112537833255973128/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10546302&amp;postID=112537833255973128&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10546302/posts/default/112537833255973128'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10546302/posts/default/112537833255973128'/><link rel='alternate' type='text/html' href='http://melgeek.blogspot.com/2005/08/batches-we-do-need-stinking-batches.html' title='Batches?  We DO need stinking batches'/><author><name>Chad</name><uri>http://www.blogger.com/profile/06513380975140487678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://www.streamload.com/smap2d/pics/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10546302.post-112477226945999388</id><published>2005-08-22T21:44:00.000-07:00</published><updated>2005-08-22T21:44:29.473-07:00</updated><title type='text'>QuickDragSelect</title><content type='html'>Just a quickie... literally.  &lt;br /&gt;&lt;br /&gt;Here's something i have in my custom modeling marking menu that toggles on the quickdragselect option in the preferences.  I don't *think* there's another way to turn it on and off quickly without going into the prefs, so this proves to be super handy when i'm manipulating verts.  It's even better when you envoke the soft mod tool.  &lt;br /&gt;&lt;br /&gt;if (`selectPref -q -cld`)&lt;br /&gt;	selectPref -cld 0;&lt;br /&gt;else&lt;br /&gt;	selectPref -cld 1;&lt;br /&gt;&lt;br /&gt;For those that don't know what clickdragselect is, it basically lets you click and drag (with move, rotate, or scale), as opposed to clicking, letting go, then middle mouse dragging the selection.  &lt;br /&gt;&lt;br /&gt;Hmm.. can that code be even more simplified?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10546302-112477226945999388?l=melgeek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://melgeek.blogspot.com/feeds/112477226945999388/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10546302&amp;postID=112477226945999388&amp;isPopup=true' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10546302/posts/default/112477226945999388'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10546302/posts/default/112477226945999388'/><link rel='alternate' type='text/html' href='http://melgeek.blogspot.com/2005/08/quickdragselect.html' title='QuickDragSelect'/><author><name>josh</name><uri>http://www.blogger.com/profile/14529969536710354622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10546302.post-112269163670760671</id><published>2005-07-29T11:41:00.000-07:00</published><updated>2005-07-30T00:17:41.073-07:00</updated><title type='text'>Quick and dirty light editor</title><content type='html'>&lt;p class="MsoNormal"&gt;Eventually we all run across a shot that requires us to have a lot of lights that we want to be able to edit quickly. For myself, it was a downtown street with a slew of street lights. It quickly became tedious to tweak the lights with the attribute editor. This was especially true when I wanted to tinker with the decay rates. You would select a light, open the decay rate pull down, make a selection and repeat over and over – just to find you preferred it better before.&lt;/p&gt;     &lt;p class="MsoNormal"&gt;So I quickly wrote some code to create my own simplified attribute spreadsheet:&lt;/p&gt;&lt;code&gt;string $window = `window -title "LightEditor " -widthHeight 600 300`;&lt;br /&gt;paneLayout;  &lt;br /&gt;&lt;br /&gt;select -r `listTransforms -lights`;    &lt;br /&gt;string $activeList = `selectionConnection -activeList`;&lt;br /&gt;&lt;br /&gt;spreadSheetEditor -mainListConnection $activeList -ln true -showShapes true ;&lt;br /&gt;&lt;br /&gt;showWindow $window;&lt;/code&gt;&lt;p class="MsoNormal"&gt; &lt;/p&gt;     &lt;p class="MsoNormal"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;p class="MsoNormal"&gt;&lt;o:p&gt;&lt;/o:p&gt;This gives us a quick spread sheet with access to the defaults: color, intensity, ray trace/depth map shadows, shadow color etc. Great – but my inspiration was to deal with the decay rate and by default it's not listed. This is because only keyable attributes show up in the spreadsheet editor so you miss out on valuable things like dmap resolution/filter, decay rates which, by default, are not keyable.&lt;o:p&gt;&lt;br /&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;p class="MsoNormal"&gt;To fix this we'll make a small proc to make additional values we want keyable visible. Decay rate is unique in that even if made keyable it doesn’t appear so, we'll make a stand in and connect the two.&lt;/p&gt;          &lt;p class="MsoNormal"&gt;&lt;o:p&gt;&lt;code&gt;&lt;br /&gt;proc showLightAttributes()&lt;br /&gt;{&lt;br /&gt;   string $selection[] = `listTransforms -lights`;&lt;br /&gt;   for($obj in $selection)&lt;br /&gt;     {&lt;br /&gt;         string $shapes[] = `listRelatives -shapes $obj`;&lt;br /&gt;         if ( !`objExists ( $shapes[0] +".Decay" )` )&lt;br /&gt;         {&lt;br /&gt;          addAttr -k true -dv 0 -min 0 -max 3 -at double -ln Decay $shapes[0];&lt;br /&gt;                 connectAttr ( $obj + ".Decay") ( $obj + ".decayRate");&lt;br /&gt;                              }                             &lt;br /&gt;&lt;br /&gt;     setAttr -k true ( $obj + ".dmapFilterSize");&lt;br /&gt;                          setAttr -k true ( $obj + ".dmapResolution");&lt;br /&gt;     }&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;/o:p&gt;&lt;br /&gt;Now we'll make it easier to execute that code when we need to by making a menu on the light editor. While were at it will add the ablity to reselect all the lights.&lt;br /&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;The final code:&lt;br /&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;code&gt;&lt;br /&gt;// SCRIPT: ijLightEditor.mel&lt;br /&gt;// AUTHOR: Ian Jones - mel@shrtcww.com&lt;br /&gt;// DATE: July 29, 2005&lt;br /&gt;// Version: 1.0&lt;br /&gt;//&lt;br /&gt;// DESCRIPTION: Creates a simply mass light editor&lt;br /&gt;//&lt;br /&gt;//&lt;br /&gt;global proc ijLightEditor()&lt;br /&gt;{&lt;br /&gt;string $window = `window -title "LightEditor by Ian Jones" -menuBar true             -menuBarVisible true -widthHeight 600 300`;&lt;br /&gt;&lt;br /&gt;      menu -label "Tools" -tearOff false;&lt;br /&gt; menuItem -label "Re-select Lights" -command ("select -r `listTransforms -lights`");&lt;br /&gt;      menuItem -label "Show Light Attributes" -command ("showLightAttributes");&lt;br /&gt;&lt;br /&gt;      paneLayout;&lt;br /&gt;&lt;br /&gt;      select -r `listTransforms -lights`;&lt;br /&gt;      string $activeList = `selectionConnection -activeList`;&lt;br /&gt;&lt;br /&gt; spreadSheetEditor -mainListConnection $activeList -ln true -showShapes true ;&lt;br /&gt;&lt;br /&gt;      showWindow $window;&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;global proc showLightAttributes()&lt;br /&gt;{&lt;br /&gt;  string $selection[] = `listTransforms -lights`;&lt;br /&gt;     for($obj in $selection)&lt;br /&gt;                {&lt;br /&gt;              string $shapes[] = `listRelatives -shapes $obj`;&lt;br /&gt;                                   if ( !`objExists ( $shapes[0] +".Decay" )` )&lt;br /&gt;                                  {&lt;br /&gt;          addAttr -k true -dv 0 -min 0 -max 3 -at double -ln Decay $shapes[0];&lt;br /&gt;          connectAttr ( $obj + ".Decay") ( $obj + ".decayRate");&lt;br /&gt;             }&lt;br /&gt; &lt;br /&gt;         setAttr -k true ( $obj + ".dmapFilterSize");&lt;br /&gt;                               setAttr -k true ( $obj + ".dmapResolution");&lt;br /&gt;     }&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10546302-112269163670760671?l=melgeek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://melgeek.blogspot.com/feeds/112269163670760671/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10546302&amp;postID=112269163670760671&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10546302/posts/default/112269163670760671'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10546302/posts/default/112269163670760671'/><link rel='alternate' type='text/html' href='http://melgeek.blogspot.com/2005/07/quick-and-dirty-light-editor.html' title='Quick and dirty light editor'/><author><name>IanJones</name><uri>http://www.blogger.com/profile/12516012514167651916</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10546302.post-112241665770951365</id><published>2005-07-26T15:24:00.000-07:00</published><updated>2005-07-26T22:13:02.290-07:00</updated><title type='text'>Zero fun!</title><content type='html'>&lt;a href="http://melgeek.blogspot.com/"&gt;melGeek&lt;/a&gt;&lt;br /&gt;Howdy everyone out there in mel land!  Just testing this out for my first blog, but here's a little &lt;strong&gt;workflow&lt;/strong&gt; tip that makes life that much easier. &lt;br /&gt;&lt;br /&gt;So, everyone knows the w, e, r shortcuts for your transform tools, right? &lt;br /&gt;&lt;br /&gt;shift + w/e/r sets keys on trans/rot/scale specifically&lt;br /&gt;left mouse click + w/e/r gives you a nice marking menu&lt;br /&gt;&lt;br /&gt;Following that theme, I've made ctrl + w/e a hotkey for zeroing out selected objects' translates/rotates using the following code:&lt;br /&gt;&lt;br /&gt;string $sel[] = `ls -sl`;&lt;br /&gt;&lt;br /&gt;for ($obj in $sel){&lt;br /&gt;   string $objAttr[] = `listAttr -k -u -st "translate*" $obj`;&lt;br /&gt;   for ($attr in $objAttr){&lt;br /&gt; setAttr ($obj + "." + $attr) 0;&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;The nice thing about this, is that if one of your selected objects has a locked attribute, the zero out script will not halt. Definitely useful when animating, and even more useful during the setup process. Just think of all the facial controls (a la osipa) that you need to handle when facial animating... ahh.&lt;br /&gt;&lt;br /&gt;To make the script zero out rotates, replace translate with rotate (same for scale, but change 0 to 1 as well).&lt;br /&gt;&lt;br /&gt;I'm such a workflow nut.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10546302-112241665770951365?l=melgeek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://melgeek.blogspot.com/feeds/112241665770951365/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10546302&amp;postID=112241665770951365&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10546302/posts/default/112241665770951365'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10546302/posts/default/112241665770951365'/><link rel='alternate' type='text/html' href='http://melgeek.blogspot.com/2005/07/zero-fun.html' title='Zero fun!'/><author><name>josh</name><uri>http://www.blogger.com/profile/14529969536710354622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10546302.post-112235393067646887</id><published>2005-07-25T21:53:00.000-07:00</published><updated>2005-07-25T22:12:16.396-07:00</updated><title type='text'>melGeek(s)</title><content type='html'>We have 2 new contributors to help keep melGeek up and running.  Please welcome Josh Carey of the &lt;a href="http://www.theanimationfarm.com"&gt;Animation Farm&lt;/a&gt;, and &lt;a href="http://www.shrtcww.com/"&gt;Ian Jones&lt;/a&gt;.  I am looking forward to more posts and general mel goodness.&lt;br /&gt;&lt;br /&gt;huzzah!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10546302-112235393067646887?l=melgeek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://melgeek.blogspot.com/feeds/112235393067646887/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10546302&amp;postID=112235393067646887&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10546302/posts/default/112235393067646887'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10546302/posts/default/112235393067646887'/><link rel='alternate' type='text/html' href='http://melgeek.blogspot.com/2005/07/melgeeks.html' title='melGeek(s)'/><author><name>Chad</name><uri>http://www.blogger.com/profile/06513380975140487678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://www.streamload.com/smap2d/pics/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10546302.post-112195855783923149</id><published>2005-07-21T08:06:00.000-07:00</published><updated>2005-07-21T08:09:17.843-07:00</updated><title type='text'>Call for contributers</title><content type='html'>Is anyone interested in contributing to the site?  Let me know by commenting on this post and I'll hook you up with the info.  Time is not on my side of late, and I want to keep this Blog alive.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10546302-112195855783923149?l=melgeek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://melgeek.blogspot.com/feeds/112195855783923149/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10546302&amp;postID=112195855783923149&amp;isPopup=true' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10546302/posts/default/112195855783923149'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10546302/posts/default/112195855783923149'/><link rel='alternate' type='text/html' href='http://melgeek.blogspot.com/2005/07/call-for-contributers.html' title='Call for contributers'/><author><name>Chad</name><uri>http://www.blogger.com/profile/06513380975140487678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://www.streamload.com/smap2d/pics/me.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10546302.post-111569872303609738</id><published>2005-05-09T20:50:00.000-07:00</published><updated>2005-05-09T21:22:18.656-07:00</updated><title type='text'>Playblasting alternative</title><content type='html'>Hey there blogophiles.&lt;br /&gt;&lt;br /&gt;The topic of using the fbx for quicktime plugin for previewing animations instead of playblasting was discussed over at &lt;a href="http://cgchar.toonstruck.com/forum/index.php?s=9c037ccbe859feae7388d4218e71b9a9&amp;amp;act=ST&amp;amp;f=3&amp;amp;t=3724&amp;amp;st=0"&gt;CGCHAR&lt;/a&gt; a bit.&lt;br /&gt;&lt;br /&gt;Now first off, let me tell you what the fbx for quicktime is and point you towards the two plugins you'll need.  Then, and only then will I hook ya'll up with a script that takes care of some of the messy export bits.&lt;br /&gt;&lt;br /&gt;FBX is the Motion Builder file format.  Alias and Kaydara before them are touting the .fbx as the 3D interchange file format.  it takes models textures (maybe lights too ?) from one 3D app to another.  So there is a plugin to generate a .fbx from/to Maya.  This basically lets you model, joint and bind your puppet and then export for motion builder for mocap and/or character animation.&lt;br /&gt;&lt;br /&gt;Anyhow a while back the good folks who make Motion Builder put out a FBX for Quicktime plugin.  You load your .fbx file in QT and playback in real time.  But wait there is more ... You can pan, zoom and orbit your animation - right there in QT.  This is a great thing for games as you can't be playing your action to a stationary camera for in game stuff.&lt;br /&gt;&lt;br /&gt;So here is the link to get the plugins.  You'll need to register, but its free.  &lt;a href="http://www.alias.com/eng/products-services/fbx/download.shtml"&gt;FBX plugins&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;So now for the bad news, the fbx for QT plugin only allows the playback of animation on joints.  It doesnt support contraints.  So for you character animator's out there, you'll need to bake the animation from your control rigs to joints.  You can use the bake simulation command to do so.&lt;br /&gt;&lt;br /&gt;Using the everpopular and pretty cool rig &lt;a href="http://lichiman.aniguild.com/?s=lowman"&gt; LowMan&lt;br /&gt; &lt;/a&gt; as a test bed, I wrote a little script that does the following. &lt;br /&gt;&lt;br /&gt;Saves your file (Maya .mb)&lt;br /&gt;Bakes all joints&lt;br /&gt;exports a .fbx to a subfolder in the currenlty loaded scene's location&lt;br /&gt;reopens your saved Maya .mb&lt;br /&gt;&lt;br /&gt;I added the save and reopen the .mb steps so you wouldn't have to pick all the joints and delete the channels that the bake command creates.  Plus its good to save a lot.&lt;br /&gt;&lt;br /&gt;Here's the code, let me know what you think.  I'd like to test it out on other characters, and see if I can get blendshaps in too.  But, Alas, time is not on my side.  Do let me know if you come accross something, I may try and squeeze some time into this if the demand is out there.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;//cmPlayblastFBX.mel&lt;br /&gt;//------------------------------------------//&lt;br /&gt;//------------------------------------------//&lt;br /&gt;// SCRIPT: cmPlayblastFBX.mel&lt;br /&gt;// AUTHOR: Chad Moore - smap2d@gmail.com&lt;br /&gt;// DATE: May 09, 2005&lt;br /&gt;// Version: 1.0&lt;br /&gt;//&lt;br /&gt;// DESCRIPTION: Preps a .mb file for viewing in FBX/Quicktime&lt;br /&gt;//   &lt;br /&gt;//&lt;br /&gt;// USAGE:  1. When you are ready to preview in &lt;br /&gt;//quicktime using .fbx, run the script.&lt;br /&gt;//   &lt;br /&gt;//&lt;br /&gt;// NOTES:  1. The script will fore a save operation on your .mb file, export the .fbx and then reopen you .mb file, &lt;br /&gt;//        so you do not have to worry about the keyframes on the joints the bake command creates.&lt;br /&gt;//      2. The script will write the .fbx to a folder called "exportedFBX" under the directory of the current scene&lt;br /&gt;//       &lt;br /&gt;//&lt;br /&gt;// LIMITATIONS: 1. You must have the fbx plug-in for proper export out of Maya &lt;br /&gt;//   &lt;br /&gt;//      &lt;br /&gt;//-----------------------------------------//&lt;br /&gt;//-----------------------------------------//&lt;br /&gt;&lt;br /&gt;global proc cmPlayblastFBX()&lt;br /&gt;&lt;br /&gt;{&lt;br /&gt;string $sourceFile = `file -q -sn`;&lt;br /&gt;string $sourcePath = dirname($sourceFile);&lt;br /&gt;string $sourcePath = ($sourcePath + "/");&lt;br /&gt;string $fbxFolder = "exportedFBX/";&lt;br /&gt;string $FBXfile = basename($sourceFile, ".mb");&lt;br /&gt;string $destPath = ($sourcePath + $fbxFolder);&lt;br /&gt;&lt;br /&gt;sysFile -makeDir $destPath;&lt;br /&gt;&lt;br /&gt;file -s -f;&lt;br /&gt;&lt;br /&gt;string $allJoints[] = `ls -type joint`;&lt;br /&gt;int $startTime = `playbackOptions -q -ast`;&lt;br /&gt;int $endTime = `playbackOptions -q -aet`;&lt;br /&gt;&lt;br /&gt;bakeResults &lt;br /&gt;-simulation true &lt;br /&gt;-t ($startTime + ":" + $endTime)&lt;br /&gt;-sampleBy 1 &lt;br /&gt;-disableImplicitControl true &lt;br /&gt;-preserveOutsideKeys true &lt;br /&gt;-sparseAnimCurveBake false &lt;br /&gt;-controlPoints false &lt;br /&gt;-shape true &lt;br /&gt;$allJoints&lt;br /&gt;;&lt;br /&gt;&lt;br /&gt;FBXExportShowUI -v 0;&lt;br /&gt;FBXExport -f ($destPath + $FBXfile) -caller "FBXMayaTranslator"; &lt;br /&gt;&lt;br /&gt;file -f -o $sourceFile;&lt;br /&gt;&lt;br /&gt;print ("Done exporting the " + $FBXfile + ".fbx file." + "\n");&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;cmPlayblastFBX;  &lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Oh yeah, I'll go over some of the commands above soon.  They're really great and can be used for an auto save or batch processing script.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10546302-111569872303609738?l=melgeek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://melgeek.blogspot.com/feeds/111569872303609738/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10546302&amp;postID=111569872303609738&amp;isPopup=true' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10546302/posts/default/111569872303609738'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10546302/posts/default/111569872303609738'/><link rel='alternate' type='text/html' href='http://melgeek.blogspot.com/2005/05/playblasting-alternative.html' title='Playblasting alternative'/><author><name>Chad</name><uri>http://www.blogger.com/profile/06513380975140487678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://www.streamload.com/smap2d/pics/me.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10546302.post-111265434396202758</id><published>2005-04-06T21:55:00.000-07:00</published><updated>2005-04-07T11:58:51.106-07:00</updated><title type='text'>George's Pizza Shop</title><content type='html'>Our buddy &lt;a href="http://www.gc3d.mselah.com/"&gt;George&lt;/a&gt; gave me an idea for demoing the next two topics I wanted to bring up.  For loops and the Random Function.  First run this...&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;{&lt;br /&gt;curve -name pizzaCurve -d 3 -p 0 0.0310559 0 -p -4.875776 0.0621118 0 -p -10.093168 0.0621118 0 -p -14.813665 0 0 -p -19.906832 0.0621118 0 -p -20.900621 1.987578 0 -p -19.968944 4.875776 0 -p -18.074534 3.136646 0 -p -17.919255 2.018634 0 -p -14.875776 2.049689 0 -p -10 2 0 -p -5 2 0 -p 0 2 0 -k 0 -k 0 -k 0 -k 1 -k 2 -k 3 -k 4 -k 5 -k 6 -k 7 -k 8 -k 9 -k 10 -k 10 -k 10 ;&lt;br /&gt;revolve -n pizzaGEO -ch 1 -po 0 -rn 0 -ssw 0 -esw 360 -ut 0 -tol 0.01 -degree 3 -s 8 -ulp 1 -ax 0 1 0 "pizzaCurve";&lt;br /&gt;DeleteHistory pizzGEO;&lt;br /&gt;delete pizzaCurve;&lt;br /&gt;&lt;br /&gt;polyCylinder -name pepperoni_geo -r 1 -h 0.25 -sx 8 -sy 1 -sz 1 -ax 0 1 0 -tx 1 -ch 1;&lt;br /&gt;setAttr pepperoni_geo.ty 2.25;&lt;br /&gt;&lt;br /&gt;duplicate -rr; &lt;br /&gt;for ($i=1; $i&lt;50; ++$i) &lt;br /&gt;duplicate -rr -st; &lt;br /&gt;;&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;There isnt anything special about the above code, I just drew a curve and revolved it, made a cylander and duplicated it 49 times.  I did this with echo all commands on and used the important bits from the script editor.&lt;br /&gt;&lt;br /&gt;First lets get random. &lt;br /&gt;&lt;br /&gt;There is a way to setAttr for an object randomly.  Its called the rand command, here is an example.  Make a poly cube and then run this...&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;{&lt;br /&gt;int $random = `rand -10 10`;&lt;br /&gt;setAttr "pCube1.translateX" $random;&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;The rand -10 10 allows you to set the attribute to any value between those two.  Pretty sneaky sis.&lt;br /&gt;&lt;br /&gt;Anyway lets get to the for loop.  Now if you look at the above code theres a nasty little bit of for loopery happening here &lt;code&gt; for ($i=1; $i&lt;50; ++$i) &lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;We address what that means later.  There is a much easier way to do a for loop.  Maya has a &lt;i&gt;for in&lt;/i&gt; loop.  We are going to use that to move about all 50 peperonis randomly.  Heres how it goes.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;{&lt;br /&gt;select -r "pepperoni_*";&lt;br /&gt;string $peps[] = `ls -sl -exactType transform`;&lt;br /&gt;&lt;br /&gt;for ($each in $peps)&lt;br /&gt;      {&lt;br /&gt;           float $randomX = `rand -15 15`;&lt;br /&gt;           float $randomZ = `rand -15 15`;&lt;br /&gt;           &lt;br /&gt;           setAttr ($each + ".tx") $randomX;&lt;br /&gt;           setAttr ($each + ".tz") $randomZ;&lt;br /&gt;      }&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;So the for in loop is pretty sassy, its saying in english "&lt;i&gt;For&lt;/i&gt; each one of you &lt;i&gt;in&lt;/i&gt; ths array... do something".  You can declare the $each variable, although you do not need to.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10546302-111265434396202758?l=melgeek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://melgeek.blogspot.com/feeds/111265434396202758/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10546302&amp;postID=111265434396202758&amp;isPopup=true' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10546302/posts/default/111265434396202758'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10546302/posts/default/111265434396202758'/><link rel='alternate' type='text/html' href='http://melgeek.blogspot.com/2005/04/georges-pizza-shop.html' title='George&apos;s Pizza Shop'/><author><name>Chad</name><uri>http://www.blogger.com/profile/06513380975140487678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://www.streamload.com/smap2d/pics/me.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10546302.post-111155572261843264</id><published>2005-03-22T21:04:00.000-08:00</published><updated>2005-03-22T21:28:42.620-08:00</updated><title type='text'>see what condition your condition is in...</title><content type='html'>Let's talk conditions.  Specifically the if then conditional statement.  &lt;br /&gt;&lt;br /&gt;Lets say you have a joint chain - 5 nodes, named leg, knee, ankle, foot, toe.  You want to automaticaly prefix either "rt" or "lf" depending on where the joint is in space.  Naming coventions are vital, and it so happens that the right side of your puppet should be on the negative X axis.&lt;br /&gt;&lt;br /&gt;So lets say this in english, then in mel...&lt;br /&gt;&lt;br /&gt;If the legs translate X is less than zero, name it right, if not name it left.  Sounds sassy right.  OK mel me on up...&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;{&lt;br /&gt;string $leg = "leg";&lt;br /&gt;string $right = "rt";&lt;br /&gt;string $left = "lf";&lt;br /&gt;float $legPos[] = `xform -ws -q -rp $leg`;&lt;br /&gt;if ($legPos[0] &lt;= 0);&lt;br /&gt;{&lt;br /&gt;rename $leg ($right + "_" + $leg);&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Super cool huh?  Here is how to use the else part.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;{&lt;br /&gt;string $leg = "leg";&lt;br /&gt;string $right = "rt";&lt;br /&gt;string $left = "lf";&lt;br /&gt;float $legPos[] = `xform -ws -q -rp $leg`;&lt;br /&gt;&lt;br /&gt;if ($legPos[0] &lt;= 0)&lt;br /&gt;     {&lt;br /&gt;     rename $leg ($right + "_" + $leg);&lt;br /&gt;     }&lt;br /&gt;else&lt;br /&gt;     {&lt;br /&gt;     rename $leg ($left + "_" + $leg);&lt;br /&gt;     }&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Sweet sassy molassy thats cool!  Can you figure out how to prefix all the joints with a similar set up?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10546302-111155572261843264?l=melgeek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://melgeek.blogspot.com/feeds/111155572261843264/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10546302&amp;postID=111155572261843264&amp;isPopup=true' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10546302/posts/default/111155572261843264'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10546302/posts/default/111155572261843264'/><link rel='alternate' type='text/html' href='http://melgeek.blogspot.com/2005/03/see-what-condition-your-condition-is.html' title='see what condition your condition is in...'/><author><name>Chad</name><uri>http://www.blogger.com/profile/06513380975140487678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://www.streamload.com/smap2d/pics/me.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10546302.post-111111989683713002</id><published>2005-03-17T20:21:00.000-08:00</published><updated>2005-03-17T20:24:56.836-08:00</updated><title type='text'>string $slacker;</title><content type='html'>So if your a fan of reading blogs, you have of course, seen the "Sorry I havent posted in a while" type post.  Here is my MEL version.&lt;br /&gt;&lt;code&gt;&lt;br /&gt;{&lt;br /&gt;int $lastPost = 7;&lt;br /&gt;int $today = 17;&lt;br /&gt;string $sentance = "Sorry I haven't posted in ";&lt;br /&gt;string $days = " days";&lt;br /&gt;&lt;br /&gt;print (($sentance + ($today - $lastPost) + $days));&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;:)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10546302-111111989683713002?l=melgeek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://melgeek.blogspot.com/feeds/111111989683713002/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10546302&amp;postID=111111989683713002&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10546302/posts/default/111111989683713002'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10546302/posts/default/111111989683713002'/><link rel='alternate' type='text/html' href='http://melgeek.blogspot.com/2005/03/string-slacker.html' title='string $slacker;'/><author><name>Chad</name><uri>http://www.blogger.com/profile/06513380975140487678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://www.streamload.com/smap2d/pics/me.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10546302.post-111021960317154483</id><published>2005-03-07T10:15:00.000-08:00</published><updated>2005-03-07T10:21:44.240-08:00</updated><title type='text'>Inspired 3D Advanced Rigging and Deformations</title><content type='html'>&lt;a href="http://www.courseptr.com/ptr_detail.cfm?group=Animation&amp;amp;all=0&amp;amp;bf=0&amp;amp;isbn=1%2D59200%2D116%2D5"&gt;Here's &lt;/a&gt; a link to a new book due out Around April 8th.  Brad and John and I used to work together way back in the day.  Although they are both "nuttier than a bag of weasels", the book should rock.&lt;br /&gt;&lt;br /&gt;;)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10546302-111021960317154483?l=melgeek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://melgeek.blogspot.com/feeds/111021960317154483/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10546302&amp;postID=111021960317154483&amp;isPopup=true' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10546302/posts/default/111021960317154483'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10546302/posts/default/111021960317154483'/><link rel='alternate' type='text/html' href='http://melgeek.blogspot.com/2005/03/inspired-3d-advanced-rigging-and.html' title='Inspired 3D Advanced Rigging and Deformations'/><author><name>Chad</name><uri>http://www.blogger.com/profile/06513380975140487678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://www.streamload.com/smap2d/pics/me.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10546302.post-110965618192528216</id><published>2005-02-28T21:24:00.000-08:00</published><updated>2005-03-02T15:24:45.116-08:00</updated><title type='text'>lets get practical, practical, I wanna get practical</title><content type='html'>OK so lets use some commands and tricks that you'll actually need in the throws of production.  Getting and setting attributes is key to finding out information, and setting values.&lt;br /&gt;&lt;br /&gt;First make a cube and name it "cube".  Move it about randomly with the move tools.&lt;br /&gt;Run this...&lt;br /&gt;&lt;code&gt;&lt;br /&gt;{&lt;br /&gt;float $myPos = `getAttr cube.ty`;&lt;br /&gt;print $myPos;&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;the command getAttr retrieves the value for the attribute you specify.  You can store this value in a variable and do cool things with it.  Now try this.&lt;br /&gt;&lt;code&gt;&lt;br /&gt;{&lt;br /&gt;float $myPos = `getAttr cube.ty`;&lt;br /&gt;setAttr cube.ty ($myPos + 5);&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;So there you have it, getting and setting values is the bees knees.  One of the great tricks of the Maya masters is getting the world space values for an object.  This is handy because if you getAttr for an object nested in a hierarchy, you'll get the attr in local coordinate space (refrencing the parent).&lt;br /&gt;&lt;br /&gt;So here's the trick, you have to use the xform command and specify the world space flag.  Something like this...&lt;br /&gt;&lt;code&gt;&lt;br /&gt;{&lt;br /&gt;float $myPos[] = `xform -worldSpace -query -translation cube`;&lt;br /&gt;print $myPos;&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;That should return three floats translate X, Y and Z.  One last thing to keep in mind, if your trying that on an object that has frozen transformations (and please do freeze transforms whenever you can, everyone likes a nice clean scene. Ahhhh refreshing).&lt;br /&gt;&lt;br /&gt;I digress.  If you query the world space of an object with frozen xforms, you'll get 0's for the return values, since the transfroms are set to 0.  You need to specify the rotate pivot, this flag tells you the world space coridinates for the pivot point, assuring the exact placement in 3D space. Like this...&lt;br /&gt;&lt;code&gt;&lt;br /&gt;{&lt;br /&gt;float $myPos[] = `xform -ws -q -rp cube`;&lt;br /&gt;print $myPos;&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;Weird, I know.  But that's the way the cookie crumbles sometimes.  I gotta give a shout out to &lt;a href="http://www.macaronikazoo.com/"&gt;-: m a c a r o n i K a z o o :-&lt;/a&gt; for the help with the roation pivot trick over at the&lt;a href="http://jonhandhisdog.com/forum/index.php?showtopic=1258&amp;amp;hl=worldspace"&gt; Production Log for the Computer Graphics Animated Short Film: Jonh and His Dog -&gt; stupid newbie world space query&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Booya.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10546302-110965618192528216?l=melgeek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://melgeek.blogspot.com/feeds/110965618192528216/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10546302&amp;postID=110965618192528216&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10546302/posts/default/110965618192528216'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10546302/posts/default/110965618192528216'/><link rel='alternate' type='text/html' href='http://melgeek.blogspot.com/2005/02/lets-get-practical-practical-i-wanna.html' title='lets get practical, practical, I wanna get practical'/><author><name>Chad</name><uri>http://www.blogger.com/profile/06513380975140487678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://www.streamload.com/smap2d/pics/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10546302.post-110810218297796367</id><published>2005-02-10T21:41:00.000-08:00</published><updated>2005-03-02T20:51:13.706-08:00</updated><title type='text'>comments, arrays and tokenize</title><content type='html'>I forgot to mention comments.  You can easily provide feedback and notes to the users of your scripts (including yourself) by adding comments.  Like this...&lt;br /&gt;&lt;code&gt;&lt;br /&gt;//this is a comment&lt;br /&gt;int $firstNum = 1;&lt;br /&gt;int $secondNum = 2;&lt;br /&gt;//lets add the two variables&lt;br /&gt;print ($firstNum + $secondNum + "\n");&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;OK thats pretty easy, sorry I didn't mention it earilier.  &lt;br /&gt;&lt;br /&gt;A quick note on arrays.  An array is a varible that contains more than one peice of information.  Like this...&lt;br /&gt;&lt;code&gt;&lt;br /&gt;int $myNumbers[] = {5, 7, 9};&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;Of course you can affect all or just parts of the array.  You'll need to specify which part...&lt;br /&gt;&lt;code&gt;&lt;br /&gt;{&lt;br /&gt;int $myNumbers[] = {5, 7, 9};&lt;br /&gt;print ("The first number in the array is " + $myNumbers[0] + "\n");&lt;br /&gt;print ("The second number in the array is " + $myNumbers[1] + "\n");&lt;br /&gt;print ("The third number in the array is " + $myNumbers[2] + "\n");&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;Keep in mind the first item is labeled 0, not 1.  I hope that makes sense for you.  Now on to "tokenize".&lt;br /&gt;&lt;br /&gt;Tokenize is a function that takes a string and breaks it into an array via a character you specify.  Lets say you have this...&lt;br /&gt;&lt;code&gt;&lt;br /&gt;string $myString = "lf_Arm_JNT";&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;As in "Left arm joint".  You simply want to rename it to rt_Arm_JNT.  Here is how tokenize can help.&lt;br /&gt;&lt;code&gt;&lt;br /&gt;{&lt;br /&gt;string $myString = "lf_Arm_JNT";&lt;br /&gt;string $right = "rt";&lt;br /&gt;string $newString;&lt;br /&gt;&lt;br /&gt;//we'll need another string to store the parts of the first, hang in there I'll show ya&lt;br /&gt;string $myToks[];&lt;br /&gt;&lt;br /&gt;tokenize($myString, "_", $myToks);&lt;br /&gt;string $newString =  ($right + "_" + $myToks[1] + "_" + $myToks[2] + "\n");&lt;br /&gt;print ($newString + "\n");&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;So tokenize reads like this in english...&lt;br /&gt;&lt;br /&gt;tokenize(this string, by this character, and store all the parts in this other string)&lt;br /&gt;&lt;br /&gt;pretty cool beavis.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10546302-110810218297796367?l=melgeek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://melgeek.blogspot.com/feeds/110810218297796367/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10546302&amp;postID=110810218297796367&amp;isPopup=true' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10546302/posts/default/110810218297796367'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10546302/posts/default/110810218297796367'/><link rel='alternate' type='text/html' href='http://melgeek.blogspot.com/2005/02/comments-arrays-and-tokenize.html' title='comments, arrays and tokenize'/><author><name>Chad</name><uri>http://www.blogger.com/profile/06513380975140487678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://www.streamload.com/smap2d/pics/me.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10546302.post-110766816761006316</id><published>2005-02-05T21:29:00.000-08:00</published><updated>2005-03-02T20:53:00.566-08:00</updated><title type='text'>Scope</title><content type='html'>Variables have Scope.  This determines where the variable can hold data.  If you don't manage scope (dont worry there is an easy way to do so) the variables you declare will live as long as Maya is open.  This may mean that you'll have to quit Maya to regain your variables.&lt;br /&gt;&lt;br /&gt;Anyhow, here is what you do...&lt;br /&gt;&lt;code&gt;&lt;br /&gt;{&lt;br /&gt;int $myInt = 5;&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;The "Curly Braces" constrain variable $myInt to just that space.  As we progress you'll see the importance of this workflow.&lt;br /&gt;&lt;br /&gt;What is the real name of the Curly Braces?  Is calling them Curly braces acceptable?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10546302-110766816761006316?l=melgeek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://melgeek.blogspot.com/feeds/110766816761006316/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10546302&amp;postID=110766816761006316&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10546302/posts/default/110766816761006316'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10546302/posts/default/110766816761006316'/><link rel='alternate' type='text/html' href='http://melgeek.blogspot.com/2005/02/scope.html' title='Scope'/><author><name>Chad</name><uri>http://www.blogger.com/profile/06513380975140487678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://www.streamload.com/smap2d/pics/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10546302.post-110749264763504869</id><published>2005-02-03T20:23:00.000-08:00</published><updated>2005-03-02T20:54:13.776-08:00</updated><title type='text'>variables</title><content type='html'>Lets begin with some info on variables.  Varibles come in 3 main types (to start with).  they are int, float and string.  Int's are whole numbers (4, 238, 90) where floats are decimals (8.33, 9382.22, 5.5).  Strings are text (chad, mel rules).  &lt;br /&gt;&lt;br /&gt;Variables are placeholders, they store certain types of information as described above.  You must first declare the variable, something that looks like this...&lt;br /&gt;&lt;code&gt;&lt;br /&gt;int $myNum;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;This means that Maya now knows that there is a variable called $myNum.  It has no value as of yet.  You'll need to set it equal to something. Like this...&lt;br /&gt;&lt;code&gt;&lt;br /&gt;int $myNum = 5;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;Now Maya nows that $myNum is equal to 5.  You can declare, and set a value at the same time by just using the format  above.&lt;br /&gt;&lt;br /&gt;Here are smaple variable declartions for the three types of variables mentioned above...&lt;br /&gt;&lt;code&gt;&lt;br /&gt;int $myNum = 37;&lt;br /&gt;&lt;br /&gt;float $myNum = 4.3;&lt;br /&gt;&lt;br /&gt;string $myString = "Chads string";&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;If you type any of these (or your own exaples) in the command line or script editor, Maya should return the result.  Go ahead try it.  I dare you... just kidding.&lt;br /&gt;&lt;br /&gt;So thats great but what does it all mean?  Well lets do some math (yeah! math!!).  Put this in your script editor and smoke it.&lt;br /&gt;&lt;code&gt;&lt;br /&gt;int $firstNum = 2;&lt;br /&gt;int $secondNum = 3;&lt;br /&gt;int $mySum = ($firstNum + $secondNum);&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;A note on the parenthsis... When you are putting two peices of information together, MEL needs you to put them in parenthesis.  You'll use this all the time, more about it as we go.  We're getting ahead of ourselves.&lt;br /&gt;&lt;br /&gt;Let's get "all crazy like" with a string and an int...&lt;br /&gt;&lt;code&gt;&lt;br /&gt;int $myNum = 5;&lt;br /&gt;string $myString = "The number is ";&lt;br /&gt;print ($myString + $myNum);&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;This should return "The number is 5".  Just like when we were adding, we need the parenthesis for the print statement.  You'll use prints to provide feedback to users, and also for testing when you are creating or debugging scripts.&lt;br /&gt;&lt;br /&gt;Give this a whirl, and I'll post soon again... promise.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10546302-110749264763504869?l=melgeek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://melgeek.blogspot.com/feeds/110749264763504869/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10546302&amp;postID=110749264763504869&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10546302/posts/default/110749264763504869'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10546302/posts/default/110749264763504869'/><link rel='alternate' type='text/html' href='http://melgeek.blogspot.com/2005/02/variables.html' title='variables'/><author><name>Chad</name><uri>http://www.blogger.com/profile/06513380975140487678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://www.streamload.com/smap2d/pics/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10546302.post-110740686613415690</id><published>2005-02-02T20:48:00.000-08:00</published><updated>2005-03-02T20:54:58.260-08:00</updated><title type='text'>Links...</title><content type='html'>Links are up.  If you know any others let me know.  Also the best resource you have available is the "MEL command reference" from the help section.  By the way, if you need help on a command (xform for example) you can type from the script editor...&lt;br /&gt;&lt;code&gt;&lt;br /&gt;help xform;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;This prints the help file in the top of the script editor, to launch a web browser use this flag&lt;br /&gt;&lt;code&gt;&lt;br /&gt;help -doc xform;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;About the links...&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.ewertb.com/maya/"&gt;Brian Ewert&lt;/a&gt;-&lt;br /&gt; has over 100 MEL tips tricks and goodies.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.nerfsafetysquid.com/"&gt;nerfsafetysquid.com&lt;/a&gt;-&lt;br /&gt; Dan Neufeldt has some great how to's and scripts for download.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.highend3d.com/"&gt;Highend3d.com&lt;/a&gt;-&lt;br /&gt; THE web resource for MEL scripts and Maya tutorials.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://creaturetd.com/forums/portal.php"&gt;Creature TD&lt;/a&gt;-&lt;br /&gt; Joe Harkins Character Rigging Forums.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://jonhandhisdog.com/myIBPortal/"&gt;Jason Schleifer&lt;/a&gt;- &lt;br /&gt;Super MEL Ninja.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.melscripting.com/forums/"&gt;melscripting.com forums&lt;/a&gt;- &lt;br /&gt;Forum by the authors of "MEL scripting for Maya Animators".  &lt;br /&gt;&lt;br /&gt;The books link to amazon is broken right now, check it later?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10546302-110740686613415690?l=melgeek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://melgeek.blogspot.com/feeds/110740686613415690/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10546302&amp;postID=110740686613415690&amp;isPopup=true' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10546302/posts/default/110740686613415690'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10546302/posts/default/110740686613415690'/><link rel='alternate' type='text/html' href='http://melgeek.blogspot.com/2005/02/links.html' title='Links...'/><author><name>Chad</name><uri>http://www.blogger.com/profile/06513380975140487678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://www.streamload.com/smap2d/pics/me.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10546302.post-110740473434273122</id><published>2005-02-02T20:18:00.000-08:00</published><updated>2005-02-02T20:25:34.343-08:00</updated><title type='text'>Script editor usage...</title><content type='html'>OK,&lt;br /&gt;&lt;br /&gt;Script Editor usage is covered in many books and tutorials now.  So I urge you to google for some tutorials on it.  Its my intention to post links on the right hand side to other MEL sites and forums, and I'll get to it soon.  I promise.&lt;br /&gt;&lt;br /&gt;Anyhow, here is what you can start looking into now...&lt;br /&gt;&lt;br /&gt;1. Echo all commands.&lt;br /&gt;2. MMB drag text out of script editor to shelf for button creation.&lt;br /&gt;&lt;br /&gt;Armed with those two tools you are on the path to total world domination!   &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10546302-110740473434273122?l=melgeek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://melgeek.blogspot.com/feeds/110740473434273122/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10546302&amp;postID=110740473434273122&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10546302/posts/default/110740473434273122'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10546302/posts/default/110740473434273122'/><link rel='alternate' type='text/html' href='http://melgeek.blogspot.com/2005/02/script-editor-usage.html' title='Script editor usage...'/><author><name>Chad</name><uri>http://www.blogger.com/profile/06513380975140487678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://www.streamload.com/smap2d/pics/me.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10546302.post-110732030982247782</id><published>2005-02-01T20:51:00.000-08:00</published><updated>2005-02-01T21:00:02.250-08:00</updated><title type='text'>An introduction</title><content type='html'>So, I figure I can make this into a production log for my MEL self education.  A bit about me... I have been using Maya for years, and consider myself to be fairly well versed with MEL.  However I have set a goal for myself, that goal is to be a MEL guru.&lt;br /&gt;&lt;br /&gt;So Thats me, and my goal.  I'll be posting real soon with some basics to get other people started, and solidify them in my head.  Then we will get all funky like. &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10546302-110732030982247782?l=melgeek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://melgeek.blogspot.com/feeds/110732030982247782/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10546302&amp;postID=110732030982247782&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10546302/posts/default/110732030982247782'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10546302/posts/default/110732030982247782'/><link rel='alternate' type='text/html' href='http://melgeek.blogspot.com/2005/02/introduction.html' title='An introduction'/><author><name>Chad</name><uri>http://www.blogger.com/profile/06513380975140487678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://www.streamload.com/smap2d/pics/me.jpg'/></author><thr:total>0</thr:total></entry></feed>
