Joe Hultgren - Technical Artist
  • Blog
  • Demo reel
  • About Me
  • Maya Scripts (bitbucket)

Using utility shading nodes in Pymel

8/14/2013

3 Comments

 
When building a rig utility nodes like mulipyDivide or reverse are a handy way of setting up functionality of controls. But after you've setup an IKFK blend for what feels like the hundredth time you start looking for a way to automate connecting up all those attributes. 

If you go to the pymel docs and search for how to create these nodes you probably wont find what you where hoping for. While the latest docs have information on the nodes themselves there aren't any good examples like there are for most of the  other pymel commands.  

Since the docs aren't helping lets go back to Maya and look at what is output to the script editor when we make these nodes by hand. Open up the hypershade or node editor and make some of the nodes we want. You should see something like this.
 shadingNode -asUtility reverse;
shadingNode -asUtility multiplyDivide;
shadingNode -asUtility vectorProduct;
Looking at these they are all made with the shadingNode command. If we go back to the pymel docs we can find a command that matches up in rendering/shadingNode. The examples are still pretty sparse but essentially we use the command like this.
 import pymel.core as pm
pm.shadingNode('[NODETYPE]', [NODECLASSIFICATION]=True)
For [NODETYPE] we enter what node we want as a string, in our case 'reverse' or 'multiplyDivide'. [NODECLASSIFICATION] is needed to tell maya where to put this node in the hypershade. We use as asUtility=True since we are making utility nodes, if you are making a light or shader you should use asLight or asShader respectively following the docs. So when we fill those things in our code will look like this.
  utility = pm.shadingNode('reverse', asUtility=True)  
The command returns a pynode which contains the node made which we can store in a variable in this case utility. With our node safely in a variable we can use it however we want.

Now that we have our utility nodes how do we hook it up? 

To do this we have to look into pymel's attribute system which I'll be getting into next time.
3 Comments

Releasing unicycle rig

3/16/2012

0 Comments

 
I had someone ask if they could use my unicycle from my short film. Since I probly wont have too many more uses for it why not just release it to everyone. There is a pretty comprehensive readme included that should explain the complicated parts. and I would recommend reading the suggested usage section before animating with it. I 'm releasing this under a creative commons license.
jh_unicycle.zip
File Size: 290 kb
File Type: zip
Download File

Creative Commons License
Unicycle rig by Joe Hultgren is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License.
0 Comments

unicycle rig

4/26/2011

0 Comments

 
So I'm just gonna say this right now the finale of my film is pretty awesome, I mean it has a unicycle for pete's sake. Of course that means I would have to animate a unicycle. Screw that lets script it.

It's really not that hard once you get down to it. 
The first step for both direction and wheel rotation, get a vector of where you are now compared to where you just were. 

for wheel rotation take that vector and divide it by the radius of your wheel and you have the amount of rotation in radians, easy.

For direction use atan2 on the vector to get the rotation for the direction.  I also check to see if I'm moving backwards from where I was just and then offset the rotation so it doesn't just flip around.

one problem right now is to have auto/manual control I add the change in rotation for both the auto and manual controls to the the current rotation, which is going to cause problems for direction at least when I loop through the animation.

I'll need to add a hard manual mode where the rotations are directly linked to the manual controls.  Then I just have to start my animation in that mode so it resets every time it loops
0 Comments

scroll rig for my VFS film

4/26/2011

2 Comments

 

I need a scroll in my film so I came up with this.
There were a lot of constraints and expressions for this so I used pymel scripts to do all that for me (code is on my bitbucket site under randomMelAndPymel.py)

how i works:
each of the curl controls has a locator that has the same y position as the control unless the control is on the far side of the other control

that locator drives set driven keys on its curl chain and bend deformer fix

if the bottom locator is above a bind joint (actually reference joints off to the right in the video) that joint is constrained to the bottom curl otherwise its constrained to the top

I was a little lazy with the orientations(lack of sleep due to last week of term) so I couldn't use a parent constraint and had to use separate point and orient constraints.
2 Comments

    Archives

    September 2017
    February 2017
    April 2016
    October 2013
    September 2013
    August 2013
    March 2012
    February 2012
    August 2011
    July 2011
    May 2011
    April 2011
    February 2011
    October 2010
    August 2010
    July 2010
    June 2010
    April 2010
    January 2010
    October 2009
    July 2009
    June 2009

    Categories

    All
    Art
    Blender
    Code
    Flash
    Free
    Maya
    Personal
    Pymel
    Python
    Rig
    School
    Siggraph
    Vancouver
    Vfs
    Website
    Work

    RSS Feed

    View my profile on LinkedIn
Powered by Create your own unique website with customizable templates.