If I wanted to switch to using CCD or FABR so I could use rotation limiters, how do I get the “hand” to match the target rotation, which would needs be a priority over position?
Hi Partel,
I’m using both final IK and puppet master on a navmesh agent. I modelled my scene after the demo. But no matter what I do I seem to have absurdly exaggerated falls where the agent flies off the map. It feels very ‘floaty’ and the agent ends up sliding quite far from the object of collision for no apparent reason.
I’ve tried:
-changing all the rigid body weights for the puppet to be higher (also tried lower, both did nothing)
-lowering the max rigidbody velocity (this is the most obvious, it seemed to help a bit but even lowering it to 0.1 seems to result in floaty falls)
-getting rid of the finalIK components, including the effectors (did nothing)
-tweaking the parameters for the navmesh agent (especially acceleration etc., also seemed to do nothing).
Any idea of what I could try here? The navmesh agent in the demo is so elegant, but I can’t figure this out ![]()
Dear Pärtel,
I would like to ask if the following is possible with Final IK, which is to switch/blend between ragdoll and IK/animator, I want to achieve a look where the player can get up after being knocked over/down but smoothly. Is that possible?
I have seen something being done with puppetmaster, can final IK do similar ragdoll type physics.
Hey,
Rotation is not supported by CCD nor FABRIK algorightms. But you could just do just ik.solver.bones[ik.solver.bones.Length - 1].transform.rotation = ik.solver.target.rotation; after the solver has solved (use ik.solver.OnPostUpdate delegate to get a call after each update).
Don’t have a better solution other than that, sorry.
Hey,
Maybe you have PuppetMaster gameobject parented to the NavMeshAgent? If so, the sliding might be caused by the Navmesh continuing to move after puppet got unpinned and carrying the puppet along with it. If that’s not it, it is difficult to guess, if you could send it over as a unitypackage, I’d take a look.
Hey,
Final IK doesn’t do any ragdoll physics, it is all about inverse kinematics. In FIK there is only the RagdollUtility scene, that does do smooth blending from ragdoll back to animation, but you don’t really need FIK for that if you don’t have it.
Here’s the logic:
- Before blending to animation, store the position and rotation of the pelvis and localRotations of all the child Transforms.
- Make a parameter like ragdollWeight.
- When starting to get up, set ragdollWeight to 1, enable the Animator
- In LateUpdate(), blend ragdollWeight to 0 and lerp/slerp the position/rotation of the pelvis from stored state to current state by ragdollWeight:
ragdollWeight = Mathf.MoveTowards(ragdollWeight, 0f, Time.deltaTime * blendSpeed);
if (ragdollWeight <= 0f) return;
pelvis.position = Vector3.Lerp(pelvis.position, storedPelvisPosition, ragdollWeight);
pelvis.rotation = Quaternion.Slerp(pelvis.rotation, storedPelvisRotation, ragdollWeight;
- Do the same for all the child localRotations.
Btw I have another asset that does all the advanced ragdoll stuff - PuppetMaster.
Best,
Pärtel
Ah that was it-- thanks so much for the continued support!
Hello,
could you please advise me how to set Grounder for character without legs? I already successfully set GrounderFBBIK for my DAZ human character, GrounderIK for spider-like characters and GrounderQuadruped for dog-likes, but have no luck with this one.
Tried both GrounderIK and GrounderQuadruped . Fiddling with Grounder settings, using different bones as Pelvis. I also created 4 empty objects placed as 4 legs, used them as Limb IK and referencing them inside Grounder component.
I want it to being rotated 1:1 with terrain.
Michal
Hey,
Sorry, I do not understand, why would you need Grounder for a character with no legs? Is that a walking brain? ![]()
It’s basically slime:
https://assetstore.unity.com/packages/3d/characters/creatures/slime-blob-monster-pack-pbr-57835
Also have some snake-like creatures.
I somehow thought that solver will rotate whole body to fit terrain if I create 4 pseudo legs at the bottom (on each side), create Limb IK for each one and reference it in GrounderIK or GrounderQuadruped and set something in options.
Before Final IK I used my own leg-terrain raycasting to rotate characters on slopes, so I guess this is the way to go for no-leg characters…? ![]()
Hi, Partel,
I have a rather a sticky question for you to answer but I would like your honest opinions.
I love FinalIK and I really appreciate you opened new possibilities, however, I also love the new Animation Rigging system. I’m pretty sure you are familar with it as it will directly compete with FinalIK. The dev even mentioned that it plans to match FinalIK in terms of features.
When compared, the new Animation Rigging system has finer granular modules and provides more general solution than FinalIK. And it’s more in-line with the DOTS system also for the future proofness. And I honestly like it where it’s going. And it allows our animator has more control over IK setup as well.
Things are evolving and what I would like to know is that what your plan is on FinalIK. Will it remain as a different solution or it will embrace the Animation Rigging system?
Depends on what path you take, I’ll have to either just migrate all my IK setup to the new Animation Rigging system or keep FinalIK as a layer on top of the Animation Rigging system. Having two solutions in the IK setup will make things complicated and I don’t wish to have two different systems in the same setup.
What I wish is that you support FinalIK as an extension to the Rigging. The Rigging system is completely open-source and with your expertise, I’m pretty sure you can provide lots of cool extensions.
A similar story exists between NGUI and UGUI. NGUI is definitely served its purpose well before UGUI but no new asset mentions about NGUI compatibility anymore. I don’t want FinalIK to take the same path as NGUI.
Thanks for your opinion.
Cheers!
Hi Partel, this has probably been asked before, but I couldn’t find a good way to search for it in this monstrously long thread ![]()
Is it possible to combine RotationLimits and the FullBodyBipedIK? I’m just trying to prevent the arms of my character from clipping through the body, but so far with no luck ![]()

When using realtime baker+VRIK for humanoid I get the waist positioning where the feet should be. Anyway to correct for this?
(Can set root transform position (y) to -1 to correct height placement in animation but when foot ik is selected in animator the feet go up into the waist. Think its connected to the position being off by 1 unit)
Hi!
I’ve just been testing AimController demo, but found
that the dummy character actually turns to face the aim target (that is placed
outside of maxRootAngle) even with turnToTarget disabled.
turnToTargetTime also seems to have no influence over the rate of rotation.
Am I missing something?
I am using the latest version of Final IK on Unity 2019.3.
Hey,
Yes, without legs it would be much more efficient to just rotate the blob to surface normal:
Quaternion q = Quaternion.FromToRotation(transform.up, raycastHit.normal);
transform.rotation = Quaternion.Slerp(transform.rotation, q * transform.rotation, Time.deltaTime * rotationSpeed);
And use SphereCast, it will be much more reliable than Raycast.
Hey and thank you for your concern! ![]()
I have already tried making AnimationRigging versions of a couple of my solvers, but they ended up being considerably slower than what I already had. There are also some limitations to stuff like making raycasts, preventing me from making a Grounder-like foot placement correction system with it. As for matching FIK in terms of features, I wish them luck with that, I am about 6 years ahead of them hehe. But seriously, for the current performance, I see no point in making custom Animation Rigs, so I will skip the Animation Jobs and go directly to DOTS when it matures to a production ready thing. For now I don’t see a lot of developers choosing to spend 10x more time going with DOTS to gain some performance, there are easier ways to optimize.
Hey,
Not possible, sorry, but you could try using Bend Goals to keep the elbows out of the body instead.
It is possible to solve RotationLimits on top of FBBIK though, but the hand will not match the target anymore when a limit is violated. This is how:
public RotationLimit[] limits;
public FullBodyBipedIK ik;
void Start() {
foreach (RotationLimit limit in limits) {
limit.enabled = false;
}
ik.solver.OnPostUpdate += AfterFBBIK;
}
void AfterFBBIK() {
foreach (RotationLimit limit in limits) {
limit.Apply();
}
}
Hey,
Yeah, select the produced animation clip, then set all the “Based Upon”-s to “Original”.
Hey,
If you have turnToTarget disabled, it will just make sure character angle is kept within maxAngle from the target direction. With turnToTarget enabled, it will smoothly turn to target direction when maxAngle reached. That turning time is defined by turnToTargetTime. If turnToTarget is disabled, turnToTargetTime has no effect, it is actually the smooth interpolation of the aiming vector that makes it appear smooth.
If you wish to disable turning to root entirely, just set maxRootAngle to 180.
Cheers,
Pärtel
This is right, most people are viewing DOTS as an experimental but inevitable thing. We will all go there, there’s no question because it’s internally Unity 2.0. But right now? probably not!
Also I get the feeling that the most use of DOTS from mainstream customers will come via visual scripting, so it’ll be up to authors like you to support it when the time comes, and that most likely will be better for them to interact with your code via DOTS visual scripting.
I wonder if your code didn’t make it further than Unity games sometimes ![]()
Thanks for the visual scripting thing, I hadn’t thought of that!
I know it’s best to jump on the train as early as possible, but at this early stage with everything still changing rapidly, it would be more like jumping in front of a train. But we’re all just fortune tellers now, every day I thank the gods, at least I didn’t write a shader tool and end up in Render Pipeline Hell. ![]()
That would be probably fine, thank you a lot! Also, how resource expensive would that call be?
Depends on which RotationLimit you use. RotationLimitAngle is almost nothing, RotationLimitPolygonal is the heaviest. RotationLimitSpline just gets some angles and evaluates an AnimationCurve.
I understand that you want to wait until the dust settles down. That’s the sentiment most of the Asset developers I talk to. Timing-wise, it’s the worst time to be a Unity developer. Unity promised so many things but I don’t see we will see the promised land any time soon. I feel like we are trapped between the future and leftovers. But honestly. I don’t know if there has been any best time to be a Unity developer though. They just cannot deliver and when they do, it feels like 20% short and they stop at that. Smart developers will stay within the boundaries, but sometimes we have to push the boundaries. This is where all the sadness comes from.
One thing I learned for sure is that I’ll make a clicker style game to stay well inside of the boundaries. Very sad.
I found out the issue with baking animation and character waist being ground level. I have 2 blender rigs but both were causing that issue. Using the dummy model or different model from asset store worked. I wonder if this is solely a blender quirk or if rigs need to be setup in a certain way.
(Guess I can test by importing and exporting that model from asset store)
Edit:Not blender, importing working rig and exporting still works. Just have to figure out what setup it likes now
I see, thanks for the clarification.
