Friday, October 23, 2015

Quick 2016 hint for animators

Something that's been discussed for ages in the day to day workflow of animators is how to stop time changes going into the undo queue in Maya... well it seems that Autodesk listened and in 2016 SP4 you can now do one of the following to change the default behaviour:

optionVar -iv timeChangeUndoable 1;
optionVar -iv timeChangeUndoable 0;

or

optionVar -remove timeChangeUndoable;


Thanks to Kelly on the Beta group for this little nugget, duly logged so I can find it again in the future ;)

Mark

Wednesday, September 10, 2014

Lost Animation - part?? 3 ??





So this stupid bloody bug is still showing up in Maya, animation reloading in T-pose, all the animCurves still in the scene but Maya failing to reconnect the data on file load.

We've debugged this so many times in the last 10years I've lost count and yet it still pops up. So I've added more in-depth support for the fix methods in the Red9 Studio Pack.

There's now a new UI that opens up, this has 2 base methods.

Method 1: You're running character sets and referencing, Maya has failed to connect the data up BUT left the animCurves connected to the ReferenceNode.

Method 2: Maya has had a full blown fuck fest and left you with no hint to what data goes where. This method uses the names of the selected objects, and their animatable channels, then looks for all animCurves that may match.

Two flags, StripNamespaces.... does just that, removes the namespaces of the node before doing the curve match (curves are usually in root namespace). StripMergedLayerData, allows for the additional 'Merged_Layer_inputB' naming that animLayers use.

Hopefully that'll save somebodies life, I've had so many emails over these fixes over the last few years it's ridiculous

thanks

Mark

Wednesday, November 20, 2013

BUG: keyframe cmd with option flag

import maya.cmds as cmds
cube=cmds.polyCube()[0]
cmds.setKeyframe(cube,t=[0,8,25])
cmds.keyframe('%s_visibility' % cube, edit=True, r=True, timeChange=5, time=(0,8), option = "insert")

I'm trying to add to the Red9 animTools and want to be able to offset an entire hierarchies animations in one go, this is already supported however I want to add the ability of specifying a timeRange. Imaging you have a huge chunk of anim data and want to shift a section of it for a character by 10 frames. Currently shifting keys in the timeline won't ripple, it uses the segmentOver and causes a mess. Also you need to have all the objects selected when doing it and there's no numeric input. So I want to add it to the offestTime code.

This is all up and running except I've hit another crash bug, 100% repeatable crash and it boils down to the 'option' flag as used above. Give it a go, boom. Now I accept that in this case the sparse keys are an issue, but really the code should catch this.

cheers

Mark

Monday, October 28, 2013

Maya.standalone audio handler bug

Found a confirmed bug in maya.standalone at work this week which totally threw me.

 We have a backend process that our build machines trigger that involves the import of audio files for processing. Now by the look of it you can't import audio in Maya standalone, or rather, the audio you import looks like placeholder as it always has no length... which was a real issue for us. I've modified the Red9.AudioHandler to by-pass this for future but it's still a really starnge bug. Sounds like the audio loading requires something from the UI to be processed correctly.

thanks

Mark

import maya.standalone
maya.standalone.initialize(name='python')
import maya.cmds as cmds
audioPath="mywavfile.wav"
cmds.file(audioPath, i=True, type='audio', options='o=0')
audioNode=cmds.ls(type='audio')[0]
cmds.getAttr('%s.endFrame' % audioNode)

Monday, October 7, 2013

Lost Animation Part3 !!

Well it seems this bug is very much still in Maya 2013 and for some reason we seem to be hitting it with more frequency at work. For those of you not aware this it's a bug where the referenceEdits in Maya don't get reconstructed correctly and you end up opening Maya scenes with characters in T-pose and all the anim data thrown back to the referenceNode.

Now over the years I've posted 2 options for reconnecting this data and had SOOO many emails about it, but now that we all run animLayers reconstructing this lost data is a damn sight harder. I'm just wondering if anybody else out there had any ideas of why animation keeps disconnecting itself from referenced rigs with chSets. I've been working past this bug for nearly 7 years now and thought it was quashed!

 Back to Autodesk I guess.

 Mark

Thursday, August 8, 2013

ProgressBar Bug??

I've been building a simple context manager to wrap Maya's progressBar and come across a nice little Maya bug, or so it seems.

Run the following with the script editor open. Now press escape once, it aborts right, run it again, the sequence still runs and prints out the counter. Now next time you hit escape hit it a few times, as most people do when escaping a large task. Next time you run the code, it'll only do a single test before aborting.... it's like the progress bar is holding the escape key in a cache, so hit it once and next time it's clear to run, hit it twice and it's almost like it's storing it up...


import maya.cmds as cmds
import maya.mel as mel
i=0
gMainProgressBar = mel.eval('$tmp = $gMainProgressBar')
cmds.progressBar( gMainProgressBar,
    edit=True,
    beginProgress=True,
    isInterruptable=True,
    status='Example Calculation ...',
    maxValue=5000 )
for i in range(5000) :
    print i
    if cmds.progressBar(gMainProgressBar, query=True, isCancelled=True ) :
        break
    cmds.progressBar(gMainProgressBar, edit=True, step=1)
    i+=1
cmds.progressBar(gMainProgressBar, edit=True, endProgress=True)



Can somebody else confirm that I'm not going mad!!
cheers
Mark

Wednesday, July 3, 2013

Another Maya Bug - Resample curve major issues




Hopefully you've all seen the new interactive curve filtering I've been working on for the Red9 StudioPack linked above, if not I recommend you watch it if you're ever dealing with dense MoCap data.

Anyway as I was doing this I noticed another bug in the way Maya is managing curve data, thought I had to share this to warn all you animators of the effect of using the 'resampleCurve' to run a bake on dense data.



Ignore the UI, this is a prototype of a new build which will manage filtering on steps, something that's been requested by a few people. What you're seeing here is just the slider pumping values directly into the standard Maya Resample Curve option....what the way the curve shifts in time as you increase the steps!!!!!!

Don't believe me, try it!

I've logged this as a bug so we'll have to see what happens.

cheers

Mark

Tuesday, April 16, 2013

Maya MObjectHandle

I've been fighting a crash bug in the Red9 MetaData for a while now and finally found the solution! The issue is that in the base class I cache the MObject in the node which means that if you reload the scene, or do a scene new, or reload reference etc that MObject pointer becomes invalid and Maya crashes whenever you try and call it. I really wanted to nail this issue as MetaData is absolutely at the core of all the work we're doing at Crytek.

So I did some digging and found the MObjectHandle class!! brilliant, it's a class designed specifically to test the health/validity of MObjects, basically now I'm caching both the MObject and an MOjectHandler for it, all the calls now just run a really simple test before using the MObject:

MObjectHandle.isValid()

Brilliant, all I have to do is raise a good warning and the bug is crushed, should make things a lot more stable hopefully!

cheers

Mark

Thursday, March 7, 2013

Red9 StudioPack v1.29 goes live!

Thought I'd bump the post of my Red9 blog:

http://red9-consultancy.blogspot.co.uk/2013/03/red9-studiopack-v129-released.html

I've just added the latest build to the download link on my Red9 Blog and to CreativeCrash, as always thanks for all the support and feedback, keep it coming! I'm trying to keep the Red9 project semi-separate to my main blog, just makes it cleaner.

thanks

Mark

Friday, December 21, 2012

Red9 Studio Pack v1.27 released!

Well I've finally finished the Red9 Studio Pack v1.27 release so Happy Christmas to you all!

See details here: http://red9-consultancy.blogspot.co.uk/2012/12/its-done-happy-christmas-all.html

Download either follow the link of the Red9 blog or grab it at CreativeCrash:

http://www.creativecrash.com/maya/downloads/scripts-plugins/animation/c/red9-studio-pack

Have a great Christmas, any questions or feedback just nag me!

Mark

Wednesday, December 12, 2012

Animation Binder integrated to Red9

With the next build of Red9 Studio Pack (v1.27) I've integrated my AnimationBinder MasterClass toolkit into the setup, means I can expand it a little and make use of the rest of the pack. I added a small fix to the bake calls too, it now runs Euler filters and delete static for curves after the bake to try and clean up the resulting rig data.

cheers

Mark

Saturday, December 8, 2012

Red9 Studio Pack!



Red9 Studio Pack : 
Well time to come clean, as some of you already know I've been writing my own Studio Tools setup for Maya and thought it about time I actually put my name to it! Whats in it, god where do I start, lots of tools for Animators, Rig management, MetaData API, Pose Library and it's expanding daily as it's gradually battered more and more at work. For more details check the Red9 Blog in my links, at some point I'll merge both Vimeo channels and maybe blogs, either that or I'll leave the Red9 blog just for the pack.

They'll be a big update in the next week or two and I'm starting to do a ton of new demo videos. For those of you who've been testing the build thankyou, if anybody wants more info drop me a mail.

cheers

Mark

Monday, November 26, 2012

Eurocom - Sad news...

Pretty sure everybody in the industry knows about this now but if not, Eurocom laid off 150+ staff on Friday, lots of very talented people back on the jobs market in tough times. End of an era as the whole Art Pipeline team were amongst the lay-offs so the pipeline I started 10years ago now lies dead and unloved :(
oh well, on-wards and upwards.

Good luck guys, we were all gutted about the news and wish you all well

Mark

Monday, November 12, 2012

Maya string attr - 32k limit

Just thought I'd spread this in case anybody else is thinking of using a json string to dump data to an attribute in Maya.

Discovered last week that you can happily set a string attr to any length BUT, and it's a big but, if you subsequently select the textfield (you don't even have to edit it, just select it) then Maya runs a change callback and the string is now clamped to 16bit = 32,767 characters. It was driving me mad last week as I kept getting errors in the json decoder when I tried to read a pose back that I'd serialized to a string on our characterNode. I want to store a zero pose on the Character Node along with some extra data that I'm pushing to a dict, json.dumps is a really nice way to that push that dict to a string and store it and then retrieve it back in it's original form with json.load()

Try it for yourself!
import pymel.core as pCore
Cone=pCore.polyCone()[0]
Cone.addAttr('json_test', dt='string')
data= "x" * 40000
Cone.json_test.set(data)

len(Cone.json_test.get()) #>>40000
Now just open the Attribute Editor and just select the json_test textfield - don't edit it, just select it
len(Cone.json_test.get()) #>>32767
Only thing you can do to stop this truncation is to lock the attr, that way it gets stored correctly and doesn't get truncated.

Mark

Monday, October 1, 2012

MasterClass - I missed this one off!

Not sure how I missed off this button in the UI but I obviously did. Just updated the MasterClass AnimationBinder.py module so that the MakeStabilizer button is in the UI. This is the call I used to make the stabilized wires that extract the animation data from the raw point cloud data in the MasterClass

AnimationBinder.py

cheers

Mark

Wednesday, September 26, 2012

Maya 2013 Extension Pack and SP2

Well the Extension Pack to 2013 is out and available for download from the Subscription centre here:

Autodesk Extension Pack 2013

Something to be aware with this release is that its NOT binary compatible with 2013 which means all your plugins will need recompiling for it, see this post by Cyrille:

Around The Corner

Something you have to ask is....why, why have an extension pack AND an SP2 pack?? What's the difference? Well the SP2 has all the bug fixes but none of the extras like the Scene Assembly (the reason this version isn't binary compatible) so there are very different builds, but my question who needs the SP2 pack. Bear with me. So you've bought Maya within the last year which means you get support for the year so have access to the Extension pack. If you've not bought within the last year but are on support then you have access to the Extension pack. If you bought Maya last year and didn't renew your support then you wouldn't have 2013 in the first place, so who needs the SP2 pack???

Coffee!!!!

Thursday, September 6, 2012

Lost Animation - Part2!

God how many times have I been asked for this since posting the 'Lost Animation' thread nearly a year ago now. So here's a complete and utter dirty hack for those who have requested it. Unlike the other fix code this is completely blind. You select the controllers that are no longer connected to the animation data that they should be, and this, in an ideal world, will reconnect the required animCurves for you.

There are a few HUGE expectations here, mainly that the scene is clean and that the animCurves are still consistently named against the channel they were keyed against. As I said, this is a hack but it seems to be what a lot of people are in need of.

So the expectation is that an attr on a controller called NameSpace:L_Foot.translateX should be connected to NameSpace:L_Foot_translateX, or L_Foot_translateX depending on the flag stripNamespace thats in the code.

As I said, this is a really quick hack, but I figured what the hell. Oh and if the data went through AnimLayers....sorry, you're stuffed!

Mark

import maya.cmds as cmds
nodes=cmds.ls(sl=True,l=True)
chns=[]

#Change this to False if the curves are not in the rootNamespace but
#in the sameNamespace as the controllers.
stripNamespace=True

#build up the main lists
animCurves=cmds.ls(type='animCurve',s=True)
[chns.extend(cmds.listAnimatable(node)) for node in nodes]    
    
for chn in chns:
    if stripNamespace:
        animCurveExpected=chn.split(':')[-1].split('|')[-1].replace('.','_')
    else:
        animCurveExpected=chn.split('|')[-1].replace('.','_')
    if animCurveExpected in animCurves:
        if not cmds.isConnected('%s.output' % animCurveExpected,chn):
            print '%s >> %s' % (animCurveExpected,chn)
            cmds.connectAttr('%s.output' % animCurveExpected,chn,force=True)

Saturday, August 18, 2012

Autodesk Masters!!!!!



http://area.autodesk.com/masters

Didn't realize till Friday I was on the shortlist of the Autodesk Masters Nominees, thanks to those who put me forward, now come on, VOTE!!

cheers

Mark

Thursday, July 19, 2012

Well it's official, off to pastures new after 11 good years at Eurocom. I'm off to Crytek UK in a few months to be their Technical Animation Director, new start, new pipelines and a big challenge, bring it on!

Friday, June 29, 2012

BUG: Just to confirm!!!

2013 SAP rotate Order, here you go! Not good, do NOT INSTALL for animations as you're going to be in a world of pain with this release. Confirmed as a bug with AD.

MAYA 2013SAP : BUG: rotateOrders from Mark Jackson on Vimeo.