Friday 28 June 2013

New Interactive Curve Filter and Randomizer UI's



A Vimeo demo of 2 new anim UI's designed for anybody dealing with dense baked data such as MoCap or wanting to add some random noise into anim data.

 The InteractiveSimplifyUI is basically a smart wrapper over Maya's internal simply command, anybody who's ever used the default tool will know how basic and un-user friendly it is. This deals with that issue by giving you interactive key reduction. Unlike the default Maya implementation this also allows you to reduce just selected keys.

 The Randomizer is another anim curve manipulation function, designed to allow you to add controlled noise into anim data. This went into a previous build but has had a face lift and been made interactive as well.

 This demo was done on a test build so the UI's may expand a little by the time they hit a release.

As always, all suggestions are welcomed

Mark

Monday 10 June 2013

New Features on the way!

A few new features coming up!
Firstly I've added a new option in the CopyKeys block in the UI, 'pasteBy'. This is something that's been requested a few times. It's gives you access to all the standard Maya paste methods when copying keys, this is used not just by the CopyKeys function but also by all calls in the UI that use a copy method, including the SnapTransforms and the MirrorAnimation.



 Next up changes to the pose code to make it easier for people to use internally. I've changed the main poseLoad and poseSave calls such that they no longer require a filepath. If the path is left off then the pose is simply cached on the current poseClass object. To better access this I've added handling in the metaRig to do all of this for you!

#get current metaRig
mRig=r9Meta.getMetaNodes(mTypes=r9Meta.MetaRig)[0]
#cache it's current pose
mRig.poseCacheStore()
#load that cache back
mRig.poseCacheLoad()

Now that's really simple, but what I've also done is to allow you to specify an attr in this call, if given the pose is serialized to that attr on the mNode itself, storing the pose internally on the object! We do this at work to store the zeroPose for our rig, caching the initial state of every controller in one go. Actually we were also doing this back at Eurocom and I've been meaning to add this feature for a while.
mRig=r9Meta.getMetaNodes(mTypes=r9Meta.MetaRig)[0]

#serialize the pose to a given attr (created if not found)
mRig.poseCacheStore(attr='zeroPose')

mRig.poseCacheLoad(attr='zeroPose')

Hopefully this makes pose handling a lot easier for everybody to access. I've been doing a lot of smaller changes under the hood too... Things like a white space strip for the filter calls which was previously lacking. I've also made the AnimUI scale correctly!

Lastly the pack is about to go out under a GPL license, something I need to do for work as well as for the general public.... I want spell it out to all that the pack is intended to be used for everybodies benefit..not just Crytek and those willing to put in a bit of time testing it ;)

Anyway, keep the suggestions coming.

cheers

Mark