All other apps I worked with (Max, LW , XSI, C4D, Messiah, ..) enables me to query any attribute/channel at any given time in one or the other way. Thats why I had difficulties to 'believe' that Maya couldn't do this fairly simple and common task at first. Of course that's before you(Joojaa) confirmed this.
I'm building a huge tentacle FK/(spline)IK setup that has to be as versatile as possible. I'm working with 'animators' not 'simulators', so I'm keeping as far away from any kind of simulation. We need full control over the tentacles' poses. The director is too picky.
The tentacle blends from IK->FK from the bottom up too the tip. Everything is animatable/blendable. It enables us to animate the base with or along a curve and to pose an variable portion of the tip in FK.
The setup is great, easy, fast to 'work' with and does exactly what is expected, without bothering the animators with the underlying technical stuff. A lot of shot specific tentacles can be created easily with asimple GUI.
So all of it works perfectly and fine... but... the lag between the bones in FK.
A tentacle has +-150-300 bones (depending on the needs). In order to simplify the number of controls, A control is created every (let's say) 15 bones, that controls the 14 following bones.
A LAG attribute, found on the Control itself, controls its 14 descendents by a simple expression that adds lag (now with getAttr).
I repeat: 'Everything works fine.'
The 'only' problem is that the user needs to scrub (or press a custom GUI button) to 'preview' his pose. He cannot manipulate the contol and see the result interactively... That's a real b#*h.
It would be a real shame to throw away all that fine working, precise and time saving stuff. So, it may be a little late to completely change the approach.
If adding lag can't be automated (still have trouble 'believing' it since it's soooo simple in theory'), we'd choose the option to add lag by 'animating' it manually (that's what we do
).
A sollution to automate lag could be:
CODE
int $job1= scriptJob -ac joint1.rz myfunc
;
global proc myfunc()
{
float $frame=currentTime -q
;
float $poo=getAttr -t ($frame-5) joint1.rotateZ
;
setAttr joint2.rz $poo;
}
It refreshes the tentacles' pose everytime the user releases the manipulator. It's not 'interactive' in the pure sense but we can live with that. But, AAAAAAAAAAARRRRRRRRRGGGGGGGGHHHHHHHH #&**!!$#... . Like you said: scriptjobs dont exsist during playback. I could combine it with a changeTime(or something) event... I guess...
I understand the complexity a 3D app has to deal with and I may be a little indoctrinated by having used other apps in the past. But not being able to do something that simple and straightforward is a serious dent in Maya's architecture. But, no stress. I also have eyes for its arsenal of advantages enabling us to tweak to infinity (and beyond)
Anyway, it's great to have somebody like you(Joojaa) to help getting trough the thick stuff.