VFXWages Python Script

Find Out What Your Friends Are Making, Then Be Glum >:(

 
Here’s a handy little script you can run in Maya script editor to see a list of CG jobs with corresponding salaries. Obviously, this is kind of a joke because of some of the figures, but it’s still a pretty cool example of using urllib2 module.
 

VFXWages is a global database of hourly monetary rates of people in the film and television visual effects, animation, motion graphics, and gaming industry. It allows you to see where you rate among the rest of the artists in your experience, occupation and location. Have you ever wondered if you’re earning too little? Pondering what a similar artist in your position is making on the other side of the world? Using our Wages system, you can graphically compare wages and salaries around the world. -via VFXWages.com

Run this from Maya’s script editor, or whatever. Shared by my colleague Mike. It’s kinda neat but sometimes you wonder if this information is real! $100/hr for Anim Sup or Vfx Sup?!

Continue reading

 

Python in Maya: Recursively Add Directories to PYTHONPATH

pythonHere’s a script I wrote for adding sub-directories of paths I’ve already added to the sys.path in my userSetup.py.

I’m just starting to code seriously in python and it seems like just getting everything to work right in Maya without a lot of fuss is pretty daunting for a beginner with little outside help except for the internet and a couple books.

As my Script Repo develops over time, I don’t want to have to keep worrying about PYTHONPATH having everything in it so I tell it where the root directories are and this script does the rest. ;)

Hope somebody finds this helpful!

import sys
from os import walk
path = ja_python_paths
for p in path:
 for root, dirs, files in walk(p):
 if p is not root:
 sys.path.append(root)

#You can add an optional print statement at the end
#to see what it's doing...

if p is not root:
 print 'adding', root, 'to sys.path'
 sys.path.append(root)
 

PyQt in Maya

qtLately, I’ve been working on learning how to develop PyQt UI tools with Maya. Since I work with Maya 2009 daily, I have had to do quite a lot of digging to find out how things were implemented smoothly for it to work with that version. Hopefully, this makes it easier to understand and appreciate it in 2011 and *gasp* :-O 2012, where PyQt is fully integrated! Anyway, if you are in the same predicament, then I should be able to help, send comments and emails my way.

 

Maya.env Configuration of Variables Using userSetup.mel and userSetup.py

maya2011_thumbuserSetup.mel, userSetup.py Tutorial Part 2: Theory and Practical Use

For the Advanced user:

     

Delving into what how userSetup files work can be tedious.  That’s why i’m posting how to configure Maya properly for those people who are perpetually scratching their heads, trying to figure out what way is better or why things aren’t working out like they planned.  Check out my previous post on userSetup and see if you are pondering things after reading all of that.  Of course, i’ve learned some things about the process too since then because my startup process is a lot more complicated than sourcing a couple of tools.  I’m setting up whole programming environments!  Learning Maya startup configuration has been a process of trial and error, searching and finding or sometimes not finding.  Here’s the beef.  Maya loads script paths in a specific order.  Once you learn that order, the daunting task of setting configurations for a whole studio is as simple as pie.  I work at a smaller studio, so the process of discovery falls on my shoulders and so I had to rise to the challenge.

     

Case Study: Finding the Solution to a Problem with userSetup.py


So where do you find the source code to decipher what’s really going on when Maya starts up?  After finding this relic of a thread online, It crystallized one piece of the puzzle.  I was having the hardest time figuring out why PYTHONPATH wasn’t working for all my scripts.  After all, I was pointing it to find my userSetup.py and also my Maya2011 python\libs\site-packages directory so I can have access to all my downloaded modules yet my PyQt modules were failing to import while my userSetup modules were sourcing just fine.

Here's the order of how Maya finds scripts for python taken from the post
linked above, which is directly from module: maya.app.startup.basic

Per-version prefs scripts dir (eg .../maya8.5/prefs/scripts)
Per-version scripts dir (eg .../maya8.5/scripts)
User application dir (eg .../maya/scripts)
Look for userSetup.py in the search path and execute it in the
"__main__" namespace
Set up sys.path to include Maya-specific user script directories.
Set up auto-load stubs for Maya commands implemented in libraries
which are not yet loaded
Run the user's userSetup.py if it exists
Register code to be run on exit

Continue reading

 

Script Repo Help: Using TiddlyWiki for Mel & Python Documentation

maya2011_thumbI started to get inspired to start writing documentation again for my script repository yesterday and the brilliance quickly became marred by the thought of how daunting that task can become. It’s a necessary part of the process though and starting somewhere is unavoidable at this point since the organization of the repo is quickly growing beyond what a directory structured system can handle. Documentation is increasingly hard to dig up and it’s much nicer for the tools to be indexed all in one place in a textual and graphical format, even adding tutorial vids for workflows being used when using specific tools or a tool set. I know html is the solution for many of this but how cumbersome it is to use.

In comes TiddlyWiki onto the scene again after having been distracted for a while and not concerning myself with writing help files since I have been busy. I felt motivated again after having read Morgan Loomis’ blog post and seeing his small but effective wiki used for this very purpose. Morgan has links to Scienceoss.com where another useful Python script will create tiddlers for your wiki automatically. Wow, it works great from the command-line but also from inside Maya 2009 which i’m using for rigging stuff. Now if I write a script in Maya I can use this tidder script to automatically update my script repo help wiki thus cutting down the time i’m working inside the wiki editor. Amazing and helpful and it even supports images and resizing images!

Example tidder creation script:

import sys
sys.path.append('N:\Scripts\Python')
from addtiddler import addtiddler
addtiddler('N:\Scripts\Help\script_repo_help.html',
 image='images/asaro_head.jpg',
 description='test image',
 tags='images',
 author='JA',
 title='Asaro Head',
 resize=True,
 replace=True)

_____________

Links:

http://scienceoss.com/insert-content-into-tiddlywikis-with-this-python-script/

http://scienceoss.com/use-sphinx-for-documentation/

http://morganloomis.com/2011/tool-update/

http://morganloomis.com/wiki/tools.html

 

PyQt Makes Your Windows Dockable in Maya 2011

maya2011_thumbMaya 2011 adds PyQt bindings and dockControl command

…and this enables the docking of any custom window you create to the main maya interface. The UI can then be moved docked and undocked from anywhere TO anywhere. I immediately have embraced this godsend to the hellish Maya UI coding world. This isn’t really new news since Maya 2011 has been around for a little while now but I wanted to quickly share my code for making windows dockable. I have expanded my floating tools shelf to have a button that makes the UI dockable when you press it. The old window gets created in my userSetup and is not dockable until now that I added this command as a button to it.

The command gets called only when pressing the button and the command also stores the UI object’s names and specifics so that I can use it to modularly make more buttons on other UIs so that they can also be dockable. The whole key is being modular and not storing global variables which I consider messy.

If you’re gonna make a proc, that is easy

//Given a window name, a name to call the control, and placement in the main maya window,
//add the ability to dock the UI to the main maya UI.
global proc string jaDockUiCommand (string $winName, string $ctrlName, string $placement) {
 global string $gMainWindow;
 string $userPrefs = `internalVar -upd`;
 string $mayaVersion;
 string $buffer[];
 int $numTokens = `tokenize $userPrefs "/" $buffer`;
 $mayaVersion = `substring $buffer[5] 0 4`;
 if ($mayaVersion == "2011")
 {
 string $layout1 = `paneLayout -configuration "single" -parent $gMainWindow`;
 string $myDC = `dockControl
 -allowedArea "all"
 -area $placement
 -content $layout1
 -label $ctrlName`
 ;
 control -e -p $layout1 $winName;
 return 1;
 }
 return 0;        
}

Continue reading

 

New Maya python/mel rigging tools from macaroniKazoo!

zoo avatar

zooTools make character rigging a breeeze!

Hamish McKenzie (macaroniKazoo) has put out a new release of his tools, now written in Python as well as good ‘ol Mel–YAY!  This is big news since it’s been a whole year since another version has been publicly released!  It’s good to know that someone out there is still enthusiastic about sharing with the online community what he’s learned and developed over a long period of time.  I hope to bring something as useful to the proverbial table one day.  Guess I better keep hitting the books and learn from great the great ones!  I feel like such a noob in comparison and it’ll take years to catch up with these guys.

Continue reading

 

Bungie Halo Reach: Pymel Scripting

Halo Reach multiplayer

Do you smell what the rock is cookin'?

Halo Reach is finally out and i’ve been on it almost every day since it came out this week.  I am now a proud owner of the Legendary edition!  Flame-on!  Let’s hope I can keep up my work ;-)  Working on Halo even in a relatively limited fashion, not being on the Bungie team but Image Metrics, is quite satisfying.

Working a technical directing capacity on this game gave me a chance to further develop my pymel prowess and write some tools for me and another team member to use to integrate Reach scenes into our animation pipeline.  Doing this drastically cut down the amount of time to process what seemed like close to a hundred scenes.  Here are a couple of examples of pymel GUIs I put together to run the tools.

Check out these links on Reach:

CNN THR

 

Maya: Realtime Viewport CGFX Shader Writing

maya2011_thumbFresh tutorial on the web.  I just thought i’d stop by cgbootcamp after remembering that i’d bookmarked a Maya realtime shader tutorial on their Vimeo a while back.  I was surprised to see that they had just put up a brand new tutorial finishing up their series on writing a cgfx shader.

This site is great stuff indeed!  The shaders and videos are there free for the learning!  This inspires me to do spread knowledge of what i’m learning around all the more.  It’s fun to share and why not when you can make a little extra money in the process off of ads and donations.

I will be keeping an eye on these guys in the weeks to come and possibly doing my part to make sure they keep it up.  They make shader writing look sexy!  I’m gonna have to try this in my free time.