Anyway to have Pole Targets work on a Constrained Indivdual Axis Robotic IK Rig

(I have tried four different thread titles already but its sorta impossible to try and summarize the issue in a title and have it sound logical).

This is a natural extension of the issues i had in this Rigging Mechanical Objects/Objects with Rigid Parts only Designed to Rotate one direction

Currently im trying to Rig a Wooden puppet arm, Being somewhat mechanical in nature the arm lacks proper ball joints per say and instead, similar to a mechanical arm it has individual components designed to function to only rotate on certain Axises,

Image to sorta visualize it.

Now I have managed to get a a IK Rig that works somewhat for this, it has everything constrained the right way, none of the objects move to contradict the mechanical joints, but there is one issue im still running into. I cant set a pole target without the thing breaking, and as such i cant easily or really at all control the direction the elbows are going to point.

This was my Rig, the second upper arm bone allow a tiny amount of control in the elbow direction when i rotate said upper arm, but its hardly any control and the Rig snaps alot aswell.
Rigging Example 3.blend (1.0 MB)

I also have another Rig, provided by the eternally helpful https://blenderartists.org/u/ajcdfin . There one is far better with less snapping and less bones, and while it has a bit more control of the elbow by dragging the IK controller up the arm and what not, its still not as elegant as having a Pole Target.
Rigging Example Other person.blend (988.5 KB)

So the Question i wanted to is between these two rigs, or perhaps another im not familiar with, is their anyway to have a Constrained Robotic IK Rig like these and still be able to use Poles and Pole Targets correctly?

Hi.
I looked at your second blend file:
methinks

1 Like

Keep in mind i’m still on 2.79

That does help with the Pole Target stuff but it doesn’t quite work, as can be seen here

The problem is that this updated changes then cause the armature to once again contradict the mechanical joints, as can be seen the Blue Shoulder Part and Yellow Shoulder Part are no longer moving together to form a logical mechanical joint.

This has been the larger issues, it seems like i cant use a more normal IK Rig for it, specifically because the Shoulder Joint does require the Yellow and Blue part to move together, for the blue part to act as the forward and back part of the shoulder rotation, and the yellow to act as the Side to Side part. Its functioning as intended in those examples .blend files i gave, but as i mention the issue is that it seems to come at the cost of not being able to set up poles.

Hey.
If I understand the problem correctly, maybe this will help you.
[Rigging Example Other person_test.blend|attachment]Rigging Example Other person_test.blend (1.0 MB) (1.0 MB) v2.7

You should name your bones.

On the rig you linked, the main thing you have to do to place the elbow is to rotate Bone.005 (the humerus twist bone). That bone has transform locks in your file, so you’d need to unlock those.

If you wanted something that acted more like a pole target, you could make a pole target bone, stretch a marker bone from clavicle to IK target, make a child of that bone halfway through, locked track (lock Y, to whatever) your pole marker bone, and then use a driver to copy rotation to Bone.005. You can’t use constraints for this, as they’ll be ignored by the IK, you have to use a driver.

There are other manipulations that will change the elbow position as well. Rotation of Bone in local Y, rotation of Bone.006 in local X (to change the IK’s preferred bend) will do that. There is no single change to reach all possible elbow positions, and there is no single solution to any possible elbow position. Unfortunately, IK systems with multiple solutions are prone to twitch.

If I was to design this, and needed full control over the elbow, and wanted to avoid twitch, I would probably design it differently, using only a 2-bone IK (bone and bone.001), then using constraints to place bone.006 and control the twist.

1 Like

Hey, I am a bit surprised you have not got this working :confused:

Hey, You added a bone constraint to a bone that is the parent of what it targets, that leaves a ‘Dependency loop’’, and it is set in ‘World’ space - which will break as soon as the whole character rotates.

Hey, I sorta mentioned this last time, but ‘Pole Targets’ override any
ik axis locks, so just don’t use them., your not missing anything by not using them. As far as the snapping/twitching goes - that could be due to axis locks along with how you move the target in the view port. Most people just hit ‘G’ and move it, but change the view angle just 20 degrees and you can get a whole different movement. Your trying to get a human type figure to respect mechanical joints - there has to be a compromise somewhere. I’m providing you with a version of your file, see if this ‘acts’ more like you expect. This is a demo file - i may have messed up your mesh objects, IDK. The arms have the same rigging, but one is ‘bent’ different, this effects how they move. I did leave the ‘pole targets’ - select them from the IK constraint with the ‘picker’, they should auto fill along with the proper angle. Do this after you have 'played around a bit with the arms, that way you will see how different they act. There are ‘locks’ and ‘limits’ on the IK chain bones and look closely at the IK constraint itself. Report back if this is not the behavior you expect. :bone: :male_detective:
DISCLAIMER; This file saved in V2.76, if using 2.7x, it will open fine - if using 2.8x ‘APPEND’ the objects from the ‘Object’ folder.

Yeah ill admit im have not been working on it too recently. Your Solution in the previous thread works well as i said, i just wanted to throw this up to see if anyone else had insights since our thread pittered out after i asked about the Elbow Question so i never got a answer about Poles and what not outside of you mentioning they don’t respect IK Constraints.

Currently Bandages solution seems to give the most finer control to very specifically rotating stuff. This does of course come at the comparison that unlike your Rig, snapping becomes a bit more of a issue since his solutions requires the double upper arm bone of rigging example 3 that i made, which is far less smooth then your examples.

You example still somewhat runs somewhat into the same thing where its much smoother but does not quite give control of the Elbow Direction as much as i would like, Pole targets of course still run into the same issues, The Shoulder Bone Rotates on its Tail in directions that are not just the X Axis. As you said yourself though Poles do not respect IK Constrains that is a given.

Just for Reference the arms with the Wireframe of the body.

So you can see somewhat why the Shoulder Bone needs to only be able to Rotate back and Forth, Since the Shoulder ‘pegs’ into the body. The Fact the shoulder mesh does not actually have a proper circular peg and is just a extrusion was just because its hidden and im lazy :P.

Granted im not sure if my One snaps so much simply because unlike yours i never gave the mesh and Rig a natural bend before starting, so i may also look into doing that.

Seems that your suggestion of unlocking those bones may work the best, granted the mesh of course still suffers from some twitching, although im not sure how much if it was because my Rig did not feature a natural bend to help guide the IK Bone.

I would be curious if you have time, seeing what your Design and Setup would be then?

I also may look into trying to set up a IK FK Switch aswell just to give me finer control when the IK will not cooperate.

Here’s a version that respects your angle limits, with a pole target, and no IK twitch.

To prevent twitch, I’ve created default angles, for both the humerus and the forearm. This creates a single-solution IK chain. You can change these default angles by rotating either bone in pose mode. (Although I think I forgot to turn off transform locks on the humerus, you’ll have to unlock to change the default angle.)

It doesn’t use any angle limits on the IK; it doesn’t have to. I track the IK chain with damped track and locked tracks to create the proper angles around the unlimited IK.

You’re likely to notice that as the humerus swings through a straight angle with the clavicle, the clavicle rotates around 180 degrees. It’s not intuitive, but this is actually necessary to smoothly and perfectly reach the IK target, and any twitchless solution is going to do this. A “real” robot arm might not do this, but at the expense of not constantly, perfectly reaching its target.

Looks like I reparented part of the clavicle object to the wrong bone too, which makes it look funky.

Rigging Example 3(2).blend (883.8 KB)

Oh yeah im well out of my element by this point with this stuff, but yeah that seems to work great. Ill probably end up recreating that myself just to try and understand what you did. Also just to see if it gets any weirdness in older versions of Blender.

Im sorry if i’m just being dumb and asking super simple questions, but the yellow Shoulder part, the part you said that your Reparented wrong. I tried just parenting it to the humerus like the Red part but stuff seemed to break when i did, it caused the red upper arm part to jump to a completely different location, Part of the Elbow also just jumped to a different location, and the yellow shoulder part itself also didn’t line up correctly. I assume their is some nuance to parenting that stuff that im missing. I opened in in my version of Blender 2.80 if it helps. (Will this technique work in the older 2.7 versions since im using 2.79 as my default still.)

Thank you for all your help.

Rigging Example 3(2).blend (882.5 KB)

There it is, properly parented. (Maybe you parented it to the wrong bone. I’m running the IK the normal direction along the arm, but the upper arm part of it is really the upper arm twist bone, and the main upper arm->clavicle runs backwards from the markers set up by the IK.)

Nothing in there is specific to 2.80+. IKs, damped tracks, locked tracks are all the same, and there aren’t any weird dependency things going on.

Hey, IDK whats going on with it in 2.76, but it does some crazy stuff

left = edit mode, right = pose mode, just grabbed the IK target, - looking at it you would think these are 2 different views, but they are the same, just had to zoom out a bit in edit mode to get it back in view. Look how all the ‘relationship’ lines have changed also. Wish I had a way to make a video of what it does, its crazy. :upside_down_face: :wink:

Was that imported into to 2.7 from 2.8. Since i assumed that perhaps it would get funky if imported, my plan, since i need to do it on the actual model would be just to recreate it from scratch anyway on the model.

Huh weird, its working in your new file just fine, but yeah when i go to the older one and copy your parents exactly, it does what i mentioned about it breaking.

I assume that if im recreating this Rig that i can do it while the Armature is just T posed with a Slight arm bend. I don’t need to have the Armature posed in any unique way to get this to cooperate while im recreating it. Just wanted to make sure since your files Default rest pose for stuff is not a A/T pose, so i just wanted to clarify that this method did not require some different default pose while building the armature.

Once again thank you for all your help.

Built it in 2.82. I think I started with Blender in 2.77, so I don’t know what 2.76 does. If all you did is move ikt, then there must have been some changes in how Blender handles IK-- IK shouldn’t move the bone chain off its parent.

You can do a T pose. I like to bake my angles into the rest pose so I can safely alt-r, but if you want, you can even do a straight arm pose and set your preferred angles with pose mode rotation. I think I just did that with a 45 degree bend because it was convenient (a number I can remember to also rotate the meshes.)

Hey, Not ‘imported’ its ‘Appended’ - and the only time I get ‘funky’ behavior is when something is off.

Hey B, All 2.7x act the same when it comes to rigging, minus the bug fixes. So after rebuilding it in 2.76, it turns out it is the ‘Damped Track’ constraint on ‘humerus’ bone, disabling it returns the rig to a usable state - tested on my rig and yours - I deleted it with out any side effects, rig works as you intended now. :smiley:
:bone: :male_detective:

Oops, it was damped tracking the tail (which was where the head was, so a bad idea.) You’re right, it’s not necessary. Should be fixed for any version, just wasn’t showing up in my tests (because damped tracking the bone’s own position is kind of an undefined operation.)

1 Like