Got kind of a weird one off problem with my rigs. I have a setup that allows the animators to animate from the hips(COM), but there is a locater root(ROOT) that follows along at the base of the character. The COM is a child of the ROOT, needed for the export, so the follow along is handled through a circular dependency to the ROOT. This setup works great until the character turns around. This causes the COM’s y-axis to invert, inversing the manipulation in the view port but, that animation curves are fine. This annoys the hell out of me and then animators and is just not good in general.
I know that this is cause because the maxscript forcing the circular dependency is operating in parent space and the ROOT has no parent, so when it rotates around the gimbal does not follow. I can’t however figure out how to fix it. I thought maybe adding a parent to the root that rotates but this is not really working because it effect the position of the whole character then.
if you use a list controller maybe you can stack an extra rotation controller in there to create wold_spacer_animated with script rotation .
or use a tcb? instead of eular, controller to help with the fliping.
I am guessing you all ready check that your rotate order is correct so that the transforms get evaluated correctly when you turn the character around.
[QUOTE=bclark;1271]if you use a list controller maybe you can stack an extra rotation controller in there to create wold_spacer_animated with script rotation.[/QUOTE]
Paul Neale suggested something along these lines, taking the transform matrix and moving it into the correct parent space, then reapplying it. I have to say though I really don’t understand that method. Maybe I am just thinking about it in the wrong way though.
ah yeah. that is a good thread… paul and eek on there,
but… first off. don’t get to complicated to fast… first try and fix your gimbal issue
I used to just do this root com separating because our exporter did not support motion stripping as an option and I asked the programmers to add it in as an export to deal with motion stripping from root to com etc… by reading a custom attribute off of the root node. that way animation can do what ever they want on the root and it will export correctly.
its late, sorry that does not add any value or help really to your problem.
hard to tell with out sample files… you could do a http://www.jingproject.com/ capture of just your rig with its problem (no skin of course to keep out of trouble)
Here you go. In the attached file (MAX 9 sp2) there are the two point helpers. The keys are on the COM, the top one, and you can see that the movement is fine. If you try to manipulate the COM after frame 20, after it does the 180 turn, you can see how all the controls are messed up though. I guess we can start there.
I have started to look into some of the transformation math that was referenced in the other thread but and running into a different set of problems with that.
The root gimbal will not rotate unless it’s parent rotates, and since it is parented to the world, you will run into this problem.
Regarding your question about the dependency loops with script controllers, I usually use a 3rd object, much like you would use an exposeTM helper, and place the script in that object’s scale controller. I then position constrain this 3rd object somewhere in the rig.
Just have to remember that the script will not update unless one of the script variables’ reference updates in the scene. So you would add a root variable to that script controller, and assign it to the root node; same with com. Now every time you attempt to move one of them, the script will be executed.
I’ll have a go with your scene and see if I can figure out anything. Good luck.
edit: oops, noticed I posted on the wrong forum. The script controller note is re: the cgtalk thread. Sorry about that.