Thursday, April 12, 2012

Autodesk 2013 - Released

Just seen that the Autodesk 2013 product drop has finally happened, all now available on the Subscription center!

Tuesday, April 10, 2012

Taking Animations from 2012 back to 2011

AutoTangent type:

  This is something we discovered last week, to be honest I should have figured it before but as a lot of the data passing between 2012 and 2011 at the studio is baked MoCap nobody spotted this issue. 

The problem is the new 'AutoTangent' type in Maya 2012. So lets say you start animating in 2012 but need to pass that data back to somebody running 2011. We already know Maya binaries between the two are incompatible, so you save and an Ascii file and that works. The issue is that by default in Maya2012 the tangent type is set in the prefs as the new 'AutoTangent'. Now this is great and to be honest a big improvement over the standard spline tangents. BUT.... Maya 2011 doesn't know anything about it. The key data still loads up, but the tangent types of each keyframe in2011 remain unset which means any interpolation between keys you did in 2012 is now screwed! 




 If you intend to do this, go from 2012 back to 2011 DO NOT use AutoTangent when keying.

Monday, April 2, 2012

Maya2013 - Announced

Cory's finally posted up a rundown of Maya2013 features...full post here:

http://area.autodesk.com/blogs/cory/announcing_maya_2013

Friday, March 23, 2012

Trax Blending, finally the Tech Preview is out

At last, Cory's just posted the Trax Blending tech preview up here, something I've been working with the Maya dev team on for the last 6 months or so.

http://area.autodesk.com/blogs/cory/maya_trax_blending_technology_preview

I might follow this up with a few more examples over the next few weeks. Basically it allows you to properly redirect animation data and complex rigs in the Trax, lining motion up using the ghosts, kind of taken tech from MotionBuilder. We've been testing this on raw MoCap data and Rigged data, only been begging for the guys to do this for 7years! :)  Theres also an automated match function, you select the offset node from the data and hit the match, it'll take the first and last frames from 2 clips and line the general motion up based on those.

Friday, March 2, 2012

MasterClass download links

I've just moved the MasterClass modules into a sub-folder in Google Docs as it's really confusing now linking to Python modules, it just looks like the files don't exist when you click on them. Thanks to Jaewon Song for pointing this out.

Download link : MasterClass Python Module (Pymel and Cmds versions)

Thursday, January 26, 2012

Maya 2012 SP2

Maya 2012 Service Pack 2 has just gone up for download.


As usual the Bug Fix list is completely useless for anybody in serious development. I still to this day don't understand why the AD bug database isn't opened up more so developers can actually track what the bug was and what it's effect is. Saying :

MAYA‐6772: Referencing in an object causes crash

Is completely meaningless except for the guy who submitted the bug in the first place. I want to know what the actual details of the crash were so we can test our pipeline and maybe remove wrapper code that we added to deal with it.

ReferenceQuery Madness!

If you're managing references in Maya and coding functions around it you'll know that the reference commands and query commands available to you are very limited. But here's a kicker that I found yesterday that to me, makes absolutely no sense what-so-ever!
So we all know how flaky the referenceEdit list is, but here's a bit of logic for you that we didn't realize until one of our tools started playing around.

Simple test, make a sphere in a fresh scene and save it, then reference it back into a new scene. Now make a cube and parentConstraint the referenced sphere to it. Now look at the referenceEdits, you should see this:

All well and good. So you'd think that if you queried the refEdits that's exactly what you'd get right? No
cmds.referenceQuery('SphereRN', successfulEdits=True, failedEdits=False, es=True) 
#Result:
[u'parent -s -r "|SphereRNfosterParent1|Sphere:pSphere1_parentConstraint1" "|Sphere:pSphere1"',
 u'connectAttr "|SphereRNfosterParent1|Sphere:pSphere1_parentConstraint1.constraintTranslateX" "|Sphere:pSphere1.translateX"',
 u'connectAttr "|SphereRNfosterParent1|Sphere:pSphere1_parentConstraint1.constraintTranslateY" "|Sphere:pSphere1.translateY"',
 u'connectAttr "|SphereRNfosterParent1|Sphere:pSphere1_parentConstraint1.constraintTranslateZ" "|Sphere:pSphere1.translateZ"',
 u'connectAttr "|SphereRNfosterParent1|Sphere:pSphere1_parentConstraint1.constraintRotateX" "|Sphere:pSphere1.rotateX"',
 u'connectAttr "|SphereRNfosterParent1|Sphere:pSphere1_parentConstraint1.constraintRotateY" "|Sphere:pSphere1.rotateY"',
 u'connectAttr "|SphereRNfosterParent1|Sphere:pSphere1_parentConstraint1.constraintRotateZ" "|Sphere:pSphere1.rotateZ"',
 u'connectAttr "|Sphere:pSphere1.rotateOrder" "|SphereRNfosterParent1|Sphere:pSphere1_parentConstraint1.constraintRotateOrder"',
 u'connectAttr "|Sphere:pSphere1.parentInverseMatrix" "|SphereRNfosterParent1|Sphere:pSphere1_parentConstraint1.constraintParentInverseMatrix"',
 u'connectAttr "|Sphere:pSphere1.rotatePivot" "|SphereRNfosterParent1|Sphere:pSphere1_parentConstraint1.constraintRotatePivot"',
 u'connectAttr "|Sphere:pSphere1.rotatePivotTranslate" "|SphereRNfosterParent1|Sphere:pSphere1_parentConstraint1.constraintRotateTranslate"']
So when you use the default query calls you actually get the edits back as if the refNode was in an unloaded state, note the connections to the fosterParent which would get created if I actually did unload the reference! Why, why the hell would you want the default option to return the data in an format that was currently invalid.

So there is a way round it, you use the 'liveEdits' flag. All good right, NO, the liveEdit flag returns the data WITHOUT THE DAG PATH! Short names, who the hell returns short names in any code blocks.
cmds.referenceQuery('SphereRN', successfulEdits=True, failedEdits=False, es=True, le=True)
Rant over, gotta go find a way round this now!

Mark