Search Unity

  1. Looking for a job or to hire someone for a project? Check out the re-opened job forums.
    Dismiss Notice
  2. Unity 2020 LTS & Unity 2021.1 have been released.
    Dismiss Notice
  3. Good news ✨ We have more Unite Now videos available for you to watch on-demand! Come check them out and ask our experts any questions!
    Dismiss Notice

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. ROBYER1

    ROBYER1

    Joined:
    Oct 9, 2015
    Posts:
    1,088
    Added support ticket for this at
    #127 Humanoid Baker - Saved animation clip settings are wrong



    animoffset.gif
    I am using Humanoid Baker and Generic Baker with a set of grabbable objects (root at 0,0,0 worldspace, using XR Interaction Toolkit) and a VRIK character (Character root at 0,0,0 worldspace).

    The saved humanoid animation has incorrect settings, all of the Root Transform Position/Rotation settings should have 'bake into pose' set and set to be based upon 'Original'

    I also discovered that when using Calibration script with VRIK, the resized character scale is not saved with the animation in Humanoid baker.

    See how the animation looks above when the character scale is not set and the animation settings are the default output of humanoid baker.

    Could you please make Humanoid Baker save scale of the calibrated VRIK character please @Partel-Lang

    Thanks again for your great tool
     
    Last edited: Oct 18, 2020
    Immersive-Matthew likes this.
  2. ROBYER1

    ROBYER1

    Joined:
    Oct 9, 2015
    Posts:
    1,088
    Added support ticket for this at
    #128 Humanoid Baker - Calibrator set character scale is not recorded


    You can see here with the settings shown below, the animation now syncs up, I had to match the character scale to the scale that Calibration script gave it and change those animation settings.

    We are using different people to animate different characters so I am trying to keep animation recording simple and easy, having to manually tweak all of those settings after animating a character is a pain!

    scaletest1.gif
    newsettings.PNG
     
    Last edited: Oct 18, 2020
    Immersive-Matthew likes this.
  3. ROBYER1

    ROBYER1

    Joined:
    Oct 9, 2015
    Posts:
    1,088
    Added support ticket for this at
    #129 Humanoid Baker - Recording over an existing animation file crops animation time to that of the original clip being overwritten



    Also when using Humanoid baker, if I record a clip that is 3-4 seconds long, then try to re-record over that same clip with a longer animation, the end result is clamped at 3-4 seconds due to the length of the original clip.

    Is there a way to make Humanoid baker completely replace the animation file if I am saving over it?

    See the gifs below, you can see additional animation keyframes are made but my new animation stops at the same time as the original.
    3seconds.gif dodgybake.gif
     
    Last edited: Oct 18, 2020
    Immersive-Matthew likes this.
  4. Immersive-Matthew

    Immersive-Matthew

    Joined:
    Mar 24, 2020
    Posts:
    26
    I can confirm all the above issues ROBYER1 has documented on Unity version 2020.1.8f1 with the latest Final IK version. I hope this can be addressed sooner than later as I have 100 animations to record and the more automated, the better the creative flow will be. I will be doing a video on this amazing tool that uses Final IK, and HPTK all wrapped together with a little bit of magic from R1 Tools.
     
    ROBYER1 likes this.
  5. Partel-Lang

    Partel-Lang

    Joined:
    Jan 2, 2013
    Posts:
    2,237
    Hey,
    AnimatedAimDirection should not need a different value for each target. Can you send me the character fbx and the aiming/recoil animation clip please so I could check it out here.

    Hey,
    Haven't tried it myself yet.. What exactly did you mean by "doesn't move", is the character not ragdolling when it should or is it not animating at all or what? Can you send a video maybe?

    Hey,
    You just have to wait until VRIK has solved before you switch to ragdoll.
    So you can use ik.solver.OnPostUpdate delegate, which is called by VRIK when it is done solving for the frame. That's when you want to switch to ragdoll. At any other time like Update or LateUpdate the character will be in the wrong pose, either animated pose or the default pose enforced by "Fix Transforms".

    Hey,

    I see.. So I added clip settings to HumanoidBaker:
    HumanoidBaker.JPG

    ... so you could define those directly in the Baker and they will be applied to the baked clips. Also in AnimationClips mode you can now enable "Inherit Clip Settings" to make it use the same settings as the clips used for baking.

    The clip length bug is also fixed now (was already fixed in version 2.0 that was published a few days ago).

    There is not much I can do about the scaling though, Humanoid animation simply does not have curves for root scale.
    What you could do when you finish baking is create a ScriptableObject containing a reference to the baked clip object and a public float scale. You can then use that ScriptableObject to load the clip and scale the character all at once.

    Here's the link to the updated Baker.

    Cheers,
    Pärtel
     
    Immersive-Matthew and ROBYER1 like this.
  6. ROBYER1

    ROBYER1

    Joined:
    Oct 9, 2015
    Posts:
    1,088
    When baking with Realtime mode, those settings are not there to change, that may be the issue

    Is there a way for me to make those settings available for Realtime mode too? (See screenshot below)

    Thanks for the other fixes and the tip on character scale, it's really appreciated

    upload_2020-10-19_12-17-15.png
     
  7. Partel-Lang

    Partel-Lang

    Joined:
    Jan 2, 2013
    Posts:
    2,237
    Did you get the update package from the link on the bottom of my last post?
    Should show up in Realtime too.
    Realtime.JPG
     
    Immersive-Matthew likes this.
  8. ROBYER1

    ROBYER1

    Joined:
    Oct 9, 2015
    Posts:
    1,088
    Yup, screenshotted this again after double checking 2.0 update was imported, I packaged up the Humanoid Baker script for Editor and runtime in the link below. The Settings do not seem to be visible for any of the modes like Animation States or Realtime. Might be the custom inspector?
    I am on 2020.1.9f1

    Also just tried a fresh import in an empty project, same issue there, hopefully the package below helps?

    Humanoid Baker Scripts link

    upload_2020-10-19_12-31-33.png
     
  9. Partel-Lang

    Partel-Lang

    Joined:
    Jan 2, 2013
    Posts:
    2,237
    Strange. I just found a little editor bug in U2020 drawing the clip settings twice, so here's the package again. Make sure you have all the little checkboxes enabled when you import it. Also make sure to expand this little bugger:
    ClipSettings.JPG

    Best,
    Pärtel
     
    ROBYER1 likes this.
  10. ROBYER1

    ROBYER1

    Joined:
    Oct 9, 2015
    Posts:
    1,088
    I can confirm that clip settings show now, will this fix version be pushed to the asset store version soon also? I am working with @Immersive-Matthew on this project so I'll get him to use this local fix too for now

    Thanks for responding so quickly!
    Rob
     
  11. Partel-Lang

    Partel-Lang

    Joined:
    Jan 2, 2013
    Posts:
    2,237
    Hey,
    Not likely, sorry, I just happened to push a version last week. Pushing a version to the Asset Store is a thousand mouse click operation that takes all day, so I try to not do that too often unless there is a critical bug of course :)
     
    ROBYER1 likes this.
  12. Immersive-Matthew

    Immersive-Matthew

    Joined:
    Mar 24, 2020
    Posts:
    26
    Awesome to see all the quick replies from developer @Partel-Lang!!!
     
    Partel-Lang likes this.
  13. GoldFireStudios

    GoldFireStudios

    Joined:
    Nov 21, 2018
    Posts:
    82
    Is anyone else getting these namespace errors in VSCode? As far as I can tell, the namespace is correct and it works in-engine.

     
  14. zoooom

    zoooom

    Joined:
    Feb 8, 2012
    Posts:
    49
    Thanks for a great asset @Partel-Lang, it's really doing a great job for our needs so far.

    There's one thing I'm attempting to do unsuccessfully so would like to know if it's possible out of the box with Final IK.

    I'm using the interaction components much like in your FBBIK Interaction Demos. One thing I would like to do is after an interaction object is touched, move our humanoids hand to the next object without resetting to start pose in between, so if the default pose of the hand is A, and we have 2 objects at B and C, it currently goes A - B - A - C - A, I would like to go A - B - C - A. How would you go about this?

    Cheers
     
  15. XMaymo

    XMaymo

    Joined:
    Mar 2, 2017
    Posts:
    2
    Awesome, thanks man, you deserve a statue Partel!
     
    Partel-Lang likes this.
  16. Partel-Lang

    Partel-Lang

    Joined:
    Jan 2, 2013
    Posts:
    2,237
    Hey,
    Were you using assembly definition files maybe?

    Hey,
    For interactions like that, for example pushing multiple buttons of a keyboard in a sequence, you should use a single InteractionObject. Pause the interaction when the hand touches the object, then you will be able to animate it between A,B,C by moving the interaction object or hand target via code or animation.

    Cheers,
    Pärtel
     
  17. GoldFireStudios

    GoldFireStudios

    Joined:
    Nov 21, 2018
    Posts:
    82
    No, we don't have any assembly definitions in any of our script directories. There are some in other plugins, but those are all under the Plugins directory. Is it possible some other asset could be conflicting somehow?
     
  18. Partel-Lang

    Partel-Lang

    Joined:
    Jan 2, 2013
    Posts:
    2,237
    Hey,
    No idea, there is nothing special about FIK namespacing, probably some VS Code bug. Maybe try pulling RootMotion folder out of Plugins?
     
  19. OmnifariousStudios

    OmnifariousStudios

    Joined:
    Mar 12, 2018
    Posts:
    20
    Hi Partel,

    Could you give me a quick rundown of how to setup the animation parameters for VRIK? I'm not sure what to use since it gets really confusing when trying to track the head transform vs the rigged character's transform as they're both children of the root object.

    We're using a 30x30 space and trying to match the animations to the person's physical movement in the real world.
     
  20. Bastienre4

    Bastienre4

    Joined:
    Jul 8, 2014
    Posts:
    138
    Hello Partel!
    We're making a narrative game and we're trying to put together FBBIK (mostly for the hands+spine) and LookAt (for the head+spine) at the same time.
    Do you have any ideas how we could achieve this? Currently we use BipedIK (that offer both hand and look at) but it lacks the pull/push stuff for the hand.
    Thanks for your help.
     
  21. GoldFireStudios

    GoldFireStudios

    Joined:
    Nov 21, 2018
    Posts:
    82
    FYI, I found that the issue is with Unity's VSCode package. Downgrading to 1.1.3 fixes the issue for now.
     
    Partel-Lang likes this.
  22. Partel-Lang

    Partel-Lang

    Joined:
    Jan 2, 2013
    Posts:
    2,237
    Hi,
    Sorry I don't think I understood, which animation parameters? Did you mean you needed to do animation-based locomotion?

    Hey,
    You can use FBBIK and LookAtIK together, but not "at the same time". I mean you can either solve LookAtIK first and FBBIK second or vice versa. If you need FBBIK for some interactions like touching objects, you'll need to solve FBBIK last because the other way around LookAtIK would make your hand interactions inaccurate by rotating the spine. If you add both components, LookAtIK will be solved first by default (see the Script Execution Order).

    Cheers,
    Pärtel
     
  23. Bastienre4

    Bastienre4

    Joined:
    Jul 8, 2014
    Posts:
    138
    That's exactly what I tried but it doesn't work, the head lookat is incorect but the hand placement is correct.
    I check the execution order and FBBIK is solved AFTER LookAt. I also tried updating solver manually (calling Disable() on start and then solver.Update() on late update) but it have the same issue.
    If I disable FBBIK the lookat is solved properly.
    Please note that both lookat and FBBIK are touching the spine bones. Maybe this is the issue?
    Thanks for your reply and have a nice day.
     
    hentai_butayarou likes this.
  24. OmnifariousStudios

    OmnifariousStudios

    Joined:
    Mar 12, 2018
    Posts:
    20
    By animation parameters, I meant the ones used in an animation blend tree. Because instead of using something like joystick based movement, our users are going to be moving around a large space and I want to animate the avatars' legs to move in the same direction they are.

    But I actually searched through the forum and found a package you had made with the VRIK Animated Locomotion script. That package showed me how to do it, and so far it's working well. Except for 2 things:

    1. There is a lot of sliding. Is that just getting the speed of the animations and blending right? I'm using Kubold's animation pack like you suggested, where I set 8 walking animations and 8 running animations.

    2. When the avatar starts to move, it takes a step, then seems to pause before starting the running animation again.

    Here is my current blend animation setup:

    upload_2020-10-29_13-27-4.png
     
  25. ROBYER1

    ROBYER1

    Joined:
    Oct 9, 2015
    Posts:
    1,088
    @Partel-Lang Arm and Length Mlp values for stretching arms and legs do not seem to save with Humanoid Baker, is this expected behaviour?

    We are recording animations where we need to stretch the arms and legs of some characters and this is proving to be an issue. From what I understand, the Mlp values just adjust the bone positions, but they don't save in Humanoid Baker recordings.
     
    Last edited: Oct 29, 2020
  26. Partel-Lang

    Partel-Lang

    Joined:
    Jan 2, 2013
    Posts:
    2,237
    Hey,
    When FBBIK updates after LookAtIK and the body is pulled from an arm for example, that will change head rotation because the spine bones are rotated. You could set head weight to 0 in LookAtIK, then add an AimIK component only for the head bone (with only the head assigned to Bones and as Aim Transform) and solve that AimIK last.

    Hey,
    I haven't found a way to make animation based locomotion completely sliding free. The problem is it has to be extremely responsive and with just root motion you'd get zero sliding, but too much falling behind of the HMD. So it is basically just tweaking the parameters until you get closer to the results you need.

    Hey,
    Humanoid animation just doesn't have any curves for bone localPositions. All it has are root motion QT, hand and foot IK QT curves and muscle curves, that's it. Will have to use GenericBaker to record anything else.

    Best,
    Pärtel
     
    ROBYER1 likes this.
  27. tcz8

    tcz8

    Joined:
    Aug 20, 2015
    Posts:
    432
    Hi, I'm having a problem were feets don't touch the ground properly and I can't seem to fix it by tweaking Grounder's or the IK chain's settings.

    Does anyone know what could be wrong? (FYI the settings may be nonsense on this screenshot, I was trying to see which setting helped)
    upload_2020-11-3_17-13-16.png

    Thank you.

    Edit: Looking closely there seems to be a small extra bone at the end not sure why.
     
    Last edited: Nov 4, 2020
  28. ROBYER1

    ROBYER1

    Joined:
    Oct 9, 2015
    Posts:
    1,088
    @Partel-Lang Me and @Immersive-Matthew are having issues on build (android APK for a Quest build) using FinalIK 2.0 in Unity 2020.1.9f1 with the hotfix of the Baker script you sent over. The error is:

    Code (CSharp):
    1. Assets\Plugins\RootMotion\Baker\Scripts\Baker.cs(151,33): error CS0246: The type or namespace name 'AnimationClipSettings' could not be found (are you missing a using directive or an assembly reference?)
    We have no Humanoid or Generic Baker scripts in our scene used for the build. Are you able to fix this please?

    unknown (2).png
     
  29. Partel-Lang

    Partel-Lang

    Joined:
    Jan 2, 2013
    Posts:
    2,237
    Hey,
    Does it improve if you either increase Max Iterations or disable Use Rotation Limits?

    Hey,
    Sorry, looks like I forgot to add a #if UNITY_EDITOR.

    Please import this patch.

    Best,
    Pärtel
     
    ROBYER1 likes this.
  30. OmnifariousStudios

    OmnifariousStudios

    Joined:
    Mar 12, 2018
    Posts:
    20
    Hi Partel,

    Would REALLY appreciate a VRIK-Normcore integration like the one you made for PUN/Photon.
    Any chance we could get that soon? It's become more and more popular, especially since they launched their version 2.0 a few weeks ago.

    Thanks!
     
  31. lordsamain

    lordsamain

    Joined:
    Jun 17, 2018
    Posts:
    12
    Hi Partel :)

    I use VRIK for my VR project. In some cases, I have to play the full animation without IK, I just use the head target and I disable the hand tracking and I have to disable the ik legs to avoid strange effects with the animation. To do this, I set all the references of the legs target to null the time to play the animation. Is there a better solution?
    Thanks for your help ! :)
     
  32. OmnifariousStudios

    OmnifariousStudios

    Joined:
    Mar 12, 2018
    Posts:
    20
    Just adding to my above comment, would love an example of how to do a PuppetMaster example with Normcore would be great, as they don't support objects with rigidbodies to have parents.
     
  33. Partel-Lang

    Partel-Lang

    Joined:
    Jan 2, 2013
    Posts:
    2,237
    Hey,
    I have no experience with Normcore, hadn't even heard about it really. If you already use that, might be easy to just take the VRIK PUN2 example from Plugins/RootMotion/FinalIK/_Integration and replace all the OnPhotonInstantiates and OnPhotonSerializeViews with their Normcore equivalents in VRIK_PUN_Player.cs and NetworkTransform.cs.

    Same with PuppetMaster, the PUN2 example doesn't have any PUN components on the ragdoll rigidbodies for the same reason of not having them parented to anything, the PUNPuppet.cs script takes care of everything. Basically would just need to replace photonView.IsMine and [PunRPC] with whatever they are in Normcore.

    Hey,
    Can just disable the VRIK component. Or blend out of ik.solver.IKPositionWeight if you need to do it smoothly.
    Call ik.solver.Reset() after you re-enable it if using the built-in locomotion module.

    Best,
    Pärtel
     
    OmnifariousStudios likes this.
  34. Havie

    Havie

    Joined:
    Oct 12, 2019
    Posts:
    47
    Hey there,
    Just trying to get this initial set up going and things arent going well.

    If any one can advise me on what i am doing wrong, I would really appreciate the help. I have made a short video showing whats going on

     
  35. lordsamain

    lordsamain

    Joined:
    Jun 17, 2018
    Posts:
    12
    Thanks :) I can't disable VRIK, i need to use it to track the head position. I found a solution, don't worry :)
     
  36. tcz8

    tcz8

    Joined:
    Aug 20, 2015
    Posts:
    432
    Hello, thank you for your reply. Disabling rotation limits does nothing (probably cause I haven't set any) but augmenting the iteration count to 14 fixes it completely. Isn't this a bit high? Should I worry about performance?

    I also encountered a few occasions were the legs are shaking (vibrating) up and down a tiny amount (you have to be close to see it) any way to get rid of this?

    Thank you.
     
  37. Partel-Lang

    Partel-Lang

    Joined:
    Jan 2, 2013
    Posts:
    2,237
    Hey,
    You are missing the FBBIKGrounder component. FBBIK is just a IK solver, it can be used for anything, but it doesn't know it is supposed to be doing foot placement correction. So add FBBIKGrounder, set up it's "Layers" LayerMask (add layers the character is supposed to walk on). Example in the "Grounder" demo.

    Hey,
    When the IK chain is highly constrained, it might take the solver more iterations to reach the target. Could try using FABRIK instead of CCD, in some cases it can reach the target in less iterations.
    14 seems quite much though, I would take a look at that setup if you could send something over.

    Best,
    Pärtel
     
  38. cloverme

    cloverme

    Joined:
    Apr 6, 2018
    Posts:
    70
    Got a strange situation. I'm using the Look At IK component, but when that's on, I'm running into a problem. When it's on, if I try to instantiate a bullet and set it's position and rotation to the muzzle location (hand/rifle/muzzle) the bullet instantiates in a position that not correct (about .5f off in transformation). As soon as I uncheck Look At IK, it works fine. It's like there's a hidden root frame or something that it's really using or ? Really confusing.
     
  39. wm-VR

    wm-VR

    Joined:
    Aug 17, 2014
    Posts:
    76
    Hey, quick question here: Is it possible to use the VR IK component on a rig like this or must it be humanoid with all reference bones? Thanks!

    ADD: I would add a "head-bone" in blender if needed to this rig! I just saw there there is non included in this rig. Unfortunately most FPS-hands are not humanoid rigged

    upload_2020-11-15_12-17-41.png
     
  40. Partel-Lang

    Partel-Lang

    Joined:
    Jan 2, 2013
    Posts:
    2,237
    Hey,
    It is just that the bullet is instantiated before LookAtIK has updated for the frame. Use LateUpdate to spawn the bullet and set the script that does it to a higher value than LookAtIK has in the Script Execution Order. Either that or use the ik.solver.OnPostUpdate delegate.

    Hey,
    You can use 2x ArmIK components instead. ArmIK uses the exact same arm solver as VRIK.

    Best,
    Pärtel
     
    wm-VR likes this.
  41. wm-VR

    wm-VR

    Joined:
    Aug 17, 2014
    Posts:
    76
    Hello! First let me say that this asset is just awesome and I have managed to create a lot of things out of the box and its working great! The only last problem I seem to have is an issue with both of my hands using the VR IK script attached to a humanoid rigged player. (The upper and lower-arm bendings and rotations seem to work correctly)

    But the bending between hand and lower-arm leads to a crumbled-zone between those two and occurs anytime I rotate the hand - it starts to deform even if I rotate it just a little. Apart from this I seem to be able to rotate the hand 360 degrees.

    I tried to reduce the rotation weight a bit but it didn't solve the very root of this problem. It just flattened the cumbled-zone. I also tried to solve it by flatten the intensity of the weight-paint muscles on this area in 3dMax but it wasn't very helpful either. Last thing I tried was to use the TwistRelaxer script (recommend in a previous post in this thread) but this led to even more strange behavior. (rotating arms, the demo file "VRIK (Twist Relaxers).unitypackage" is from 2017) and it says:

    TwistRelaxer has no TwistSolvers. TwistRelaxer.cs was restructured for FIK v2.0 to support multiple relaxers on the same body part and TwistRelaxer components need to be set up again, sorry for the inconvenience!
    UnityEngine.Debug:LogError(Object, Object)



    I am not sure if it is weight paint related, bone related or wrong preferences inside the VR IK script (maybe I forgot something to check) or a combination of one or the other. Thank you very much for any help!

    pic 1 = as it should be and without making hand-rotations
    pic 2 = with rotation

    upload_2020-11-19_10-52-56.png
    upload_2020-11-19_10-56-36.png
     
    Last edited: Nov 19, 2020
  42. Partel-Lang

    Partel-Lang

    Joined:
    Jan 2, 2013
    Posts:
    2,237
    Hey,
    TwistRelaxer really should take care of that. Not sure why the demo is broken there, I updated it for v2.0. Here's the latest demo scene file to show you how it is supposed to be set up the new way. Find TwistRelaxer on the forearm roll bones of the Pilot.

    Best,
    Pärtel
     
    wm-VR likes this.
  43. wm-VR

    wm-VR

    Joined:
    Aug 17, 2014
    Posts:
    76
    Thank you very much! My setup was completely wrong but now it works very well thanks to your help. Greetings from Austria
     
  44. gliealonso

    gliealonso

    Joined:
    Oct 21, 2018
    Posts:
    76
    Hi Partel,

    How can I move a halberd with 2 hands, but make the second hand be the pointer? But also not just move the mesh but also the collider from the weapon using VRIK. Because I noticed that I can't rotate the prop muscle.

    Many thanks,
    Gabriel.
     
  45. Partel-Lang

    Partel-Lang

    Joined:
    Jan 2, 2013
    Posts:
    2,237
    Hey,
    So you already have animations for handling the halberd, just need to fix the weapon to the second hand?
    Could just run this line in LateUpdate:

    Code (CSharp):
    1. primaryHand.rotation = Quaternion.FromToRotation(halberdTip.position - primaryHand.position, secondaryHand.TransformPoint(secondaryHoldOffset) - primaryHand.position) * primaryHand.rotation;
    HalberdTip should be a gameobject parented to the tip end of the weapon. SecondaryHoldOffset is just a Vector3 you can use to tweak where exactly it will be held from.

    Cheers,
    Pärtel
     
  46. GoldFireStudios

    GoldFireStudios

    Joined:
    Nov 21, 2018
    Posts:
    82
    Our interactions needed to be customized for our use-case, so we created our own interaction system built on top of Final iK. Everything is working great except for picking up objects. When a pickup is registered, we save a reference to the effector and the object to be picked up:

    Code (CSharp):
    1. _fullbody.solver.OnPostUpdate += OnPostFBBIK;
    Code (CSharp):
    1. void OnPostFBBIK() {
    2.   if (_runPickupObj != null) {
    3.     _runPickupObj.transform.parent = _pickupEffector.bone;
    4.     _runPickupObj = null;
    5.   }
    6. }
    This successfully parents the object to the hand. However, it causes the object/hand to pop back to the animated position rather than the IK position. i've been looking through InteractionEffector.cs, but I can't seem to figure out what that is doing fundamentally different to account for this. Any tips?
     
  47. CosmicBoy

    CosmicBoy

    Joined:
    Apr 16, 2014
    Posts:
    33
    Hey there!

    I'm having a very strange problem using Puppetmaster, Full Body Biped IK and the Grounder Full Body Biped Controller.

    When aiming the characters arms down the feet and body parts go under and over the floor. I can solve this by turning on the grounder (and everything looks so much more precise when its on) BUT I get strange leg behaviour as if the ground offset changes when the character goes below 0 on the y axis in world space, but everything is fine above 0 on the y in world space?

    However during play mode, if I move the parent of the puppetmaster and capsule controller down (chacater starts at 0 on the y axis in world space also), then the level of that threshold for zero changes with it. So basically when the character capsule or puppetmaster go below 0 on the y in local space to its parent, the grounder offset changes, and the legs collapse into the floor.

    Any advice on how to solve this issue?

    Big thanks!
     
  48. Jakub_Machowski

    Jakub_Machowski

    Joined:
    Mar 19, 2013
    Posts:
    473
    @Partel-Lang We need to change in our whole project Execution Script order FinalIK.LookAtIK After FullBodyBipedIK We dont want to use Your execution script order component cause IT dont work in editor, and we need previews in cutscenes, We already changed i in PRoejct Execution Script Order but it seems that After Restart of Unity it is again in the place it was. Where it is hardcoded and how we could change that hard code? :)
     
  49. Partel-Lang

    Partel-Lang

    Joined:
    Jan 2, 2013
    Posts:
    2,237
    Hey,
    So if the IK uses the object as a target, but you parent the object to the hand, then the next frame the IK target will be where the hand is, so that's why it snaps to animation. When you parent the object, store it's position and rotation relative to the root of the character and from there on use those instead of the object itself until the interaction is complete. Look for pickUpPosition and pickUpRotation in InteractionEffector.cs to see how they are used there.

    Hey
    The Grounder can only solve up to it's Max Step distance. So if your character's root is higher or lower from the actual ground than the value of Max Step, it will do nothing. If you have PuppetMaster on it, the feet collapse because their colliders can't go through the ground. But if you already have a capsule controller on the character, is it not keeping the character at ground level?

    Hey,
    It is hardcoded into the editor scripts of each IK component. FullBodyBipedIKInspector.cs line 25 and LookAtIKInspector.cs line 16. They are enforced every time you click on the IK component.

    But you should also look at the EditorIK component (if running FIK v2.0).

    Cheers,
    Pärtel
     
  50. CosmicBoy

    CosmicBoy

    Joined:
    Apr 16, 2014
    Posts:
    33
    Thanks for the response! I actually just figured out my problem, I had assigned the capsule controller parent as the root object in final IK instead of the capsule controller itself. All sorted!
     
    Partel-Lang likes this.
unityunity