Since starting this blog I have always thought of giving away a rig over here to animation community. I toyed with idea of putting toony biped rig, but there are way too many of them. So I thought of putting up an unorthodox character. I’m putting up a Maya Ant rig, which I did last year, for some personal project. I hope to put this for download at many other places to get more feedback and removes any bug for users. Please feel free to share around and do let me know if this rig did something in your project or short film, our help you in any other way. I would be happy to put up link here.
We started working on this short film 3 years back, My friend sagar has a brilliant idea about a story around a greedy thief and finally it got finished this June 2012.
And Yesterday it won its first Prize from TASI. I have worked on facials for the thief character, and two of my good friend Sagar and Dhiraj have worked there asses off on putting this film together, have a look.
Official blog: http://lcshortfilm.blogspot.in
I have written an useful Maya python API plugin which exports out weights from polygon mesh or vertices to text file(optionally binary),Which can be used later.
This process is mostly useful when User wish to change position of joints in a rig with skinCluster , or just want to update rig file with latest weights from other file.
I have in past used Michael comets famous Mel script cometSaveWeights, which works great but is very slow when importing weights on dense mesh.
It was my first attempt at writing something in Maya API. Attached in plugin which I have tested on Maya 2008 to 2011.
Mel Command to export weights
scSaveWeights -roundOff 5 -action “export” -file “d:/weights.txt”;
Mel Command to import weights
scSaveWeights -action “import” -file “d:/weights.txt;
Go to windows>Settings/prefrence > plug-in manager and browse to the scSaveWeights.py
I would suggest to open the py file in IDE and read through comments in the beginning of script.
Exporting weights on polygon mesh with vertex count 12432 skinned with 255 joints took 7.6378 seconds
whereas Importing took 66.3445147672 seconds and in quick mode it takes 19.937 seconds while exporting
and takes 7.5559 seconds while importing.
Importing weights with cometSaveWeights.mel took more than 7 minutes on same Mesh.
edit: updated script to work with selected polygon object and in component mode, while importing weights.
Well nothing to say much, if you’re into maya rigging you can’t possibly haven’t came across cometTools. I’m a big fan of Michael comet and his tools specially PSD and his mel script.I noticed cometSaveWeights.mel is not working exactly as it has to be on maya 2011, as Autodesk have done some changes to mel commands, I have attached edited version of script which works very well on 2011.
check for yourself Download here
Edit: Enable normalize weights before you save weights in maya 2011,
“;” was missing in some line, that is fixed now.
I been away from my blog for few months, well I been working on few things most of them not rigging related. I have learned hard way how to keep check on your fitness, but came out in good shape. Studio job does takes toll on your health nd sitting on chair for long hours is defiantly a big No No. I set a target and achieved it. in a nutshell i’m in better shape now . So Autodesk few month back released maya 2011 with pyMel 1.0. I didn’t remember last time when i was excited for maya release but this time autodesk have nailed it specially in rigging and animation (here for full details). Yesterday Autodesk has released SP1 for maya 2011 after 3 hotfix release, which is standalone installer (no need for any previous autodesk maya 2011 installation) Go check out whats new here in maya 2011 SP1 and download link here for maya 2011
I recently worked on creating solution for wheel auto rotations inside maya. Well I searched a lot for finding adequate solution but some lacks a thing or two.
most commonly used solution are rotating the wheel based on translation X & Z with circumference of wheel , which is working fine but gives error when controller
is rotated in reverse direction( 180° or more). Another solution I found is to use Infinite animCurve and attach it with multiplier and manually animating it!
A guy named darvy has created a set of vehicle rigging scripts I found above method nicely implemented in there.
I find one tricky way to calculate auto rotations without worrying about rotations and direction where our rig is going. In brief I wrote expression which finds direction magnitude
where our wheel is going (forward or back). Also expression calculate the distance covered by wheel between last frame and current and calculate distance using circumference (2 π r)
float $radius =1;
int $dirVec;// get Joint translation value for calculating direction vector.
float $pastValX = `getAttr -time (frame -1) basePos_jnt.tx`;
float $pastValZ = `getAttr -time (frame -1) basePos_jnt.tz`;
// Now compare the difference of tip joint with base joint and basejoint’s previous frame
float $currPosX = tipPos_jnt.translateX – basePos_jnt.translateX;
float $currPosZ = tipPos_jnt.translateZ – basePos_jnt.translateZ;
// with past
float $pastPosX = tipPos_jnt.translateX – $pastValX;
float $pastPosZ = tipPos_jnt.translateZ – $pastValZ;
// now calculate the magnitude
float $currMag = `mag << $currPosX,0,$currPosZ>>`;
float $pastMag = `mag << $pastPosX,0,$pastPosZ>>`;
if ($pastMag >= $currMag) $dirVec = 1;
else $dirVec = -1;
// get controls translation value for actual calculations.
float $pastCtrValX = `getAttr -time (frame -1) placement_ctr.tx`;
float $pastCtrValZ = `getAttr -time (frame -1) placement_ctr.tz`;
float $currDistX = placement_ctr.translateX – $pastCtrValX;
float $currDistZ = placement_ctr.translateZ – $pastCtrValZ;
float $distance = ($currDistX*$currDistX) + ($currDistZ*$currDistZ);
$distance = sqrt($distance);
// finding distance by dividing into circumfrence
float $rotation = $distance /(2* 3.1428*$radius) *-360 * $dirVec;
$rotation += tyreRot.rotateX;
tyreRot.rotateX = $rotation %360;
Some time ago I wrote a MEL script for saving out skinWeights for massive from maya skinCluster. Script writes out weight is massive’s native format (.w file extension).
Massive is crowd simulation software and is used for giving artificial intelligence to crowds and make them believable. Its common practice to skin character inside maya and take out skeleton ,mesh (as obj) inside massive for doing crowd sim. But we have to either skin it again inside massive which is defiantly not very intuitive or import weights from maya. So this script makes this task easier by writing out weights in separate file from maya itself.