Another lazy evaluation with a dgdirty fix

Become a member of the CGSociety

Connect, Share, and Learn with our Large Growing CG Art Community. It's Free!

Thread Tools Search this Thread Display Modes
  10 October 2012
Another lazy evaluation with a dgdirty fix

I just noticed, after some frustration, , that if I have a pairBlend on some translate channels that have animation on them, and I change the translation values without setting a key (in this case I zero out their values so I can bind another skin), and I jump to another spot on the timeline, the original animation on those channels is ignored. Those channels remain zero'd out until I do "dgdirty -a".

I'm on 2013. Not sure if this is a new feature or not.


edit: Yep, if you are not careful, this can really stuff up a rig! Wasting so much time and messing up so many scripts with all these dgdirtys just to make sure the rig is posed right. Please tell me I'm missing something obvious!

Last edited by djx : 10 October 2012 at 01:01 AM.
  10 October 2012
FWIW I have had many strange issues with pairblend for a long time. Some sort of magic is going on inside that node regarding scene graph updates. There was a bug in 2009 where if a pairblend was driving an ik handle it would work fine in interactive mode, but incorrectly in batch maya. I don't know if it is still around. I would use with caution.

  10 October 2012
That sounds like a pretty odd eval issue - are the pairBlend's states set differently? i.e. Blocking, Has No Effet or anything? You're just feeding a constraint and keys into the channels of the object?
My opinions do not represent those of my employer.
  10 October 2012
We use them extensively in our rigs and never had a problem before 2013 (or at least never noticed - I should really verify this...). Its pretty easy to reproduce the behaviour though. Create sphere. Point constrain it to something. Set some keys on the translate. Turn off auto keying. Change the values of those translates. Change frames.

I'm pretty sure that prior to 2013 this would result in the sphere returning to its keyed/constrained position. But in 2013 it just sits where you left it until you do something to force a dg eval.

"dgdirty -a;" is overkill, but usually the easiest fix to throw at it.


edit: Ok. I've been digging deeper. I loaded up 2012 and tested the steps above, and it worked correctly. Then zero'd the translates again and changed frames. Fail. And again. Fail. So now I don't know whats going on! Obviously this is also an issue in 2012, but I never noticed it before now.
Back in 2013 I verified that, following those steps, it does in fact work the first time I change values and change frame, and fails if I repeat the value and frame change.

The above example is trivial, but in practice I want to be able to take an animated rig, return it to its bind pose. Do something skin related. And continue. With auto key OFF no extra keys would be set or overwritten, so getting back to the animated pose should have worked if I just changed frames. In this case the required dgdirty fix is fine. But it seems to be required in other places as well (like after using a script to import rig components that have complex ik/fk setups). This is what worries me. Trying to debug stuff that works when you do it step by step, but fails when scripted because of this eval problem is quite a challenge.

It would be great if someone could try those steps and see if they get the same result. Maybe I've broken something on my end.

Last edited by djx : 10 October 2012 at 12:32 PM. Reason: the plot thickens
  10 October 2012
So, it turns out that as long as there are more than 1 keyframe on the sphere (from my little example above) and at least one of those keys are different and therefore cause it to move, then it does get evaluated when you change frames, if you change to a frame where it would be at a different position.

The reason I'm seeing the problem is because I'm doing cloth sims with a 10 frame run-up. Most of my nodes are fully animated from frame 1 to whatever, and just a few have keys at -10 so that the cloth rolls into its start frame correctly. So when I zero'd everything at frame -10, and did some skin tweaks, I'd step forward to -9 or frame 1, expecting the rig to snap back to its original pose, but it would not.

In fact many of the problem nodes with the pairBlends on their translations had only a single key at frame 1 (ie no actual animation, just a pose "holding" key). So my conclusion is that maya neglects to set the node as dirty when a pairBlend is connected to those translates even though the values have been zero'd out. And if there is just a single keyframe up stream, then it stays clean even after a frame number change.
  10 October 2012
Thread automatically closed

This thread has been automatically closed as it remained inactive for 12 months. If you wish to continue the discussion, please create a new thread in the appropriate forum.
CGTalk Policy/Legalities
Note that as CGTalk Members, you agree to the terms and conditions of using this website.
Thread Closed share thread

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Society of Digital Artists

Powered by vBulletin
Copyright 2000 - 2006,
Jelsoft Enterprises Ltd.
Minimize Ads
Forum Jump

All times are GMT. The time now is 10:30 PM.

Powered by vBulletin
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.