Search Unity

  1. All Pro and Enterprise subscribers: find helpful & inspiring creative, tech, and business know-how in the new Unity Success Hub. Sign in to stay up to date.
    Dismiss Notice
  2. 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. fengkan

    fengkan

    Joined:
    Jul 10, 2018
    Posts:
    75
    Hi, Partel, I am using VRIK with two vive controllers and four vive trackers to do full body tracking. I am wondering whether it's possible to shrug. I tried adding two elbow trackers, but the shoulders don't move as expected. Thank you.
     
  2. Partel-Lang

    Partel-Lang

    Joined:
    Jan 2, 2013
    Posts:
    2,270
    Hey,
    The elbows only have bend goals, which determine which way the arms will be bent. Sorry, that is not possible with the current VRIK solver.

    Best,
    Pärtel
     
    fengkan likes this.
  3. germanban

    germanban

    Joined:
    Jul 8, 2018
    Posts:
    11
    Hello there! So it's been a while since I wanted to know how to go about this little issue of mine regarding chest position and a VRIK rig

    When using the VRIK rig along with a (very slightly modified) Animated Locomotion script that uses a blendtree from the pelvis down, I have this little issue when going sideways as the pelvis slightly affects the direction the chest is facing. Now, while that's expected behavior, it's a bit of a problem because my player's inventory is a child of the chest (if everything else fails, I could un-link it from the chest and have it be just camera relative but that could lead to chest-clipping issues)

    Is there a way to make the chest more clamped to the direction the head is facing? I've played around with the VRIK spine sliders but some issue I encounter with the ones that relate to head-to-chest relationship usually come with the byproduct of the chest going "backwards" when I look down (to keep "in line" with the head "pitch"), which can become frustrating when trying to look at a chest inventory (if there's some way to clamp the chest rotation to the head on just the world horizontal it would be so happy though)

    Hope I've not been too confusing; I could try to record a video to try and show what I mean more clearly.

    Hope you have a nice day!
     
  4. ml785

    ml785

    Joined:
    Dec 20, 2018
    Posts:
    33
    Hiyo! Is there a demo that has Leap Motion RigidHands working with Final IK? I went to the _Integration folder but I don't see anything about LeapMotion.
     
  5. shanemt

    shanemt

    Joined:
    Mar 5, 2014
    Posts:
    21
    Hi. I've been trying to get prone animations to work without too much luck. I read one post on here that said they were able to do it using the quadruped grounder. That kind of works, but the elbows and knees seem to always go through the ground. I can tweak pelvis parameters, but it still doesn't look right. Any suggestions?
     
  6. Partel-Lang

    Partel-Lang

    Joined:
    Jan 2, 2013
    Posts:
    2,270
    Hey,
    There is the Chest Goal and Chest Goal Weight in the Spine settings, have you tried using those? For example make a new gameobject, parent it to the head target, place it about 1m in front of the character, assign that as the chest goal.

    Hey,
    I used to have something, but that was long time ago and since my leap device stopped working and they kept changing their API very often and in ways that broke all previous implementations of said API, I had to drop it, sorry.

    Hey,
    Only thing I could think of would be to make a little additional script that runs after the grounder IK, makes raycasts down from the elbow and knee positions, stores the pos of the hand/feet then rotates the upper arm/thigh bones to hit point using Quaternion.FromToRotation, then rotates the elbow/knee bones to point towards the stored positions of hand/feet.

    Best,
    Pärtel
     
  7. germanban

    germanban

    Joined:
    Jul 8, 2018
    Posts:
    11
    Hi! I thought about the chest goal component, but by just parenting it to the head target I got similar results as increasing stiffness, that is, if you look down or up, the chest goes back or forwards. I thought about trying to constrain the chest goal to the head target's height and horizontal direction but not follow the head "pitch" or "roll", but was afraid that would be a convoluted thing to do.

    Anyways, thank you for your fast answer!
     
  8. Partel-Lang

    Partel-Lang

    Joined:
    Jan 2, 2013
    Posts:
    2,270
    Hey,
    Yeah, that's what I would have recommended next, to script the position of the chest goal to a position relative to the head target, but maintain the Y to the height of the chest bone.

    Best,
    Pärtel
     
  9. germanban

    germanban

    Joined:
    Jul 8, 2018
    Posts:
    11
    Oh! One thing about the VRIK Animated Locomotion issue where the spine inherited the pelvis rotation when using the walking animation blendtree; I have fixed it just by adding a counter-rotation to the spine bone relative to the pelvis rotation when moving.

    Still, will use the chest goal solution to make the chest follow the head rotation more closely while still having low neck stiffness to look on your chest inventory.
     
    Partel-Lang likes this.
  10. shanemt

    shanemt

    Joined:
    Mar 5, 2014
    Posts:
    21
    That's a really good idea. Thanks.

    I have another question, but I'm not sure if it's something you can answer. For my normal movement I'm using the FBBIK Grounder for walking on slopes. I have a set of animations that look pretty good on flat ground, but as soon as I start walking on slopes I get a lot of weird looking glitches. This is just one example.



    Other examples are things like weird hip movements, legs bending strangely, and so on
     
  11. SaltyBBQchicken

    SaltyBBQchicken

    Joined:
    Sep 7, 2017
    Posts:
    3
    HI, I'm hoping someone can help me out with a VRIK issue.
    Iv been stuck on this problem for sometime.(Longer then I care to admit (many months))

    I'm able to get standard Calibration for VRIK to a XRRig (3 point) just fine.
    Am trying to Set a Fixed Size despite the Physical Player actual height, and maintain correct proportions.(camera avatar etc.)

    For Example. Currently, If I was to hold the HMD High then Calibration, it would make the Avatar Get Bigger. Holding the HMD Low then calibrate would shrink the avatar.
    The reason is, If making a VR FPS type Game, the player can cheat by Holding the HMD low then Calibrate, and have a small avatar(which is harder to Hit).

    I am trying to set a (ex) float value, that locks the avatar/rig/camera to a relative Size, So I can define the avatars height/size, no matter the players physical height or how HMD is positioned.
    So if I were increase the height/Size (float) then recalibrate, from the players perspective, everything (environment etc) shrinks, and the Player is now a Giant. But also from the Players perspective , His arms etc. Don't get any bigger , and are proportionally the same as when the avatar was smaller.

    Thanks,
    Salty
     
  12. flow-

    flow-

    Joined:
    Apr 19, 2015
    Posts:
    169
    Hey, first up, Final IK is really impressive, 2 Months ago I did my own Grounding IK Implementation with Animation Rigging, it was kind of okay but did not even come close to Final IK in terms of compatibility and Performance and Quality... so I switched quickly back to Final IK ... :)

    I would like to implement some kind of spring damping for my character, I already have a good spring damping function prepared which is based on Hick's Law of Damping and I would like to use this Spring Damping on the hips by transforming the Hips Y dependent on this position value in this function.... so first Question:

    Has the GrounderIK already some kind of implemented, I saw Lift Pelvis weight but did some testing with it and it looks like it's not following units or velocity ..?

    What IK would be the best to implement it, I don't need any kind of natural movement which I got on the Full Body IK when moving the Hips, I just need a simple position change ... and I would like to make it with an IK just because I don't really want touch the Transforms anymore if not really needed just because I use Puppet Master and Final IK and don't want mess up the update cycle and lose quality if not needed... I did this in my last project and turns out too complicated for me... In long terms?

    Have an awesome 2021, all the best, cheers!
     
  13. SaltyBBQchicken

    SaltyBBQchicken

    Joined:
    Sep 7, 2017
    Posts:
    3
    Hi,
    I think I got it figured out.?
    I was Doing the Initial Calibration every time, and not doing the Recalibration after
    the initial Calibration. duh..
    It seems to work ok now.
    Here's a simple script based on the final ik vrik calibration script(VRIKCalibrationBasic)
    Thanks,
    Salty

    [Header("XR Rig and Calibration Settings")]
    // Notes: XRRig Tracking Mode = Unbounded
    // Set Camera Offset Object Manually. XrRig/CameraOffset transform
    // Xr Interaction Tool kit Rig
    [Tooltip("XR Rig")] public GameObject _XRRig;
    [Range(.1f, 5.00f)]
    [Tooltip("Avatar Scale")] public float avatarScale = 1.0f;
    [Tooltip("Initial Calibration Tag, Only Reg Calibrate once, then Recalibrate")] public bool initialCalibrated = false;
    void Scaler()
    {
    this._XRRig.transform.localScale = Vector3.one * this.avatarScale;
    this.transform.localScale = Vector3.one * this.avatarScale; ;
    }
    private void LateUpdate()
    {
    if (this.calibrateAction.triggered)
    {
    Debug.Log("VRIK_CalibrationBasic");
    if (!this.initialCalibrated)
    {
    // Calibrate the character, store data of the calibration
    this.data = VRIKCalibrator.Calibrate(this.ik, this.centerEyeAnchor, this.leftHandAnchor, this.rightHandAnchor, this.headAnchorPositionOffset, this.headAnchorRotationOffset, this.handAnchorPositionOffset, this.handAnchorRotationOffset, this.scaleMlp);
    this.initialCalibrated = true;
    this.Scaler();
    }
    else
    {
    VRIKCalibrator.Calibrate(this.ik, this.data, this.centerEyeAnchor, null, this.leftHandAnchor, this.rightHandAnchor);
    this.Scaler();
    }
    }
    }
     
  14. Partel-Lang

    Partel-Lang

    Joined:
    Jan 2, 2013
    Posts:
    2,270
    Hey,
    Sometimes Unity's humanoid retargeting creates a weird twist of the thigh bone at frames where the leg is straight. It is not normally visible, but when IK bends the limb, it will be visible. The best way to fix it would be to add 2 empty gameobjects, parent them to the root of the character, place them about 1m in front of the knees and assign as Bend Goals in FBBIK leg settings, also set Bend Goal Weight to 1.

    Hey and thanks!

    Grounder has the "Pelvis Damper" parameter, have you tried that already?

    Best,
    Pärtel
     
  15. amarillosebas

    amarillosebas

    Joined:
    Feb 28, 2013
    Posts:
    42
    Hello. How can I transfer the velocity/momentum from a bone controlled by IK to an attached rigidbody chain (using configurable joints)?

    Imagine a robotic arm (longer than 3 bones) moving freely by the player. The robotic arm is holding a metal chain. So when the player moves the arm, you would expect the metal chain to react to that movement, only that this doesn't happen, no matter what solver I use. What is the way to achieve this?

    Yes, I need to use IK to control the arm. And also yes, I need the chain to be rigidbodies joined by configurablejoints.
     
  16. lev-miyamoto

    lev-miyamoto

    Joined:
    Oct 15, 2020
    Posts:
    4
    I want to make my character go up and down stairs using FinalIK. Should I use Full Body Biped IK or Grounder Full Body Biped?

    I would like to know if there are any setting values that I can use as a reference to make my character climb up and down the stairs.
    Of course, I understand that the setting values will vary depending on the stairs being climbed.

    However, I would like to know the basic settings.

    The reason I'm asking this is because
    It is very difficult to set the value of Grounder Full Body Biped, because the knee bends in a strange direction or sticks out.

    I'm sorry for my bad English, but I'd appreciate your help.
     
  17. mathiasmarionette

    mathiasmarionette

    Joined:
    Apr 6, 2020
    Posts:
    1
    Hi,

    In order to fix the knee bending issues with VRIK I bend the legs slightly. (Below is pictured what happens if I don't bend the legs)
    satyr-doctor.png

    The problem is that when changing the "default pose/t-pose/netural pose" to have the legs bend slightly the VRIK "default pose" is now a pose with the legs slightly bend. (Below is pictured that the feet are slightly out of place because I bent the knees)

    bending legs.png

    Whereas the feet are supposed to look like this (without knee bending)
    correct default pose.png

    Is there a way we can tell VRIK which direction to bend the legs, without changing the default pose?
    As I am able to figure out what direction to bend pretty easily using HumanPoseHandler.

    Thanks.
     
  18. flow-

    flow-

    Joined:
    Apr 19, 2015
    Posts:
    169
    Well I tried that value but it's not made for my environment as I like to keep physics in consideration too

    I needed to add something into the GrounderIK Scripts

    I've changed this:
    Code (CSharp):
    1.   private void OnSolverUpdate()
    2.         {
    3.            ....
    4.  
    5.             // Move the pelvis
    6.             ik.references.pelvis.position += solver.pelvis.IKOffset * weight;
    7.  
    8.            ....
    9.         }

    To this:
    Code (CSharp):
    1.   private void OnSolverUpdate()
    2.         {
    3.            ....
    4.  
    5.             // Move the pelvis
    6.             ik.references.pelvis.position += solver.pelvis.IKOffset * weight + ik.references.root.rotation * HipsOffsetBeforeSolve;
    7.  
    8.            ....
    9.         }
    I'm now able to animate the Hips with the "HipsOffsetBeforeSolve" value

    Just because there is a

    if (OnPreGrounder != null) OnPreGrounder();
    before this call but it gives me wrong results with the legs when animating this value, maybe it's PM but did not work on my setup...

    But after all I got it working with good results :)
     
    Last edited: Feb 4, 2021
    Partel-Lang likes this.
  19. gliealonso

    gliealonso

    Joined:
    Oct 21, 2018
    Posts:
    77
    I remember I had a similar issue.

    I think I fixed it by turning the animator off and on, or starting with the animator off and then turning it on once the game started.
     
  20. rinatsin

    rinatsin

    Joined:
    Aug 16, 2020
    Posts:
    9
    Hi Partel. I have a character whose data (head and hand positions) is transmitted over the network. When he is the same height as me, everything is fine. But according to the logic of the game, my character can become small and then the weight of the head and hands of the solver changes the position of my network character (the one that is now small for me). I can't solve this problem in any way. Thanks in advance.
     
  21. Partel-Lang

    Partel-Lang

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

    Sounds like you would need to attach a Rigdbody to the end of the robotic arm that is controlled by IK. Set it to kinematic. Then you can link your rigidbody chain to that kinematic rigidbody by a joint and the motion will be transferred.

    Hey,
    You could go to IKSolverVRLeg.cs and change line 164 to this: bendNormal = rotations[0] * Vector3.right; // Use this to make the knees bend towards root.forward. I'm considering adding that change to the next version too, so would be good to know if it works there.

    Hey,
    Not sure if I understood, did you mean something about VRIK behaves differently when you scale the character down?
    In the last version I added the "Scale" parameter to VRIK. If you scale your avatar to 0.5 of what it normally is, also set VRIK scale to 0.5.

    Best,
    Pärtel
     
    rinatsin likes this.
  22. bjornsyse

    bjornsyse

    Joined:
    Mar 28, 2017
    Posts:
    54
    Hi. How does this IK solution relate to the new ArticulationBody system for robotic arms. Can they be used in conjunction?
     
  23. Wonky65

    Wonky65

    Joined:
    Aug 24, 2014
    Posts:
    27
    EDIT: Sorry, I just saw you had answered my question relating to DOTS in the FAQ


    So DOTS/ECS wouldnt make a difference?
     
    Last edited: Feb 6, 2021
  24. ccnelson

    ccnelson

    Joined:
    Aug 14, 2020
    Posts:
    2
    Hi,

    I'm trying to use the Interaction System "Target Tag". I have added the string value to the Interaction System, and tagged a couple of Interaction Targets accordingly. However the wrong Targets are still being selected. Something is working, as the transform is clearly wrong, and not aligned to the bones I copied across. When I remove the tags this is rectified, and the object aligns to the bones as normal.

    I am trying to prevent the player from picking up two objects in the same hand. I have Boolean values tracking if a hand is in use, and I thought the Target Tag system would be a suitable way to prevent certain Interaction Targets (left and right hand ones) from being selected. Any idea what I'm doing wrong, or if there is a better way to do this?
     
  25. Wonky65

    Wonky65

    Joined:
    Aug 24, 2014
    Posts:
    27
    Using FBBIK,

    What would be the best way to have character stand up with toes?


    (+ about rotating the shoulders/top part of body. Currently I have both shoulder effectors parented to pivot point in the middle, but is there better way?)

    Or instead of fbbik should I use biped ik for pure ik humanoid (no animation)
     
    Last edited: Feb 8, 2021
  26. miya0326

    miya0326

    Joined:
    Feb 24, 2015
    Posts:
    6
    Hello.
    I want to go up and down stairs using FinalIK. Which combination of IK do you recommend?

    I have the same settings as in the video below, but it doesn't go up the hill properly.

    Reference URL:


    Please let me know your findings, even if it's another reference URL.
     
  27. Partel-Lang

    Partel-Lang

    Joined:
    Jan 2, 2013
    Posts:
    2,270
    Hey,
    I'll look into it in the future, but currently we don't even have any proper DOTS animation tools, at least not anything that's remotely ready for professional production. IK needs to built on top of the animation system, so not very interested in building anything on top of an unfinished foundation.

    Hey,
    The tag system is for using different Targets for different characters. Like if you had 2 characters with different bone orientations, you'd need different targets for both of them, so you'd tag them CharacterA and CharacterB.
    If IS can't find a Target with the right tag, it will use the InteractionObject itself as a target, so that's when your rotations are messed up. Basically it will still start the interaction, just without a proper target.

    If you already have a bool system for checking if the character is holding something, can't you just not call StartInteraction() at all when already holding?

    Hey,
    Sorry, not sure what you meant, stand up with toes? Like automatically tip-toeing when the hand target is too high?

    About the shoulders, please check out the "Offset Effector" demo (not to confuse with Effector Offset, which is another demo), try rotating the Spine Effector gameobject there.

    Hey,
    The Grounder doesn't move your character at all, it is a bone-level cosmetic effect, moving the pelvis up-down, bending the legs, but it doesn't move the root because that is a job for the character controller. So you'll need some kind of a character controller. Use Unity's built-in CharacterController, some controller from the asset store, like the Kinematic Character Controller for example or roll your own solution with a Rigidbody and a CapsuleCollider if you are good with physics scripting.

    Cheers,
    Pärtel
     
  28. Wonky65

    Wonky65

    Joined:
    Aug 24, 2014
    Posts:
    27
    It would be for eg. character walking on toes & jumping forward

    with Leg IK what I'm looking for is very easy to do:

    is there better way to do this with FBBIK than just eg. rotating towards toes etc.

    + Off the top of your head, do you have any tips to keep in mind when moving the character procedurally with just IK (no animator) eg. would the optimal location for the root be the pelvis then? or maybe centre of mass?
     
    Last edited: Feb 8, 2021
  29. ksam2

    ksam2

    Joined:
    Apr 28, 2012
    Posts:
    1,056
    There is another issue after interaction parent fix you send me. The interaction doesn't work after parenting anymore, I mean when I move interaction target when it's paused and parented hand doesn't follow interaction target anymore
     
  30. ccnelson

    ccnelson

    Joined:
    Aug 14, 2020
    Posts:
    2
    Yep that's fixed it, thanks! I was using the interaction trigger components, and calling

    Code (CSharp):
    1. interactionSystem.TriggerInteraction(closestTriggerIndex, false);
    Instead I made some custom triggers and used StartInteraction()
     
    Partel-Lang likes this.
  31. Partel-Lang

    Partel-Lang

    Joined:
    Jan 2, 2013
    Posts:
    2,270
    Hey,
    No, there's no way to do that with FBBIK, sorry, it just doesn't know about the toes at all. Could use LegIK for the legs and FBBIK on top of it for other stuff. Or just 2x ArmIK for better performance.

    About moving the character procedurally with just IK, I'd move the foot targets, keep them pinned to "footsteps" that you move one by one to where you want to go, then maybe set root position to Vector3.Lerp(leftFootstepPos, rightFootstepPos, 0.5f); I'd still have the root at ground level.

    Hey,
    If you have the object parented to the hand, but also want the hand to follow the object, you'll get a circular dependency issue, so it's like a dog chasing it's tail. While paused & picked up, IS is not changing effector position and rotation anymore, it just doesn't know where to go, which means you'll be free to tell FBBIK where you want to move the effector by just ik.solver.rightHandEffector.position = something;

    Cheers,
    Pärtel
     
    Wonky65 likes this.
  32. GoldFireStudios

    GoldFireStudios

    Joined:
    Nov 21, 2018
    Posts:
    98
    I'm having an issue where my character's pelvis tends to snap forward while walking down hills. It seems to be related to the Grounder as the issue goes away if I set the grounder's weight to 0, but I'm not sure if there is some setting I need to change or if there might be an issue with the rig -- its a standard humanoid rig.

    Setting pelvis damper to a value higher than 0 makes the issue worse. Setting lift pelvis weight to 1 doesn't seem to have any impact. Any ideas?

    Video of issue:
     
    Last edited: Feb 15, 2021
  33. Emiliana_vt

    Emiliana_vt

    Joined:
    Apr 7, 2018
    Posts:
    13
    Hi!

    I'm currently using VRIK and TwistRelaxers and recently ran into an issue where constraints referring to part of the armature wouldn't work and particle systems running in world coordinates attached to it would end up spawning particles in incorrect positions. Now I seem to have found a working solution by using the UnityEngine.LowLevel.PlayerLoop API to insert a custom update function before UnityEngine.PlayerLoop.PreLateUpdate+ConstraintManagerUpdate where I run the IK solver's Update and the twist relaxer's Relax functions, but I am wondering:

    1) Is this safe or will there likely be some issues due to not executing in LateUpdate?
    2) Is there perhaps any nicer way of doing this?

    Edit: I am also applying animations using an animator, so running the IK much earlier will also lead to issues.
     
  34. Partel-Lang

    Partel-Lang

    Joined:
    Jan 2, 2013
    Posts:
    2,270
    Hey,
    Is that GrounderFBBIK? Maybe the "Root Node" bone is too close to the pelvis.
    Maybe try assigning another bone as FBBIK's "Root Node". Use the spine bone that is parented to what you currently use.

    Hey,
    Yes, it is about the update order of things. Particles are just updated before FIK updates by default.
    For FIK it doesn't matter where you update it from, just needs to be after animation is applied, so it is safe.
    Could also try calling ParticleSystem.Simulate() after FIK (using ik.solver.OnPostUpdate delegate), but that only works with Local space particle systems for some reason.

    Best,
    Pärtel
     
  35. GoldFireStudios

    GoldFireStudios

    Joined:
    Nov 21, 2018
    Posts:
    98
    Ah, thank you! Yes, changing the root in FBBIK from hips to spine resolved the issue and doesn't seem to have any ill effects that I've seen so far.
     
    Partel-Lang likes this.
  36. Emiliana_vt

    Emiliana_vt

    Joined:
    Apr 7, 2018
    Posts:
    13
    Thank you! It's good to know that it should be safe to do it this way. I originally tried manually evaluating particle systems, but then I realized that constraints don't even allow that, so I had to search for another way of doing it.

    If anybody runs into a similar issue, here's a bit of code that will hopefully help.
     
    Partel-Lang likes this.
  37. oliran

    oliran

    Joined:
    Sep 29, 2015
    Posts:
    43
    Hi Partel,

    I am using VRIK but having an issue. I only track hands and head. When the user looks more than a certain angle to each side, the entire root object rotates around Y axis, and then when the user looks forward again it stays rotated and looks super weird. Any way to plant the feet so that the entire body doesn't rotate when turning head? I spent the past few hours playing with all of the options in VRIK but couldn't get root to stop rotating. I also have "plant feet" checked but that doesn't work, they still turn.

    Thanks!
     
  38. kelguerin

    kelguerin

    Joined:
    Feb 10, 2021
    Posts:
    2
    Hi Partel,

    I think it was previously asked, but can FinalIK interact with the new ArticulationBody class?

    Thanks!
    Kel
     
  39. SaltyBBQchicken

    SaltyBBQchicken

    Joined:
    Sep 7, 2017
    Posts:
    3
    I had the same problem aswell. Did you try setting the pelvis weights?
    this._VRIK.solver.spine.pelvisRotationWeight = 0.0f;
    this._VRIK.solver.spine.pelvisPositionWeight = 0.0f;

    Salty
     
  40. oliran

    oliran

    Joined:
    Sep 29, 2015
    Posts:
    43
    Thanks, I tried that but it didn't help. I actually ended up solving the problem by limiting head movement via script to +-60 degrees.
     
  41. Partel-Lang

    Partel-Lang

    Joined:
    Jan 2, 2013
    Posts:
    2,270
    It's the "Max Root Angle" in VRIK Spine settings. Set it to 180 and it will never rotate the root.

    Hey,
    Haven't tried, can you please explain in some more length what kind of interaction are you looking for, what is the use case?

    Best,
    Pärtel
     
  42. kelguerin

    kelguerin

    Joined:
    Feb 10, 2021
    Posts:
    2
    Hi Partel,

    Unity has a package for importing articulated models of various industrial robots using an industry-standard format: https://github.com/Unity-Technologies/Unity-Robotics-Hub
    which uses the ArticulationBody class. https://blogs.unity3d.com/2020/05/2...l-designs-with-realistic-motion-and-behavior/

    It's basically a hierarchical set of joints, similar to other rigged actors, but it has different parameters for the offsets and angles between links. (it also has a bunch of stuff that controls how each joint moves, modeling stiffness, and damping, etc, which is not really relevant.).

    That is what I currently am using, and I would like to find an IK package that can be dropped in so that I get more than just control of the joint angles. Since I have access to the joint angles, and the distance and offset between joints, (because each ArticulationBody link has a transform that defines its offset from its parent, is that sufficient to use FinalIK, or do the joints need to be in a different structure, or themselves be a different class, that FinalIK can interface with?

    Let me know if you need more information.

    Best,
    K
     
  43. germanban

    germanban

    Joined:
    Jul 8, 2018
    Posts:
    11
    Hello Pärtel, I'm having this minor issue with elbow positioning when getting the hand close to the head with VRIK.
    I found this after repositioning my head IK offset (as it realized it was too far from the actual head of the model). Unfortunately that means I discovered that when putting your hand very close to the head of the rig (such as when aiming a rifle for example), the elbow tends to go "up" instead of back. I've been trying to find any way to tweak it; the "bend goal" seemed like an option but (maybe because I'm not really understaing how it actually works) it hasn't yielded any results for me.

    Here's a video showing the issue:
    https://imgur.com/a/iYKwdt3

    Is there any way to circunvent that kind of behaviour? (maybe the issue is not with the elbow but with the shoulder? Should I try some kind of constraint?)

    Thanks in advance once again!

    EDIT: One thing I've realized tweaking stuff trying to solve this issue; the "Rotate Chest By Hands" parameter seems do have 0 effect on anything. Is there something extra needed to be done to get that to work?
     
    Last edited: Feb 20, 2021
  44. oliran

    oliran

    Joined:
    Sep 29, 2015
    Posts:
    43
    Must have a bug then, because it definitely rotates the root even when I set Max Root Angle to 180.
     
  45. lev-miyamoto

    lev-miyamoto

    Joined:
    Oct 15, 2020
    Posts:
    4
    Hello!

    I would like to execute the action from 0:57 to 1:10 timecode in the tutorial video [FINAL IK TUTORIAL - FullBodyBipedIK Inspector] from a C# script.

    The reason why I want to do this is that when clapping, if there are characters with different body sizes, their hands may not make contact, so I want to dynamically adjust it for each character from a C# script.
    So I want to dynamically adjust the hands for each character from a C# script.

    I was able to adjust the hands in the scene view, but I haven't figured out how to do it from a script yet.

    Reference URL:
     

    Attached Files:

  46. BirdInTheCity

    BirdInTheCity

    Joined:
    Jun 9, 2017
    Posts:
    9
    Using VRIK the pilot sample does a good job of knee bending and keeping the feet firmly planted on the ground. If my scene involves multiple elevations rather than just a flat plane, do I need to incorporate the Grounder component in order to ensure the feet match the ground? Right now, it seems the feet only make contact if I'm at the scene's base elevation, otherwise the legs go right through an elevated platform.
     
  47. wechat_os_Qy0xJVGA_80iI5dwGmmTy5AxQ

    wechat_os_Qy0xJVGA_80iI5dwGmmTy5AxQ

    Joined:
    Feb 20, 2021
    Posts:
    3
    HI ... I want to know can FIK work well with "Optimize Game Objects" now...?
     
  48. rinatsin

    rinatsin

    Joined:
    Aug 16, 2020
    Posts:
    9
    Sorry for not writing for a long time. Everything worked out on a scale. Thank you very much, your solutions are the best.
     
  49. Kk_radford

    Kk_radford

    Joined:
    Dec 20, 2012
    Posts:
    19
    Hi I own a license for Final IK and want to use it for a networked multiplayer project, and I'm wondering if the IK solver is deterministic? Could I feed it the same vectors on two different machines / platforms and would the IK resolve in the same way?
     
  50. Dmeowmixer

    Dmeowmixer

    Joined:
    Jan 25, 2015
    Posts:
    8
    Hey Partel,

    I am implementing a similar functionality, and I was wondering what script you told fup to implement into the Puppet Game Object for the punch parry?

    Or did this get implemented into the newer versions already?




    Also, I am trying to get my VRIK model to allow the forearm to rotate 90 degrees ( 0 degrees is thumbs up ) in each direction without engaging the shoulder rotation as we can do in real life. Currently, the moment the wrist/forearm rotates, the shoulder will also rotate and move the elbow.

    I think I need to something like the below in IKSolverArm.cs

    Code (CSharp):
    1.  
    2. if(rotation == 90 ||  rotation<90)
    3. {
    4.   shoulderRotationWeight = 0f;
    5. }
    6. else
    7. {
    8.   shoulderRotationWeight = 1f;
    9.   //Possibly LERP this value from 0-1 to avoid jerkiness
    10. }
    But I am a little lost trying to expand on VRIK, a nudge in the right direction would be greatly appreciated.
     
    Last edited: Feb 23, 2021
unityunity