Brand New IK/FK Constraint
In Blender, for Rigging a limb, we have to add at least 2 bone and add Inverse Kinematic Constraint to it. but what if we need forward kinematic too?
Right now you have to set up three different bone system for the limb. One for IK system, the other one for FK system and the third as main bone system for blend in between the others, and of course you need to code and setup the drivers to the third one to go back'n forth between the others. and if you want to stretch your limb you have to dial with it too. If Inverse Kinematic Constraint rewritten for both Inverse Kinematic & Forward Kinematic at the same time, the only thing you need is one bone chain for your limb and an IK/FK constraint, that is all.
With this approach rigger and animator saves a lots of time and effort. Rigger just rig one system for each limb not 3, and free a lots of hardware resource for performance. And when Animator switching from IK to FK do NOT need to go in panels and first switch IK to FK and then snap it to have a fluent animation...
In the video below there is a free and Open Source plugin for 3ds max that do and show exactly what I mean.
Description of the Video:
-
This is a solver that enables the animator the use of Both IK (inverse kinematics) and FK (forward kinematics) in the same hierarchy, useful for all kind of character limbs. The animator can easily switch between the modes using the IKFKBlend value, a value of 0.0 sets the hierarchy in forward kinematics Mode, that means that the movement of each node is inherited to its child, in this mode the animator can easily define arcs of movements. A value of 100 set the hierarchy in inverse Kinematics mode, that means that the nodes will try to reach the position of the IKGoal helper, in this mode the animator can easily attach the foot or the hands of the character to the ground or other objects.
-
The animator can interact with both modes without changing the IKFKBlend value, by rotating the FK nodes (or bones) or by moving the IKGoal Helper. The solver automatically match both IK and FK values each time that the FK or IK buttons are pressed or when the animator moves the IKGoal or rotates the FK Nodes. Other matches are done depending on the operation in progress.
-
The solver can use a float value to set the orientation of the hierarchy (Swivel Angle) or use a target node instead.
-
The solver has scaling and stretching features as well. The way of scaling the hierarchy in FK mode is by using the Scale Mult Value, when this value is in 100 the hierarchy will be in its original size, if this value is increased or decreased it will shrink or grow the size of the hierarchy respectively. The way of scaling the hierarchy in IK mode is setting the IKStretch value to 100 and pulling the IK Goal a distance greater than the length of the hierarchy. the Scale Mult and the IKStretch are automatically matched every time that the animator switches modes if the Match Scale Multiplier is on.
-
There are some rotation values that are called preferred angles, these values are used to define the orientation where the hierarchy bends. The Preferred angles can be changed interactively by rotating the FK nodes.
Here is the Link of the great Plugin, more info and source code of the Plugin.
20 Comments
Maybe they could add something like Raf's ephemeral rig as a new feature as well. I was never a big fan of IK/FK switches no matter how easy they are to set up. Might as well dream big - justtodosomethingbad.com/
* @3dddan * IK/FK system is a technique that must be in a 3d animation system if you like it or not... you may not use it in a character rig but in some situation you HAVE to use IK or FK or both together... so having a good quality IK Constraint is a must. in the other hand the link that you shear is wonderful technique that if would be implemented in side Blender would be WONDERFUL. so do us a fever and post that link as a new proposal here... I'll be the first person to vote up.
* @aslan.tamjidi * Yes, I completely agree - we need to have a more convenient way to set up IK/FK rigs. (and drivers as well, while we're at it(just look at mayas set driven key, as much as I dislike maya nowadays it's much more approachable)).
Currenty having a better IK/FK system is a must, but not something anyone would switch to Blender from another package, since most have proper tools for that.
Was just thinking, while someone is looking into IK/FK they could investigate how they can implement something like that ephemeral rig as well. It'd be a huge selling point.
Actually a guy (xbodya13) is doing a similar (similar an the way you'd interract with the rig) addon called FreeIK, was playing with that recently, seems really promising. I know it's an addon, some people like them, some hate them, but figured I'd mention it.
I fail to see how this can't be done in the existing system.
* @Jason van Gumster * It could be done in blender but you have to set up 3 different Bone system. one for IK other for FK and third one to blend between the others... and of course you have to code the snapping system to go back and forth... and if you wish to have stretch you have to dial with that too. but in the Felix Joleanes system, it is simple as you select the tip bone in pose mode and add the inverse kinematic constraint and that's done... it could be save a lot's of time either in rigging process and in animation process as well.
* @Jason van Gumster * in this proposal I meant to rewritten the Inverse Kinematic Constraint form the ground like in this plugin to save a huge amount of effort in rigging and animation time.
* @Jason van Gumster * I guess the author mentioned that it can be done manually in Blender. But having an out-of-the box solution like that would have been super awesome IMO and save loads of time. More automation solutions for rigging is always nice to have.
* @Chingiz Jumagulov * Yes it can be done manually right now but still the quality of Felix Joleanes's plugin is much more that what you will achieve in Blender. For example Animator need to do snap the IK goal to FK position each time for switching IK to FK and vice versa... But in this system because of both IK and FK is in the same hierarchy, no need for snapping process in animation Time... save a lot's of time in production.
* @aslan.tamjidi * you forgot to mention the IK/FK switch system on top of the 3rigs part and the snap. :P
But in short, the current system requires, for the same movement possibilities, to create a lot of extras in the rig and requires a lot of extra management during the animation process. Even though it's possible to reduce your work time using addons and scripts to automate some rigging process, you're still spending time creating those extras and the animator will also spend a lot of time managing the IK/FK switches, snap back and forth, ...
And all of these simply wouldn't be needed if Blender had an IK solver which could do the job alone. That's the idea.
* @-L0Lock- * exactly... to achieve full options in video there is a LOT'S of Task to do... even in animation process...
* @aslan.tamjidi * Yeah, I know, I was answering to Jason van Gumster's comment =)).
Now such problems solves with complex rigs, that allows to switch between IK and FK. But the higher problem I see is rough IK, that forces to use cheating called softIK.
* @ Vyacheslav * Of course if we have softIK it would be so nice... the video show that
* @aslan.tamjidi * it is still cheating in the video. I mean soft IK that damps joints and not allow them to click, when user drag them near limit, not streching.
* @ Vyacheslav * I see what you mean. that must be done in Inverse Kinematic Constraint too. really helpful and that would be achieved by cheating inside Blender too. of course it must be built in with IK Constraint as well...
exactly!
I'v been animating for 10 years and i still can't stand the slow and clunky classic ik/fk switch. I mostly use 3DSmax only because of the Biped IK/FK system. The script you linked from Joleanes does the exact same thing.
It's easy to say ; ''you need to have a classic switch, get use to it'' when you don't know any better, but the reality is that there's a better solution.
Good topic for animation 2020 project!
* @momotron2000 * Right now rigs in Blender are still too heavy, it would lightening the overall rigs hardware consumption by simplify the complexity...
I couldn't wait to see 2020 updates...
* @aslan.tamjidi * I know, the devs didn't even started yet!