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
Welcome to my blog, this is the random mutterings from a Senior Pipeline TD currently working for Crytek UK. Thoughts, tips and moans on any subject loosely associated with Autodesk Maya / Python / Pymel / 3d in general. If you've nothing better to do then stick around.
Monday, November 26, 2012
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!
Mark
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 itlen(Cone.json_test.get()) #>>32767Only 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
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!!!!
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
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
Subscribe to:
Posts (Atom)