Search Unity

  1. Megacity Metro Demo now available. Download now.
    Dismiss Notice
  2. Unity support for visionOS is now available. Learn more in our blog post.
    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. silentneedle

    silentneedle

    Joined:
    Mar 14, 2013
    Posts:
    280
    It seems there is a bug with the recoil script using the aim ik solved last option. The script doesn't seem to take the Y rotation of the character into account. If you rotate on the y axis the offsets aren't correct anymore which results in incorrect recoil directions.

    I've reproduced this bug in the recoil demo scene, just tick aimik solve last, add the ik execution order and let fbbik execute before aim ik, then change the rotation (y axis) of the dummy and play a little bit with the aim target, you'll notice that the recoil will differ.
     
  2. puzzlekings

    puzzlekings

    Joined:
    Sep 6, 2012
    Posts:
    404
    @Partel-Lang I just wanted to check how the Limb-IK Bend Goal is supposed to work, because in the demo scene the Target transform is null as it does not exist in the scene?

    thanks

    Nalin
     
  3. puzzlekings

    puzzlekings

    Joined:
    Sep 6, 2012
    Posts:
    404
    @Partel-Lang also any idea why comments are showing up in Hex?

    My project is under source control forcing text, so maybe that has something to do with it?

    cheers

    Nalin
    HexComments.png
     
    silentneedle likes this.
  4. Partel-Lang

    Partel-Lang

    Joined:
    Jan 2, 2013
    Posts:
    2,548
    Hey,
    When a leg is periodically twitching with Grounder it is actually not a problem with animation compression, but the animation. I have seen a couple of times a walk loop where there is a weird twist in, where the thigh makes a quick twist inwards and the calf compensates by twisting outwards so the foot does not appear to rotate. Normally it is not noticable, but when IK bends the leg, it is greatly amplified, as the twist rotation of the thigh is used in calculating the bend plane for the limb. I'm not sure where that twist comes from, perhaps it's a gimbal issue in one of the 3D animation authoring tools. Switching animation compression can sometimes mask that problem out.

    Hey,
    Indeed you are right. Just change line 186 in Recoil.cs to
    Code (CSharp):
    1. if (aimIK != null && aimIKSolvedLast) aimIK.solver.axis = Quaternion.Inverse(ik.references.root.rotation) * Quaternion.Inverse(rotationOffset) * aimIKAxis;
    Thanks for pointing that out, will add to the next update.

    Hey,
    Set "Bend Modifier" to Goal, then you'll get a "Bend Goal" slot.

    It's a bug with Unity. Importing normal packages to projects with "Force Text" asset serialization messes up serialized strings in the Editor.

    A solution would be to:

    1. Open a new project
    2. Import FIK
    3. Set asset serialization to "Force Text"
    4. Export FIK (Select Plugins/RootMotion and Plugins/Editor/RootMotion, click on Assets/Export Package, uncheck "Include dependencies" in the window that opens)
    5. Reimport that in your main project.

    Cheers,
    Pärtel
     
  5. silentneedle

    silentneedle

    Joined:
    Mar 14, 2013
    Posts:
    280
    Thanks, fast as always, but the fix doesn't seem to work, the recoil still differs when changing the rotation.

    That makes sense. I still have one run animation which looks buggy when running down the hills, this is probably related to that issue.
     
  6. marinekelley

    marinekelley

    Joined:
    Feb 20, 2014
    Posts:
    2
    Hi, I'm seriously considering buying Final IK, but first I have a question or two.

    Is it able to handle high heels like Any IK does, with or without platforms?

    And is it compatible with Morph Character System? I know it is compatible with UMA and I saw somewhere in this tread that it was "technically possible" but I need to be certain.

    Thanks in advance.
     
  7. silentneedle

    silentneedle

    Joined:
    Mar 14, 2013
    Posts:
    280
    After little testing with the recoil script (aim ik solved last unticked this time) it seems the problem could also be related to my setup, unfortunately I have no idea what could the cause, because I've setup everything like in the demo (I've even tried it without aimik solving last). Also the weapon I'm using is setup pointing to Vector3.forward (blue axis). But instead setting the Y axis in rotation random and hand rotation offset, I need to set negative values inside Z that the recoil looks realistic.

    Any idea what could cause this?
     
  8. jashan

    jashan

    Joined:
    Mar 9, 2007
    Posts:
    3,307
    I'm currently experimenting with VRIK and HTC Vive but as there are HTC's new motion trackers coming soon, and we also have a Perception Neuron and PrioVR, I'm trying to figure out the best way to handle various input approaches in the best possible way.

    First question first: Is there already documentation about VRIK available? I've found the example scene and that is helpful but while some thing are obvious, the "Bend Goal" for example (in Left/Right Arm and Leg) is unclear to me. Would that be the elbow/knee position? With those (head from headset, pelvis from mocap gear, hands from controllers and elbows / knees / feet from mocap gear), I believe one should get very good results already, if everything is calibrated well.

    Also, do you think VRIK would even make sense when using a full body motion capturing suit, or would you rather suggest using a combination of VRIK (maybe disabled when a motion capturing suit is connected), Full Body Biped IK and, in the case of Perception Neuron with full finger tracking, maybe CCD IK, Trigonometric IK or even FABRIK.

    In very early experiments, I tried directly driving a character from Perception Neuron ...but that was kind of mess that wasn't easy to solve due to different (incompatible) rigs being used.
     
  9. coolpowers

    coolpowers

    Joined:
    Mar 23, 2010
    Posts:
    125
    Before I wastea bunch of time in experiments, is VRIK currently compatible with the interaction system or do we still have to use the older FBBIK/head tracker setup?
     
  10. Partel-Lang

    Partel-Lang

    Joined:
    Jan 2, 2013
    Posts:
    2,548
    Hey, I can't see the difference here, can I reproduce it in the "Recoil" demo somehow?

    Hey,
    Yes, high heels should not be a problem. Neither should Morph Character System, although I haven't tried that, but you can add it in runtime and it will adapt to character scaling and proportion changes. Anyway, if it doesn't, I'll just refund your purchase.

    Hey, can you package me that so I could take a closer look?

    Hey,
    The Bend Goal is not an elbow/knee target, it is an object that the limb will bend towards. Just assign something to that slot and set Bend Goal Weight to 1, then move it around and you'll see how it works.

    If you have a full body motion capturing suit, then I don't really see the need for any IK at all. Perception Neuron has an Unity integration package and I think it also enables for live link so you can move around and see yourself in Unity at the same time.

    Hey, it is not compatible. Why would you need it to be? I mean your hands are tracked by the controllers so you are free to interact directly with anything.

    Best,
    Pärtel
     
  11. marinekelley

    marinekelley

    Joined:
    Feb 20, 2014
    Posts:
    2
    Thank you for your answer, Pärtel. I will probably give Final IK a try at some point anyway, given all the other very interesting features, high heels are not a priority for me but it will be interesting to test this part when I do.
     
  12. coolpowers

    coolpowers

    Joined:
    Mar 23, 2010
    Posts:
    125
    To take advantage of the (excellent) "automatic" hand animation in FinalIK's interaction system. Things like pressing buttons, grabbing objects properly, etc. I think VRTK's interaction system supports custom action scripts on interactions so I can still do it all but will have to set it up myself.
     
  13. justtime

    justtime

    Joined:
    Oct 6, 2013
    Posts:
    424
    Hi there!
    I am making multi-player slasher with hightly using IK and when all 10 players persists in room profilers shows for solvermanager in update 0.2-0.4ms for each player and the same in lateupdate. Can i somehow optimize these places ?
     
  14. jvetulani

    jvetulani

    Joined:
    Dec 20, 2016
    Posts:
    55
    Hi!
    We've bought Final IK at work today, and there seems to be differences between what's in your tutorial videos on your Youtube Channel and the script. When I add the CCDIK script to a rig there is no Time Step option for instance. Has this been removed in recent versions?
     
  15. jashan

    jashan

    Joined:
    Mar 9, 2007
    Posts:
    3,307
    Yep, that works really well with their very specific rig and example characters. Driving more standard characters with that approach seemed like quite a mess so I've had the idea of combining this with FinalIK. The idea is basically to have a character driven by FinalIK and adding / removing targets according to the available hardware. For almost all players this will be HMD and two controllers for the hands. With the Vive, it won't take long until we can add additional trackers to the ankles / feet and the pelvis. Quite a few players will use that setup and for that, we still need FinalIK to make it work. Some people might be able to add more trackers, e.g. for knees and elbows.

    Finally, for our own recording of videos and the few players that have this hardware, we want to also support PrioVR / Perception Neuron. Even with those, I'll certainly use the HMD and controllers simply because they are that much more precise, have no drifting etc. issues and just work. But using the mo-cap data e.g. to get an estimate for where the elbows and knees are, or where the pelvis is should improve the simulation quite a bit. Actually I still think the bend-goals might work for that but need to play with it as you suggested. With perception neuron, we also have finger tracking, so that's something we could probably use "directly" (in other words, take the data from those bones from the Perception Neuron integration and map them to the bones of the actual character we're using). Most, if not all of the time, players are just holding the controllers, so it's a little questionable if that will even be worth the effort ... but it could be a fun little extra because people often hold the controllers surprisingly differently.
     
  16. Partel-Lang

    Partel-Lang

    Joined:
    Jan 2, 2013
    Posts:
    2,548
    Hey,
    There are tips and tricks for optimizing FBBIK, they can be found on this page.

    Hey and thanks for the purchase!
    Some of those videos are 3 years old, so there have been many updates to the components. Time Step has been removed, nobody was really using that.

    Hey,
    You could use Perception's Unity link to get the base animation across, then use VRIK/FBBIK on top of that if you have the HMD and hand controllers, to place the head/hands more accurately. When additional trackers arrive on market, I'll be sure to add some kind of support to them.

    Best,
    Pärtel
     
  17. 00christian00

    00christian00

    Joined:
    Jul 22, 2012
    Posts:
    1,035
    Hi Partel,
    I am currently disabling final ik when I don't use it by blending IKPositionWeight to zero, but when I renable i get a cpu spike:
    finalik_spike.jpg
    That is on desktop, on mobile it's much higher than 9ms.

    Also that is the only occurrence that it does allocate memory at runtime, could you fix it?
     
  18. khos

    khos

    Joined:
    May 10, 2016
    Posts:
    1,476
    Liking the mech spider very much:
     
  19. TamTech

    TamTech

    Joined:
    Aug 31, 2015
    Posts:
    2
    Hi Patel,

    In the folder FinalIK/FBBIK contains a scene called Boxing, open this scene we see a Dummy Humanoid, on its Animator controller component contains only one animation clip named: Boxing, press the Play button then moving the 'Punch target' in the scene view, the right hand of the Dummy Humanoid follows the 'Punch target' smoothly without problems, press the button to stop the Unity editor, change to one of my animation clip very similar to Boxing clip included in the Final IK, press the Play button again, this time the right hand of the Dummy Humanoid Has NOT follow the target any more, the Dummy Humanoid follows the 'Punch target' smoothly again when I changed it back to Boxing clip! What is the problem? my animation clip? require any special settings up? Please HELP
     
  20. jasonoda

    jasonoda

    Joined:
    Sep 7, 2012
    Posts:
    67
    Hey Final IK folks.

    I am randomly getting the:

    "Invalid IKEffector.positionOffset (contains NaN)! Please make sure not to set IKEffector.positionOffset to NaN values."

    maybe once out of every 10 times I play. Is there something in the settings that could be throwing this off? I'm using this with a full body biped ik. I use almost all of the default settings provided. The only thing I have that might be out of the norm is a script that frequently changes the weight of grounder from between 0 to .9. When this gets messed up my character either disappears or the limbs are pointed in crazy directions.

    Do you have any advice as to how to fix this? Do you know what typically causes this? Can I just set the positionOffset to Vector3.zero to alleviate this?

    Otherwise great product!
     
  21. Fairennuff

    Fairennuff

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

    I am having an issue with InteractionObjects. I can get my NPCs to pick them up just fine. Works great!. When I go to have them drop one I am unparenting it and setting it to isKinematic=false. Much the same as in your interaction Video #2.

    When the object is unparented, it moves to its local position in world space and is locked in place, can't even be moved in the editor during runtime.

    What I mean is if the item is at .01, 0.1, 0.1 while in the NPCs hand (Because its 0.1 offset from its parent), when it is dropped it moves to 0.1, 0.1, 0.1 world space coords and can not be moved by any means unless it is interacted with again via the Pickup Method on my NPCs.

    Any idea what may be causing this? Is there anything else I need to do on the InteractionObject or InteractionSystem of the NPC before unparenting it to just have it fall from their hand?

    Thanks!
     
  22. qkjosh

    qkjosh

    Joined:
    Nov 29, 2015
    Posts:
    33
    Hi there,

    I've been playing around with the grounder quadruped demo and noticed that when jumping is enabled, the wolf is very jittery while mid-air, unless I turn off Smooth Physics in the character controller. Just wondering what might be causing this; some interaction with the Unity physics, or some setting causing the feet to try and snap to the ground? Really enjoying the asset otherwise, just wondering what might be causing that. I'm using Unity 5.5.0f3. Thanks!

    Edit: Played with some settings to try and isolate this. It does seem like at the start of a jump, it's trying to keep the forelegs attached to the ground (the front end of the wolf dips downwards before breaking free of the ground). Would a reasonable solution be to turn the Grounder Quadruped Weight to zero until the character begins its descent?
     
    Last edited: Jan 30, 2017
  23. Partel-Lang

    Partel-Lang

    Joined:
    Jan 2, 2013
    Posts:
    2,548
    Hey,
    That is actually just the cost of initiating the solver. If you start with IKPositionWeight set to 0, it will not initiate before the weight is set to 1. So start with the weight set to 1, have the solver initiate at the start of the game, when the cost is unnoticed amongst other stuff that is loading and set weight to 0 after solver initiation (can use ik.solver.OnPostInitiate delegate).

    Haha, nice, add some more hills and bumpy stuff ;)

    Hi,

    You'll just need to add a Curve named "HitWeight" in the animation import settings, so that it starts from 0, then starts going up to 1 when the punching starts, reaches 1 when the fist is supposed to hit the target, then goes back down to 0 again.

    That curve's value will be used as hand effector position weight. If you look at FBIKBoxing.cs, you'll see that:
    Code (CSharp):
    1. float hitWeight = animator.GetFloat("HitWeight"); // That's where the "HitWeight" curve is used
    and...
    Code (CSharp):
    1. ik.solver.GetEffector(effector).positionWeight = hitWeight * weight; // Setting hand effector position weight to that value.
    Hey,
    Are you using effector positionOffset anywhere in your code? If not, it might be that the animation is culled on the character if its out of view, so all changes made by the IK and Grounder become additive and it flies off to infinity, eventually causing NaN values. Is "Fix Transforms" enabled in FBBIK?

    Hey,
    I don't think InteractionSystem is doing that. I'm saying that because I searched for "position =" and "localPosition =" in all IS scripts and nowhere did it set the position of the interaction object. Are you absolutely sure there is no code running on that object overwriting it's (local)position each frame? Since it happens each frame, try disabling/enabling scripts to see which one does it.

    Hey,
    It's just because camera and the character controller updates will be out of sync. One will update in fixed time step, the other in floating time step. Set Camera Controller's "Update Mode" to LateUpdate.

    Cheers,
    Pärtel
     
  24. 00christian00

    00christian00

    Joined:
    Jul 22, 2012
    Posts:
    1,035
    Hi,
    It's definitively initialization because if I don't disable it on start but later I get no spikes, but using OnPostInitiate doesn't solve it.
    The solver is already initialized when I zero the weight. The only way to stop the spike is to set the weight to zero inside the update loop, so I think there is some late initialization you are doing there.
     
  25. Fairennuff

    Fairennuff

    Joined:
    Aug 19, 2016
    Posts:
    88
    [QUOTE="Partel-Lang, post: 2940303, member: 173554"\]
    Hey,
    I don't think InteractionSystem is doing that. I'm saying that because I searched for "position =" and "localPosition =" in all IS scripts and nowhere did it set the position of the interaction object. Are you absolutely sure there is no code running on that object overwriting it's (local)position each frame? Since it happens each frame, try disabling/enabling scripts to see which one does it.

    Pärtel[/QUOTE]

    Hey Partel,

    I've tried disabling everything I could possibly think of. Is it possible that an interaction could be causing it? I am using a position weight and reach interaction to pickup the item with the event set for Parent set to true. It's just a sneaking guess but I feel like its part of the interaction system or interaction object (or interaction target maybe?) that is causing this.

    When you parent something with the interactionObject "Parent" option is there a proper way to unparent it later aside from the standard unity SetParent or .Parent=null options?

    Thanks
     
  26. Fairennuff

    Fairennuff

    Joined:
    Aug 19, 2016
    Posts:
    88
    I actually got this working. For some reason if the object starts on the enemy NPC parented to the hand ,nothing I can do will properly unparent it. Instead I am instantiating the chosen weapon at start and Invoking the grab method after 1 second. Works like a charm and everything is working properly.

    Can't say it enough, this asset is the #1 asset for Unity. Thank you for great support and an incredible resource!

    Thanks
     
    Partel-Lang likes this.
  27. jasonoda

    jasonoda

    Joined:
    Sep 7, 2012
    Posts:
    67
    Hey,
    Are you using effector positionOffset anywhere in your code? If not, it might be that the animation is culled on the character if its out of view, so all changes made by the IK and Grounder become additive and it flies off to infinity, eventually causing NaN values. Is "Fix Transforms" enabled in FBBIK?​

    Thanks Partel,

    I think Fix Transforms might be it, but now I'm having a problem reproducing the issue. To clarify, you are saying "Fix Transforms" should be turned off?

    Jason
     
  28. JaceTwice

    JaceTwice

    Joined:
    Jun 29, 2015
    Posts:
    6
    Hello,

    I've got two questions. First, when using CCDIK I've been having trouble getting it to solve small changes to the target position. I use a 3 bone chain in a pretty standard hip>knee>ankle setup about 4 unity units away from each other. It mostly works alright but small movements (0-1 units) of the target transform do not seem to effect the IK chain much at all, resulting in a ankle bone that floats away from the target. When the target moves further away from the default position the IK produces a better result and matches the position of the target very accurately. This happens with iterations set anywhere from 4 to 20 and with or without rotation limits in place. I even tried making a separate setup emulating the video tutorial for custom rigs you made here:
    .
    My results were much less accurate as the IK moved closer to it's starting position, and again, with or without rotation limits. Is there something obvious I'm not doing right here or is CCDIK not the solver I want to use for this case?



    Second. I'd like to set up a standard Reverse Foot setup with Final IK to use with entirely procedural animation but my initial tests haven't worked very well and I was hoping you might have some idea on whether such a thing is possible at all. I tried to emulate the way I would make such in a thing in Maya:

    On a chain of bones going from Root> Hip>Knee>Ankle>Ball>Toe
    I have a 3-bone IK chain going from Hip to Knee to Ankle
    a second 2-bone chain goes from Ankle to Ball
    a final 2-bone chain goes from Ball to Toe

    There is a second hierarchy of game objects in the same positions as Ankle, Ball, and Toe. They are separate from the original and have the opposite parenting structure. Toe_Ctrl>Ball_Ctrl>Ankle_Ctrl
    The target of the 3 bone IK is set to Ankle_Ctrl
    The target of the first 2 bone chain is set to Ball_Ctrl
    The target of the last 2 bone chain is set to Toe_Ctrl

    I would expect that then translating Toe_Ctrl would move the leg and knee but keep the orientation of the foot flat with the help of the other two joint chains. But what happens instead is the foot IKs bend unexpectedly away from their targets. Changing the weights of the bones did nothing to remedy the problem, nor did changing from a CCDIK chain to a FABRIK chain. Any thoughts you might have on how to make something like that work properly would be very appreciated!

    Thanks.
     
    Last edited: Jan 31, 2017
  29. Fairennuff

    Fairennuff

    Joined:
    Aug 19, 2016
    Posts:
    88
    Hi Partel,

    Yet another question. I know there are demos, but are there any tutorials on the HitReaction scripts? I've looked through your youtube but don't see any related to HitReaction. I'm trying to wrap my head around how to do weapon blocking in my VR game. Since all my enemies have FBBIK on them I figured I could do some kind of On Collision event for a player weapon hitting an enemy weapon that cancels the current animation and does a hit reaction on that enemies arm to toss it back as though it hit something.

    Any thoughts or suggestions on this would be appreciated.

    Thanks!
     
  30. Partel-Lang

    Partel-Lang

    Joined:
    Jan 2, 2013
    Posts:
    2,548
    Hey, FixTransforms should be on. Actually you know, you could just disable IK when your SkinnedMeshRenderer.isVisible returns false.

    Hey,
    I'm not sure what's going on with that CCDIK component.. That algorithm has it's limitations, have you tried going for FABRIK instead? A video or something would help me give a better answer.

    About that reverse foot thing, if you are looking for a way to solve 4 joints and make use of the toes, please import this package. I made a quick LegIK component that uses VRIK's leg solver. I'll make it a proper Final IK component some day. :)

    Hey,
    You are looking at the wrong thing. HitReaction just pushes a body part back for a sec, it's only good for gunshot fx and stuff like that. You should take a look at the "Motion Absorb" demo instead, should be easier to set up too.

    Best,
    Pärtel
     
  31. TamTech

    TamTech

    Joined:
    Aug 31, 2015
    Posts:
    2
    Hi Patel,

    I send you my 'Final IK' package include my animation clips very similar to yours that I exported one from Blender and one from Cinema4D, because I have no way to set up for my animation work as you guide me on the forum. Please teach me
     

    Attached Files:

  32. JaceTwice

    JaceTwice

    Joined:
    Jun 29, 2015
    Posts:
    6
    Thanks for the quick reply! Apologies for the vague description, here's a gif of what's going wrong for me. As you can see, the arm is having trouble hitting the target accurately. The arm has rotation constraints here but it happens without them too. My iterations are set to 4 and setting them higher doesn't seem to fix it.
    IKarm.gif

    Thanks as well for the extra bit of code for the legs! I'll try this out as soon as I can.
     
  33. Partel-Lang

    Partel-Lang

    Joined:
    Jan 2, 2013
    Posts:
    2,548
    Hey, I'll take a look at the package ASAP.

    Hey,
    CCD is just generally crappy with just 2 joints to solve.
    But you can solve that arm with 100% accuracy and even faster if you just use Transform.LookAt for the forst joint. You can disable the rotation limit and call rotationLimit.Apply() after calling LookAt.
    Then solve the rest with the TrigonometricIK component.

    Best,
    Pärtel
     
  34. scary_code_monkey

    scary_code_monkey

    Joined:
    Jun 27, 2016
    Posts:
    10
    Even in its current state it is still a very usefull tool for augmenting and tweeking animations & to work in harmony with the interaction system (and all Final IK for that matter) : it has the advantage of removing a massive amount of manual animation work and can be used to seriously increase the adaptability of bend goals - I can (easily) live with the present restrictions due to the versitility that this tool brings : IMHO it is a tool that should not be left at the back of the shelf to gather dust when the API's open up - A++ for usefullness
     
  35. ColtonKadlecik_VitruviusVR

    ColtonKadlecik_VitruviusVR

    Joined:
    Nov 27, 2015
    Posts:
    197
    Hey Partel,

    I was looking into your VRIK solution and it looks amazing! I just have one question before purchasing. I noticed that when people walk around their room with the Vive, the legs of the avatar move. Currently we have 2 different movement modes within our game, Blink (point and click to move the room to a new locomotion) and Locomotion (slowly move the room around) which allows the player to explore a world much bigger than their physical room. My question is, what will happen to the avatars legs when I slowly move the room via locomotion? Will his legs stand still making it look like he is gliding over the terrain or will he walk? I'm not concerned with blink because it is an instant movement.

    Cheers,
    Colton
     
  36. Fairennuff

    Fairennuff

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

    I recently added aimIK to my melee NPCs to get them to more accurately swing at the player. Works great! But I have notice since adding this that it disables LookAtIK on start. I followed the tutorial on combining aim+look+FBBIK but that is not really the effect I want. Is there a way to have both active? I only want Aim IK to effect spine and arm bones but leave the head free to be effected by look IK. This way I can have non aggressive npcs look at you when you're close to them or they notice you, but not fully turn toward you. But when in combat I need them to aim at the player.

    Thanks!

    ps. I haven't perfected the motion Absorb you mentioned but I think It's getting close!

    EDIT - nevermind. The interaction system was fading and then disabling LookAtIK for some reason. When I removed the LookAtIK value in the INteractionSystem it stopped happening.

    Now if I could just get collisions to happen 100% of the time the MotionAbsorb would be working great. But for some reason the melee attack animations don't all register collisions... But that doesn't have anything to do with FinalIK!

    Cheers!
     
    Last edited: Feb 2, 2017
  37. yezzer

    yezzer

    Joined:
    Oct 30, 2009
    Posts:
    143
    @Partel-Lang I'm having issues with teleporting and VRIK, and your links to the packages on Dropbox no longer work (404). Do you have another sample you could share?

    Thanks!
     
  38. emrys90

    emrys90

    Joined:
    Oct 14, 2013
    Posts:
    755
    I'm having a bit of an issue with the grounder IK. It's for flying, I rotate the model on the Z axis for banking left/right when flying. The grounder IK component causes the model to continuously rotate on the Y axis when that happens. Thoughts on how to resolve that? If I have to disable the component when flying I can, was just hoping for a better solution though.
     
  39. Deleted User

    Deleted User

    Guest

    Hi @Partel-Lang ,

    First, thanks for the Final IK package, it's an amazing job!
    I have been playing around recently and I have unfortunately encountered the following issue. I have 2 Dummies, one big and one small. The big one interacts with a target, a red sphere. It also has the idle animation controller. The small one has its hand effector targets assigned to the big dummy's hands. When the animator makes the big dummy moves, everything works smoothly.
    AnimationTrackingOk.png
    When the interaction system intervenes tho, the hands of the small dummy remains where the animation would put the big one's hands.
    InteractionTrackingProblem.png
    Moreover, they follow the animation and not the real hands.
    Any idea about what could cause that ?
    InteractionTrackingProblemAnimationTracked.png
    Thank you very much !
     
  40. Partel-Lang

    Partel-Lang

    Joined:
    Jan 2, 2013
    Posts:
    2,548
    Hey,
    Its still on my mind, haven't forgotten about it. It will probably be the next big thing to work on after VRIK has matured.

    Hi,
    If you slowly move around in the room, VRIK's procedural locomotion will take care of side-stepping and turning for you automatically. You can blend locomotion weight to 0 to switch over to animation based locomotion if you need to move from A to B.

    Hey,
    Try using Continuous Dynamic collision detection mode, the animation is probably just too fast and the colliders skip each other. Or decrease fixed time step.

    Hey, which package were you looking for?
    You can teleport, just call ik.solver.Reset() after moving.

    Hey,
    Do you have "Rotate Solver" enabled in the Grounder?

    Hey,
    It's just the update order of things. You'll have to make sure FBBIK on the small dummy updates after the big one.
    You can use the IKExecutionOrder component to take care of that.

    Cheers,
    Pärtel
     
  41. Ruchir

    Ruchir

    Joined:
    May 26, 2015
    Posts:
    934
    How can we use aim ik,or look at ik along with full body biped ik? Can you show a little tutorial for this,please.....?
     
  42. emrys90

    emrys90

    Joined:
    Oct 14, 2013
    Posts:
    755
    Yes, I do. It's a grounder quadruped and under each Solver the Rotate Solver is checked.
    upload_2017-2-3_11-13-45.png

    If it matters, the grounder object is a child of the model, and the model is a child of another object. The object that is getting rotated for flying is the model.

    If I turn off Rotate Solver, it fixes it for flying, but then the creature does not match the ground angle as well anymore when not flying.
     
    Last edited: Feb 3, 2017
  43. silentneedle

    silentneedle

    Joined:
    Mar 14, 2013
    Posts:
    280
    @Partel-Lang I'll try to setup a demo project, but this could take a while. Btw. could you please add a method or property in the recoil script which allows checking if a recoil is running? I'm currently checking endTime which I made public, but I prefer an official way so that I don't need to apply this change every time when FinalIK updates.

    I think this is quite useful if you don't want to allow the player to shoot inside the recoil.
     
  44. Deleted User

    Deleted User

    Guest

    Thank you for your answer, Partel!
    I tried using the IKExecutionOrder to solve my problem. It worked but as time passed, the small dummy leaves the ground and lays horizontally in the air... bandicam 2017-02-06 17-58-01-012.jpg

    I would also like to ask you the following. I am changing the weight of the effectors of my small dummy as well as their targets in another script. Should I put that script after FBBIK in Unity Script Execution Order or use OnPostUpdate on the small dummy's solver I am using with the function changing the effectors ? If I don't do one of these two, there seems to be an update order problem again.

    Thank you very much Partel.
     
  45. Partel-Lang

    Partel-Lang

    Joined:
    Jan 2, 2013
    Posts:
    2,548
    Hey,
    Check out that old tutorial video.

    Oh, sorry I forgot.. GrounderQuadruped has a "gravity" variable that defines the vertical axis if you need to use it on spherical planets, also applies to your flying. So if you need to rotate the character for banking, update grounder.gravity via script.

    Hey, why not, I added this to Recoil.cs:

    Code (CSharp):
    1. /// <summary>
    2.         /// Returns true if recoil has finished or has not been called at all.
    3.         /// </summary>
    4.         public bool isFinished {
    5.             get {
    6.                 return Time.time > endTime;
    7.             }
    8.         }
    Hey,
    Looks like the small dummy has no active Animator on it?
    If animation doesn't overwrite the IK, it will become additive, solving on top of its own solution each frame and that might cause unwanted results eventually.

    If this is the case, either enable the Animator or check "Fix Transforms" in FBBIK.

    Best,
    Pärtel
     
    silentneedle likes this.
  46. emrys90

    emrys90

    Joined:
    Oct 14, 2013
    Posts:
    755
    It does seem to have made it happen less drastically, but it is still rotating the model when it shouldn't. Perhaps there's something wrong with my math?

    Vector3 angle = Quaternion.AngleAxis(dragonMC.BankingAngle, Vector3.back) * Vector3.down;
    grounderQuadruped.gravity = entity.transform.TransformDirection(angle);

    Entity is the object that the model is a child of, which does not have grounder/banking applied to it. From what I could tell, the numbers looked correct in the local axis. When banking left it had a negative y and positive x, when banking right it had a negative x and negative y.

    I was supposed to leave Rotate Solver enabled with this change, right?
     
  47. x_team

    x_team

    Joined:
    Feb 6, 2017
    Posts:
    1
    Hi Partel,

    I have an issue with scaling a VRIK character. If I follow the VR setup tutorial with the pilot, then apply a scale of 20 to the Steam CameraRig and the Pilot, there is a weird twitching that happens in the character's chest. I've tried this with multiple characters rigged in different ways, and twitching keeps happening.

    Do you know any way to fix this? I need to be able to change between two different scales when a button is pressed.
     
  48. qkjosh

    qkjosh

    Joined:
    Nov 29, 2015
    Posts:
    33
    Oh, of course! Can't believe I missed that. Thanks!
     
  49. Ruchir

    Ruchir

    Joined:
    May 26, 2015
    Posts:
    934
    I wanted to say with fbbik and with fix transform disable and same with aim ik along with an animator ,I also want that using the hand or foot solver it doesn't pull rest of the chain at all when I want and I tried the pull float as well but it still has a bit of effect
     
  50. Ruchir

    Ruchir

    Joined:
    May 26, 2015
    Posts:
    934
    I want it just to move towards it like biped ik when I want . And I said to disable fix transform because when enabled and using one of the fbbik solvers the aim ik doesn't work properly!