Maya 2011 ik system

Hi all

We provide a rig in maya to 3rd party developers, now the rig was done some time ago in maya 8.5, and for compatability and ease of support (or so we thought :D) we decided to arm and leg setup with a single maya joint chan, so the arm can be positioned in ik using a control and the joints can be keyed in ik mode and switched to fk mode seamlessly… all works nicely… pretty rock solid you’d think right…

Now, we have recently found out that, for some unknown reason, autodesk has decided to change how the basic maya ik solves in post 2009, it now favours “Set IK/FK keys” to switch. Our current setup breaks as soon as you are in ik and key the joints related to that ik.

So does anyone have any good experience of this new system (i say 2011 but it may have been intorduced in 2010, were still on 2009 in my studio), Is there a way to get the ik to solve as it did before in previous versions? itll save us a ton of work if we can replicate how it worked before.

ive done some digging and it seems the setup needed to enable keying of ik joints require a re rig on our ik for us… meaning seperate rigs for different maya versions… not great for compatibility and standardization for our partners/developers. Though i may be missing something in the setup, hence the post :slight_smile:

Any advice and info is appreciated

cheers

As far as I’m aware there’s been no changes in the Ik plugin for many years? That said we don’t use the default Maya ik/fk switching setups at all, in fact I don’t know many who do. What exactly is going wrong?

Yea i ususally don’t use single chain setups personally either, however it was necassary for this project for compatibility issues, as the engine this rig was originally designed for didnt allow multiple skeletons… and the rig was going to be sent out to multiple studios using different engies… so it was a case of pandering to the worst case scenario im affraid. So maya’s ik single chain was great for us in that sense.

So whats goin on…it seems in 2011 that if you have an ik setup on one chain and you key the rotations of the joints, while either in ik or fk mode, it causes extreme flipping while in ik mode… as in, the joints twitch and pop away from the ik handle! it ‘seems’ to be the interpolation of the keys set for the joints fighting against the ik solver rotations and causing large rotational flipping. The fk keys seem to be interpolating the longest way around, and theres no way, that i can find, to control how the keys are working. I’ve checked maya’s rotation preferences and all seems as it should… or as it was in previous maya’s

as mentioned, maya now seems to be preferring to use this new “Set IK/FK keys” which is a bit crap as it forces you to setup the ik in a specific way so it can find the necassary bits to key what needs to be keyed…

So i dug into the script shipped with maya and it seems to be keying the pole vector constraint weigh itself, the joint rotates and preferred angles, the ik hanlde transforms and ikblend (so you cant direcly connect anything to that… Great!), and any constriants t the joints. And its using a mixture of stepped and linear keys…so there must be a way for it to work… must be! Currently however I cant seem to replicate the switch yet… yet! but ive only been working on it for a few hours (I didnt want to spend a chunck of time working that out if there was a simple answer :))… oh and this switch wont work for us as it needs to unlock the polevector weights to key them and we always lock out constraints and use referencing… this seems a bit of a half thought method to be honest.

So i was just wondering if anyone run into this previously.

So do you have a pole vector constraint on the IK?

I am not able to reproduce this issue here, does it happen with files created in older maya, opened in 2011? or can you post a sample file that recreates the issue?

ah i should have mentioned… yep this includes a pole vector.

Heres some simple mel that i used to recreate the issue while i was trying to dig through it, just stuff i ripped quickly out of the script editor :

joint -n “shoulder” ;select -cl ;
joint -n “elbow” ;select -cl ;
joint -n “wrist” ;select -cl ;

setAttr “elbow.tx” 7 ;setAttr “elbow.tz” -2 ;setAttr “wrist.tx” 14 ;

parent “wrist” “elbow” ;
parent “elbow” “shoulder”;

select -r shoulder.rotatePivot ;
select -add wrist.rotatePivot ;
ikHandle -sol ikRPsolver;

circle -c 0 0 0 -nr 0 1 0 -sw 360 -r 1 -d 3 -ut 0 -tol 0.01 -s 8 -ch 1; objectMoveCommand;
group; xform -os -piv 0 0 0;
move -r 6.978027 0.0746735 -5.862838 ;

select -r nurbsCircle1 ;
select -tgl ikHandle1 ;
poleVectorConstraint -weight 1;
currentTime 0 ;
select -r ikHandle1 ;
setKeyframe -breakdown 0 -hierarchy none -controlPoints 0 -shape 0 {“ikHandle1”};

currentTime 10 ;
move -r -14.2137 -0.495572 1.882173 ;

setKeyframe -breakdown 0 -hierarchy none -controlPoints 0 -shape 0 {“ikHandle1”};

currentTime 0 ;
setKeyframe -breakdown 0 -hierarchy none -controlPoints 0 -shape 0 {“shoulder”, “elbow”};

currentTime 5 ;
setKeyframe -breakdown 0 -hierarchy none -controlPoints 0 -shape 0 {“shoulder”, “elbow”};

currentTime 12 ;
setKeyframe -breakdown 0 -hierarchy none -controlPoints 0 -shape 0 {“shoulder”, “elbow”};

… this works as it should in 8.5 and 2009 :slight_smile:

cheers

this is a video me and my friend jan made a half a year ago, the same wish: a single joint ik-fk system but a different solution as you can see.

we used the maya timeline infused with 3 buttons to make our arm work, the only problem now is that we need to rewrite the script for the timeline since maya has changed its design to qt.

maybe by viewing this you might come up with an answer for your problem?
this was done in maya 2010

succes

ah cheers peerke88 cool video.

That looks similar to the techniques shown on the rigging master class on the Area by Sylvan Cote. Where he uses the technique of turning off the contsraint to the ik to blocking method and switching a pairblend to allow the setup to avoid a cycle (i may be doing the setup an injustice there :)). It’s something Iv’e played with and looks to be quite stable… though i’d be looking to test a setup like that a bit more before is use it in production… though the signs are good :slight_smile:

however i cant really use this for my current issue as the rig we send out to developers is frirmly locked down and updates are only done if crucially necassary… again why we chose a very simple, and what we thought was stable, ik setup.

I appreciate the thoughts though. Thanks again.

thanks, never seen those videos but im sure to watch them this week.

with the seamless arm we had a lot of problems finding out how the polvector needs to work and how to key it in the end.
the solution we made was the first thing we could think of, didnt know that it could be simplified, so i will check in on your piece of code as wel, might learn something. :slight_smile:

here is your answer fixed in the hotfix released today
ikBlend causes flip of IK bones in 2011 using anything but XYZ orientation