Search Unity

  1. Tune in to get all the latest Unity news live from Berlin on June 19, 6pm CEST. Set up a YouTube reminder!
    Dismiss Notice
  2. Unity 2018.1 has arrived! Read about it here
    Dismiss Notice
  3. Scriptable Render Pipeline improvements, Texture Mipmap Streaming, and more! Check out what we have in store for you in the 2018.2 Beta.
    Dismiss Notice
  4. Improve your Unity skills with a certified instructor in a private, interactive classroom. Learn more.
    Dismiss Notice
  5. ARCore is out of developer preview! Read about it here.
    Dismiss Notice
  6. Magic Leap’s Lumin SDK Technical Preview for Unity lets you get started creating content for Magic Leap One™. Find more information on our blog!
    Dismiss Notice
  7. Want to see the most recent patch releases? Take a peek at the patch release page.
    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. CentViRe

    CentViRe

    Joined:
    Dec 6, 2016
    Posts:
    8
    It's not that i want actually, simply it integration with hand Interaction system and target. To save postition of hands in item and finding closest controller to interact with
     
    Last edited: Jan 9, 2018
  2. arnoob

    arnoob

    Joined:
    May 16, 2014
    Posts:
    122
    Hello Partel-Lang !

    I am currently in the process of optimizing my game, and especially the characters. I just realized that Final IK (as well as puppetmaster by the way) won't work when you use the "optimize game object" on the rig. Even without root motion's components, it improves greatly the performance. So my question is, is there some work going on to make your asset work with optimized gameobjects in the hierarchy?
     
  3. skinwalker

    skinwalker

    Joined:
    Apr 10, 2015
    Posts:
    205
    Hey,

    I have a list of game objects that have a component called EffectorData, I want to somehow be able to loop through all of the effectors in ik.solver.effectors and compare the current one, if it's equal to once of these EffectorData game objects.

    I thought that adding FullBodyBipedEffector in the Effector that will let me compare them, but it's not possible.

    My idea was to do something like this:


    Code (CSharp):
    1.  foreach (var effector in ik.solver.effectors)
    2.                     {
    3.                         for (int i = 0; i < actorPoses.childCount; i++)
    4.                         {
    5.                             if(actorPoses.GetChild(i).GetComponent<EffectorData>().EffectorType == effector.Type? // won't actually work, because Type is not available)
    6.                         }
    7.                   }
    But there isn't a way to know which type the current effector is.

    Do you have any suggestions how I can compare them? I need to know that I'm assigning the LeftHand EffectorData to the FullBodyBipedIK LeftHand Effector.

    EDIT : I found this

    Code (CSharp):
    1. var currentEffector =
    2.                     ik.solver.GetEffector(effectorData.EffectorType);
     
    Last edited: Jan 10, 2018
  4. wightwhale

    wightwhale

    Joined:
    Jul 28, 2011
    Posts:
    365
    Yea changing it to a max character seems to have fixed the issue in that case. Our character isn't max or UMA but maya. Unfortunately I have the issue pop up in other places when I switch it to max when I'm not using the gun.
     
    Last edited: Jan 9, 2018
  5. Partel-Lang

    Partel-Lang

    Joined:
    Jan 2, 2013
    Posts:
    1,635
    Hey,
    Please check out my post on Dec 1, the HandPose and HandTarget scripts in that might help you out there.

    Hey,
    No, that can't be used. With it enabled, we are not able to rotate any bones by script and that is what IK needs to do.

    Hey,
    You can actually define you own limb orientations.

    Code (CSharp):
    1. public BipedLimbOrientations customLimbOrientations;
    (In the RootMotion namaspace)

    Fill that in in the editor, then call:

    Code (CSharp):
    1. ik.solver.SetLimbOrientations(customLimbOrientations);
    To know how to fill in the custom limb orientations definition, you should imagine your character standing in I-pose (not T-pose) with legs together and hands on the sides...
    The Upper Bone Forward Axis is the local axis of the thigh/upper arm bone that is facing towards character forward.
    Lower Bone Forward Axis is the local axis of the calf/forearm bone that is facing towards character forward.
    Last Bone Left Axis is the local axis of the foot/hand that is facing towards character left.

    Best,
    Pärtel
     
  6. wirelessdreamer

    wirelessdreamer

    Joined:
    Apr 13, 2016
    Posts:
    60
    When I move my character around and my camera rig is at different heights, with vrik on the character, and the camera rig changes its height on the terrain, the character is still staying at the old height. Any ideas?
     
  7. Partel-Lang

    Partel-Lang

    Joined:
    Jan 2, 2013
    Posts:
    1,635
    Hey,
    You should have some kind of a character controller on that character with a capsule collider that keeps it on ground level.
    Or just make a raycast down from the character root position and adjust the Y of the root accordingly.

    Best,
    Pärtel
     
  8. arnoob

    arnoob

    Joined:
    May 16, 2014
    Posts:
    122
    Okay, but wouldn't it be possible to do it by keeping the affected bones exposed, and putting some unity joints on them? It seems that it would make FIK much more performant.
     
  9. Partel-Lang

    Partel-Lang

    Joined:
    Jan 2, 2013
    Posts:
    1,635
    Even if they're exposed, they still can't be rotated, they are there just for parenting stuff on them or reading their positions/rotations. Read-only basically.
     
  10. RPowers

    RPowers

    Joined:
    May 14, 2015
    Posts:
    46
    Hi. I'm working with VR trying to get the camera to look right, but am having an issue with the camera being inside or just in front of the character's head. I tried placing the target far enough back so the camera is just barely in front of the head when I run. That looks fine, but if I move my head rapidly in game then the character's head takes a few moments to catch up to the target allowing the camera to briefly see parts of the head. For now I've set the scales of the character head to 0 to hide it, but I'd prefer not to do that. It'll cause complications for me later on. Is there a way to make the head not have to catch up to the target and just instantly be in synced with the target for every frame? Hopefully that made sense. I've looked everywhere and can't find a simple solution to this. Thanks!
     
  11. Spaceleigh

    Spaceleigh

    Joined:
    Jun 24, 2017
    Posts:
    4
    Hello. I have been using FinalIK for a few weeks now and love all of the little things you can do with it.

    The issue that I'm having is with VRIK. I'm using a makehuman model for my rig, and everything works fine except the size is off (ie, mesh isn't as wide as your arms). I've seen that others have had similar issues, and following advice I rigged a simple "arm stretcher" that would make my arms match up with the controller position. However, this looks just awful, especially when combined with the locomotion which makes my character tiptoe. I'm trying to figure out a way to calculate the arm length based on controller position, but nothing is working quite right. Are there any plans to include something like this in a future release?

    thanks!
     
  12. DrInternet

    DrInternet

    Joined:
    Apr 6, 2014
    Posts:
    49
    This disables movement of the gameobject and makes feets 'glued' to the ground. I want the gameobject to follow the target as earlier, but without the procedural animation.
     
    Last edited: Jan 15, 2018
  13. ledbetterman

    ledbetterman

    Joined:
    May 5, 2015
    Posts:
    52
    Hey Partel-Lang, really enjoying familiarizig myself with Final IK. Running into some strange behavior in the grounded demo. No matter the direction I press, the pilot runs straight ahead. When I select the "strafe" option in the character controller, I'm able to control the Pilot's direction via the mouse, but now he moves at walking speed. Also, his legs jitter and pop when walking over the stairs in the scene. IK is clearly solving correctly, but the dynamic animation looks a bit off. Is this expected behavior?
     
  14. Partel-Lang

    Partel-Lang

    Joined:
    Jan 2, 2013
    Posts:
    1,635
    Hi all!
    Final IK just had it's 4th birtday on the Store so I'd like say big thanks to all of you for your support and for helping me improve the package further for the years to come! It has been a real pleasure and always a great honor to see all the cool things you have done with it!
    :)

    Hey,
    It absolutely should be in sync with the target each frame. Maybe you have "Plant Feet" enabled and the feet are sometimes too far to reach and they drag the character down if that happens, causing the head to lose contact with the target. Try disabling "Plant Feet".

    Hey,
    Version 1.7 with automatic arm stretching and arm length multipliers has already been submitted to the Store and is pending review. If you are in a hurry, please send your invoice number to support@root-motion.com and I'll give you the latest right away.

    Yes, without procedural locomotion the character will just stand there. You'll need to use a classic 8-direction strafing blend tree tp move the character towards the horizontal position of the HMD with root motion. Here's a WIP demo to get you started with animated locomotion for VRIK.

    Hey,
    A known issue of the demo character controller with Unity 2017, will be fixed when v1.7 hits the store (currently pending review), but you can download a patch from here.

    Cheers,
    Pärtel
     
    tcmeric, dyupa and blitzvb like this.
  15. EgoAnt

    EgoAnt

    Joined:
    Dec 13, 2014
    Posts:
    18
    I am having some trouble with VRIK. When I hook up my character the hands are bent back 90° compared to what they should be. Any idea how I can solve this? I've tried a couple things but when I try to offset the rotation I end up with my hand twists going along the wrong axis.

    hand-back.jpg
    hand-fwd.jpg
     
  16. DrInternet

    DrInternet

    Joined:
    Apr 6, 2014
    Posts:
    49
    Thank you, that's exactly what I needed.

    Another question: can I somehow use Hand Poser with VRIK? I don't really care about interaction system, I just want to something to interpolate hand bones between two posses.
     
  17. Mikekan13

    Mikekan13

    Joined:
    May 30, 2015
    Posts:
    36
    Hopefully, this explains my problem:
    I feel like I just haven't set it up properly to work with VRTK. I looked at your demo but it didn't seem like that was taking into account vertical movement. I am talking about virtual movement. My control scheme is based on arm swinging with some head watching to make the player walk or run in place irl to move in the game.
     
  18. wirelessdreamer

    wirelessdreamer

    Joined:
    Apr 13, 2016
    Posts:
    60
    @Partel-Lang I've been working with your VRIK locomotion with animation demo, and the body that's moving around turns in really strange directions. what is the best way to get it to behave more natural. I'm looking to have the hips always pointed in the direction we're moving.

    My issue was caused because the head transform I attached to wasn't properly oriented, its working now.
     
    Last edited: Jan 17, 2018
  19. MSellars

    MSellars

    Joined:
    Jul 18, 2017
    Posts:
    2
    Hi Partel

    I'm working with both VRTK and you VRIK and I'm struggling a bit in one aspect. VRTK came up with a script for finger control (pull the trigger and the fingers curl). I like what they've done because they've also coded future applications for when using Valve's Knuckle controllers. I'm using the VRIK to track my movements and i was wondering if there was a way to integrate the two together.

     
  20. zikso802

    zikso802

    Joined:
    Sep 7, 2017
    Posts:
    15
    Hello Pärtel,

    I am very interested in buying your asset. It has everything I am looking for. However, I have a question out of curiosity. From what I gather, there seems to be a procedural locomotion engine used with VRIK, can this engine be used with FBBIK ? My other question is can I use this engine with mecanim for leg correction and placement ? Such use case for it could be when starting a walk cycle and immediately releasing input. this way the engine can take over and reposition the feet instead of mecanim blending with an idle animation and having sliding feet.

    Thanks in advance
     
  21. MSellars

    MSellars

    Joined:
    Jul 18, 2017
    Posts:
    2
    Hello again Partel

    I have another question. I'm LOVING the Calibration functionality. What I'm trying to do is manipulate the Dummy Avatar in VR as first person point of view, but then i want to click a button and then have the Dummy Avatar freeze his position and detach from me in VR. Ideas? I would think it would just be an extra line of code to turn the Calibrate function on and off but I'm not sure.

    Thanks for your help
     
  22. MostHated

    MostHated

    Joined:
    Nov 29, 2015
    Posts:
    430
    Hey there, I have heard a ton about this asset. I have a question though, would this be something, or have the capability to help my carrying of a large 2h sword seem more believable? My current walk animations move around in such a way that holding a giant 2H sword just looks silly, as if it was just a long cardboard tube. I am looking for something that can make it seem like the sword has some weight to it and can alter the base animation when walking or swinging.

    If this can help with that, I am ready to pick it up asap!
     
  23. newfinalflashers

    newfinalflashers

    Joined:
    Mar 1, 2014
    Posts:
    25
    Hello @Partel-Lang, I'm having a situation where the hand effector of the full body ik component needs to be at a specified location and rotation, but when I move it to the location with the full body ik component, the shoulder rotates the wrong way causing the elbow to bend inward instead of outward and the shoulder to be deformed. How would I go about fixing this. Thanks in advance
     
  24. Partel-Lang

    Partel-Lang

    Joined:
    Jan 2, 2013
    Posts:
    1,635
    Hi all!

    Final IK 1.7 has finally arrived!
    Here are the release notes:

    Version 1.7

    Upgrade Guide


    1. MAKE A BACKUP! Open a new scene, delete “Plugins/RootMotion” and reimport. Also reimport PuppetMaster if you had that in your project.
    2. If you were using any of the integration packages, reimport them from “Plugins/RootMotion/FinalIK/_Integration”.

    Improvements

    1. Simplified the “Aim Swing” demo, added AimSwing.cs.
    2. “Humanoid Third Person” controller is able to turn on spot while in Strafe mode.
    3. Made MotionAbsorb an OffsetModifier, will enable you to set it’s mode to “PositionOffset”, in which it will use effector.positionOffset and enable you to keep using effector position and rotation to override whatever it is doing or use it seamlessly with the InteractionSystem.
    4. TwistRelaxer will work now also if the hand bone is not parented to the twist bone.
    5. Added “Twist Angle Offset” to TwistRelaxer, can be used to adjust the default twist rotation of the bone it is used on.
    6. Added the VRIK LeapMotion integration package.
    7. Added spineTargetOffset to IKSolverLookAt.cs. Can be used to make the chest look at a different target position.
    8. Added VRIKCalibrator.cs and the “VRIK (Calibration)” demo scene. Enables you to more easily set up VRIK with up to 6 trackers.
    9. Added UnityEvent implementation to interaction events.
    10. Added rotationWeight to FingerRig’s fingers.
    11. Added “Rotation DOF” to FingerRig’s fingers, can be used to set rotational degrees of freedom to 1 for the fingers to enable rotation around a single axis instead of all 3.
    12. Added armLengthMlp to VRIK, enables you to configure default arm length.
    13. Added stretchCurve to VRIK’s arms for automatic and smooth stretching.
    14. Added “Move Body Back When Crouching” to VRIK’s spine settings. Enables you to better adjust the crouching pose.
    15. Added “Rotate Chest By Hands” to VRIK’s spine settings. Defines the amount of rotation applied to the chest based on hand positions.
    16. The spine bends more naturally now, especially when “Maintain Pelvis Position” is set to a higher value.
    17. Added blocking functionality to CameraController.cs.
    18. Added AimController.cs - a new tool for AimIK that easily takes care of problems like smoothing weight, smooth switching between multiple targets, smooth turning towards the target, root rotation and using recoil/reload animations with AimIK.
    19. Added the VRIK (Hit Reaction) demo that uses HitReactionVRIK for procedural hit reactions.

    Fixes

    1. Fixed a Null Reference Exception when adding FBBIKHeadEffector in runtime.
    2. Fixed a bug with the blending of VRIK “Bend Goal Weight”.
    3. Fixed a bug with the InteractionSystem not resetting effectors right when another interaction was called before the effectors were fully reset.
    4. Fixed a bug with FABRIK bones drifting apart after a while when “Fix Transforms” disabled and rotation limits used.
    5. Fixed a bug with VRIK arm bend goal accuracy.
    6. Fixed a bug with VRIK “Max Root Angle” locked to 25.
    7. Fixed a bug with using VRIK leg bend goals messing up leg solver results.
    8. Fixed a bug with InteractionSystem LookAt not working smoothly with AnimatePhysics Animator update mode.
    9. Fixed a bug with VRIK producing different results when rotated upside down.
    10. InteractionSystem will update it’s effectors directly before FBBIK update instead of LateUpdate so it always has the latest transformations to work with even if other IK has been solved before FBBIK.
    11. Fixed the demo character controller rotation bug in Unity 2017.2.


    Hey,
    If the hand IK targets are parented to the IK anchors, then adjusting the localRotation of the IK targets is the way to fix it. What do you mean by hand twists going along the wrong axis?

    Hey,
    Please check out my post on Dec 1, the HandPose and HandTarget scripts in that might help you out there.

    I don't have a solution for that kind of stuff (yet at least), but you are free to run any code or animation on the fingers, VRIK just gets the hand to where it needs to be.

    Hey,
    The procedural locomotion of VRIK can only be used for a bit of foot shuffling in a VR game, it doesn't even look very good in roomscale VR games, so it's not something you'd want to use for walking from A to B. And it doesn't work with FBBIK.
    There is vertical foot placement correction, called the Grounder, but horizontal stuff would need to be custom coded.

    Hey,
    Just disable VRIK and the Animator components. That disabling needs to happen after VRIK update, use the Script Execution Order for that.

    Hey,
    Yes, you can use FullBodyBipedIK and it's effector modifiers, apply some positional offset to some of the effectors. There is also Inertia and Motion Amplifier that can be used for stuff like that.

    Hey,
    Could you please send me some screenshots or a video so I could better understand what might be going on there?

    Cheers,
    Pärtel
     
  25. MostHated

    MostHated

    Joined:
    Nov 29, 2015
    Posts:
    430
    Thank you for the information. I purchased this last night, can't wait to try it out. I am using Opsives Third Person Controller to handle animations and weapons and what not. Can the effectors change how they act on the fly somehow? In my inventory, I would have several weapons but only one instance of FinalIK's scripts on my character. How can I go about, say having normal animations as they are when I have a basic 1hand sword out, but then make FinalIK be effected by the Greatsword when I change and equip weapons and then go away if I put my items away?

    ** Edit - I have been messing with Aim IK Swing for my player, I got it working for the most part but it seems the Aim IK Target keeps being set automatically to an instantiated Player Target in the scene. I took that and attached it to my camera about 15 units out which works fine, but every time I restart the scene it makes a new one and just looks at that, which is a fixed object. How can I change that?

    Also, both Aim IK and Full Body Biped IK, even though checked in the inspector keep defaulting to unchecked every time I start my scene.

    Might any of it have to do with the fact that my character is dynamically instantiated on start via a spawn location?
     
    Last edited: Jan 21, 2018
  26. dadude123

    dadude123

    Joined:
    Feb 26, 2014
    Posts:
    592
    Hello,

    I have a few questions:

    1)
    Is there a way to do acceleration tilt?
    In this video the tilt is controlled by the acceleration.
    I've seen the BodyTilt component, but it only works for Left/Right poses. And it also doesn't do rotation, only positional offset.

    So after looking at the code for BodyTilt and OffsetPose I was thinking of making my own BodyTilt that supports some rotation and arbitrary blending.

    I was thinking of making my own "OffsetPose" class that also supports rotation.
    And then having two of those, one "Right-Left" and one "Forward-Backward" pose; and then I would blend into them using weights from -1 to 1.

    Do you think that would work? Is there an easier way that I maybe overlooked? Any things you think I should consider?


    2)
    What exactly is "pin" and "pinWeight" used for in OffsetPose/EffectorLink?
    Just from looking at the code it looks to me like it would be used to do some kind of override towards "pin" using "pinWeight". But I don't get why its there or how it would be useful? What are some scenarios where using it makes sense and how would one use it?


    3)
    Referencing the video linked in #1, is there a way we could record/store certain positions somehow and then blend into them, for a fully procedural animation system, i.e. completely bypassing animation-clips.
     
  27. Chris45215

    Chris45215

    Joined:
    Jan 30, 2016
    Posts:
    2
    Partel, the package is very impressive and I'm enjoying using it, but I have a specific application that I can't figure out. I'm trying to apply it to a robotic arm like those made by Kuka for industry, like the one at https://www.robots.com/kuka/kr-360-fortec

    These arms have 6 degrees of freedom, and I'd like to control it by telling the robot's end effector to move to both a position and a rotation (which is why these arms need 6 joints). But, the examples I see deal mostly with 3 DOF parts, and the CCDIK script allows for more joints but it only moves to the target's position, not it's rotation. Is there a way to tell Final IK to do the IK calculations for both?

    I would use the "Linking Effectors to Objects" tutorial on youtube, but that appears to assume a spherical wrist joint which has two degrees of freedom; but these robots can only have 1 DOF per joint. I think one approach to the problem is to split the problem in half, so that one IK calculation is done for the final three joints to determine rotation, and a separate calculation is done for the first three joints to determine a position - but because each of the joints in the rotation portion requires a certain amount of space for gears and bearings, the target position needs to be offset to compensate for this. This split may also make the setup in the Unity editor less intuitive. In my script (from before I got Final IK), I have commands that are basically ArmController.GoToRotation(target.rotation) and ArmController.GoToPosition(target.position), where ArmController is the script attached to the robot arm gameobject, and I can freely move and rotate the target gameobject in the scene editor. If there's any way to get similar functionality with Final IK, I'd love to do it, even if it requires a lot of scripting.

    Thanks!
     
  28. Partel-Lang

    Partel-Lang

    Joined:
    Jan 2, 2013
    Posts:
    1,635
    Hey,
    About the first question, all IK components have weight (usually ik.solver.IKPositionWeight) values so you can blend them in/out seamlessly if you detect a 2-handed sword being held.

    About the other questions, if you instantiate a character prefab on start, and in that prefab the aim target is set to something that is a chind of the prefab, that connection will be maintained. Doesn't matter what the aim target is for the editor character, the instantiated one is another object. It's a Unity thing really, not a FIK thing.

    For the same reason, if you have something selected in the editor and in Start you create an instance of it, that will be another object so it won't be selected until you select it.

    So, when you instantiate a character, get the AimIK component of that particular instance and set it's target or whatever you need through script.

    Hey,
    I have no script for acceleration tilt, but yes, you can make it very similar to the BodyTilt code. You can make a copy of BodyTilt and just change all the tiltAngle stuff to acceleration. Change poseRight/Left to poseForward/Back and call Apply on them with the acceleration parameter.

    Pinning can be used to pin an effector to a certain position relative to the root of the character. So Pin is the position relative to the root and Pin Weight is how strongly that effector will be pinned to that position. If its 1, the effector will be locked to that position relative to the root.

    3. You could assign targets to all effectors of FullBodyBipedIK and animate the effectors or something like that, but it would probably be easier to just use animation and IK modifiers on top of it. Fully IK driven animation will never be as good as mocap. Combining mocap and IK is way to go.

    Hey,
    I have solved the KUKA rig before, please try this package.

    Best,
    Pärtel
     
  29. MostHated

    MostHated

    Joined:
    Nov 29, 2015
    Posts:
    430
    I understand what you are saying, the thing is though when I hit play "Player Target" is instantiated by FIK and that is what the player ends up looking toward. What is calling that item to be instantiated? If I try and set Aim target to that it won't matter as you said, as a new one gets instantiated each time and the player looks at the new one regardless of if I had it attached to my camera beforehand. Where is that coming from so I can add something to it to make it attach to the camera on start instead of just somewhere in the scene randomly?

    ********** EDIT ***********
    Never mind on this one, I figured it out. For some reason Opsive Third Person Controllers Final IK integrations controller bridge has this in it:
    Code (CSharp):
    1. m_Target = new GameObject(gameObject.name + " Target").transform;
    2. m_AimIK.solver.target = m_Target;
    I am trying to get a hold of him to find out why exactly.
     
    Last edited: Jan 25, 2018
  30. dadude123

    dadude123

    Joined:
    Feb 26, 2014
    Posts:
    592
    Hmm I'm still not quite sure when that would be useful...
    Do you have some specific example?

    I did that and it works fine except for the rotation. When I apply it nothing happens (I use rotation since there is no rotation offset)
    I have set rotation weight to 1.
    The position offset works but the rotation gets ignored.
    I want the full body tilted forwards and each body part rotated as well of course, so for example the head aims downwards a little bit.
    Is it maybe because the spine is somehow special?
    I'm trying to apply the rotation to the "Body" effector.


    I see, yes that makes sense.
    I was thinking about having more control over animations but I figured out that CrossFade() will do the trick just fine in the few situations I need it for.
     
    Last edited: Jan 24, 2018
  31. socialnui

    socialnui

    Joined:
    Mar 1, 2017
    Posts:
    1
    Hi,
    I am using VRIK with Oculus rift, and when I attach it to my avatar I get its legs crossed?
    Do you have any idea on how to resolve this?
    upload_2018-1-24_15-55-48.png upload_2018-1-24_15-55-48.png upload_2018-1-24_15-55-48.png
     
  32. DrInternet

    DrInternet

    Joined:
    Apr 6, 2014
    Posts:
    49
    Right/left leg swivel offset. At least that helped in my case.


    What does exactly VRIKCalibrator do aside from auto setting VRIK and scaling the mesh?
    Frankly speaking I hoped it will maybe auto stretch the arms. Do you plan to add such functionality in the near feature?

    Here's the fragment of your HandTarget script. Why are you starting iterating from the third element, not second? Won't the index/carpal (or whichever is the first one in hierarchy) bone be omitted this way?
     
    Last edited: Jan 25, 2018
  33. AustinDrozin

    AustinDrozin

    Joined:
    Jun 8, 2016
    Posts:
    4
    I have two quick questions that I guarantee will have simple solutions. For the life of me I can't figure it out.

    1. When I apply GrounderFBBIK on my character controller, the model goes through the ground about half the body height. I have Aim IK and Body Title applied too. Without Grounder everything works out, but the second I put the grounder one the model goes through the floor on start. I've played with the settings a ton! Any idea why this is happening?

    2. In the demo assets third person character controller, how are you walking up steps? I have used the controller as a base for my character controller just to figure out how everything is working. The only thing I don't understand is how the capsule walks up steps. This is because I needed to reduce the radius of the collider to fit my model, but the smaller the capsule is, the harder it is for the character to get up stairs. Currently the capsule is too skinny to even get up a small bump. I've tried to find the section of code where it checks for stairs/steps, but I can't find it. Do you know where this code is and why smaller capsule colliders can't get up steps?

    Thanks!
     
  34. BernieRoehl

    BernieRoehl

    Joined:
    Jun 24, 2010
    Posts:
    54
    I'm using VRIK while my character is stationary, but when my character walks I play a walking animation and set the vrik.solver.locomotionWeight to zero. When my character stops walking, I set vrik.solver.locomotionWeight back to one and do a vrik.solver.Reset().

    This all works, but I find that my character walks with very stiff legs. If I set the IK Position Weight to be zero, the walking animation looks good but of course I no longer have IK for my head and hands.

    I also find something similar when I play a sitting animation -- the legs are stretched out unless I set the IK Position Weight to zero.

    Is there something else I need to set?
     
    Last edited: Jan 25, 2018
  35. Chris45215

    Chris45215

    Joined:
    Jan 30, 2016
    Posts:
    2
    You are amazing, thanks! It's working great, but I need to set some angle limits on it (it's quite prone to jumping between positions otherwise). For one position that the arm is commonly at, on joint 4 (rotating with axis Z), the angle likes to go -80 > -85 > -89 > JUMP 91 > 95 > 100 > etc. So, in that case it approaches negative 90, and then jumps to positive 90, and the rest of the arm jumps along with it. If there is a way to set the hinge rotation limits, or give each component something similar to Unity's hinge spring so that the arm can determine which joints should be rotated most easily, that would be perfect.

    Thanks again,
     
  36. skinwalker

    skinwalker

    Joined:
    Apr 10, 2015
    Posts:
    205
    I have a deer that I would like to align with the terrain angle while running, any ideas?
     
  37. Partel-Lang

    Partel-Lang

    Joined:
    Jan 2, 2013
    Posts:
    1,635
    Hey,
    About the pinning, basically it can be used to damper motion of a body part, like in the Tilt Left offset pose in the demo, the motion of the left hand is dampered a bit by pinning the hand effector.

    About the rotation, there is no effector rotationOffset. If you set rotationWeight to 1, the hand will be rotated to effector.rotation. If you wish to rotate some bones, just rotate them in OnModifyOffset like this:
    Code (CSharp):
    1. ik.references.spine.rotation = ik.references.root.rotation * Quaternion.Euler(spineRotationOffset * acceleration) * ik.references.spine.rotation;
    Hey,
    Do you have animation playing on that character? If you don't, just rotate the knee bones in the editor so the limbs would be slightly bent in their natural bending directions. If you do, try using another animation clip or go to the humanoid avatar configuration and reduce the knee range so it would not stretch too much. I'm working on a better knee bending model as this seems to be a frequent issue.

    Hey,
    The calibrator helps to set up if you have additional trackers like Vive trackers on the feet and body. There is already auto stretching, but it only works if you have the "Stretch Curve" filled in for the arms. Go to the "VRIK (Basic)" demo and copy the stretch curve over from the Pilot to your own character. Read the tooltip on the curve to learn how to adjust it if necessary.

    Concerning the HandTarget, you are right, I made that script using a hand model that had Wrist->Palm->Fingers structure. The wrist rotation is already set by the IK, the palm was static so I started from the third. If you have no palm bone, start from int i = 1;

    Hey,
    1. Are you sure the grounder solver layers don't include the layers of the ragdoll colliders? Is the root of the character at the height of the feet or the pelvis?

    2. Yeah, the capsule just slides over the stairs and if the capsule is too thin, it gets stuck. You can keep your capsule thin though and add a new child gameobject with a large sphere collider on a layer that only collides with the ground layer(s). That way the character will be able to slide over the stairs, but still get close to walls and stuff. Basically that collider setup will work as a Compound Collider for the character rigidbody and yes, compound colliders can be made out of colliders on different layers.

    Hey,
    This usually happens when the character is too short for you. Just scale up the root of the character.

    Hey,
    Have you tried enabling "Continuous"?

    Hey,
    There is the GrounderQuadruped component that you can set up with 4 LimbIK-s for the legs. Check out the Wolf in the Grounder demo. Just copy the Grounder gameobject over to your deer and replace all bone references in the GrounderQuadruped and LimbIK components.

    Cheers,
    Pärtel
     
    skinwalker likes this.
  38. Slayd7

    Slayd7

    Joined:
    Oct 12, 2016
    Posts:
    1
    Hi Partel,

    Loving Final IK so far, it's made my life SO much easier. So first, I'd like to thank you.

    I'm having a weird problem, though, that I hope you can help out with. I have a FullBodyBipedIK script on my player model, and when I set it up in-editor, it doesn't seem to work correctly - the arm bends backwards. However, when I add it during runtime, everything works as expected. Here's a video to explain the problem better:


    Hope you can help!
     
  39. Mikekan13

    Mikekan13

    Joined:
    May 30, 2015
    Posts:
    36
    Still can't figure it out. Realize you might have missed this.
     
  40. Partel-Lang

    Partel-Lang

    Joined:
    Jan 2, 2013
    Posts:
    1,635
    Hey,
    Please see this tutorial about fixing this issue. Basically, you'll just have to rotate the elbows a bit in the Editor so the limbs would be slightly bent in their natural bending direction. FBBIK samples the pose of the character when it initiates to know which way to bend the limbs, that's why it works when you add it in play mode, the character is already animated and the limbs are bent.

    Hey, sorry!
    VRIK is not supposed to move the root of the character vertically at all and it only moves it horizontally if locomotion is enabled. There are so many different ways users might need to move the root, so I can't really program all of them into the IK solver.

    So basically, if you need to move that character virtually, move the tracking space and also move the root of the character with it, you can just parent the character to whatever gameobject you are moving.

    Best,
    Pärtel
     
  41. nathanjams

    nathanjams

    Joined:
    Jul 27, 2016
    Posts:
    128
    Hello Partel

    Any news on any type of Timeline integration?

    Thanks I’m advance,

    Nathan
     
  42. 00christian00

    00christian00

    Joined:
    Jul 22, 2012
    Posts:
    735
    Hi Partel,
    How can I fix this? If I do a movement that pull the body down it does rotate the spine and keep the hips(pelvis) fixed.
    If I do the same with the ik of some modeling software it does use the hips and produce a more natural movement.
    Is there some error in my setup or it's the expected behaviour?
    I have the following bones in the torso: hips->spine->chest
    upload_2018-1-30_18-8-37.png

    EDIT
    I think I fixed by removing and reimporting the component, I think I had changed the reference bones to something wrong.

    EDIT2
    Still not working. It's behaving better, but it's giving priority to the rotation of the spine instead of the hips, which is not natural. In your example it doesn't happen. Don't know what's wrong
     
    Last edited: Jan 30, 2018
  43. Partel-Lang

    Partel-Lang

    Joined:
    Jan 2, 2013
    Posts:
    1,635
    Hey,
    Not yet, sorry.

    Hey,
    Try increasing "Spine Stiffness" under "Body".
    Also might try using another spine bone as the "Root Node" and add some "Reach" to the arms to make the arms look better.

    Best,
    Pärtel
     
    00christian00 likes this.
  44. 00christian00

    00christian00

    Joined:
    Jul 22, 2012
    Posts:
    735
    I partially solved by moving the spine closer to the hips, hope it won't cause issues in other animations.
    Then maxed spine stiffness and "pull body vertical".
    Changing the root node didn't work. What does the root node actually do anyway?

    Still I wonder why your dummy character doesn't have the same issue with the same animation, is it because it has more spine bones?
     
  45. Partel-Lang

    Partel-Lang

    Joined:
    Jan 2, 2013
    Posts:
    1,635
    Root node is basically the bone around which the spine is bent. In the scene view it is the blue node in the middle of the body.
    The number of spine bones in the hierarchy doesn't matter. It only matters how many you have added to the Spine under References.
     
    00christian00 likes this.
  46. CentViRe

    CentViRe

    Joined:
    Dec 6, 2016
    Posts:
    8
    @Partel-Lang
    So i have problem with vertical
    And think i want try reset of root position, where in script i can get it? Or where in script it have?
     
  47. Fairennuff

    Fairennuff

    Joined:
    Aug 19, 2016
    Posts:
    84
    Hello Partel,

    I'm using VRIK with your VRIK animation controller. Trying to get a jump to work. So far I have a jump animation on the controller with a transition using a new bool ("Jump") from the "Any State" option to the jump animation. The jump animation is really just the Standard Assets Humanoid midair animation - but I copied it and changed the Root Transform Position Y property to Original (so that the Y doesnt follow the character, else it makes VRIK do silly things). So... This kind of works....

    When I hit the jump button, the whole play area jumps as expected (This part has nothing to do with VRIK). The Avatar follows the HMD as expected. Watching the animation controller it transitions into my Jump animation pose but the legs remain straight (rather than tucked). When the play area lands, the bool becomes false and it transitions back to the Idle pose. During the transition back to idle pose it actually plays the transition and legs tuck and blend back to idle.

    So for whatever reason, VRIK or the animation controller isn't letting the legs Transition to the jump pose, even though the walking and idle poses work fine and the transition out of jump to idle works. Any idea how I could override VRIK to let the legs tuck when I start my jump event while still tracking arms/head?

    Thanks!

    Edited: few more details -
    Since I'm using your animation controller VRIK's locomotion weight is set to 0.
    positional weight and rotational weight of the legs are set to 0 and do not have trackers/targets defined.

    Edit - NEVERMIND! I fixed it by parenting the avatar to the play area so its base jumps with the play area!!
     
    Last edited: Feb 4, 2018
  48. Fairennuff

    Fairennuff

    Joined:
    Aug 19, 2016
    Posts:
    84
    @Vheanom Twist relaxer is pretty simple. Put it on your forearm bone of your character to effect the join between forearm and wrist. Make sure the 2 axis variables are filled in correctly. Done!
     
  49. Vheanom

    Vheanom

    Joined:
    Dec 21, 2017
    Posts:
    3
    @Fairennuff Thanks!!
    I didn't realize I had to put it on the forearm bone since it's not explained anywhere...
     
  50. Vheanom

    Vheanom

    Joined:
    Dec 21, 2017
    Posts:
    3
    @Fairennuff
    I got twist relaxer to work to some degree. It's working really well when I twist my left hand clockwise, however when I do it counter-clockwise to do a palm up I'm still getting issues with the wrist. I have no idea what causes this or how to fix it.


    twist relaxer: