Search Unity

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

Discussion in 'Assets and Asset Store' started by Partel-Lang, Jan 15, 2014.

  1. tmcsweeneyML

    tmcsweeneyML

    Joined:
    Aug 13, 2013
    Posts:
    7
    Hi Pärtel,

    Is there any solution to having a CCD or FABRIK like chain that supports an arbitrary number of bones with weird constraints AND supports having an IKRotation target? I'm trying to set up foot IK on a rig with weird leg joints that don't at all map to a standard biped. I've made good progress with using the CCD solver and some custom code to drive the weight and target, but without having a rotation target the solver will sometimes end up with the foot correctly touching the floor but at a weird angle, especially if going up a slope.

    Cheers
    Tim
     
  2. Partel-Lang

    Partel-Lang

    Joined:
    Jan 2, 2013
    Posts:
    2,554
    Hi!
    There is no algorithm like that in Final IK (guess it's not that final after all :))
    But if you send me a picture of the creature in a private conversation or support@root-motion.com, I might have some ideas for you).

    Cheers,
    Pärtel
     
  3. henkjan

    henkjan

    Joined:
    Aug 1, 2013
    Posts:
    146
    Hi Partel,
    I have some strange behaviour that I can't explain. I'm trying to setup an interaction system (Full Body Biped IK, Interaction Object with interaction target).
    In the FBBIK I have set the Right shoulder effector position weight to 0.11. But when I run Unity and test the interaction it will reset to 0.
    I have added an image with the interaction object settings and FBBIK settings.

    Can you tell me what I'm doing wrong here?
     

    Attached Files:

  4. TokyoDan

    TokyoDan

    Joined:
    Jun 16, 2012
    Posts:
    1,080
    Can Final IK be used in 2D?
     
  5. wetcircuit

    wetcircuit

    Joined:
    Jul 17, 2012
    Posts:
    1,409
    :D hahahaha
     
  6. Partel-Lang

    Partel-Lang

    Joined:
    Jan 2, 2013
    Posts:
    2,554
    Hey, I think I've found the problem that is causing this, hold on, I'll send you a patch..

    Hi,
    Some of the solvers (CCD, AimIK, FABRIK) have a 2D toggle. LimbIK can also be constrained to 2D. FullBodyBipedIK and all tools using it will not work in 2D.

    :) There are some algorithms that can do this, for example the Jacobian inverse method, but they are not very reliable and terribly slow (about 10 times slower than CCD/FABRIK), so I don't think it's really worth the effort (they're also very difficult to implement). They are mostly useful in robotics and stuff like that, not games.
     
  7. Partel-Lang

    Partel-Lang

    Joined:
    Jan 2, 2013
    Posts:
    2,554
    Hi again,
    Please try this patch, just import it (make sure you are using Final IK 1.1).

    Cheers,
    Pärtel
     
  8. henkjan

    henkjan

    Joined:
    Aug 1, 2013
    Posts:
    146
    Thanks, I wil try this one :)
     
  9. puzzlekings

    puzzlekings

    Joined:
    Sep 6, 2012
    Posts:
    404
    Hi Partel,

    I picked up PuppetMaster as well, just wondered whether you have a demo that showcases both of them together?

    Also with AimIK, is there any way of slowing down the speed at which it aims? ... thinking about the Angry bots demo here



    cheers

    Nalin
     
  10. Partel-Lang

    Partel-Lang

    Joined:
    Jan 2, 2013
    Posts:
    2,554
    Hey, thanks for picking up PuppetMaster!
    The FinalIK-PuppetMaster bridge with some demos can be downloaded from here.

    To slow down the speed of aiming, you'll have to slow down the target, interpolate it smoothly. Since it is the speed of rotating the gun that matters, you should not just interpolate the target linearly, but angularly.
    So you take the direction from the character to the current (smoothed) target, then use Vector3.RotateTowards and/or Vector3.Slerp to interpolate that direction towards the real target. Then apply the rotated smoothed target to AimIK.
    Does that make sense?

    Pärtel
     
  11. puzzlekings

    puzzlekings

    Joined:
    Sep 6, 2012
    Posts:
    404
    Thanks for the bridge Partel!

    Once I have a bit more time I want to try and hook up Apex Path to FinalIK so that for example utilising the bots/mech from Grounder demo I'd like to be able to get Apex Path to drive these as units. This way when they go up slopes then the bot will be angled using FinalIK.

    My starting point is the tutorial they have to hook up to mecanim here:
    http://unity3d.com/learn/tutorials/...et-store/apex-path-and-mecanim?playlist=17132

    If you have any suggestions on the best way to do this, I'd love to hear :)

    kind regards,

    Nalin

    BTW have you got the angry bots soldier character with FinalIK anywhere?
     
  12. Partel-Lang

    Partel-Lang

    Joined:
    Jan 2, 2013
    Posts:
    2,554
    Basically, the script that handles input for the character in the Grounder demo is UserControlThirdPerson.
    You'll want to make a new script, maybe name it UserControlApex, make it extend UserControlThirdPerson.
    In that new script you can override the Update function and fill in the UserControlThirdPerson state to make the character move:

    Code (CSharp):
    1. protected override void Update() {
    2.             state.move = something;
    3.             state.jump = somethingElse;
    4.         }
    Here's the Angry Bots character fbx and textures, but it doesn't have any IK on it.

    Cheers,
    Pärtel
     
  13. puzzlekings

    puzzlekings

    Joined:
    Sep 6, 2012
    Posts:
    404
    Cool - many thanks!
     
  14. JBacal

    JBacal

    Joined:
    Jun 6, 2015
    Posts:
    59
    Hi Partel,

    I know you gave us fair warning, but is there still any way for Final IK owners to get the special pricing on PuppetMaster?

    Thanks for your great assets,
    Jay
     
  15. AlbertSwart

    AlbertSwart

    Joined:
    Oct 17, 2015
    Posts:
    15
    Hi Pärtel,

    I've been playing around with the interaction system, essentially creating complete procedural animations.

    I've not had a chance to scan through all the postings in the forum but I am sure the topic must have come up in one form or another before:

    The interaction system / FBBIK does not enforce limits or constraints ito movement, therefore with a complete procedural animation one gets artifacts in some movements, especially ones that are close the body or above the shoulders etc. One way to solve this is by using Bend Goals to make the limb movement more natural. The crux of my question I guess is this...

    On the Interaction Object there are Weigh Curves for things like Offsets etc. but do you have a suggestion on a sexy approach for applying bend goals / weights along a curve that is in sync with the rest of the interaction? I guess one could add a number of events (messages) along certain times of the interaction to try and accomplish this but it feels like a very clunky approach to me.

    I am proficient in C# but I am still getting my head around all of the magic in your scripts so I'm not really at a point where I can dig in and start extending these yet, a sample would be much appreciated. :-D

    Edit:
    Ok so I went digging in the Interaction Object class and I see that you have an Internal Class called WeightCurve with an enum property called Type. I extended it with two additional values called BendGoalWeightLeftHand and BendGoalWeightRightHand and in the switch statement where you Apply the curves I added case statements for the two new Type values where I apply the curve weight. Its a bit of a hack but it seems to do the job, and it could be extended even more for things like the bend targets:

    Code (CSharp):
    1.             public enum Type {
    2.                 PositionWeight, // IKEffector.positionWeight
    3.                 RotationWeight, // IKEffector.rotationWeight
    4.                 PositionOffsetX, // X offset from the interpolation direction relative to the character rotation
    5.                 PositionOffsetY, // Y offse from the interpolation direction relative to the character rotation
    6.                 PositionOffsetZ, // Z offset from the interpolation direction relative to the character rotation
    7.                 Pull, // FBIKChain.pull
    8.                 Reach, // FBIKChain.reach
    9.                 RotateBoneWeight, // Rotating the bone after FBBIK is finished
    10.                 Push, // FBIKChain.push
    11.                 PushParent, // FBIKChain.pushParent
    12.                 PoserWeight, // Weight of hand/generic Poser
    13.                 BendGoalWeightLeftHand, // ALBERT
    14.                 BendGoalWeightRightHand // ALBERT
    15.             }
    Code (CSharp):
    1.             case WeightCurve.Type.BendGoalWeightLeftHand:
    2.                 solver.GetChain(FullBodyBipedEffector.LeftHand).bendConstraint.weight = Mathf.Lerp(solver.GetChain(effector).bendConstraint.weight, value, weight);
    3.                 return;
    4.             case WeightCurve.Type.BendGoalWeightRightHand:
    5.                 solver.GetChain(FullBodyBipedEffector.RightHand).bendConstraint.weight = Mathf.Lerp(solver.GetChain(effector).bendConstraint.weight, value, weight);
    6.                 return;
    PS: Wanted to discuss refactoring some of these scripts for Object Orientated / Single Responsibility goodness but I see there are some limitations, i.e. due to the Serialization requirement, polymorphism is not 'supported' for custom classes. :-o

    Thanks!
    Albert
     
    Last edited: Dec 3, 2015
  16. Partel-Lang

    Partel-Lang

    Joined:
    Jan 2, 2013
    Posts:
    2,554
    Hey, sorry, the AS upgrade system it's not meant for discounts, just upgrades.
    I could sell it to you through paypal, but you'd have to ask for updates each time.

    Hey,

    That's one way of doing it. :)
    Also you could make a script that checks for interaction progress using InteractionSystem.GetProgress(FullBodyBipedEffectoreffectorType);
    that is a normalized value from 0 to 1 and could be used to animate bend goal weight. You could make an AnimationCurve bendGoalWeight use the progress to evaluate it.

    Anyway, in the "Interaction Trigger" demo scene, I've made it so that the trigger ranges are always valid and it will only trigger when the character is standing still. Then disable movement, jumping and all that for the duration of the interaction.

    Cheers,
    Pärtel
     
  17. lazygunn

    lazygunn

    Joined:
    Jul 24, 2011
    Posts:
    2,749
    Partel, can you not provide a private purchase a voucher from the asset store? That way they'd get the updates as normal, i was thinking about this myself
     
  18. Partel-Lang

    Partel-Lang

    Joined:
    Jan 2, 2013
    Posts:
    2,554
    This is what it says in the publisher admin:

    Free Package Vouchers can be used to allow an Asset Store user to freely download a package using a voucher code. Publishers are not allowed to sell vouchers or otherwise charge for them. Publishers are able to issue 12 Free Package Vouchers per package within the last year.
     
  19. DaDarkDragon

    DaDarkDragon

    Joined:
    Jun 6, 2013
    Posts:
    115
    Can I make a "donation" and you give me a voucher as a thank you *shifty eyes*. but in all serious I know you probably can't do that, even if you had an unlimited amount ha ha.
     
  20. hopeful

    hopeful

    Joined:
    Nov 20, 2013
    Posts:
    5,684
    Unity takes a 30% commission on every sale. When a sale is done by voucher, they don't get their commission. That's why Unity controls the number of vouchers.

    Vouchers are a way of helping vendors run promotions, and for allowing them to reward people who help out by testing new products and updates.
     
  21. zalo10

    zalo10

    Joined:
    Dec 5, 2012
    Posts:
    21
    Hey Partel,

    Quick question on the Interaction System. When an effector (like the Right Hand) has its Target set to a transform, that hand's is unable to reach the interaction target during interactions. (When the Effector Target is left "None" it all works great.)

    I'm trying to set both of the character's hands to follow a pair of VR controllers, so I think I need to use the effector's Target Transform to do this, but I'd also really like to be able to blend from that effector target transform to an interaction object (and back).

    Do you have any ideas on how to do this?

    Here's what it looks like (the hand should reach into the cube, but instead lands outside of it):
     
    Last edited: Dec 6, 2015
  22. HWQLearner

    HWQLearner

    Joined:
    Jan 24, 2014
    Posts:
    7
    Hi, I am new for Final IK. I have watched tutorials posted in youtube. Now I am edit Jump animation by using IK in runtime. There are four effectors which are right hand, left hand, right foot and left foot to control the position and rotation of hand and foot of 3D character.

    For example during in Play mode, a jump animation will start playing, when I click on "Right hand effector" button, the right hand will move according to mouse position(effector), but after I click on "Left hand effector" button, the right hand will back to original position. May I know Final IK can solve my problem like that? so every time I move the effectors, the jump animation will change.
     
  23. Partel-Lang

    Partel-Lang

    Joined:
    Jan 2, 2013
    Posts:
    2,554
    Hi! Instead of assigning a Target transform, you can just write
    Code (CSharp):
    1. ik.solver.leftHandEffector.position = targetPosition;
    .
    Actually if you wish to make it work with the Interaction System I suggest you use effector positionOffset instead.
    Then the InteractionSystem will just work on top of it as if everything else were just basic animation.
    So instead of writing
    Code (CSharp):
    1. ik.solver.leftHandEffector.position = targetPosition;
    write
    Code (CSharp):
    1. ik.solver.leftHandEffector.positionOffset += targetPosition - ik.solver.leftHandEffector.bone.position;
    Hi,
    I'm not sure I understood the question right, but when you click on the left hand button, just call a coroutine that blends in left hand effector weight and set the target position to where you need. When the other button is pressed do the same for the other hand effector. You can use this coroutine to blend the positionWeight of an effector:

    Code (CSharp):
    1. private IEnumerator BlendEffectorPositionWeight(IKEffector effector, float targetWeight, float blendTime) {
    2.             while (effector.positionWeight != targetWeight) {
    3.                 if (blendTime <= 0f) effector.positionWeight = targetWeight;
    4.                 else effector.positionWeight = Mathf.MoveTowards(effector.positionWeight, targetWeight, Time.deltaTime * (1f / blendTime));
    5.                 yield return null;
    6.             }
    7.         }
    Cheers,
    Pärtel
     
  24. Purpleshine84

    Purpleshine84

    Joined:
    Apr 8, 2013
    Posts:
    194
    Hi,

    I want to thank you for this amazing product, I just bought it.

    So here is my question: in a video from 1 year ago on your youtube channel called FINAL IK – Effector Animator concept, you show a script called Affector Animator script. This is just what I would like to do at this moment, make an animation with final IK and store it as an Animator clip in the Animator. Is this not possible or is there another way? I hope you can help me.

    Best regards,
    Maurice

    PS: the email adresses on the Unity Asset store of Final IK don’t work (Page not found).
     
  25. wightwhale

    wightwhale

    Joined:
    Jul 28, 2011
    Posts:
    397
    So i followed the aim IK setup video where I turned off the full body ik and update it in the second hand on gun script. Now I'm trying to add grounder to the same rig but the full body IK is turned off. What's the best way to fix this issue?
     
  26. Partel-Lang

    Partel-Lang

    Joined:
    Jan 2, 2013
    Posts:
    2,554
    Hey, thanks for the purchase!

    That concept never made it to Final IK, I was not able to make it work nicely with Humanoids (recording and saving animation), there was no API for creating muscle animation, had to use some kind of external DAE/FBX exporter and then reimport and it was all too complicated and hacky to release to the public.
    But I'm planning to give it another go at some point, they have opened up the HumanPose API, I'll see if it's any help.
    In the meanwhile, actually you can add empty gameobjects to a parent and assign those gameobjects as FBBIK effector targets. Then use Unity's Animation Window to animate their positions/rotations. It's a bit of a hassle without extra helper editor scripts, but that's how the concept worked.

    Hey,
    The Grounder updates automatically whenever the IK component it is associated with updates so you should be able to use it with no extra hassle. Is it not working?

    Cheers,
    Pärtel
     
  27. Kubold

    Kubold

    Joined:
    May 10, 2012
    Posts:
    359
    Hi,

    Puppet Master looks just awesome on videos. Do you plan to release some PlayMaker actions for it? Or maybe the variables are already exposed and controllable simply by SetProperty Action?
     
  28. Partel-Lang

    Partel-Lang

    Joined:
    Jan 2, 2013
    Posts:
    2,554
    Hi,
    Yea, I was planning to look into PlayMaker at some point soon, the variables are exposed though. Maybe needs a bit higher lever API for PlayMaker though. Fortunately there should not be much scripting to be done with PM anyway, once you set up the behaviours in the editor, they can take care of themselves for the most part. Unless you need to write some custom behaviours or something.
     
  29. Kubold

    Kubold

    Joined:
    May 10, 2012
    Posts:
    359
    Cool.

    I didn't yet buy Puppet, but I guess some simple controls during runtime would be needed to incorporate it to a full game. You know, like turning it completly off and on when the character transitions to custom cutscene animation, or changing the behaviours on the fly, like "cover the head while falling ragdoll" vs. "I'm unconsious/dead ragdoll" or even "I'm cut in half ragdoll".

    Anway, thanks, good to hear about Playmaker.
     
    hopeful likes this.
  30. Purpleshine84

    Purpleshine84

    Joined:
    Apr 8, 2013
    Posts:
    194
    Hi Partel,

    I try to use your amazing product with Adventure Creator but I have some problems: When I start the game I have a huge framedrop and the Interaction GUI system is spawned two times on my character without an object in it. I really dont understand that this is happening since everything looks good with the difference that aswell as my player is a prefab and spawned and the object to interact with is already in the scene (but also a prefab). What should I do? I get this error message from Final IK (not any from Adventure Creator):
    RootMotion.Demos.InteractionSystemTestGUI.OnGUI () (at Assets/Plugins/RootMotion/FinalIK/_DEMOS/FBBIK/Scripts/InteractionSystemTestGUI.cs:27)
     
  31. Purpleshine84

    Purpleshine84

    Joined:
    Apr 8, 2013
    Posts:
    194
    Ok, I think this is a Unity bug, even if I drop the whole IK out of the scene the objects are still spawned on the character.. wow...
     
  32. Purpleshine84

    Purpleshine84

    Joined:
    Apr 8, 2013
    Posts:
    194
    Ok, the spawning problem etc is all solved: I appeared to have two characters that where equal and mixed them - completely my bad! But what remains is the prefab problem: I dont have error messages again but I have to place the prefab in the scene during runtime to make it work, otherwise my character cant find the object, and I did everything I know of: applying the prefab, aswell as the character prefab and drag it in the project folder, it wont work.
     
  33. Purpleshine84

    Purpleshine84

    Joined:
    Apr 8, 2013
    Posts:
    194
    Update: it works! For all people that want to make it work for Adventure Creator: Use the script from Snjeborn: place it in the Action folder. Then in Unity: put the scripts Fully biped and interaction System on the character (not GUI system), then you are good to go. Go to Custom : Final IK : Run interaction and put the object in the action. And in the object the right affector (I think). Ok, happy it works!! :)
     
  34. Purpleshine84

    Purpleshine84

    Joined:
    Apr 8, 2013
    Posts:
    194
    (The script from Snjeborn is found on the Adventure Creator forum in the thread about Final IK)
     
  35. Partel-Lang

    Partel-Lang

    Joined:
    Jan 2, 2013
    Posts:
    2,554
    Hey,

    Turning it off is done simply by changing PuppetMaster.mode. There is Active, Kinematic and Disabled mode.
    Kinematic is when the ragdoll is set to isKinematic and will just follow the animation using MovePosition and MoveRotation, Disabled deactivates the entire ragdoll hierarchy. Changing behaviours on the fly requires a bit more work, but there is also a higher level API for the PuppetMaster that helps you to set muscle/pin weights for limbs, recursively, for a specific HumanBodyBone and stuff like that.

    Hey, glad you managed to solve those issues :)

    Cheers,
    Pärtel
     
  36. HWQLearner

    HWQLearner

    Joined:
    Jan 24, 2014
    Posts:
    7
    Hi, I already solved that problem what I found without using Final IK. But I still have interest to buy Final IK, so before this, may I know is it possible that access to Final IK's scripts to edit animation in runtime without using the inspector?
     
  37. Partel-Lang

    Partel-Lang

    Joined:
    Jan 2, 2013
    Posts:
    2,554
    Yes, you can access everything in the Final IK scripts by script, the source code is open and you are free to make your modifications if you ever need to.

    Cheers,
    Pärtel
     
  38. wightwhale

    wightwhale

    Joined:
    Jul 28, 2011
    Posts:
    397
    I'm having an issue where when I turn off the second hand on gun script the hands still want to be placed where the gun was and it's making my character stay with the gun. This wasn't an issue before when I had the fbbik off. I guess I just need to know how to fully turn the aiming arms off. Also I have a second issue where when I go to aim the gun the player's head will sometimes rotate to the side or stretch the neck. Do you know how to fix that?

    Here's the code which is almost the same as the script from your video but changed slightly so I can toggle it on and off.
    Code (csharp):
    1.  
    2. using UnityEngine;
    3. using System.Collections;
    4. using RootMotion.FinalIK;
    5. using Goon;
    6.  
    7. public class SecondHandOnGun : MonoBehaviour
    8. {
    9.     public AimIK aim;
    10.     public FullBodyBipedIK ik;
    11.     public LookAtIK look;
    12.     [SerializeField]
    13.     private Transform lookTarget;
    14.     private Transform staticLookTarget;
    15.  
    16.     private IKEffector leftHand { get { return ik.solver.leftHandEffector; } }
    17.     private IKEffector rightHand { get { return ik.solver.rightHandEffector; } }
    18.  
    19.     private Quaternion leftHandRotationRelative;
    20.  
    21.     // Use this for initialization
    22.     void Start ()
    23.     {
    24.         aim.enabled = false;
    25.         //ik.enabled = false;
    26.         look.enabled = false;
    27.         //aim.Disable();
    28.         //ik.Disable();
    29.         //look.Disable();
    30.  
    31.         staticLookTarget = ObjectReferences.player.GetComponentInChildren<StaticLookTarget>().transform;
    32.  
    33.         //ik.solver.OnPostUpdate += OnPostFBBIK;
    34.     }
    35.  
    36.     void OnEnable()
    37.     {
    38.         //look.solver.headWeight = 1f;
    39.         look.solver.target = lookTarget;
    40.         look.enabled = false;
    41.         ik.solver.OnPostUpdate += OnPostFBBIK;
    42.     }
    43.     void OnDisable()
    44.     {
    45.         //look.solver.headWeight = 0f;
    46.         look.solver.target = staticLookTarget;
    47.         look.enabled = true;
    48.         ik.solver.OnPostUpdate -= OnPostFBBIK;
    49.     }
    50.  
    51.     // Update is called once per frame
    52.     void LateUpdate ()
    53.     {
    54.         // Find out how the left hand is positioned relative to the right hand rotation
    55.         Vector3 toLeftHand = leftHand.bone.position - rightHand.bone.position;
    56.         Vector3 toLeftHandRelative = rightHand.bone.InverseTransformDirection(toLeftHand);
    57.  
    58.         // Rotation of the left hand relative to the rotation of the right hand
    59.         leftHandRotationRelative = Quaternion.Inverse(rightHand.bone.rotation) * leftHand.bone.rotation;
    60.  
    61.         aim.solver.IKPosition = look.solver.IKPosition;
    62.  
    63.         aim.solver.Update();
    64.  
    65.         // Position the left hand on the gun
    66.         leftHand.position = rightHand.bone.position + rightHand.bone.TransformDirection(toLeftHandRelative);
    67.         leftHand.positionWeight = 1f;
    68.  
    69.         // Making sure the right hand won't budge during solving
    70.         rightHand.position = rightHand.bone.position;
    71.         rightHand.positionWeight = 1f;
    72.         ik.solver.GetLimbMapping(FullBodyBipedChain.RightArm).maintainRotationWeight = 1f;
    73.  
    74.         ik.solver.Update();
    75.  
    76.         // Rotate the head
    77.         look.solver.Update();
    78.     }
    79.  
    80.     // Rotate left hand after FBBIK has finished
    81.     private void OnPostFBBIK()
    82.     {
    83.         leftHand.bone.rotation = rightHand.bone.rotation * leftHandRotationRelative;
    84.     }
    85. }
    86.  
    87.  
     
  39. Partel-Lang

    Partel-Lang

    Joined:
    Jan 2, 2013
    Posts:
    2,554
    Hey,

    I noticed you have commented out ik.enabled = false in Start.
    So Actually FBBIK component will update twice when the script is enabled, once when you call ik.solver.Update() in LateUpdate and also when it normally updates it's solver since it is not disabled.
    And if you disable the script it will still update once and that's why the hands remain where they were.

    About the second info, try disabling LookAtIK, then try disabling AimIK and tell me which one is causing this.
    Is it when aiming backwards?

    Cheers,
    Pärtel
     
  40. wightwhale

    wightwhale

    Joined:
    Jul 28, 2011
    Posts:
    397
    I added
    leftHand.positionWeight = 0f;
    rightHand.positionWeight = 0f;
    to the disable and it allows me to still use grounder without being stuck now.

    When I disable all the LookAtIK the problem doesn't happen anymore, but I would like to have it because it moves the head with aiming.
     
  41. Partel-Lang

    Partel-Lang

    Joined:
    Jan 2, 2013
    Posts:
    2,554
    You can try using another AimIK component instead of LookAtIK. Just set the head as the Aim Transform and also include it in the "Bones". I usually prefer AimIK over LookAtIK, you can assign a Pole and use rotation limits with it and stuff...

    Pärtel
     
  42. frankmat

    frankmat

    Joined:
    Sep 14, 2013
    Posts:
    42
    Hi Henedsoft,

    Just wanted to say THANKYOU!! I had the exact same issue as you... and after over a day of trying to figure it out I was at my wit's end until I found this.

    I had the exact same issue... the Bipedreferences weren't being assigned because the UMA object seemingly hadn;t been created yet.

    The workaround you put in worked. Not sure if you found a more elegant solution than having to keep the game waiting 5 seconds before loading... but if you have I would love to know!

    PS: I am using UMA2 and the latest version of FinalIK.
     
  43. Purpleshine84

    Purpleshine84

    Joined:
    Apr 8, 2013
    Posts:
    194
    Hi,

    I am very satisfied so far with Final IK, only one thing that is not quite working out for me: I use Unity navmesh but the character can drop from it, his feet tries to come over the edge. How can I prevent this? Is there some setting I missed that I can use or some script to prevent this from happening? To be clear: I like to have my character on the Navmesh on all times.(I am using Full Body Biped IK script and the Grounder FBBIK script).
     
  44. rameetkaur

    rameetkaur

    Joined:
    Dec 27, 2015
    Posts:
    1
    Hi Partel,
    I have recently purchased FinalIK, I dnt know if this question has already been asked before, if it is den sorry.

    I just want to make a simple ledge grab and a pole grab mechanism without much animation or root motion. I only want to use ur finalIK ;). Is it possible? Can you please make a short tutorial on ur channel abt this pleeaaaasseeeee...:):):)

    Thank you so much Partel for making it easy for ppl like me by giving us FINALIK :rolleyes:

    Best regards
    Rameet
     
  45. Obsurveyor

    Obsurveyor

    Joined:
    Nov 22, 2012
    Posts:
    277
    Hey Partel, I've got a hose that is fixed at one end and is connected to a pipe that pitches and yaws at the other. It seems like FABRIK is the right choice for this but I can't think of a way to make the end effector stay parallel to the pipe so it always appears connected to the back of the pipe that is moving. How would I do this?

    edit: Here's a clip of what I'm talking about and would like to fix: http://i.imgur.com/f86cEox.gif
     
    Last edited: Dec 28, 2015
  46. Partel-Lang

    Partel-Lang

    Joined:
    Jan 2, 2013
    Posts:
    2,554
    Hey guys, sorry for the delay, I must have missed a notification on this thread!

    Hey, can you send me some screenshots or something, I'm not sure I understand.

    Hey,

    Procedural IK only stuff is not how it's usually done. It would be very difficult to get the exact result you need, you'd need a way to blend in IK effector weights and, place the IK targets and move the root along, it is much easier to just make a ledge grabbing animation with root motion and use Animator.MatchTarget to move the character to the exact position. Then perhaps use IK to apply minor corrections if there is uneven ground or something.

    Hey,
    FABRIK can't solve for both the position and rotation of the end joint. Neither can CCD.
    But if your hose is a skinned mesh, you can rotate the last bone to match the cannon after IK has solved.
    You can disable the FABRIK component in Start, call ik.solver.Update(); in LateUpdate and after that, rotate the last bone to match the rotation of the cannon.

    Cheers,
    Pärtel
     
  47. Obsurveyor

    Obsurveyor

    Joined:
    Nov 22, 2012
    Posts:
    277
    Thanks! I knew it was something simple.
     
  48. puzzlekings

    puzzlekings

    Joined:
    Sep 6, 2012
    Posts:
    404
    Hi Partel

    Just a very quick question on the Grounder demo.

    How can I change the speed for the Mech and the Bot to get them to walk faster and slower? I have been experimenting a little but without much luck so please can you point me in the right direction.

    I want to know so that I can build a little demo which may require these to be resized (possibly made smaller), but this seems to then require the animations to be adjusted (e.g. made faster).

    I notice that both animator controllers have a Speed parameter, but I am not sure how FinalIK drives or interacts with them?

    Any help much appreciated :)

    cheers

    Nalin
     
  49. Partel-Lang

    Partel-Lang

    Joined:
    Jan 2, 2013
    Posts:
    2,554
    Hey,

    Go to the "Animation Controller" that is parented to the "Character Controller".
    There is a component "Character Animation Simple" and it has an AnimationCurve "Move Speed".
    It is movement speed relative to the input vector, so move the last key higher to make it go faster.
    You'll also have to adjust the animation speed in the Animator accordingly.

    Pärtel
     
  50. puzzlekings

    puzzlekings

    Joined:
    Sep 6, 2012
    Posts:
    404
    Thanks Partel

    Ok I've done the first part (Animation Curve)

    However for the second I'm not quite sure how to set the speed of the MineBot Animator because as per the screenshot the speed parameter is set to 0, and even when I change it in the editor it seems to have no effect.

    Sorry if this is a noob question

    Cheers

    Nalin

    BotAnimatorSpeed.png