Tuesday, March 31, 2009

MEL: Print Random Quotes

Here is a script you can put into a shelf button to print out a random quote for you. I filled mine with animation quotes, so during those times when I'm stuck and waiting for an idea I can click through it a bunch of times and get some inspiration.

// Here we create the array to hold all the quotes, then add them below.
string $animation_quotes[] = {
"Here is a quote, notice the comma after the quotation marks.",
"Another quotes is right here.",
"'I can add things like this as well to put the author' ~Jay",
//Note, this last entry does NOT have a comma after the quote.
//If you get a syntax error, check for that sometimes it's easy to forget
"Be creative, put cool stuff in here!"

//Declare this as an integer, because rand returns a float
int $quote_choice;

//Get the size of your quotes array
$animation_quotes_size = `size($animation_quotes)`;

//Get a random quote
$quote_choice = `rand 0 $animation_quotes_size`;

//Print it out
print $animation_quotes[$quote_choice];

We've got one set up with tons and tons of animation quotes and it works well. Be sure to load it up with stuff so you don't get bored clicking through it. You'll be surprised how often you click it.

Edit: A related article involving printing your current selection as well as printing the size of the selection.


Monday, March 30, 2009

MEL Script: Adjust Background Color in Maya

Ever wanted a button to toggle the background color of your viewport(s) in Maya? We needed one the other day to toggle to white for playblasts/reviews and back to grey for working normally.

int $toggled_color ;
if($toggled_color == 0)
displayRGBColor "background" 1. 1. 1. ;
$toggled_color = 1 ;
displayRGBColor "background" 0.688 0.688 0.688 ;
$toggled_color = 0 ;

Middle mouse drag this into your shelf to make a button for it. It's currently set at White and Grey. You'll need to know the RGB values to change the colors.

Also check this out: http://www.scriptswell.net/2010/05/mel-jgviewportbackgroundcolor.html

Friday, March 27, 2009

MEL: Create A Directory With Mel

To create a directory with MEL, use the following:

sysFile -makeDir $path_here ;

It took me 3 or 4 search strings to find how to do this today. All of the things I intuitively searched for brought up the wrong answers, so I hope this helps someone someday.

Thursday, March 26, 2009

MAXScript: Floating Slider Time

This is something we whipped up at work a few months ago for using in Max. I've never been a fan of the default Max time configuration setup so we made this one. It lets you set the current frame, and move the start and end frames with the spinners or by typing them in.

fn floatingTime =

if (theTimeRollout != undefined)
then (destroydialog theTimeRollout)

rollout theTimeRollout "Floating Slider Time" width:258 height:25
spinner theStartFrame "Start: " pos:[22,4] width:60 range:[-100,50000,1] type:#integer
edittext theTimeInput "Go To:" pos:[89,4] width:80
spinner theEndFrame "End: " pos:[193,4] width:60 range:[-100,50000,1] type:#integer

on theTimeRollout open do
theTimeInput.text = ((sliderTime as integer) / ticksperframe) as string
theStartFrame.value = (animationRange.start as integer / ticksperframe)
theEndFrame.value = (animationRange.end as integer / ticksperframe)
on theTimeInput entered x do
slidertime = x as integer
on theStartFrame changed x do
if (x < animationrange =" interval" value =" (animationRange.end" animationrange =" interval"> animationrange.start)
animationRange = interval animationrange.start x
theEndFrame.value = (animationRange.start as integer / ticksperframe) + 1
animationRange = interval animationrange.start theEndFrame.value

)createDialog theTimeRollout style:#(#style_toolwindow, #style_sysmenu)

This will create your function, then you can call it either with a button, or by typing "floatingTime()"

Wednesday, March 25, 2009

MEL: Current Scene File Name

Similar to the post below, today it took more than a minute or two to find this, which to me makes it warrant a post. This is useful for incremental save scripts, or anything else you may use it for.

To get the current scene file's full name:

`file -q -sn`


string $currentScenePath = `file -q -sn` ;

MEL: Windows Username/Login

Today I was searching for a way to get the windows environment username/login with MEL. I was surprised that it took a little longer than normal to find it, so I figured I'd post it and hope it finds it's way into some searches.

string $localUser = `getenv userName` ;

Now go and make some tools for those local users!

Enter ScriptSwell

Every once in awhile I write something cool and useful. The usual (not-as-cool-and-useful) stuff would be a line of code here and there to help out whatever we're doing at work, a couple of lines at home to speed along some process that is slowing me down, or some random expressions to connect something to something else that will never be useful again to anyone. Every once in awhile though...something awesome comes out. Something that after completion I can sit back and say, "this thing rocks." I hope to post said cool and useful things here. There should be a healthy mixture of Maxscript, Python, and MEL scripts and tools. A balanced diet for any technical artist or script-savvy animator.

Scripting Topics

MEL (41) Maya (39) Scripting (32) Scripts (21) programming (14) Free Mel Scripts (8) MaxScript (7) Coding (6) Rigging (5) tutorial (5) 3ds Max (4) Python (4) Tricks (4) faceware (4) image metrics (4) Learn (3) Namespace (3) Namespacing (3) animation (3) facial (3) webinar (3) Code (2) GDC (2) Game Developers Conference (2) Multiple Namespaces (2) Print Selected Objects (2) Recursive (2) Removing Namespace (2) Return (2) Set Driven Keys (2) TOkenize (2) Tips (2) Toggle Background Color with MEL (2) animation tools (2) animators resource (2) deformers (2) learning (2) maya tools (2) mesh (2) modeling (2) nodes (2) procedure (2) script swell (2) transforms (2) Animschool (1) Attribute (1) Background Color (1) Beer (1) Blur (1) Character Setup (1) Check if an object exists (1) Class (1) Command Line (1) Constraints (1) Create SDK (1) Create a directory with mel (1) Data (1) Export (1) FilterString (1) Fix (1) Floating Slider Time (1) Functions (1) Get Maya Version MEL (1) Get Parent (1) Google (1) Holiday (1) How To Write To A Text File (1) Import (1) Incremental Save (1) Index (1) Joint Chain (1) Make Set Driven Keys (1) Maya Version (1) Modules (1) Objects (1) Orient Constraint (1) PYMEL (1) Parent (1) Parent Constraint (1) Point Constraint (1) Position (1) Print (1) Print Current Selection (1) Print Random Quotes (1) Print Selection (1) Print Vertices (1) Progress Bar (1) Progress Window (1) PyQT (1) Removing Spaces From Names (1) Scene File Name (1) Select Connections (1) Select Outgoing Nodes (1) Split Bones (1) Split Joints (1) St. Patrick's Day (1) String Array (1) System (1) Transfer UVs (1) Viewport (1) White Space (1) Windows Username (1) Zero Out Attributes (1) animButtonState (1) arrays (1) articles (1) auto key (1) better (1) blendshapes (1) break (1) confirm dialog (1) continue (1) convention (1) e3 (1) efficiency (1) error (1) eval (1) executable (1) fclose (1) fopen (1) fprint (1) games (1) improving (1) infinite loop (1) joints (1) listHistory (1) listRelatives (1) logic (1) loops (1) milestone (1) nodeType (1) objExists (1) recursion (1) rotates (1) rotations (1) schools (1) sculpting (1) setAttr (1) shout outs (1) source (1) source a script with a variable (1) speed (1) tech-artists.org (1) translates (1) video (1) warning (1) world matrix (1) worldMatrix (1)
Script Swell - Blogged