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. Partel-Lang

    Partel-Lang

    Joined:
    Jan 2, 2013
    Posts:
    2,548
    Thats a tricky question, I've been thinking about this for a long time. I thought the same way at first that there is a logical order, but as I made more and more demos, it became clear that there really isn't. Sometimes you want IK even on top of Aim IK, when you need to place the other hand on the prop or stuff like that. Since the initial version, the IK components hardcode themselves to very high values in the Script Execution Order just to make sure they run after all your LateUpdate calls. That is not the most flexible solution I agree, but I can't think of anything better than just using that and always having the possibility to disable the components and update their solvers manually in whichever order you need.

    Do you have any other ideas about that?

    Cheers,
    Pärtel
     
  2. arcdragon1

    arcdragon1

    Joined:
    Oct 15, 2012
    Posts:
    116
    Thanks for reply!
    Oh, yes!...and retry now, neck and chest, aim direction not works yet...I'd like to send my project file to you.:smile:

    $3.png

    and too...

    I tried that Aim IK and FBBIK one by one disable is much the same.
    $1.png

    the following picture is Character Controller 3rd Person disable
    $2.png
     
    Last edited: Apr 8, 2014
  3. Partel-Lang

    Partel-Lang

    Joined:
    Jan 2, 2013
    Posts:
    2,548
    @arcmohudragon

    Yes please send the project to support@root-motion.com, its the fastest way to solve this. :)

    Pärtel
     
  4. SteveB

    SteveB

    Joined:
    Jan 17, 2009
    Posts:
    1,451
    Oh that's right, I recall you deactivating/reactivating solutions in code...

    ...is it possible to have an 'IK Execution Order' script that you can then drag and drop the IK scripts on a character in the order you wish them to execute?
     
  5. SteveB

    SteveB

    Joined:
    Jan 17, 2009
    Posts:
    1,451
    (Sorry for back to back posts but the forum wouldn't let me edit my last post properly)

    ...for example (from SecondHandOnGun):

    Code (csharp):
    1.  
    2. void Start()
    3. {
    4.          // Disabling (and initiating) the IK components
    5.      aim.Disable();
    6.      ik.Disable();
    7.      look.Disable();
    8.  
    9.      ik.solver.OnPostUpdate += OnPostFBBIK;
    10. }
    11.  
    ...and of course later in the body of the LateUpdate() you have:

    Code (csharp):
    1.     // Update Aim IK. This will change the position and the rotation of the right hand that holds the gun, so we will need pin the                left hand back to the gun handle
    2.         aim.solver.Update();
    3.  
    4.                       *snip misc code stuffs*
    5.  
    6.             // Update FBBIK
    7.         ik.solver.Update();
    8.  
    9.             // Rotate the head
    10.         look.solver.Update();
    11.  

    So couldn't this be ordered through a script that the use arranges?

    EDIT: Yea there's an asset I use (WYSIWYG) that uses List<Components> and allows me to order my Post-Effects (drag/drop) however I need them, so I'm assuming the same is possible with Final IK
     
    Last edited: Apr 8, 2014
  6. derkoi

    derkoi

    Joined:
    Jul 3, 2012
    Posts:
    2,255
    Thanks, that works.

    I have another silly question though, how do i set the layers to everything or set multiple layers?

    Here's the code i have:

    Code (csharp):
    1.       if (addGrounder)
    2.             {
    3.                 grounderScript = umaCharacter.AddComponent<GrounderFBBIK>();
    4.                 grounderScript.ik = ik;
    5.                 grounderScript.solver.layers = 1;
    6.             }
    7.  
    Thanks
     
  7. pneill

    pneill

    Joined:
    Jan 21, 2007
    Posts:
    207
    Is there anyway to get the interaction object script to work with the legacy animation system?

    Also, does the X axis in the weight curve correspond to the length of the animation or is it more a case of 0 = start animation and 1=animation complete?
     
  8. Partel-Lang

    Partel-Lang

    Joined:
    Jan 2, 2013
    Posts:
    2,548
    I once even made a script like that.. Because all IK components extend from the abstract IK.cs, it is very easy to write like this:
    Code (csharp):
    1.  
    2.  
    3. public IK[] IKComponents;
    4.  
    5. void Start() {
    6.    foreach (IK ik in IKComponents) ik.Disable();
    7. }
    8.  
    9. void LateUpdate() {
    10.    foreach(IK ik in IKComponents) ik.GetSolver().Update();
    11. }
    12.  
    13.  
    Then you can just assign the IK components in the editor in whichever order you please.

    I've never actually used that script though, because usually I am writing an IK controller script for every specific purpose anyway and also usually you need to calculate something in between updating different solvers.

    The easiest way to deal with the layer masks is to have

    Code (csharp):
    1.  
    2. public LayerMask layerMask;
    3.  
    4. grounderScript.solver.layers = layerMask;
    5.  
    Then you can set the mask up in the Editor.

    If you can't do that for some reason, there is a script in the wiki for managing the layer masks through code.

    Sure, please download the edited InteractionObject.cs.
    It will be also included in the next update.

    The X axis of the weight curve corresponds to the length of the interaction, meaning the interaction will be just as long as the last key's value in the longest curve.

    Cheers, :)
    Pärtel
     
  9. arcdragon1

    arcdragon1

    Joined:
    Oct 15, 2012
    Posts:
    116
    @Partel
    Thank you! send now.:D
     
  10. Partel-Lang

    Partel-Lang

    Joined:
    Jan 2, 2013
    Posts:
    2,548
    Can't see your mail, are you sure it was support@root-motion.com?
     
  11. SteveB

    SteveB

    Joined:
    Jan 17, 2009
    Posts:
    1,451
    Hmmm, hate to also be the "I'm not a C# coder" guy (I know Javascript fairly well), but I could use a bit more help/information here. :D

    I'm going to assume the code you wrote wasn't pseudo-code, and I constructed the script as such:

    Code (csharp):
    1. using UnityEngine;
    2. using System.Collections;
    3.  
    4.  
    5. namespace RootMotion.FinalIK
    6. {
    7.     [System.Serializable]
    8.  
    9.     public class FinalIK_ExecutionOrder : MonoBehaviour
    10.     {
    11.         public IK[] IKComponents;
    12.  
    13.         void Start()
    14.         {
    15.                foreach (IK ik in IKComponents) ik.Disable();
    16.         }
    17.  
    18.         void LateUpdate()
    19.         {
    20.                foreach(IK ik in IKComponents) ik.GetSolver().Update();
    21.         }
    22.     }
    23. }
    24.  
    ...and I'm receiving this error:

    So I'm almost certain I'm overlooking something either vital or very small, haha.

    Thanks Partel
     
  12. SteveB

    SteveB

    Joined:
    Jan 17, 2009
    Posts:
    1,451
    Okay I found the problem...

    ...the method is ik.GetIKSolver ( you forgot the "IK" in the middle there)

    Now, while I can drag and drop the Character into each slot, it only uses the first IK component listed in the Inspector. How do I drag the individual IK scripts into each slot to order them?


    EDIT: Hmmm as I play with this (and post perhaps prematurely as I learn new things) but now, I CAN in fact drag and drop IK components to the slots...just not 'Grounder' the very same component I need this to work for!? Haha...sigh :D
     
    Last edited: Apr 9, 2014
  13. Partel-Lang

    Partel-Lang

    Joined:
    Jan 2, 2013
    Posts:
    2,548
    pfff, change GetSolver to GetIKSolver, sorry :)
     
  14. Partel-Lang

    Partel-Lang

    Joined:
    Jan 2, 2013
    Posts:
    2,548
    You can drag them by the component headers.

    Grounder updates itself automatically before the IK component(s) that it uses (using their OnPreUpdate delegate) so if you are using GrounderFBBIK, and want to update AimIK after FBBIK, your component order should be { FBBIK, AimIK }
     
    Last edited: Apr 9, 2014
  15. SteveB

    SteveB

    Joined:
    Jan 17, 2009
    Posts:
    1,451
    Haha I think I'm editing it faster than you can respond, sorry!

    I can't drag Grounder? :(
     
  16. Partel-Lang

    Partel-Lang

    Joined:
    Jan 2, 2013
    Posts:
    2,548
    Read the edit :D

    So no need to add the grounder there at all, just think of it as connected to the IK component that it uses
     
    Last edited: Apr 9, 2014
  17. SteveB

    SteveB

    Joined:
    Jan 17, 2009
    Posts:
    1,451
    Yay!!!

    Let's see if this all works in execution now! :D

    Thanks Partel!!

    -Steven

    EDIT: Oh and IMHO this might not be a bad thing to place in the documentation, as unless I'm greatly mistaken, at the most base level having the option to simply and quickly order IK execution seems like a very useful tool.
     
    Last edited: Apr 9, 2014
  18. Partel-Lang

    Partel-Lang

    Joined:
    Jan 2, 2013
    Posts:
    2,548
    I didn't even remember myself, but as I looked, its actually already there :D
    Perhaps I'll just add the script to the package somewhere...
     
  19. SteveB

    SteveB

    Joined:
    Jan 17, 2009
    Posts:
    1,451
    Haha how silly are we!?! :D
     
  20. popawheelie

    popawheelie

    Joined:
    May 27, 2013
    Posts:
    23
    Is anyone else getting a jarring motion to the character in the Grounder Demo Scene? Rotating the camera sideways to look at the Ethan character you can really notice it....Or that may just lucky me.
     
  21. Partel-Lang

    Partel-Lang

    Joined:
    Jan 2, 2013
    Posts:
    2,548
    Does that go away when you set fixed timestep to 0.01?
    If it does, its just because the character rigidbody moves in FixedUpdate with physics and the animated character is just following it with Lerp. I did it so only to smooth out the physics of the character controller, has nothing to do with the Grounder actually.
     
  22. arcdragon1

    arcdragon1

    Joined:
    Oct 15, 2012
    Posts:
    116
    Oops a daisy. I send using gmail. and sorry to bother you, but could you check about your unity community private message box?
     
  23. popawheelie

    popawheelie

    Joined:
    May 27, 2013
    Posts:
    23
    Yeah, its nothing to do with Grounder.
    Turning off the camera smoothing and having the camera in LateUpdate fixed it.
     
  24. Danirey

    Danirey

    Joined:
    Apr 3, 2013
    Posts:
    548
    Hi guys!


    Here we go with another question. I've already used the script execution order to make the bullet instantiation works properly with AimIK. Everything works fine with a single shot, but, now i have a burst option, and the problem is here again. The first bullet goes right, but all the other in the burst are spawning in the wrong position. I think that the problem is that i have a Shoot coroutine. And i use yield waitforseconds to set the rate of fire inside a for loop. When i click the left mouse button, i call the function and it instantiate a bullet. If burst is on, it will do the same thing but in a for loop with a Wait for seconds in each loop. Do you thing i need to move this to the Late Update, and instantiate each bullet inside it?

    Cheers!
     
  25. Partel-Lang

    Partel-Lang

    Joined:
    Jan 2, 2013
    Posts:
    2,548
    I've never understood why there is no such thing as yield return new WaitForLateUpdate as there is WaitForFixedUpdate. Time to make another feature request perhaps... ;)

    In the meanwhile, if you don't want to give up your coroutines, you can just use them to register a shooting frame, something like that:

    Code (csharp):
    1.  
    2.     public AimIK aim;
    3.  
    4.     private bool shootFrame;
    5.  
    6.     void Start () {
    7.         aim.Disable();
    8.  
    9.         StartCoroutine(Shooting());
    10.     }
    11.    
    12.     private IEnumerator Shooting() {
    13.         while (true) {
    14.             yield return new WaitForSeconds(1f);
    15.             shootFrame = true;
    16.         }
    17.     }
    18.  
    19.     void LateUpdate() {
    20.         aim.solver.Update();
    21.  
    22.         if (shootFrame) EmitBullet();
    23.  
    24.         shootFrame = false;
    25.     }
    26.  
    27.     void EmitBullet() {
    28.         // Do your shooting here
    29.     }
    30.  

    Regards,
    Pärtel
     
  26. Danirey

    Danirey

    Joined:
    Apr 3, 2013
    Posts:
    548
    Thanks Partel,

    So we always have to perform the shooting after the ik have done his stuff, right?
     
  27. Partel-Lang

    Partel-Lang

    Joined:
    Jan 2, 2013
    Posts:
    2,548
    Yes, if you need the bullet to start from the exact solved position, it needs to be emitted after solving and before the character is animated again in the next frame.
     
  28. Danirey

    Danirey

    Joined:
    Apr 3, 2013
    Posts:
    548
    Thanks Pärtel!

    Now that i know how it works, it will be easier to fix the problems!

    Cheers!
     
  29. mojao

    mojao

    Joined:
    Sep 2, 2013
    Posts:
    47
    Hello Mr.Partel Lang. nice to meet you.
    I work on 2D skeletal animation, Final Ik can use on 2d?
    And my character need to moves joint sometimes, this asset can move joint with IK ?
    (in example, my sprite twist body, then shoulder point is move.
    then move shoulder bone, IK moves correctly?)
     
  30. Partel-Lang

    Partel-Lang

    Joined:
    Jan 2, 2013
    Posts:
    2,548
    Hi, Mojao, nice to meet you too :)

    There are no dedicated 2D solvers in Final IK yet, although they are on the roadmap (somewhere) :)
    You can constrain CCD and FABRIK with Rotation Limits to work in 2D and you can fix the bend normal of Limb IK so it works in 2D, but you can't do it with Full Body IK at this time.

    Cheers,
    Pärtel
     
  31. popawheelie

    popawheelie

    Joined:
    May 27, 2013
    Posts:
    23
    Is it possible to change InteractionObjects at runtime? I have a working interaction system, on my AI. I'm trying to extend it so it can interact with different interaction object scripts while moving around. Possibly triggered from a collision, or a tag. I thought the touch walls demo would provide an answer but that interaction is limited, as it should be. Any suggestions how to do this?

    Cheers
     
    Last edited: Apr 19, 2014
  32. Partel-Lang

    Partel-Lang

    Joined:
    Jan 2, 2013
    Posts:
    2,548
    Hi!

    Yes, you could for instance create a sphere with a isTrigger collider and an isKinematic rigid body. That will become the trigger for all interaction objects that enter it's sphere. Parent it to the character. Now you need to add a little script like that:

    Code (csharp):
    1.  
    2. public InteractionSystem interactionSystem;
    3. public FullBodyBipedEffector effectorType;
    4.  
    5. private InteractionObject interactionObject;
    6.  
    7. void OnTriggerEnter(Collider c) {
    8.     if (interactionSystem.IsInInteraction(effectorType)) return;
    9.  
    10.     interactionObject = c.GetComponent<InteractionObject>();
    11.     if (interactionObject == null) return;
    12.  
    13.     interactionSystem.StartInteraction(effectorType, interactionObject, false);
    14. }
    15.  
    So basically whenever an interaction object (with a collider) enters the trigger of the sphere, it calls an interaction with that object.
    You can have multiple trigger spheres like that for each effector and position them relative to the character so that they represent the area that is comfortably reachable by those effectors.

    Hope it helps, :)

    Hi, Chariots, yes it works with Generic, Humanoid and Legacy, doesn't matter to Final IK really.
    The only reference to the Animator/Animation component that Final IK has, is just to find out if animatePhysics is on or off for the character.
    Half of my demo scenes are made with the Generic rig so no limitations that I can think of :)

    Cheers,
    Pärtel
     
  33. popawheelie

    popawheelie

    Joined:
    May 27, 2013
    Posts:
    23
    Pärtel, my game and I thank you. Keep doing the good work.
     
  34. LeftyTwoGuns

    LeftyTwoGuns

    Joined:
    Jan 3, 2013
    Posts:
    260
    If you don't mind explaining it a bit, I was wondering how the hit reaction of the FullBodyBipedIK component worked in the example video on YouTube.

    Does it detect collisions with the mesh and locates the nearest bone to apply appropriate force or something like that?
     
  35. Partel-Lang

    Partel-Lang

    Joined:
    Jan 2, 2013
    Posts:
    2,548
    Hi,

    No I didn't go into that much depth with that. I just defined hit points like head, chest, hips and so on and specified the effectors that they use. Then I wrote a script that lets you add force to those effectors similar to rigidbody.AddForce, so you could call headHitPoint.AddForce(Vector3 v); So the actual hit detection should be done by another script.

    But thats just one way you could implement that...

    Cheers,
    Pärtel
     
  36. SimStm

    SimStm

    Joined:
    May 24, 2013
    Posts:
    44
    EDIT: Nevermind. I fixed it. He get this awkward position because of the "T-Pose" before the game starts.
    I just opened the Animation tab (normal animation, not the Animator), selected the Idle animation, played the animation and set the anim to Frame 1 (to change the start position of the character).

    After that when you start the game, the character (model) is in the right start position and will not bug anymore. :)

    [HR]_______________________________________________[/HR]

    Hi. I'm having some issues with the FBBIK component.

    For example, I'm using a biped-rigged model from Autodesk Character Creator, configured to work with Mecanim. Everything in the animation part is working.

    But I have tried to use the "Body Tilt" Scripts from the Demos (I copied the original Legacy Animation plugin from Character Controller to work with Mecanim) with the FBBIK component and setup into my character.

    The script is working, but I'm getting some issues with the Model Knees, they are both crooked and the effect looks horrible :p
    I tried to rotate the bones manually like the video (https://www.youtube.com/watch?v=EJig15GxaBA) but remains the same effect.

    Here is some screens showing the effects with/without the FBBIK component activated.

    Scripts config:
    $biped_config.jpg

    With FBBIK activated:
    $withfbbik.jpg

    With FBBIK deactivated:
    $withoutfbbik.jpg

    There is some way to fix this thing? I tried everything :/
     
    Last edited: May 1, 2014
  37. LudiKha

    LudiKha

    Joined:
    Feb 15, 2014
    Posts:
    140
    Hi Partel,

    Congratulations on the latest release of your excellent package. I've been struggling with a number of issues, which I had not been able to solve before. However, with your latest release, I think these issues are a lot more efficient to solve. Seeing how you are the expert on your system, I think you can advise me best how to overcome them. I would greatly appreciate if you could point me in the general direction of how to fix these. Please find them below:

    Upper body rotation
    Using aimIK, I've configured the upper body to rotate independently from the lower body. Now this works fine until you start looking behind the character (see image). It uses roughly the same setup as your aim swing example scene. I'd like to add in a few constraints, so it will use more horizontal rotation to achieve the goal. I've tried adding in rotation constraints, but to no avail. Maybe I'm using them wrongly?

    $rootmotion upper body.png

    Upper body Rotation Offset
    The second issue I'm experiencing, which Unity's animation cannot cope with (believe me, I've tried all possible options), is to keep original animation orientations relative to the original root facing when blending animation layers. I've separated the upper and lower body layers, and the upper body will always inherit the lower body's root rotation. Layer 0 is the root, first spine bone and everything down. Layer 1 is the second spine bone and everything up.

    Since the lower body will be playing different animations depending on the movement state, which come with different rotations, the upper body rotation will always be offset by the rotation of the first spine bone in the first animation layer. I've tried all possible combinations regarding baking rotation into poses and basing them on the original or not. I've also tried layer masking the lower body animations' upper body bones, but to no avail. Unless I'm something wrong, the only option I see would be to override that rotation offset using IK.

    Now, it would be perfectly fine to rotate the upper body based on the camera facing, and with the latest effector offsets I'm thinking there are more options now. Ideally it would be integrated with the Aim IK component, but if there are better ways to go about it I'd love to hear them.

    Many thanks,

    Khaya
     
    Last edited: May 4, 2014
  38. arcdragon1

    arcdragon1

    Joined:
    Oct 15, 2012
    Posts:
    116
    Hello, Pertal.
    Thanks for your help the other day.
    Excuse me, I have only a minimum question.
    I'm trying now, change AimIK Component's bones setting (under Use Rotation Limits) on script.
    There are change bones function for AimIK?

    Code (csharp):
    1.  
    2. public AimIK aim;
    3. ...
    4. void LateUpdate(){
    5.     aim.solver.bones[2] = ???
    6.     aim.solver.Update();
    7. }
    8.  
     
  39. Partel-Lang

    Partel-Lang

    Joined:
    Jan 2, 2013
    Posts:
    2,548
    Hi, Ragoo, and thanks a lot! :)

    About the upper body rotation.. The reason why the spine bends back like this when looking behind, is that at exactly 180 degrees from the animated direction there is a singularity point at which there is no way for AimIK to tell which way to twist the spine to reach to the target. Thats why it has the Clamp Weight property (just like Unity's own SetLookPosition has for the same reason). It is a logical inevitability, behind the character is a flipping point where there are infinite amount of solutions (if you stand on the North Pole, which way is closest to the South Pole? ;)).

    If you just want to avoid bending back the spine, you could use the Rotation Limits with AimIK. The best way would be to have Hinge limits on the spine (without "Use Limits" checked) that would limit the rotation of the spine bones used by AimIK to twist only. Now just doing that would keep the spine stiff and interfere with the animation so to avoid that you should default the rotation limit at each LateUpdate to it's current rotation. You can do it like this:

    Code (csharp):
    1.  
    2. public AimIK aim;
    3.  
    4. void LateUpdate() {
    5. // Set current animated localRotation as default local rotation for the rotation limits so they wouldn't interfere with the animation
    6.         for (int i = 0; i < aim.solver.bones.Length; i++) {
    7.             if (aim.solver.bones[i].rotationLimit != null) {
    8.                 aim.solver.bones[i].rotationLimit.SetDefaultLocalRotation();
    9.             }
    10.         }
    11. }
    12.  
    That way the rotation limits only have an effect on the Aim IK and not the animation. ;)

    The spine will still flip at 180 degrees, if you want to avoid that, you would need a look left/right additive animation before AimIK to help it "know" which way to twist the spine.

    Now to your second question about the upper body rotation offset, that is a classic masking problem. It is especially difficult when using the Humanoid rig, because the humanoid mask is so restricted. Unfortunately Unity's animating systems not Legacy nor Mecanim can be accessed in between layers. If we could read the bone rotations between layer 0 and before layer 1 then it would be quite easy to use IK to manipulate with the result, but without that I can't think of an elegant solution.

    If the case is just that you need the pelvis to move with the legs and the spine be independent from that motion, you could just keep the first spine bone fixed in LateUpdate like this:

    Code (csharp):
    1.  
    2. public Transform root, spine;
    3. public float fixSpineWeight = 1f;
    4.  
    5. private Quaternion spineRotRelativeToRoot;
    6.  
    7. void Start() {
    8.    spineRotRelativeToRoot = Quaternion.Inverse(root.rotation) * spine.rotation;
    9. }
    10.  
    11. void LateUpdate() {
    12.    spine.rotation = Quaternion.Slerp(spine.rotation, root.rotation * spineRotRelativeToRoot, fixSpineWeight);
    13. }
    14.  
    15.  
    That would keep the spine bone's rotation fixed at it's initial rotation relative to the character root.
    But it would be just an ugly hack you know. :)

    Hope it helps,
    Pärtel
     
  40. Partel-Lang

    Partel-Lang

    Joined:
    Jan 2, 2013
    Posts:
    2,548
    Hi!

    Yes, there is the SetChain function for that:

    Code (csharp):
    1.  
    2. public AimIK aim;
    3. public Transform[] newBones;
    4.  
    5. [ContextMenu("Change")]
    6. public void Change() {
    7.     aim.solver.SetChain(newBones, aim.transform);
    8. }
    9.  
    Cheers,
    Pärtel
     
  41. OnePxl

    OnePxl

    Joined:
    Aug 6, 2012
    Posts:
    307
    Hello Partel,

    Love FINAL IK, one of the best assets on the store. I'm not sure if this is applicable to FINAL IK, but I saw this talk today, and it blew me away: http://www.gdcvault.com/play/1020583/Animation-Bootcamp-An-Indie-Approach

    Using tweening curves with dampening and spring, he shows you can make some very convincing animation with a very limited amount of keyframes. The walk cycle is 2 keyframes, crouching as well, jumping too. It's all very impressive. My question is not directly whether or not this is possible with FINAL IK, but maybe it can inspire you with some new ideas for the future of FINAL IK?

    Anyway, keep up the great work, and thanks!
     
  42. arcdragon1

    arcdragon1

    Joined:
    Oct 15, 2012
    Posts:
    116
    @Partel
    Thank you for quick reply! Great function!
     
  43. Partel-Lang

    Partel-Lang

    Joined:
    Jan 2, 2013
    Posts:
    2,548
    Hey, thanks a lot OnePxl,
    I already noticed that video yesterday on Twitter. Actually I've been following the development of Overgrowth for years now and it has been a true inspiration all along. Not much there in terms of IK, I mean he uses very simple IK like the one that Unity has built in, but what he does procedurally is amazing. I also like the active ragdoll stuff that goes on in there and I have a very similar solution in development in that matter. :)

    Cheers,
    Pärtel
     
  44. djary

    djary

    Joined:
    Oct 17, 2012
    Posts:
    85
    how to create fps ik hands with mecanim ?(with this plugin) pls help me

    only hands
     
    Last edited: May 6, 2014
  45. Licarell

    Licarell

    Joined:
    Sep 5, 2012
    Posts:
    434
    Whow whow whow... hold the phone... are you telling us that active ragdoll is in the future of FINALIK... or is that another project...
     
  46. ACarrozzini

    ACarrozzini

    Joined:
    Mar 24, 2013
    Posts:
    16
    Hi Partel !

    Just bought FINAL IK and for what I've seen so far I must say that I love it ;-)

    Keep improving this product and make us feel happy !

    Cheers.
     
  47. OnePxl

    OnePxl

    Joined:
    Aug 6, 2012
    Posts:
    307
    Hello Pärtel, I'm curious to see what you come up with!

    In your opinion, is it possible to mimic the procedural animation system of Overgrowth in Unity? (I sense from your answer that FINAL IK would not be the way to replicate the effects, am I right?)
     
  48. Partel-Lang

    Partel-Lang

    Joined:
    Jan 2, 2013
    Posts:
    2,548
    Hi, could you be a bit more specific please? do you mean like doing some interactions with the hands or what? Because normally all weapon animations and such are just animations, no IK.

    No, not in Final IK, because it's not really IK, but another package that would work nicely together with Final IK. Something looking a bit like this ;)


    Hey, thanks for the purchase and the kind words, much appreciated! :)

    Yes I think its possible, I mean if you just want to blend between 2 or more keyframes, you have the Mecanim blend trees for that, that can be very powerful. The difficult part is the physics and especially blending between animation and physics, because in Unity we have very little control over the execution of animation and physics.

    Cheers,
    Pärtel
     
  49. Licarell

    Licarell

    Joined:
    Sep 5, 2012
    Posts:
    434
    WOW, that's just crazy LOL... that's just the coolest thing I've seen all day!!!
     
  50. Partel-Lang

    Partel-Lang

    Joined:
    Jan 2, 2013
    Posts:
    2,548
    Hi all, in-depth user manual page for the Interaction System is finally available.
    I also added a lot of detail to the AimIK page.

    On a related note, 0.4 is in the works, this one will not be about new features, but consolidating old ones, fixing bugs and improving the performance.
    (FBBIK will have about 20% performance boost :)). No ETA yet though, will take some time and I got Nordic Game to attend soon ;)

    Cheers,
    Pärtel