Search Unity

  1. Good news ✨ We have more Unite Now videos available for you to watch on-demand! Come check them out and ask our experts any questions!
    Dismiss Notice
  2. Ever participated in one our Game Jams? Want pointers on your project? Our Evangelists will be available on Friday to give feedback. Come share your games with us!
    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. rob_vld

    rob_vld

    Joined:
    Jul 9, 2013
    Posts:
    158
    @Partel Lang

    Hi there :)

    Any chance on updating/upgrading your Virtual Reality video into a tutorial with use of the Vive and the hand controllers ?

    Thanks.
     
    LostPanda likes this.
  2. andrewpstern

    andrewpstern

    Joined:
    Jan 2, 2016
    Posts:
    3
    Hello Final IK-ers,

    I'm interested in using the LookAtIK.

    I've seen past examples that blend in/out the weight of LookAtIK over time, to smoothly transition in and out of LookAtIK.

    But if I want to keep LookAtIK on at all times (weight of 1), and smoothly interpolate between two targets -- any suggestions?

    I've looking into the InteractionObject feature, which seems to have interpolation/lerp parameters, but it seems like overkill for this.

    Would my own code manually need to move the target location / aiming vector?

    thanks
    Andrew

    p.s. If there is an existing demo of this in action, that'd be great, I couldn't find one.
     
  3. chaneya

    chaneya

    Joined:
    Jan 12, 2010
    Posts:
    410
    Hey Andrew,

    Thought I would comment on your question since Partel is out of the loop for a little bit. I have both humanoid(Player) and quadruped(Pet) characters rigged up with FinalIK. I use FBBIK, LookAtIK, EffectorOffset, Grounder, PuppetMaster and the Interaction System on my player. I use FBBIK, AimIK, EffectorOffset, GrouderQuarduped and Interaction Triggers on my pet.

    In every case where I want to adjust the characters pose etc. I smoothly transition the component's weight value from 0 to whatever value looks best. I use the Tweening engine DoTween (On the Asset store) for all of my value changes because it's fast, free and easy to implement once you get a few examples going. In most cases, you can instantly assign Offset values or Aim targets or LookAt ik positions instantly and then just smoothly adjust the weight so the character's head, arms etc. don't snap into position.

    It would be cool if all of the Final IK components had a built in lerping engine anywhere a Weight value is used. Some kind of automated system that detects when you change the value and automatically lerps to the new value.

    The biggest downside to my setup is whenever I need to make an adjustment to a character model which requires me to re-import my model, I have a long process of getting all of that crap hooked up to the character again. :)

    Allan
     
    Partel-Lang likes this.
  4. chaneya

    chaneya

    Joined:
    Jan 12, 2010
    Posts:
    410
    Andrew,

    I just reread your post again. I also do what you are talking about, keeping LookAt and AimIK weight at 1 over a period of time and switching targets. It's a little more complicated but you can still achieve that with a tweening engine like DoTween. I have my Pet using NavMeshAgent for movement but he constantly aims at a target that mirrors the position of the NavMeshAgent. So when he makes tight turns, his body twists towards the target. During regular movement, his Aim weight is almost always greater than 0 but the weight is adjusted based upon his angle of turn.

    Something else to keep in mind is that for both AimIK and LookAt IK, you can assign a Target transform and the character will stay locked onto that target. You can then smoothly move the aim or lookat target to new positions and the character will follow. But you can also set the IKPosition of aimIK or LookAtIK in LateUpdate instead and then smoothly transition to other vector3 positions. In this case you don't need to assign a target transform to AImIK or LookAtIK. You just need to make sure you keep updating aimIK.solver.IKPosition to be equal to your target's vector3 in LateUpdate.
    Then you can use DoTween to smoothly transition from one Vector3 target/location to another and your character will follow along.
    Code (CSharp):
    1. aimIK.solver.IKPosition = navTargetPos;
     
    Partel-Lang likes this.
  5. Griffo

    Griffo

    Joined:
    Jul 5, 2011
    Posts:
    664
    Partel-Lang likes this.
  6. Griffo

    Griffo

    Joined:
    Jul 5, 2011
    Posts:
    664
    Hi,

    Anyone know how I can grab a PM and swing him around, like by an arm or the head? Like in the Final IK video. Here

    Thanks.

    EDIT

    OK I found This at 3.11 it show you PM doing just what I want but I can't get mine to do that.

    In Behaviour Puppet I set Normal Mode to Kinematic, turn off Animator, turn off NavMesh Agent, and still can't get it to work ..
     
    Last edited: May 13, 2016
  7. immeasurability

    immeasurability

    Joined:
    Apr 22, 2014
    Posts:
    95
    Last edited: May 13, 2016
  8. Partel-Lang

    Partel-Lang

    Joined:
    Jan 2, 2013
    Posts:
    2,060
    Hi guys, I'm back and thank you for your patience!

    Hi,

    Please download this package, it's an upgrade to HeadEffector and contains a demo scene with hand controller setup. I'll make a tutorial, but I'm making a whole new VR IK solution so not before that's ready.

    Hi, what exactly seems to be the problem, what is not working?

    Hi!

    If the character has more than 2 legs, you could choose 2 of them to be the "main" legs and assign them as FBBIK legs. Then have simple FABRIK chains to solve the other legs on top of that.

    Cheers,
    Pärtel
     
  9. mdotstrange

    mdotstrange

    Joined:
    Sep 23, 2013
    Posts:
    227
    Hey there- thx for making the Final IK actions for Playmaker available-

    I'm in the process of modifying a version of the Limb IK action so I can use playmaker variables to set the bones, the avatar goal, and the solver component to use-


    I've got the bones and avatar goal working but I'm stumped as to how to set which Limb IK component the action affects-

    I have two Limb IK components on the same game object- how do I tell the action which Limb Ik component to affect? There is a place in the action to set the game object the solver is on- I want to be able to set the Limb Ik script to use as well-

    Is it in this part of the code?

    Code (CSharp):
    1.        public Solver solver = new Solver();
    2.  
    3.         protected override void ResetAction()
    4.         {
    5.             solver.Reset();
    6.         }
    7.  
    8.         protected override void UpdateAction()
    9.         {
    10.             solver.Update((component as RootMotion.FinalIK.LimbIK).solver);
    11.         }
    12.  
    13.         protected override System.Type GetComponentType()
    14.         {
    15.             return typeof(RootMotion.FinalIK.LimbIK);
    16.         }
    17.     }
    Any hints? (btw I'm a C# novice) thx!
     
  10. Griffo

    Griffo

    Joined:
    Jul 5, 2011
    Posts:
    664
    @mdotstrange If I have more than 1 IK on the same game object I use ..

    Code (JavaScript):
    1. var ikAimLeftCannon : RootMotion.FinalIK.AimIK;
    2. var ikAimRightCannon : RootMotion.FinalIK.AimIK;
    3.  
    4. function Start ()
    5. {
    6.     ikAimLeftCannon.enabled = false;
    7.     ikAimRightCannon.enabled = false;
    8. }
    9.  
    10. function LateUpdate ()
    11. {
    12.     ikAimLeftCannon.solver.IKPosition = lookAtPosition_0;
    13.     ikAimLeftCannon.solver.Update();
    14.     ikAimRightCannon.solver.IKPosition = lookAtPosition_1;
    15.     ikAimRightCannon.solver.Update();
    16. }
    Then drag and drop them into the inspector .. Sorry it's in .js
     
    mdotstrange and Partel-Lang like this.
  11. Partel-Lang

    Partel-Lang

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

    The code you are probably looking for is in IKAction.cs that the LimbIK action extends.

    Code (CSharp):
    1. protected Component component {
    2.             get {
    3.                 if (gameObject == null) return null;
    4.                 go = Fsm.GetOwnerDefaultTarget(gameObject);
    5.                 if (go == null) return null; // This should not happen, but just in case
    6.  
    7.                 // If gameobject has been switched out, need to find new component
    8.                 if (go != lastGo) _component = null;
    9.                 lastGo = go;
    10.  
    11.                 if (_component == null) _component = go.GetComponent(GetComponentType());
    12.                 if (_component == null) {
    13.                     var componentType = GetComponentType().ToString();
    14.                     Debug.LogWarning("Component of type " + componentType + " was not found on " + go.name + ". Can't apply PlayMaker action.");
    15.                     return null;
    16.                 }
    17.                 return _component;
    18.             }
    19.         }
    I'm not sure though, how to make Playmaker actions use multiple components on a gameobject. It would be much easier to just have your IK components on separate gameobjects, especially if they are of the same type.
     
    mdotstrange likes this.
  12. Griffo

    Griffo

    Joined:
    Jul 5, 2011
    Posts:
    664
    @Partel Lang
    Hi,

    I'm trying to access the PM ragdol.

    But I'm not sure of the best way, RootMotion.BipedReferences or RootMotion.Dynamics.BipedRagdollReferences either way how do I get a reference to the PuppetMaster gameObject to access the rag doll?

    I've tried ..

    Code (JavaScript):
    1. private var _puppetMasterSkeleton : RootMotion.BipedReferences;
    2. private var _puppetMasterRagdoll : RootMotion.Dynamics.BipedRagdollReferences;
    3.  
    4. function Update()
    5. {
    6.     _puppetMasterSkeleton = globalVarsScript.rayCastTransform.root.GetChild(1).GetComponent.<RootMotion.BipedReferences>();
    7.     _puppetMasterRagdoll = globalVarsScript.rayCastTransform.root.GetChild(1).GetComponent.<RootMotion.Dynamics.BipedRagdollReferences>();
    8. }
    Thats where the PuppetMaster gameObject is, and I get an error ..

    GetComponent requires that the requested component 'BipedRagdollReferences' derives from MonoBehaviour or Component or is an interface.

    Like mdotstrange I'm a C# novice too :(
     
  13. Partel-Lang

    Partel-Lang

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

    You can use the following methods:

    Code (CSharp):
    1. /// Returns the muscle that has the specified target.
    2. public Muscle GetMuscle(Transform target);
    Code (CSharp):
    1. /// Returns the muscle with the specified Rigidbody.
    2. public Muscle GetMuscle(Rigidbody rigidbody);
    Code (CSharp):
    1. /// Returns the muscle with the specified Joint.
    2. public Muscle GetMuscle(ConfigurableJoint joint);
    Code (CSharp):
    1. /// Returns the index of the muscle that has the humanBodyBone target (works only with a Humanoid avatar).
    2. public int GetMuscleIndex(HumanBodyBones humanBodyBone);
    Then once you have the muscle, you can use muscle.rigidbody or muscle.joint or muscle.target....
     
    Griffo likes this.
  14. mdotstrange

    mdotstrange

    Joined:
    Sep 23, 2013
    Posts:
    227
    Thanks for the replies- To solve my issue I ended making a Playmaker action that adds a Limb Ik Component and saves it as a variable so then you are then able to isolate a Limb Ik script-


    If any Playmaker users need it- its on Ecosystem and here https://snipt.net/mdotstrange/addlimbikcomponent/

    Thx again for the help-
     
    Partel-Lang likes this.
  15. khos85

    khos85

    Joined:
    Jul 21, 2013
    Posts:
    541
    Hi Pärtel, I would like to ask for some advice. I have your asset and using niely in some games but now I would like to use it for a arm animations , eg 1) to throw object, 2) running/walking 3) planting things, idle, do I understand correctly that I should use limb IK for this if I have arm models? How would I switch between the different states?
    Any advice would be much appreciated!
     
  16. Schnitty

    Schnitty

    Joined:
    Jun 28, 2013
    Posts:
    1
    Hi, I am looking to use this plug in for a game that we are going to release in the coming months, Is this able to do partial body rigging, ie shoulder through to the hand without the rest of the body?
     
  17. Partel-Lang

    Partel-Lang

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

    If you have only the arms then yes, LimbIK is probably your best option. You might want to add a Target transform to LimbIK and a Bend Goal. Then use Unity's Animation Window to create animations moving the Target and the Bend Goal around.

    Hi,
    This question is very similar to the last one above. Just that LimbIK does not use the shoulder, it can only take 3 joints. But the shoulder joint could be rotated to look towards the target before LimbIK solves.

    Cheers,
    Pärtel
     
  18. SSSekhon

    SSSekhon

    Joined:
    Jun 3, 2016
    Posts:
    6
    Hi Partel, this product looks incredible as does PuppetMaster.

    I'm working on a fighting system and currently use some Mecanim IK to align animated attacks to target areas ie a punch to the opponents head. Is it possible to mix animation and blending through Final IK eg fighter throws a generic hook animation and the punch procedurally blends through to a target position and smoothly back? Is this what the Interaction System does?
     
  19. silentneedle

    silentneedle

    Joined:
    Mar 14, 2013
    Posts:
    280
    Hey Partel,

    what do you suggest as usual approach to let a character hold a weapon (e.g. a rifle). I'm not talking about the aim position, just holding the weapon.

    My first thought was to add effectors, but I'm not sure about it. Or would it be better to add rifle idle, walk and run animations and the effectors only for positioning e.g. the hand at the weapon?
     
  20. Partel-Lang

    Partel-Lang

    Joined:
    Jan 2, 2013
    Posts:
    2,060
    Hi and thanks!

    Yes, there are multiple ways of doing that. I wouldn't use the InteractionSystem in this case. There are 3 demos about it in the package. There is "Boxing", the other is "Aim Boxing" that does a similar thing using AimIK and then there is "Soccer Kick" using FBBIK effector position offsets. That is for the feet, but could be used for the hands just the same.

    Hi!
    The best way would be to use a weapon holding animation. You can then use IK to tweak if for each individual weapon. You could use AimIK to aim it, LimbIK to put the left hand where you need it and so forth. There are a bunch of demos in the package ("First Person Shooter", "Third Person Shooter", "Aim Weapon"...).

    Cheers,
    Pärtel
     
  21. silentneedle

    silentneedle

    Joined:
    Mar 14, 2013
    Posts:
    280
    Thanks, that will work. I really love that easy setup. Another question. In the driving demo I'm able to change the rotation of the fingers, but where are they referenced? I see a reference to the Hand in the FBBIK component, but nothing for the fingers.
     
  22. SSSekhon

    SSSekhon

    Joined:
    Jun 3, 2016
    Posts:
    6
    Thanks Partel that is pretty much exactly what I need. I have a feeling these 2 products are the must have assets for Unity. Amazing!
     
    Partel-Lang likes this.
  23. Partel-Lang

    Partel-Lang

    Joined:
    Jan 2, 2013
    Posts:
    2,060
    The hand targets have finger hierarchies, there is a HandPoser.cs on the hand bones of the character that rotates it's fingers to match the target fingers.
     
    silentneedle likes this.
  24. Silly_Rollo

    Silly_Rollo

    Joined:
    Dec 21, 2012
    Posts:
    490
    Have you thought of adding a hand poser than instead of relying on matching transform positions used something similar to the mecanim muscle controls where you can 'flex' in and out, open/close hands, etc? If you don't need super accurate finger controls that would seem sufficient for a lot of cases and Unity has some capacity to do that in a generic way it seems.
     
  25. Partel-Lang

    Partel-Lang

    Joined:
    Jan 2, 2013
    Posts:
    2,060
    I have actually, its on the roadmap somewhere. I don't like solutions with "sufficient accuracy" though.. at some point, people will need full accuracy and then the whole system and work invested in implementing it goes to waste.

    Cheers,
    Pärtel
     
    Griffo likes this.
  26. seansteezy

    seansteezy

    Joined:
    Nov 28, 2013
    Posts:
    115
    Hey Partel! Hopefully you can help me in any capacity, as I would love to implement your solution without using another asset.

    So I am trying to hook up the latest leap motion Orion controller (Orion 4.1.1) to a rigged character so that the forearm, hand and fingers will match the users movements from the leap motion device. I saw you wrote this script a while back, https://www.dropbox.com/s/4k0o6c29gzyr1vj/LeapMotion.unitypackage?dl=0 and it looks to be just what I need, but it's made for an older version of Leap Motion. The latest version has no method for GetAllGraphicsHands(). I have tried so many things, but nothing is working. It seems they separated their scripts quite a bit and I just can't figure it out. I hope you may be able to open it up with the latest leap motion version and take a look in hopes that this script can be salvaged.

    Thanks for your time!

    -ss
     
  27. Partel-Lang

    Partel-Lang

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

    Looks like I have forgotten to update a link somewhere. The package has already been updated to Orion, please get it from here.

    Cheers,
    Pärtel
     
    acolgan likes this.
  28. seansteezy

    seansteezy

    Joined:
    Nov 28, 2013
    Posts:
    115
    Thanks again Partel!
     
  29. seansteezy

    seansteezy

    Joined:
    Nov 28, 2013
    Posts:
    115
    Hey Partel, it seems leap motion is changing their code faster than I can keep up with. The wonderful script you provided is coming up with an error in line 98 with hand.Basis.Rotation() but I believe they updated the method to CalculateRotation(). However, when I test there is a lot of 'flashing' going on, where the hands kinda blink... I believe that is an artifact of bad rotation offsets (I haven't messed with those yet but I am aware I need to). Otherwise, this is exactly what I needed and I can't wait to dive in. Thanks again!
     
  30. LostPanda

    LostPanda

    Joined:
    Apr 5, 2013
    Posts:
    129
    @Partel Lang Any news for new VR IK solution?eg htc vive . thanks very much.
     
    ZenUnity and dff180 like this.
  31. Partel-Lang

    Partel-Lang

    Joined:
    Jan 2, 2013
    Posts:
    2,060
    Damn, I'll have to plug the Leap in again and rebuild :)

    Hi!

    Yes, thats the main thing I'm possessed with at the moment. I'm working with Oculus on implementing and testing it in Dead and Buried and it has grown much bigger than I anticipated. For example it now has procedural locomotion for side-stepping/turning, raycasting to block the feet or body from penetrating colliders and stuff like that. It's basically making another FBBIK from scratch so it's taking some time...
     
    seansteezy likes this.
  32. dff180

    dff180

    Joined:
    Apr 18, 2013
    Posts:
    3
    Thanks for the VR update, Partel.
    I'm currently using the FBBIK with HTC Vive and a virtual mirror and arm movement is looking good when I use the bend goals.
    I noticed the following problem as soon as I use the bend goals: when I lift up my hands in front of my face and look at the inside of my hands then the lower arm is not twisting with the hand which will lead to the "candy wrapper" skinning artefact at the hand joint.

    Do you have any tips how to resolve this with the current 1.3 version?

    I also tried the FBBIKArmBending which you provided via Dropbox but that had flipping issues when stretching out the arm and then twisting the hands inside.
     
  33. miyvi

    miyvi

    Joined:
    Feb 5, 2015
    Posts:
    1
    Hello there,
    I'm trying to do some stuff using the InteractionSystem, everything seems to work fine but I'm still having an issue in a particular case.
    Sometimes I need my character to grab an object with his hands (new interaction); then stop the grabbing (stopping interaction = hands going back to rest position ) and then instantly ask him to grab again an object (with same interaction as before, or with another one). All of this can happen in the same frame time.

    ....But when I decide to "stop the grabbing" by stopping the interaction, I have a strange situation:
    * the fingers are propertly "realeased" from the object grabbing
    * but, the hand's position are still constrained on the object

    In order to make it a bit more understandable, this is a simple test I have done in order to reproduce my issue :

    Code (CSharp):
    1.  
    2. // On start
    3. _interactionSys.StartInteraction(RootMotion.FinalIK.FullBodyBipedEffector.RightHand, _interactionObj, true);
    4.  
    5. // Wait some seconds
    6. // ............
    7.  
    8. // Stop the grabbing
    9. _interactionSys.StopInteraction(RootMotion.FinalIK.FullBodyBipedEffector.RightHand);
    10.  
    11. // If I don't wait here and Start instantly my new interaction then I wont be able to correctly stop the interaction
    12. // If I wait for 1 Frame the problem still exist
    13. // If I wait for more (1 second) then everything is good
    14. _interactionSys.StartInteraction(RootMotion.FinalIK.FullBodyBipedEffector.RightHand, _interactionObj2, true);
    15.  
    16. // Wait some second
    17. // ............
    18.  
    19. // Stop the grabbing again
    20. _interactionSys.StopInteraction(RootMotion.FinalIK.FullBodyBipedEffector.RightHand);

    Correct case (1 second wait beetween I stopped the interaction and started the new one) :

    http://imgur.com/waYWPNa


    Problematic case (Did't wait - you can see that the fingers are "relaxed" properly but the hands stays on the object anyway) :

    http://imgur.com/V6iJVMM

    I would be grateful if any of you have an idea to solve my issue.
    Thanks.
    Best regards
     
  34. IgorRazin

    IgorRazin

    Joined:
    Oct 11, 2014
    Posts:
    7
    Hi!
    When I add the collider in the bone of the character that has FBBIK and rigidbody (in root), the character begins to move erratically.
    Why does this happen and how to avoid it?
    I tried to disable collider, processing ik.GetIKSolver () .Update () and turning back, not helping.
     
  35. seansteezy

    seansteezy

    Joined:
    Nov 28, 2013
    Posts:
    115
    Sounds epic! VR (+ Leap Motion) + FinalIK will be the greatest thing in the world. Can't wait to see what you come up with!
     
    Partel-Lang likes this.
  36. asdasd212

    asdasd212

    Joined:
    Sep 27, 2015
    Posts:
    2
    what do i do if i want the script to stop sampling and return to animation pose when X bone hit to rotation limit and restart sampling after Target is available again in rotateable area ?

    im using aimIK on Root bone where animator is on and Rotation limit Spline on the bone that is rotating
     
    Last edited: Jun 11, 2016
  37. magique

    magique

    Joined:
    May 2, 2014
    Posts:
    3,818
    Is FinalIK designed not to work with characters that have root motion animations? I've been working on getting a wolf working with FinalIK Grounder and everything was working except the wolf behaved strangely when going up slopes. It always seems to keep the body in place and squishes down into the legs. But if I uncheck use root motion and just move the wolf myself then it works fine.
     
  38. LostPanda

    LostPanda

    Joined:
    Apr 5, 2013
    Posts:
    129
    @Partel Lang great! Cant wait to realease example to assetsstore!
     
  39. Griffo

    Griffo

    Joined:
    Jul 5, 2011
    Posts:
    664
    @Partel Lang Hi, Is there a order I should call the Ik in as I'm using

    PM
    Aim
    Limb
    LooKAt

    and are getting some strange effects, as in the arm twisted, and the aim way off, thanks.

    IK_Aim On Only .. looks OK
    IK_Aim and IK_Limb .. Arm twitching
    IK_Aim IK_Limb and IK_LookAt .. ??

    Snippet of code ..

    Code (JavaScript):
    1.                 IK_Aim.solver.IKPositionWeight = lookWeight;
    2.                 IK_Aim.solver.Update();
    3.                 IK_Limb.solver.IKPositionWeight = lookWeight;
    4.                 IK_Limb.solver.Update();
    5.                 IK_LookAt.solver.IKPositionWeight = lookWeight;
    6.                 IK_LookAt.solver.Update();
    EDIT .. OK, got the flicker out by using THIS as I'm using Animate Physics

    EDIT ..OK DONE IT, it was a neck bone in the LookAt making the Aim off ..
     
    Last edited: Jun 12, 2016
  40. Partel-Lang

    Partel-Lang

    Joined:
    Jan 2, 2013
    Posts:
    2,060
    Hi, sorry for the long wait..

    I do actually have a script that might help, its called TwistRelaxer. Just add it to the forearm bone, assign Parent, Child and the axes. It needs to run after FBBIK so add it to the Script Execution Order as the last thing.

    Hi,
    I tried to recreate the bug, but didn't manage to with the latest version so I hope it's fixed in the latest. I'm gonna submit 1.4 today or tomorrow, but if you can't wait, PM your invoice no and I'll send it over to you directly.

    Hi, what exactly do you mean "erratically", could you make a video or something?
    Are you using Grounder? Might be that its raycasts are hitting the character collider so if thats the case you'll need to fix the layers in the Grounder solver.

    Hi,

    I haven't thought of such a case, but theoretically, the rotation limits have this function:
    Code (CSharp):
    1. public Quaternion GetLimitedLocalRotation(Quaternion localRotation, out bool changed) {
    You can call it with the bone's local rotation and it will out true if it hit the limit.

    Hi,
    No it should absolutely work with root motion just the same. Could you send me that wolf with that grounder setup so I could take a closer look?

    Cheers,
    Pärtel
     
    dff180 likes this.
  41. Partel-Lang

    Partel-Lang

    Joined:
    Jan 2, 2013
    Posts:
    2,060
    Final-IK 1.4 and PuppetMaster 0.4 submitted for review :)

    Cheers,
    Pärtel
     
    ZenUnity likes this.
  42. IgorRazin

    IgorRazin

    Joined:
    Oct 11, 2014
    Posts:
    7
  43. AndersMalmgren

    AndersMalmgren

    Joined:
    Aug 31, 2014
    Posts:
    5,406
    Hi,
    When the character is culled or occluded will final IK automatically disable solving?

    Sorry if its been answered before
     
  44. punk

    punk

    Joined:
    Jun 28, 2013
    Posts:
    387
    @Partel Lang I've been using this a lot recently on my game 'The Last Vampire' and I just wanted to say thanks for providing such a good framework, it is saving me so much pain :)

     
  45. dff180

    dff180

    Joined:
    Apr 18, 2013
    Posts:
    3
    Thanks a lot for this very helpful script. Improves VR self-avatar IK a lot. Five-star asset store rating coming in for you.
    If you are planning to release at some future point a special VR self-avatar IK for Vive and upcoming Oculus touch then I bet a lot of people are willing to pay for that.
     
  46. Partel-Lang

    Partel-Lang

    Joined:
    Jan 2, 2013
    Posts:
    2,060
    Hi, thanks for making the video, it was most helpful.
    So you are creating a Rigidbody for the root of the character, then you add a collider to one of the spine bones without adding a Rigidbody. That makes it a compound collider for the root Rigidbody. Unity calculates Rigidbody inertia tensors based on their colliders. If you move that box collider either by animation or IK or something else, that will force Unity to recalculate inertia each frame, which is expensive and possibly causing the Rigidbody to start drifting as in the video. Bottom line - is there any reason why the BoxCollider is not on the root of the character like the Rigidbody is? Because it probably should.

    Hi,
    No, but you can do it with a single line:
    Code (CSharp):
    1. ik.enabled = renderer.isVisible;
    Thanks for dropping by just to say that! The Last Vampire looks mean, do you have a website for the game or something? :)

    Hey, big thanks for that great review, much appreciated! :)
    I am planning to release a special VR IK for Vive and Oculus, its called VRIK ;)

    Cheers,
    Pärtel
     
    AndersMalmgren likes this.
  47. punk

    punk

    Joined:
    Jun 28, 2013
    Posts:
    387

    Thanks Bro, It needed to be said, I'm loving your work! The Last Vampire site will be up soon, just haven't had time
     
    Partel-Lang likes this.
  48. IgorRazin

    IgorRazin

    Joined:
    Oct 11, 2014
    Posts:
    7
    Thanks!
     
  49. magique

    magique

    Joined:
    May 2, 2014
    Posts:
    3,818
    I will get it to you this evening.
     
  50. wirelessdreamer

    wirelessdreamer

    Joined:
    Apr 13, 2016
    Posts:
    119
    I've been working with GoogleVR and Tango projects, using Final Ik.

    In GoogleVR I still am not sure what the right way is to control character rotation and movement with final ik. I can apply a head effector of the camera to a model's head, but don't see how after the camera has rotated past a point, to move the body as well.

    In Tango, when I walk around and move, what would be the right way to make the movement happen?
     
unityunity