FINAL IK - Full Body IK, Aim, Look At, FABRIK, CCD IK... [1.0 RELEASED]

Hey,

Can’t think of anything that would make it solve differently in the build, there are no “if UNITY_EDITOR” directives or anything like that so the math is the same.

It might be a skinning thing instead, maybe the Quality Settings you build to have less bones in the “Blend Weights” than the default one you use in the editor?

Best,

Pärtel

Thank you for replying!
We solve this problem.
Maybe is unity 2017 has some humaniod rig bug(abnormal polygon stretch),
and we transfer the panda fbx to unity 5.6 or 2018,
the exe file error was no longer exist

Thank you again!

1 Like

Hello
Yesterday i sent you a mail
I hope you received
thanks

Hey, thanks, just answered…

Best,
Pärtel

thank you very much :slight_smile:

Hi @Partel-Lang Lang

Could you tell me how I can do with the “LookAt IK”, the change between objects that look at it smoothly at a certain speed, instead of doing it abruptly in a single frame ???

It’s that when I change the target to look at it very abruptly and as much as I’ve tried I can not solve it

regards

Hi @Partel-Lang Lang, if I’m using the interaction system (from first person perspective) and examining an object that I’ve picked up, the idle animation I’m playing is a little too extreme, causing the object I’ve collected to move more than I intend it to. What’s the best way to counter this? Is there a way of reducing the ‘amount’ of animation that’s played (i.e. by changing some weights)? Or should I just block out the animation of the limb in question using an avatar mask? Thanks again.

Hey,
I’ve recently added a feature called LookAtController. It will simplify and automate all that stuff you mentioned by a lot.

Hey,

You could just set ik.solver.leftHandEffector.position to some point where you need the hand to be, then set position weight for that effector to something greater than 0.

Best,
Pärtel

1 Like

Hi all!

I’ve been working on a Q&A site that would make it easier for you guys to find answers about Final IK and PuppetMaster. It doesn’t have many questions/answers yet, but I have started to fill it in with some FAQ stuff and hopefully you’ll find it a better place than this forum to get your answers too.

So here it is :slight_smile:

Cheers,
Pärtel

3 Likes

Please what is the best way to get a component of the closestTriggerIndex in interactionTrigger. similarly like raycast hit where you use the hit object to get its component.

“Reset hand pose”. Hello! I am interacting with an object and i am picking it up, configuring fingers so as to hold it with right and realistic way. Then i drop it (as the video tutorial shows) But my fingers stays in a “grab position”. How can i reset it so as to keep it “open”, like when i start the scene. Thank you!

interactionSystem.triggersInRange[closestTriggerIndex].GetComponent...

Hey,
Just replied to you here.

Best,
Pärtel

interactionSystem.triggersInRange[closestTriggerIndex].GetComponent();
Hi Partel am getting an error when trying to access the closest trigger index component via player
ArgumentOutOfRangeException: Argument is out of range.
Parameter name: index

Hey,
Are you checking for if (closestTriggerIndex == -1)?
If there are no triggers in range, GetClosestTriggerIndex() will return -1, in which case it should not be used.

Hey Partel, I’m wondering if you have some tips for setting up a scene with multiple FBBIK characters - I’m looking for ways do improve performance. Thanks!

Where do i get the EditorIK script for Slate?

if (closestTriggerIndex == -1) return;

enemydropped = interactionSystem.triggersInRange[closestTriggerIndex].GetComponent();
Hi partel i tried using this to get the component of object i interacted with but unity is given me a null refrence

I am following the ‘Hit Reaction’ demo scene. It works awesome with my character. But as soon as I add the FBIKHandsOnProp.cs script the left arm twists strangely. Any idea what might be causing that?

I made a video where I change the FBBIK weight between 1 and 0 to show the left arm.

Any help appreciated, thanks.

Hey,

Optimizing FullBodyBipedIK:

  • You can use renderer.isVisible to weigh out the solver when the character is not visible.
  • Most of the time you don’t need so many solver iterations and spine mapping iterations. Sine FinalIK 0.4, we are able to set solver iteration count to 0, in which case the full body effect will not be solved. This allows for easy optimization of IK on characters in the distance.
  • Keep the “Reach” values at 0 if you don’t need them. By default they are 0.05f to improve accuracy.
  • Keep the Spine Twist Weight at 0 if you don’t see the need for it.
  • Also setting the “Spine Stiffness”, “Pull Body Vertical” and/or “Pull Body Horizontal” to 0 will slightly help the performance.
  • You don’t need all the spine bones in the spine array. FBBIK works the fastest if there are 2 bones in the spine, the first one listed as the Root Node, and the other one the last bone in the spine (the last common ancestor of both arms). Having less bones in the Spine makes it more rigid, which in some cases might be even a better, more natural looking solution.

Hey,
It’s here. I’ll also add it to the next version of FIK.

Hey,
Are you sure the GrabbingFinalIK component is on the exact same gameobject as the InteractionTrigger?

Hey,
Ah, that is just the FBBIK failing to get a good bend direction for the elbow under this hand target rotation that is close to the singularity point. You should keep rotation weight at 0 and just rotate the hand bone instead. To do that, go to the FBIKHandsOnProp script and comment out otherHand.rotationWeight = 1f; in line 59. Also change otherHand.rotation = mainHand.rotation * otherHandRelativeRotation; to otherHand.bone.rotation = mainHand.rotation * otherHandRelativeRotation;
Then set “Maintain Hand Rot” to 1 in the FBBIK left arm settings.

Other option would be to just add a bend goal to the left arm so you could tweak the elbow angle as you please.

Best,
Pärtel

Hey,
Are you sure the GrabbingFinalIK component is on the exact same gameobject as the InteractionTrigger?
Thanks Partel you are a genius.The GrabbingFinalIk was a parent of the interaction triggger.So I usedGetComponentInParent.It is actually working now