Search Unity

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. zikso802

    zikso802

    Joined:
    Sep 7, 2017
    Posts:
    15
    Hey,
    no need to complicate things (like adding a layer or masking) for such an issue. There is an easier fix. You see the problem is with the animation themselves and not with VRIK. simply select your animation file. on the right in the inspector go to the animations tab and scroll down untill you find the clip length and the other options. one of them is Root Transform Position (Y), the third option for this one is called Offset. Adding a negative offset (try values less than 1) will drag your character down for this animation only. Ideally with the right value it should appear on the ground and not floating. If you are using several animations from the same package, it's highly likely you will face the same problem with all the animation files and you have to do this step for all of them.
    if your animations are stored in the same file make sure you select the animation first and then add the offset. Hope this solves your problem.
     
    Partel-Lang likes this.
  2. Partel-Lang

    Partel-Lang

    Joined:
    Jan 2, 2013
    Posts:
    1,908
    Hey,
    For 2-handed picking up, you should get started with the "Interaction Pick Up 2-Handed" demo, for it requires a different approach. In that demo you are also able to move the characters once they have picked up their objects.

    Hey,
    Could you specify, do you have VRIK's procedural locomotion enabled? If not, have you tried enabling "Foot IK" in the Animator for the animation state used?

    Hey,
    If you are using the latest FIK, there are "On Left Footstep" and "On Right Footstep" UnityEvents on the bottom of the locomotion settings. You can use them to call out those sound effects.
     
    trappist-1 likes this.
  3. trappist-1

    trappist-1

    Joined:
    Mar 26, 2017
    Posts:
    463
    Just wanted to say how much I appreciate all the suggestions. Not only is this asset really amazing, the support is also top notch!

    Thanks guys!!
     
  4. claudius_I

    claudius_I

    Joined:
    May 28, 2017
    Posts:
    141
    I did that (use the "Pick Up 2-Handed" demo), but when pick up the box i can't move the character anymore (character controller don't work and de animation is always idle).
    what do you think i am doing wrong?
    *************Fixed*************

    i disable the input when start interaction.

    but now have other problem, the movement is very slow

    *************Fixed*************
    was the collider
     
    Last edited: Oct 19, 2017
  5. WildStyle69

    WildStyle69

    Joined:
    Jul 20, 2016
    Posts:
    225
    Hi @Partel-Lang,

    Thanks for creating such a great asset, been using it a while now, however more recently starting to understand and use more features. :)

    Am working on my terrain, I use MegaSplat with tessellation - at the moment am trying to ground my NPC animals with Final IK (GrounderQuadruped ). I heard mention via the MegaSplat thread that you'd taken look at the tessellation issue before?

    If you did, is there any chance you can share a code example related to this kind of implementation? I'm not looking for a perfect solution, just something that's pretty close would be good enough.

    // WildStyle
     
    trappist-1 likes this.
  6. fup

    fup

    Joined:
    Jan 18, 2016
    Posts:
    62
    Howdi,

    I've created a system to locomote my VRIK character using the left stick. Upon using the left stick VRIK is disabled and the character is controlled via a 3rd person controller script. When the user stops using the stick the VRIK system is enabled.

    This works well but upon re-enabling VRIK the VRIK locomotion system kicks in and moves the legs backwards then forwards again, effectively giving the appearance of stretching the body. Like this:



    This happens even if the locomotion weight is set to 0 then back to 1. Maybe the locomotion system caches some values and then uses the old values to update the feet position?

    How do I prevent this from happening?
     
  7. WildStyle69

    WildStyle69

    Joined:
    Jul 20, 2016
    Posts:
    225
    I've already got a working solution that is good enough for what I need -- just used the 'Height Offset' on the GrounderQuadruped to account for the tessellation depending on the roaming area. :)

    Amazing work on the GrounderQuadruped, it works soooo nice!
     
  8. Partel-Lang

    Partel-Lang

    Joined:
    Jan 2, 2013
    Posts:
    1,908
    Hey,
    Just call ik.solver.Reset(); when you re-enable it.

    Hey,
    I was working together with the MegaSplat's dev on an integration, got it close, but never fully accurate as there seemed to be some kind of an error with getting the correct displacement out of MegaSplatCollisionInfo.

    Cheers,
    Pärtel
     
  9. WildStyle69

    WildStyle69

    Joined:
    Jul 20, 2016
    Posts:
    225
    Thanks @Partel-Lang -- was it close enough to be worth using or not really?
     
  10. Partel-Lang

    Partel-Lang

    Joined:
    Jan 2, 2013
    Posts:
    1,908
    It was producing an error up to half a meter at some points so in my opinion not really. I last spoke to Jbooth in June about this, but I guess he's been busy with other priorities.
     
    WildStyle69 likes this.
  11. WildStyle69

    WildStyle69

    Joined:
    Jul 20, 2016
    Posts:
    225
    Thanks man -- I'll follow up on this with Jbooth.
     
  12. Piccastudio

    Piccastudio

    Joined:
    Apr 4, 2014
    Posts:
    29
    Hi. I have an issue that I cannot find a solution.
    I am working on a VR game and I have a character with a fullbody biped IK and a Ragdoll Utility Scritp
    When I activate de Ragdoll afte a coupe of second the whole mesh dissapeared
    I´ve already tried to configure it to always animate in the animator
     
  13. trappist-1

    trappist-1

    Joined:
    Mar 26, 2017
    Posts:
    463
    I am trying to use AimIK and Rotation Limit Angle to prevent a humanoid from aiming directly behind. But I can not understand how to make it work and the character continues to aim directly behind making it look deformed and unnatural:


    As I change the angle Limit i notice a slight amount of change from the character, but it's not enough. And it doesn't make sense, some bones move slightly when changing limit and some bones don't.

    What am I missing?

    [Update]
    According to the information on this page: Using AimIK with Rotation Limits. I previously added this to my SimpleAimingSystem.cs script in LateUpdate()

    Code (csharp):
    1. for (int i = 0; i < aim.solver.bones.Length; i++) {
    2.     if (aim.solver.bones[i].rotationLimit != null) {
    3.         aim.solver.bones[i].rotationLimit.SetDefaultLocalRotation();
    4.     }
    5. }
    Which resulted in the above condition.

    So by removing those lines in my script I now get this:


    Which seems to be a bit better and now the limits are actually having a much greater affect. But it still looks kind of unnatural.

    Is there anything else I can do to help with this pose like adjusting stiffness perhaps?

    [Update]
    I am now canceling out the "Aim Back" pose by setting the AimIK's weight to the inverse of the "Aim Back" animator float value:
    Code (csharp):
    1. var aimBack = animator.GetFloat ("Aim Back");
    2. aimIK.solver.IKPositionWeight = 1 - aimBack;
    It runs smoothly but there is still a twisting during the transition from full weight to zero weight.
    But my character is no longer aiming backwards!! :)

    [update]

    I also wrote this which adds some smoothing, it shows a slight hint of twisting when the blend tree transitions from Aim Left to Aim RIght but it's looking better:
    Code (csharp):
    1. var aimWeight = 1 - Quaternion.Angle (
    2.                 Quaternion.LookRotation (
    3.                     aimIK.solver.target.position - transform.position //delta world posisiton
    4.                 ),
    5.                 transform.rotation //absolute world rotation
    6.             ) / 180; //divide by 180 so value ranges from 0 to 1
    7. var aimBack = 1.0f;
    8. if (aimWeight < 0.5f) {
    9.     aimBack = aimWeight * 2.0f;
    10. }
    11. aimIK.solver.IKPositionWeight = aimBack;
    I'm pretty sure there are better ways to limit the aim backwards feature, and I am still wondering if Rotation Limits, stiffness or any other setting could help...
     
    Last edited: Oct 25, 2017
  14. philc_uk

    philc_uk

    Joined:
    Jun 17, 2015
    Posts:
    79
    Hi,
    I am try to modify the AnimatorController3rdPerson to use a navmesh agent.
    It sort of nearly works, having trouble with the function
    'Move(Vector3 moveInput, bool isMoving, Vector3 faceDirection, Vector3 aimTarget)'

    I cant seem to get the movement correct for the destination and orientation the agent is moving in.
    Passing in Vector3 forward makes the agent get to the destination but, never orients to the correct facing direction!
    There dont seem to be any demos on using agents. Does anyone know what/how to do this?

    Thanks!
     
  15. rob_vld

    rob_vld

    Joined:
    Jul 9, 2013
    Posts:
    158
    @Partel-Lang can you make an example with VRIK that allows more head movement but most important being able to go all the way down to prone with still using the arms?

    assuming animations for legs...
     
    dev01 likes this.
  16. Partel-Lang

    Partel-Lang

    Joined:
    Jan 2, 2013
    Posts:
    1,908
    Hey,
    Did you try also enabling "Update When Offscreen" in the SkinnedMeshRenderer(s)?

    Hey,
    You can tweak the amount of each spine bone's bend by adjusting the individual bone weights in AimIK. Also, for preventing aiming backwards you should increase the "Clamp Weight", that's what it was designed for.

    Hey,
    Can you share your code, what are you passing into Move as faceDirection and aimTarget?

    Hey,
    First set ik.solver.spine.minHeadHeight to 0. Once you detect that the player is prone (based on head height and angle perhaps), just crossfade to a prone animation, blend ik.solver.locomotion weight to 0 and thats it. Might want to adjust same spine parameters a bit too.

    Best,
    Pärtel
     
  17. philc_uk

    philc_uk

    Joined:
    Jun 17, 2015
    Posts:
    79
    Hi,
    I have it working better now using some code posted on this group earlier.
    The magic line was :

    Vector3 input = transform.InverseTransformDirection(Vector3.ClampMagnitude(agent.steeringTarget - transform.position, 1f));

    This is a very uselful line, as it replaces the user input with AI - maybe it should be in a demo.

    No im trying to figure out why the cpu is very high!
     
  18. philc_uk

    philc_uk

    Joined:
    Jun 17, 2015
    Posts:
    79
    Hi
    Ok its taking a lot of cpu. When I add like 12 characters, with final IK, inside the animatorController.Move function uses massive amounts of processing. Its less than 25 fps with just the characters walking about and nothing else.
    All the processing is inside the Solver, im not on a slow computer - its an Intel i7, and using Unity 2017.1.
    I have other things on the character like the ragdoll, recoil, so it has colliders and rigidbodies and it does have AimIK but I have disabled it. Is it just that FinalIK in this setup uses a lot of processing and really only can work with just one character - like the main player or can it actually be used for lots of enemies - like 10+ without significantly reducing framerate?

    Thanks
     
  19. Partel-Lang

    Partel-Lang

    Joined:
    Jan 2, 2013
    Posts:
    1,908
    Hey,
    Try setting FullBodyBipedIK's iteration count to 0. If you are using it for just the basic stuff like recoil, you probably won't need the full body solving and setting iteration to 0 disables that.

    Best,
    Pärtel
     
  20. ParadoxSolutionsSoftworks

    ParadoxSolutionsSoftworks

    Joined:
    Jul 27, 2015
    Posts:
    267
    Hello,

    I've been trying to get Final IK's 1st person recoil demo and the 3rd person recoil demo to merge together to create a similar transition effect as in TES Skyrim when the mouse wheel scrolls out to 3rd person and into 1st person smoothly.

    I've taken the demo scripts (camera controllers, recoil, aiming and character scripts) and tried to combine them into one more manageable script where I get the above effect.

    I've gotten close but always seem to hit some kind of roadblock/bug because the code is obviously intended to be separate for the demos and are just a bit sparse as far as code comments go. There are 58 pages on the forum at the time of writing, and I don't want to look through them but has anyone achieved the effect I'm going for?

    I really like UFPS's procedural camera but would rather do everything else custom so it would be cool if I could just use Final IK as both a 1st and 3rd person character controller.

    Just curious if anyone has done it yet.
     
  21. nestorcaro

    nestorcaro

    Joined:
    Dec 28, 2015
    Posts:
    4
    Hi Partel,

    I'm wondering if there is a solution for the GROUNDER tool for the VR IK... since this last one doesn't use FBBIK, I haven't been able to use it.
    Any suggestions?

    Thank you
     
  22. mcguinnessdr

    mcguinnessdr

    Joined:
    Sep 20, 2014
    Posts:
    11
    I'm trying to set up VRIK with a Morph3D character, and I'm having two issues. In the first video you can see that the left arm moves in a normal looking way, but the right arm rotates much more when I rotate my hands https://www.dropbox.com/s/sn2qnx3if0be4ex/2017-10-30 20-56-00.mp4?dl=0
    I've looked everywhere I can think of, and all the values between the left and right side seem to be the same. No idea what might be causing this.
    The second video shows an issue where the feet will rotate after teleporting. https://www.dropbox.com/s/7qj4j62mqo0szkj/2017-10-31 13-14-43.mp4?dl=0 I'm calling GetComponent<VRIK>().solver.Reset() after teleporting to have the IK immediately snap to the new position. If I remove this line this issue goes away, but then it takes a second for the IK to get into the right position.

    Thanks for any help!
     
  23. Partel-Lang

    Partel-Lang

    Joined:
    Jan 2, 2013
    Posts:
    1,908
    Hey,
    Those 2 demos use completely different approaches to do what they do, so I imagine it being a hell to combine them into one. Might be easier to start from scratch there, might not even be possible to combine if the two methods require different solving orders of the IK components.

    Hey,
    Have you already seen the "VRIK (Grounder)" demo?

    Hey,
    The problem with Morph3D and Mixamo rigs is that they have their limbs perfectly stretched out. VRIK samples the pose of the character to find out which way the limbs should be bent so if they are straight, it might fail.
    Just rotate the elbow and knee bones in the Editor so that the limbs would be slightly bent in their natural bending directions. That might also fix the problem that you have with the teleporting.

    Cheers,
    Pärtel
     
  24. mcguinnessdr

    mcguinnessdr

    Joined:
    Sep 20, 2014
    Posts:
    11
    Thanks for the reply. I already have the elbows and knees bent to fix the backwards joints. Any other ideas to try?
     
  25. virror

    virror

    Joined:
    Feb 3, 2012
    Posts:
    2,961
    I cant seem to find the manual for VRIK? There are a ton of parameters and i need to know a bit what they do to be able to tweak them.
     
  26. virror

    virror

    Joined:
    Feb 3, 2012
    Posts:
    2,961
    Never mind, i noticed there was tooltips, they just did not show up during runtime.
    I have a problem with one of the legs though, it tends to bend in the wrong direction using VRIK.
    Im using UMA system, can this have something to do with it?

    Edit: Also using a subtle idle animation on it.

     
  27. mcguinnessdr

    mcguinnessdr

    Joined:
    Sep 20, 2014
    Posts:
    11
    Try rotating the lower legs so the knees are slightly bent in the correct direction to start with.
     
  28. virror

    virror

    Joined:
    Feb 3, 2012
    Posts:
    2,961
    UMA is generated during runtime, so i cant really do that.
     
  29. trappist-1

    trappist-1

    Joined:
    Mar 26, 2017
    Posts:
    463
    Does anyone have any suggestions on how to make AimIK lead the target and account for parabolic trajectories/travel time?

    Some of my projectiles are rigidbodies, so it takes time for them to get down range, and if the target is a moving target then that travel allows the target to move out of the projectile's path.
     
  30. trappist-1

    trappist-1

    Joined:
    Mar 26, 2017
    Posts:
    463
    I am having trouble understanding why IKExecutionOrder is disabling VRIK - which causes things to not look so nice.

    By default I have added a Grounder script, LimbIK for both legs and VRIK. Based on the finalIK examples I also configured an IKExectuionOrder script:

    As illisturated above, the player's controller is offset from the avatar's hand.


    So I tried disabling the execution order script and just manually enabled all the scripts from the list:

    It causes the grounders to not affact the avatar in any noticable way and the feet begin to float above or below steps.


    Finally I just manually enabled VRIK after it had been disabled by IKExecutionOrder. This does the trick and the avatar now looks visually pleasing:


    But I don't understand what is going on. Why is VRIK being disabled if it works better only when it's enabled?
    I have read that in some instances we must call the update/fixedupdate on the solver manually, is this one of those situations? Or am I using IKExecutionOrder+VRIK incorrectly?

    For now I will write a script to re-enable VRIK, but I'm almost certain this is not ideal.. Thanks for any assistance!
     
  31. Partel-Lang

    Partel-Lang

    Joined:
    Jan 2, 2013
    Posts:
    1,908
    Hey,
    Right after you generate the UMA character, you can rotate it's knee bones via script too:
    Code (CSharp):
    1. var leftLowerLeg = animator.GetBoneTransform(HumanBodyBones.LeftLowerLeg);
    2. leftLowerLeg.rotation = Quaternion.AngleAxis(10f, animator.transform.right) * leftLowerLeg.rotation;
    3.  
    Hey,
    If it's a Rigidbody you could just add some of it's velocity to AimIK's target. Probably not fully accurate, but a fast and easy way to do this I guess:
    Code (CSharp):
    1. ik.solver.IKPosition = targetRigidbody.position + targetRigidbody.velocity * targetDistance * aimLeadAmount;
    If you're looking for full accuracy, you'll have to include the speed of the projectile and stuff like that in the calculations.

    Hey,
    IKExecutionOrder disables the components to take control of their updating order. If the components remain enabled, they will actually be updated twice - once on their own and the other time by IKExecutionOrder.

    I noticed I have the same problem in the VRIK (Grounder) demo scene. It seems just removing the IKExecutionOrder will fix this, not need for additional code.

    Best,
    Pärtel
     
    Heykinox likes this.
  32. mcguinnessdr

    mcguinnessdr

    Joined:
    Sep 20, 2014
    Posts:
    11
    I'm still having issues with using VRIK on my character. Here is another video showing the issue with one of the arms. One of them acts as normal when I rotate the hands, but the other flips all the way around.

    I'm also still looking for a fix for the legs rotating after teleport. Is there another way to snap the IK into position than calling Reset()?
     
  33. Partel-Lang

    Partel-Lang

    Joined:
    Jan 2, 2013
    Posts:
    1,908
    Hey,
    The arms need to be bent just as the legs. Also, make sure the "Wrist To Palm Axis" and "Palm To Thumb Axis" are set up right for that arm. You can right-click on the component header and select "Guess Hand Orientations" to have VRIK try to guess them. Read their tooltips to see what those vectors mean.

    About the teleportation, are you sure you call Reset after you move AND rotate the character and it's targets to it's new position?

    I will be out of office next week, but I'll give it another test as soon as I'm back.
    Best,
    Pärtel
     
  34. dyupa

    dyupa

    Joined:
    Dec 21, 2016
    Posts:
    9
    Hi, Partel!

    I need your help with the understanding how gravity is affecting CharacterThirdPerson during WallRun and Jump. :) The result, that I want to achieve, is that I need my character to climb on obstacles 2 and 4 meters high with using a MatchTarget ability of Animator. I am using Mixamo free animations for this with Root Motion and without "Bake Into Pose" option in Root Transform Rotation, Position (Y) and Position (XZ). For Root Transform Position (Y) I am also using "Based Upon Feet" option. And in this case character is trying to move as I want - he begins to follow climb animations, but suddenly gravity forces him not to climb up and follow animation and he stays at the floor until MatchTarget ends. When MatchTarget is over, character appears at high position 2 meters or 4 meters (at the top center of 2 and 4 meters cube in my case) as expected.I have noticed, that when character is in Idle state - useGravity option of Rigidbody is false. But when he is moving or jumping, useGravity always returns true.

    My decision of that problem yesterday was to add in Update () function in my additional script the IF-ELSE statement with the following type:

    Code (CSharp):
    1. void Update ()
    2. {
    3.     if ((animator.GetCurrentAnimatorStateInfo (0).IsTag ("ClimbHigh") || animator.GetCurrentAnimatorStateInfo (0).IsTag ("ClimbLow")) ||
    4.         animator.GetCurrentAnimatorStateInfo (0).IsTag ("JumpOverObstacle")) == true && !animator.IsInTransition(0))
    5.     {
    6.         transform.parent.position += animator.deltaPosition;
    7.         GetComponentInParent<RootMotion.Demos.CharacterThirdPerson> ().gravityMultiplier = -0.5f;
    8.     }
    9.     else
    10.     {
    11.         GetComponentInParent<RootMotion.Demos.CharacterThirdPerson> ().gravityMultiplier = 1f;
    12.     }
    13. }
    14.  

    If i am using this code, than my character climbs with climb animation very well with the working MatchTarget function. I have used "transform.parent.position += animator.deltaPosition;", because without this line MatchTarget not worked at all - character not even tries to follow climb animations and plays an animation at place. And he is not appearing at the end of MatchTarget as well. It was difficult for me to determine, that I need exactly this line of code in this place, but I found this solution in other forum threads related to Animator and Mecanim movement with animations. GetComponentInParent and transform.parent are here because I use Character Contoller (parent) -> Animation Controller (child) structure as ThirdPersonCharacter in FinalIK demos has. And all my additional scripts are attached to Animation Controller. As for the gravityMultiplier, I thought logically and decided to change gravity by this way.
    Likewise, as you have noticed, I am using a Jump Over Obstacle animations, and they are working also, if "transform.parent.position += animator.deltaPosition;" is there in IF statement. But for these animations there is no need to change gravityMultipler, because they are short in my case, and the gravity can not get in time to influence on them.
    If it is important, I am using PuppetMaster as well. So the name of the script in my case in Character Contoller is not CharacterThirdPerson but is CharacterPuppet.

    So, my question is - Is there an ability in CharacterThirdPerson(CharacterPuppet) like a wallRun or a kind of option, that prevents character to fall down by the gravity, when animation based on Root Transform Position (Y) is playing in Animator (Mecanim)? In other words is there a way for character to follow its animation without the influence of a gravity, when animation contains changing the Y position?

    I have searched a lot for this answer in FinalIK, PuppetMaster and other threads, but didn't find any suitable solution, than I made myself.

    I will be very grateful, if you, Partel, find a time to help me and answer this question, or maybe you can suggest where should I look to solve this problem. Or maybe my solution is the right one and I should leave it at that.

    Thank you very much for your attention and your time! ;-)

    With the great regards, Alexander Dyupin!
     
  35. mcguinnessdr

    mcguinnessdr

    Joined:
    Sep 20, 2014
    Posts:
    11
    Thank you! The arm issue was the "Palm T Thumb Axis" being guessed incorrectly.

    This is the code I use before the teleport:
    Code (csharp):
    1.  
    2.         //Get offset of avatar from playspace
    3.         offset = transform.position - playSpace.position;
    4.  
    And after:
    Code (csharp):
    1.  
    2.         //Apply offset to avatar after teleport
    3.         transform.position = playSpace.position + offset;
    4.         //Reset IK to prevent weird movement
    5.         GetComponent<VRIK>().solver.Reset();
    6.  
    I don't rotate the playspace, just translate it. I tried copying the rotation from both the playspace and headset, neither of which seemed to have any effect.
     
  36. q7204k

    q7204k

    Joined:
    Dec 4, 2011
    Posts:
    15
    Hello there! =)

    I'm trying to create a crane (screenshot). Is there a way to make the yellow box to move left/right (red arrows) while I move target point (green arrows)?

    Thank you!

     
  37. Mikekan13

    Mikekan13

    Joined:
    May 30, 2015
    Posts:
    72


    WTH am I doing wrong? I have the knees and elbows slightly bent but he just keeps bending at the knees wrong.



    EDIT: So after a lot of experimenting and I am guessing the Limb IK has to have a target? If so then how can it have a target if you are moving. I put the target on each limb IK as the foot bones and the IK looks correct but if I move up a hill or jump on a box it stops working because it is set to the position of the avatar parent. Has anyone got this working with VRTK and moving around or am I still doing something way wrong?
     
    Last edited: Nov 8, 2017
  38. wirelessdreamer

    wirelessdreamer

    Joined:
    Apr 13, 2016
    Posts:
    96
    I'm trying to integrate leap motion to final IK. I downloaded a package you put out a while ago, but its trying to use an object type called HandController, that appears to no longer exist. Can you post a link to the current leap motion final IK Integration. Thanks.
     
  39. frdfsnlght

    frdfsnlght

    Joined:
    Aug 2, 2012
    Posts:
    3
    The FABRIK solver doesn't appear to honor the Target's rotation, and there doesn't seem to be a way to set the rotation in code, like there is for IKPosition. Is that intentional or a bug? The CCD solver has the same problem. The lack of tracking the target's rotation is killing my use of this package.
     
  40. mcguinnessdr

    mcguinnessdr

    Joined:
    Sep 20, 2014
    Posts:
    11
    I think I've solved the foot rotation issue. I changed line 46 of IKSolverVRFootstep from
    Code (csharp):
    1. footRelativeToRoot = Quaternion.Inverse(rootRotation) * rotation;
    to
    Code (csharp):
    1. footRelativeToRoot = Quaternion.identity;
    I'm not sure what this line is supposed to do, but changing it seems to fix the issue without any side effects.
     
  41. Partel-Lang

    Partel-Lang

    Joined:
    Jan 2, 2013
    Posts:
    1,908
    Hi all, sorry for the delay, back in office now! :)

    Hey,

    There's no easy way that I know of to determine whether an animation clip playing has bake into pose enabled in the import settings so I guess the solution you have already found is the solution.

    Hey,

    If the crane's rotation is fixed in world space then it's easy:
    Code (CSharp):
    1. yellow.position = new Vector3(target.position.x, yellow.position.y, yellow.position.z);
    Otherwise:
    Code (CSharp):
    1. yellow.position += Vector3.Project(target.position - yellow.position, yellow.right);
    Hey,
    Please don't use GrounderVRIK, it actually ended up in the published release by accident. It is a WIP, or not working in progress to be exact. Please go for the solution described in the "VRIK (Grounder)" demo scene, using GrounderIK and the LimbIK components.

    Hey,
    If it's VRIK you are working with, I have a
    Code (CSharp):
    1. https://www.dropbox.com/s/0z7l5usyha4jpah/VRIK%20LeapMotion.unitypackage?dl=0
    for that.

    Hey,
    Such is the nature of those algorithms I'm afraid. CCD nor FABRIK can solve for both the target position and rotation.
    Is it some kind of an industrial robot or something like that you are working on? If so, please check out this package.

    Hey,
    If I do that and run the VRIK (Basic) demo with the pilot rotated 180 degrees in the editor, it will mess up the footstep rotations.
    Are you sure you have rotated the character root to it's new rotation before you call Reset()?

    Cheers,
    Pärtel
     
    q7204k and Heykinox like this.
  42. seanybaby2

    seanybaby2

    Joined:
    May 17, 2013
    Posts:
    108
    Hey Partel. First off thanks for making this amazing asset it has been very helpful for me and my project. I

    So I'm running into some issues with VRIK and I'm wondering if maybe I would be better off switching to FullBODYIK or something else. Anything that points me in the right direction is much appreciated.

    Firstly I notice there is a fair amount of jitter when I'm moving my hands around in VR. The VRIK trys to correct itself frequently. I'm not sure if this is do to VRIK or bad tracking.

    Secondly and this is the main issue whenever I am moving quickly using artificial locomotion the legs have a really difficult time animating correctly. My character ends up doing an inhuman spider walk sometimes. Would I be better off using running animations with a fullbodyik for the hands instead?

    Lastly any idea how to turn off just the leg movement instead? I have a portion of the game where I'm skydiving and want to disable leg tracking.
     
  43. rasto61

    rasto61

    Joined:
    Nov 1, 2015
    Posts:
    289

    I have not experienced any jitter with VRIK, at least not coming from VRIK, so it is likely that there is an issue somewhere else.

    For the legs, you have to play around with the locomotion settings, the body stiffness, and the minimum head height/ target weights...
    If you want to disable leg movement just add some feet targets as well, and control the position of those objects yourself.
     
    Partel-Lang likes this.
  44. Partel-Lang

    Partel-Lang

    Joined:
    Jan 2, 2013
    Posts:
    1,908
    Hey,
    Could you parent cube primitives to the controllers? If they are jittering too, it's the tracking.

    About the locomotion, it was developed for Dead and Buried which is not a roomscale game, so it doesn't handle walking well. You could try tweaking the params (see the tooltips), but setting the locomotion.weight to 0 and using an 8-direction strafing blend tree (such as "Grounded Strafe" in the "Humanoid Third Person" controller or the one from Kubold's Movement Animset Pro if you have that is good also) will probably get you better results with walking about.

    Cheers,
    Pärtel
     
  45. seanybaby2

    seanybaby2

    Joined:
    May 17, 2013
    Posts:
    108

    Cool thanks for the feedback. Yeah I thought as much for the walking. I'll plan on adding this in. I've tried a good bit of tweaking but it doesn't seem to be able to resolve the issue when moving fairly fast.

    I'll give the parenting a try :D
     
  46. wirelessdreamer

    wirelessdreamer

    Joined:
    Apr 13, 2016
    Posts:
    96
    Thanks, thats what I was looking for.
     
  47. wirelessdreamer

    wirelessdreamer

    Joined:
    Apr 13, 2016
    Posts:
    96
    What is the right way to hide the leap hand models, and only show the finalik model's hands. I've tried disabling the mesh renders on the final vrik hands, with no success.
     
  48. mcguinnessdr

    mcguinnessdr

    Joined:
    Sep 20, 2014
    Posts:
    11
    I wasn't rotating the root at all, just translating it, but after testing rotation with my changed lines it still works perfectly. I haven't tried it with the demos, but it fixed the issues without any side effects in my project.
     
  49. khos

    khos

    Joined:
    May 10, 2016
    Posts:
    825
    Hi Partel,
    Finak IK comes with a CameraController.cs in theshared demo assets scripts folder, I'm using that on my player (uses final IK :) ) but notice that the camera will clip into objects e.g. when zooming or changing position/rotate, now I know it is not anyone's duty to help me on this thread, but I would like to ask for your advice on how can I prevent this from happening, I cannot figure out a way to prevent it yet. I tried to add a sphere collider to the camera, then try check for collisions but it's not working. Has anyone come across this before or might be able to offer some advice for me?
     
  50. wirelessdreamer

    wirelessdreamer

    Joined:
    Apr 13, 2016
    Posts:
    96
    I've tried your finalik Leapmotion plugin on multiple models over the weekend. Every Time I use a different model then the dummy that comes in the example, one of the hands is always smashed up, and when I try to adjust the wrist to palm axis, and palm to thumb axis, I am unable to fix the hand. I'm pretty sure i'm missing something simple.

    bad_hand.PNG good_hand.PNG hand_settings.PNG