Problem with IK Solver and Action Keys

Hi there!

First of all: many thanks to this great forum! I’ve been away from Blender since version 1.5 (found the old manual the other day, still very nice work!), but some weeks ago I got my hands back on Blender and I’ve got to admit: I love it! After dozens of hours reading and trying to get back into the interface I started my first project for our band, modelling and animating a stage with rig and light and so on… Just for fun!

And now I got my first big problem. I’ll try to describe as complete as possible even though I feel my English isn’t good enough:

I build a model of a stage part like this
http://www.globaltruss.com/images/products/gtstagesmall.jpg

and now I want to animate the mechanics. I set up the necessary bones and an empty as ik solver target for the left side of the stage module to give it a try (ok, it is definitely possible to animate this totally without an armature but I thought it could be a good point to start learning rigging and animating the rig with my own easy model). So far so good. When I move my empty everything moves “nearly” (some things are a little bit weird, maybe I get back to this later on) fine up and down. All I had to do was to set up the same for the right side. But I thought about trying something else first…

I thought it could be useful to set up a simple action to control those up and down movements on both sides simultanously by the rotation of a single empty working as an action constraint. So I went reading about actions…

After that I did that:

  • split workspace, 3d view, action editor :smiley:
  • add new action, add 2nd new action, renamed 2nd one
  • went to frame 1, put my ik solver target empty at the desired position, marked both bones of the ik chain, IKEY --> both bones showed up with actions in the action editor
  • went to frame 21, put my empty to the second desired position, marked the bones again, IKEY --> the second key got inserted in the action editor

Then I created another empty, set this one up as target for both bones in an action constraint with the corresponding frame count, rotation axis and rotation angle. Turned the empty, nothing happened. After some time of trial and error I discovered that after setting up the action keys I had to delete the ik solver target to get this to work.

But I still don’t understand, why! Shouldn’t the bones move even if I don’t delete the solver target (shouldn’t even the target follow?). Or is it because the ik solver target empty isn’t animated, staying where it is and therefor “blocking” the action keys? And if that is so, could someone please update the documentation in the wiki :confused: ?

And another question: when I delete all references to the generated keys (with the
‘X’ button), save and reopen the file, the deleted keys still show up when click on the browse button (the button I can either choose an existing action or create a new one). Is this correct?

Perhaps some of you think “why is he doing this, could be done more easier” but I’d like to learn as much as possible and so sometimes I like to go for the more complex solution :o Additionally, the whole stage setup will be quite big with many different things to animate and so I want to get the single animation handling as comfortable as possible. Keep in mind, I am a Blender re-starter!

If necessary I can post the blend… I’m using ver 2.44

Many many thanks!

Greetz

But I still don’t understand, why! Shouldn’t the bones move even if I don’t delete the solver target (shouldn’t even the target follow?). Or is it because the ik solver target empty isn’t animated, staying where it is and therefor “blocking” the action keys? And if that is so, could someone please update the documentation in the wiki ?
The current implementation of the IK solver in Blender overrides any other constraints applied … but in your set up if you had used armature bones as the IK targets and applied the action constraint to them using location keys (as opposed to the Empties which cannot have the Action constraint applied) instead of keying in the IK constrained bones for the action (I assume rotation from looking at the object that was rigged) the action constraint would have worked … in your situation you had two constraints in the same bone “fighting” each other … and in this case the IK solver simply wins because of how the code handles this type of situation .
But if you had used the track to constraint with empties (because in a lot of situations it seems to behave like an IK solver with a chain length of 1) and then added the action constraint to those same bones … well I don’t know what would happen exactly … all might depend on where the constraint is in the constraint stack, or you might get a laggy motion … but in general it is a bad idea to set up some combinations of constraints and wherever possible to only use one constraint per bone (as in my example above you could have used bones as targets and applied the action constraints to them) …
… And I’m not sure this is exactly wiki material needing to be updated … more a matter of working with the animation system and gaining experience, though the IK solver thing is not to my knowledge documented … unless you like to look through the logs at the SVN from four years ago …

And another question: when I delete all references to the generated keys (with the
‘X’ button), save and reopen the file, the deleted keys still show up when click on the browse button (the button I can either choose an existing action or create a new one). Is this correct?
You need to Shift-F4 to get access to the internal directory of your file then hit the “…” (double dots) to go up one level . Then you need to select the “Action” directory . Once there you should see the actions you thought you deleted there with its name, a F and a number (usually 1) in that order . Just select the ones you want to get rid of permanently with RMB until they are highlighted then simply hit the F key . All of them should now just have their name and a 0 listed . Now if you save and close the next time you open the file those actions will be gone for good …

… And this should be better documented because Blender does this with materials and other stuff as well …

Many, many thanks! That’s what I love those kinds of forums for…!
It definitely explains everything! I’ll give your hint with the target bone a try as soon as possible. It sounds much more convenient! Perhaps I’ll try this with the track to too, just to see what happens. You’re right I’ve got to get more experienced with the animation system but I think the dependencies between constraints, which one “beats” the other in a concurrent situation should be mentioned a bit more in depth. And I got to admit, there are so many things so read about Blender that I wouldn’t really like to start with this 4-year-SVN-log-reading thing :wink:
And the Shift-F4 function was definitely new to me! I thought about something like before, because I like it very much when using Shift-F1 with my different material libs or my part lib where I’m constructing my stage parts in.

But what is with this “X” button in the action editor? I thought, the “X” would always disconnect things from the object and the “F” button (ok, there isn’t any F button in the action editor) would create a fake user (I assume the F stands for that). This is kind of an inconsistent UI, right? Ok, no prob, now that I know I can live with that anyway…

EDIT: Ok, I think I understand now: The X places the action “in the background” so that you can use it with the constraint target and only with that. I.e. if I have an action about frame 1 to 21 and if I don’t disconnect, then the action runs when I press Alt-A even though I didn’t do anything with my contraint target. Like a regular IPO curve driven action from frame 1 to 21. But if I disconnect it, I can animate my target and only if I do that, the action takes place. Logically a little bit confusing at first, but ok. Therefor one should only give a reasonable names to the action and not forget this X button to have anything working the right way!

Perhaps you could explain me another one I just noticed regarding linking objects from libraries: is there any hotkey available to re-assign a lost library connection of a linked object? I found that I must have linked an object not having set the “relative” option. Now I opened my files at home and guess what, only a poor little empty shows up in place and I get some error messages in the console window. And surely, the outliner shows an absolute path name. I wonder if I could only re-assign the connection or if I have to re-import and re-assemble the whole thing…

BTW, is there a way to search SVN logs? Then I could do some more research myself…

EDIT: I just edited my model and the armature and it’s working great! Many thanks! To emphasise is that I even learned how import those functions are: “clear bone roll angles”, “apply scale and rotation” and “center new” :cool::cool:!!! I rearranged and reparented everything and now the rig works as it should, even though there is a slight deformation where I didn’t expected one. I’ll post some shots when I’m ready, because I don’t understand what’s going on and I can’t seem to fix it…

how important just is the roll bone angle really? I’ve had some weird deformation on bones to I recalculated the bone roll for, and I’ve gathered that for constraints, like stretchy constraints, when you edit the bone that has a constraint, you need to recalculate the bone roll angles.
But why is that?

Finally got it working! If you’d like to have a look, follow the link: http://blenderartists.org/forum/showthread.php?p=938379