Search Unity

  1. Calling all beginners! Join the FPS Beginners Mods Challenge until December 13.
    Dismiss Notice
  2. It's Cyber Week at the Asset Store!
    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:
    1,965
    Hey,
    I did a quick test here, didn't see the feet falling back slowly when weighing in locomotion and calling ik.solver.Reset(); after having moved the character while locomotion disabled. Can you tell me of a way to reproduce this issue?

    Hey,
    If you need the lower body to be locked, like in a seated position, then you'll need to use the Pelvis Target, like in the seated example in the "VRIK (Basic)" demo.
    If your character has no legs or you don't want VRIK to do anything to the legs, you can just remove the leg bones from the References.

    Hey, you can get it from here. Its a WIP, planning to add it in officially in some later version.

    Import it to a project with Final IK inside. Min Unity version 5.5.0

    To get started, go to the "Humanoid Baker" demo, play the scene, and click on "Bake Clip" on the Humanoid Baker gameobject.

    To bake another clip, go to the "Humanoid Baker Clip Sampler" animator controller and replace the animation clip in the "Clip 1" state or add another state and change "Clip State" to that in HumanoidBaker.

    To bake with another character, delete the dummy and add the other one as a child of Humanoid Baker. Assign the "Humanoid Baker Clip Sampler" animator controller to it's Animator.

    More info about baker parameters in the tooltips, but other than that, it is very raw and undocumented. A lot of work is still to be done on it to ease the workflow, but the core functionality is already there.

    Cheers,
    Pärtel
     
    gliealonso and auroraland like this.
  2. auroraland

    auroraland

    Joined:
    Dec 7, 2017
    Posts:
    5
    So my sequence was:
    1) On trigger,
    - ik.solver.locomotion = 0;
    2) On trigger end,
    - ik.solver.locomotion = 1;
    - ik.solver.Reset();

    Like you hinted, it's an order of operations problem. Reset should be called while locomotion is disabled, and that fixed everything so far. Thanks again, Partel!
     
  3. unity_3drapidsolutions

    unity_3drapidsolutions

    Joined:
    Nov 18, 2017
    Posts:
    20
    Hi Partel,

    Thank you for all of the advice and tips you have already given in the past! This is a quick question.

    The VRIK / VRTK integration you provided does a great job of moving the avatar, but it always appears to be 'ice skating' due to a disconnect between the precise animation speed and the vrtk player speed (set in the inspector under the touchpad control features for VRTK). Is there a method I am overlooking to overwrite the VRTK-set player speed with the animator root motion, such as through animator.deltaPosition?

    Thanks!
     
    Last edited: Mar 26, 2019
  4. krehzzzy

    krehzzzy

    Joined:
    Dec 31, 2015
    Posts:
    7
    I'm having an issue where my character refuses to go below the starting Y of its transform. If the root transform goes below the starting Y, the character's feet start to shrivel up towards his head until he's just a ball of limbs unable to move lower. I'm using VRIK, Unity version 2018.2.7f1. Any ideas or work around?
     
  5. Partel-Lang

    Partel-Lang

    Joined:
    Jan 2, 2013
    Posts:
    1,965
    Hey,
    I have not digged deep enough to VRTK to ever come across that issue, so I don't know how to help you with that, sorry.

    Hey,
    VRIK never touches the y position of the root, the procedural locomotion module only moves horizontally. If you need to move up/down, make sure the character root (the gameobject assigned as "Root" in VRIK's references) moves up/down too. You can just make a simple raycast down from root position and move root.position.y to raycastHit.point.y.

    Best,
    Pärtel
     
  6. Mikekan13

    Mikekan13

    Joined:
    May 30, 2015
    Posts:
    72
    Hiya Partel,

    I am implementing grappling in my vr game and I have it just set up a fixed joint between the players hand and the body part of an enemy puppet. What else do I need to do so the player can move that body part around? It kind of works atm but the puppet updates after the fixed joint I guess?
     
  7. Partel-Lang

    Partel-Lang

    Joined:
    Jan 2, 2013
    Posts:
    1,965
    Hey,
    You'd have to decrease pin weights for the enemy body part that was grabbed, to allow it some freedom to follow the player hand. Otherwise the pinning forces would fight the joint and it will probably freak out.
    That said, joints are never perfectly accurate in Unity and so the hand might not be perfectly attached. You can do minor cosmetic adjustments with IK after PuppetMaster has mapped. See the "IK After Physics" demo about that.

    Best,
    Pärtel
     
  8. Mikekan13

    Mikekan13

    Joined:
    May 30, 2015
    Posts:
    72
    Yes I think it is the IK after Physics I need. Thank you!
     
  9. Hukha

    Hukha

    Joined:
    Aug 12, 2013
    Posts:
    43
    Hi!
    I have a Quadruped. Im Testing if i can pet that "animal".
    Im trying to apply a Effector(With their target obv) to the "bones" or "zones" of the FullBodyBipedIK but my Thigh (Left or right) dont seems to be affected by the effector or the target. Why?(With the offset effector seems to be good)

    And, for the "pet" behaviour i need to apply some force and movement accord the input, what you recommend for that task?

    Thanks!
     
  10. HP

    HP

    Joined:
    Nov 20, 2012
    Posts:
    56
    @Partel-Lang I think there is an bug in you VRIKCalibrator script.

    Code (CSharp):
    1. // on line 234 and below...
    2. bool addRootController = bodyTracker != null || (leftFootTracker != null && rightFootTracker != null);
    3. var rootController = ik.references.root.GetComponent<VRIKRootController>();
    4.  
    5. if (addRootController) {
    6.     // ...
    7. } else {
    8.     // It destroys the rootController...
    9.     if (rootController != null) GameObject.Destroy(rootController);
    10. }
    11.  
    12. // ...but uses it to get the pelvisTargetRight on a null
    13. data.pelvisTargetRight = rootController.pelvisTargetRight;
     
  11. netpost

    netpost

    Joined:
    May 6, 2018
    Posts:
    139
    Hi, Newbie here,

    Congratulations! Both Final IK and Master Puppet are amazing assets.

    I am sure this has been asked a thousand times but couldn't find any tutorials or any answers in the FAQ on how to replace the dummy by a custom made humanoid character. Would it be possible to point me to the most efficient way to do this?


    Thanks!
     
  12. Cleverlie

    Cleverlie

    Joined:
    Dec 23, 2013
    Posts:
    205
    hi guys, does anybody know if Final IK works together with Timeline? it doesn't seem to, its like on editor mode the timeline director is overriding Final IK manipulations and in play mode it works, but you can't do stuff like animating the Weight sliders of the FBBIK so you have smooth transitions between animations and IK targets, I guess this is because these sliders are just an interface to private fields that are not serialized thus they can't be animated with Timeline or for that matter, with the Unity animation system.

    we need this to be allowed to use final IK for cutscenes and a lot of other stuff, is this possible?
     
  13. Partel-Lang

    Partel-Lang

    Joined:
    Jan 2, 2013
    Posts:
    1,965
    Hey,
    Not sure, did you set thigh effector position weight to 1?
    I haven't tried doing any "petting" with FullBodyBipedIK. If it's a VR game, might be easier and more accurate doing it physically with PuppetMaster.

    Hey,
    Thanks for reporting, but it has already been fixed for the upcoming version. :)

    Hey, welcome aboard!

    Which demo or IK component were you asking about, where do you need the dummy to be replaced?

    Hey,
    It is because of the internal data structure of FBBIK, it can't be used by the Animator as it only supports floats and ints and bools Vector3 and simple stuff like that. It can't go deeper in classes and serialize stuff from them.
    Technically it is possible though, making it work would require an Animator-friendly wrapper for FBBIK, a script with all the parameters that you need to use laid out in simple values usable by the Animator. That wrapper can be run by Timeline and then it should have a reference to FBBIK and update said parameters in it and update the solver itself.

    Best,
    Pärtel
     
  14. Cleverlie

    Cleverlie

    Joined:
    Dec 23, 2013
    Posts:
    205

    Hi, Yes that's what I thought, I'll do that wrapper to manage a couple of sliders, the problem I'm still having is that the solver is not updating in the editor, when timeline is playing, is like timeline is taking precedence or priority over the IK transformations, this is even using a script that executes in edit mode and updates the solver, as I found in some answer you provided in this forum a while back ago. is there a way the editor updater can take priority over the timeline animation? or is some out of the box compatibility with timeline planned or WIP? this would be really useful and essential for cutscenes :).

    thanks for your answer

    EDIT: nevermind! I just changed the editor updater to use LateUpdate() instead of update and it seems to work fine! at least that part
    EDIT2: mmm that didn't work, I mean now if you hit play in the timeline the IK is working, but the animation of the character is not, so basically IK is taking full control over the animation and is erasing the original clip that should play from timeline... any Ideas?
     
    Last edited: Apr 3, 2019
  15. netpost

    netpost

    Joined:
    May 6, 2018
    Posts:
    139
    "Which demo or IK component were you asking about, where do you need the dummy to be replaced?"

    I would love to swap character for the Driving FBIK demo sample for example.

    Thanks!
     
  16. Partel-Lang

    Partel-Lang

    Joined:
    Jan 2, 2013
    Posts:
    1,965
    Hey,
    It has been a while since I did my Timeline tests and that test project was left in my old computer that broke down recently, so I don't remember much.. I believe it was through Playables API that I got it to work. Basically every time after animation is applied, you'll need to call ik.solver.Update(); so it should probably be called from PlayableBehaviour.ProcessFrame()

    Hey,
    So basically you would make a duplicate of your model and pose it to the seat and the steering wheel. Then take the hand, foot and thigh bones of that duplicate and parent them to the wheel/pedals/seat, delete the rest of the duplicate.

    Move your character close to the seat, add FullBodyBipedIK to it, assign the bones duplicated above as Targets, set position/rotation weights to 1 for those effectors. That's it.

    Best,
    Pärtel
     
  17. Cleverlie

    Cleverlie

    Joined:
    Dec 23, 2013
    Posts:
    205

    Hi Partel, So I created the timeline clips and tracks, now I have integrated the wrapper and the update functionality both in a mixer behaviour (the mixer uses the clips, which contain sliders (float fields) to control the weights of the FBBIK) so the use case is, create a FBBIK Control Track in the timeline, assign a couple of clips, this clips have sliders to control the state of the weights of the FBBIK, assign the FBBIK component to the track binding, and then it works, the problem still relies on that the Animation of the character overrides the FBBIK manipulations, WHEN you are not in play mode, meaning this solution works for play mode, but in the editor the Animator Track still overrides the custom FBBIK control track.

    If you need more info or an example project, I can give you what I coded so far, but I really think this could be useful as an out of the box feature of Final IK, I can imagine many use cases where developers need to do cutscenes with timeline and final IK working together, and I was surprised to find that FinalIK doesnt have this compatibility yet :/
     
  18. teighshiclbw

    teighshiclbw

    Joined:
    Jun 26, 2018
    Posts:
    34
    Hi, Partel!

    I am tring to make AimIk for a character that holds a bow.

    So I follow this video



    When I set all spine bones's weight to 1, everything looks fine. except for spine, it bends too much.

    So I reduce spine bone weights to 0.1, 0.2, 0.3, when character aim forward,everything still looks good, but when character aim up, spine looks good, his right hand not match with bowstring anymore.

    I don't want character's spine bend too much, and I also want his right hands match with bowstring.
    You got any idea how to achieve this?
    Thanks in advance~!

    Code:
    Code (CSharp):
    1. using RootMotion.FinalIK;
    2. using System.Collections;
    3. using System.Collections.Generic;
    4. using UnityEngine;
    5.  
    6. public class CharacterBehaviour : MonoBehaviour
    7. {
    8.     public Animator characterAnimator;
    9.     public Animator bowAnimator;
    10.  
    11.     public AimIK aimIK;
    12.     public Transform aimTarget;
    13.     public FullBodyBipedIK fbbIK;
    14.  
    15.     IKEffector _leftHandIKEffector;
    16.     IKEffector _rightHandIKEffector;
    17.     Transform _leftHandBone;
    18.     Transform _rightHandBone;
    19.     Quaternion _leftHandRotationRelative;
    20.  
    21.     void Start()
    22.     {
    23.         _leftHandIKEffector = fbbIK.solver.leftHandEffector;
    24.         _rightHandIKEffector = fbbIK.solver.rightHandEffector;
    25.         _leftHandBone = _leftHandIKEffector.bone;
    26.         _rightHandBone = _rightHandIKEffector.bone;
    27.  
    28.         fbbIK.solver.OnPostUpdate += OnPostFBBIK;
    29.     }
    30.  
    31.     void Update()
    32.     {
    33.         if (Input.GetMouseButtonDown(0))
    34.         {
    35.             characterAnimator.SetTrigger("Hold");
    36.             bowAnimator.SetTrigger("Hold");
    37.         }
    38.         if (Input.GetMouseButtonUp(0))
    39.         {
    40.             characterAnimator.SetTrigger("Shoot");
    41.             bowAnimator.SetTrigger("Shoot");
    42.         }
    43.     }
    44.  
    45.     void LateUpdate()
    46.     {
    47.         aimIK.solver.axis = aimIK.solver.transform.InverseTransformDirection(transform.forward);
    48.  
    49.         // Find out how the left hand is positioned relative to the right hand rotation
    50.         Vector3 toLeftHandRelative = _rightHandBone.InverseTransformPoint(_leftHandBone.position);
    51.  
    52.         // Rotation of the left hand relative to the rotation of the right hand
    53.         _leftHandRotationRelative = Quaternion.Inverse(_rightHandBone.rotation) * _leftHandBone.rotation;
    54.  
    55.         // Match AimIK target with the LookAtIK target
    56.         aimIK.solver.IKPosition = aimTarget.position;
    57.  
    58.         // 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
    59.         aimIK.solver.Update();
    60.  
    61.         // Position the left hand on the gun
    62.         _leftHandIKEffector.position = _rightHandBone.TransformPoint(toLeftHandRelative);
    63.         _leftHandIKEffector.positionWeight = 1f;
    64.  
    65.         // Making sure the right hand won't budge during solving
    66.         _rightHandIKEffector.position = _rightHandBone.position;
    67.         _rightHandIKEffector.positionWeight = 1f;
    68.         fbbIK.solver.GetLimbMapping(FullBodyBipedChain.RightArm).maintainRotationWeight = 1f;
    69.  
    70.         // Update FBBIK
    71.         fbbIK.solver.Update();
    72.     }
    73.  
    74.     void OnPostFBBIK()
    75.     {
    76.         _leftHandBone.rotation = _rightHandBone.rotation * _leftHandRotationRelative;
    77.     }
    78. }
    79.  
    Project (Unity 5.6.5, no Final IK included):
    http://www.mediafire.com/file/8839l49i42d4195/IKTest2.rar/file
     
  19. TheWarper

    TheWarper

    Joined:
    Nov 3, 2013
    Posts:
    88
    Hello, I've been trying to use VR IK for a couple days now and have an issue where my humanoid rig is rotated 90 degrees. Also, the hands are bent strangely.

    I've modeled it after the Pilot character in the VRIK (Steam VR).unity scene but can't find any other prospective knobs to turn.

    Also, what is up with the pilot's "not-quite" A-pose? Do I have to put my rig in that same pose?

    Has anyone encountered this?
    Thanks, BR, BW
     

    Attached Files:

  20. netpost

    netpost

    Joined:
    May 6, 2018
    Posts:
    139
    So basically you would make a duplicate of your model and pose it to the seat and the steering wheel. Then take the hand, foot and thigh bones of that duplicate and parent them to the wheel/pedals/seat, delete the rest of the duplicate.

    Move your character close to the seat, add FullBodyBipedIK to it, assign the bones duplicated above as Targets, set position/rotation weights to 1 for those effectors. That's it.


    Is there any tutorials that show a step by step way to do this? That would help very much. I am kind of slow. ;)
     
  21. Partel-Lang

    Partel-Lang

    Joined:
    Jan 2, 2013
    Posts:
    1,965
    Hey,
    If you could send me that example project, that would be great, thanks!

    Hey,
    The main issue there is that the bow is not held bu the right hand as the weapon in the Angry Bots demo. So I changed the script to use primary hand and secondary hand instead and replaced the bone refs. Also replaced right arm bones in AimIK with left arm bones and parented the Aim Transform to the bow. Here's the fixed scene and script.

    Hey,
    The pilot's pose is irrelevant, VRIK should work with any pose as long as the limbs have slight bend in their natural bending direction as VRIK samples the bending angle in Start to know which way to bend the limbs.

    If your character is rotated weirdly, it may be if your character it's not facing the positive Z axis of it's root (the Transform assigned as Root in VRIK References).

    If hte arms are bending weird, it might happen if you copied VRIK from another avatar. Right-click on VRIK header and select "Guess Hand Orientations" from the context menu.

    If that doesn't help, please send me the fbx via PM, I'll take a closer look.

    Hey,
    I'm sorry, I don't have a tutorial for that specific thing. There is this tutorial of creating IK targets and posing them to an object. It shows the old FBBIK inspector there, but the workflow is the same.

    Best,
    Pärtel
     
    TheWarper likes this.
  22. netpost

    netpost

    Joined:
    May 6, 2018
    Posts:
    139
    Great! Thank you.
     
  23. teighshiclbw

    teighshiclbw

    Joined:
    Jun 26, 2018
    Posts:
    34
    THANK YOU!
    It's really hard to meet a enthusiastic people like you.

    I encounter a problem I didn't noticed before.

    After changing spine bone weights to 0.1, 0.2, 0.3.
    When chracter looks up, his right elbow looks pretty weird, I want right elbow behaviour like left image as much as possible.
    What's the proper way to do this?
     
  24. Mikekan13

    Mikekan13

    Joined:
    May 30, 2015
    Posts:
    72
    Hey Partel,

    So this is kinda two parts. I don't really like the results I have gotten with melee props in VR. They always just feel too wobbly. Also, I am trying to have physics work with the props so players could do things like using a pole to climb between two walls. I am using VRTK, Final IK, and Puppetmaster. I added a video to better explain. Basically, I need to make a better working prop that could also support the player. Kind of how this pole that was attached to the players model does in this video. It is kind of a complex problem and I didn't want to go too far into thinking of a solution before I got some ideas of what props could do to help me achieve this.
     
  25. Devistute

    Devistute

    Joined:
    Aug 23, 2014
    Posts:
    32
    Does Final IK have some sort of script, or a way to automatically manage the Feet to correspond going up and down stair steps realistically? Animation is one thing to change when going up or down the stairs, but for extra realism
    is the reason i ask this question.

    Asking this mostly because i have been only using the IK for Hands and upper body parts, haven't even touched the legs other than adding Grounder to it for leggy IK.
     
  26. Partel-Lang

    Partel-Lang

    Joined:
    Jan 2, 2013
    Posts:
    1,965
    Hey,
    It is Spine2 that is doing it. If you decrease it's weight it will not rotate much with the bow so the elbow direction will be different from the arrow direction. You could try parenting a new gameobject to the bow, moving it back and to the right side, behind the character, then assign it as "Bend Goal" for the right arm in FBBIK and set "Bend Goal Weight" to 1.

    Hey,
    That's some pretty experimental stuff you are working on, haven't tried to combine everything like that myself. Have you tried to use the "Additional Pin" of the prop to decrease it's wobbliness? Other than that, increasing Muscle Spring in PuppetMaster, reducing fixed time step, increasing Solver Iteration Count might help.
    In the latest PM there is a "VR Boxing" package in the _Integration folder, you can enable a prop object under one of the hands there. The script that runs the prop is DynamicAnchor. It's not the PuppetMaster prop system, but an independent prop object driven physically by that script.

    Hey,
    Sorry, don't have a script for adjusting the feet horizontally for stairs. The Grounder only applies vertical foot placement and angular alignment correction.

    Best,
    Pärtel
     
  27. VrTechEx

    VrTechEx

    Joined:
    Aug 4, 2013
    Posts:
    30
    Hi, I've got a question about FBBIK Grounder

    This is how it looks without obiCloth
    The cloth weight is transferred from the rigged character as I followed from the TrenchCoat Example.

    *Final IK + Grounder has been used



    Once I attached the ObiCloth this happens.



    What I used
    - Obi Slover
    - Final IK FBBIK
    - Grounder



    This is the Script Execution Order



    It seems like when I turn the grounder weight to 0, everything is working fine. So maybe you know the clues about what is happening.

    Please Help! I try to solve this problem for a week but I can't.
    Thank you in advance!
     
  28. teighshiclbw

    teighshiclbw

    Joined:
    Jun 26, 2018
    Posts:
    34
    Thanks Again!
     
  29. Volkerku

    Volkerku

    Joined:
    Nov 23, 2016
    Posts:
    50
    How would I go about fading between a humanoid animation clip and the lookAtIK script and controller. I want to use timeline and an activation track to sequence animation with the lookAt ruction of FinalIK.
     
  30. makeshiftwings

    makeshiftwings

    Joined:
    May 28, 2011
    Posts:
    3,301
    Is there a way with the Interaction System to slide a character into the closest place in a Range where it can reach the Interaction Object? For example, I want the player to be able to press the interaction button when he's within 2 meters of a lever but that's too far away to actually grab it, so I want to slide the whole character to within range and then trigger the interaction.
     
  31. unity_3drapidsolutions

    unity_3drapidsolutions

    Joined:
    Nov 18, 2017
    Posts:
    20
    Hi Pärtel,

    Quick question - do you have any insight as the best way to allow for jumping and climbing in first person when within VRIK? All of my early attempts have failed, and I am curious if they are due to the animated locomotion package handling horizontal instead of vertical motion. I plan to soon purchase the puppetmaster asset as well, will that make it easier to manage these activities, since the characters may be easier to manage when ragdolls?
     
  32. BernieRoehl

    BernieRoehl

    Joined:
    Jun 24, 2010
    Posts:
    67
    Hi Pärtel

    I think I've found a (tiny) issue with VRIK_Calibrator.

    If the left foot, right foot and pelvis targets are all null (which they are if you only have head and two controllers), the rootController object is destroyed. That's fine, but a few lines later it's referenced here:

    data.pelvisTargetRight = rootController.pelvisTargetRight;

    This throws an exception.
     
  33. Partel-Lang

    Partel-Lang

    Joined:
    Jan 2, 2013
    Posts:
    1,965
    Hey,
    Played around with Obi a bit... Seems like ObiCloth disables the Animator and updates it via ObiAnimatorController when the obi solver begins, then feeds the results to the cloth for processing. That does not allow Final IK to be updated after the animation and before the cloth simulation, so it will be out of sync no matter how you set up the Script Execution Order.

    So basically, you will need to make sure that whenever Animator is updated, Final IK will also be updated and that must be before the cloth solver begins. To do that, you'll need to make a few changes to ObiAnimatorController.cs.
    First, add
    Code (CSharp):
    1. using RootMotion.FinalIK;
    to the top of the file. It will not compile, because Obi uses assembly definition files to allow unsafe code and stuff. So you'll also need to create assembly definitions for Final IK:

    1. Add a new assembly definition file (Create/Assembly Definition) to Plugins/RootMotion, name it "RootMotion". Then another one to Plugins/RootMotion/Editor, name it "RootMotionEditor".
    2. Select the RootMotionEditor.asmdef file, add RootMotion.asmdef to the Assembly Definition References, deselect every platform except Editor.
    3. Go to Obi/Scripts/Obi.asmdef and add RootMotion.asmdef to it's Assembly Defition References.
    4. If you get an error about some ScriptableObject stuff when you select an object with IK, just right-click on Plugins/RootMotion and click on Reimport, it's a Unity bug.

    Now you can reference RootMotion scripts from Obi scripts. continue to edit ObiAnimatorController like so:

    1. Add this:

    Code (CSharp):
    1.  public IK[] IKComponents;
    2.  
    3.         private void Start()
    4.         {
    5.             foreach (IK ik in IKComponents)
    6.             {
    7.                 ik.enabled = false;
    8.             }
    9.         }
    2. Add this to the line just after animator.Update(updateDelta);
    Code (CSharp):
    1. foreach (IK ik in IKComponents)
    2.                 {
    3.                     ik.GetIKSolver().Update();
    4.                 }
    3. Assign all the IK components you wish to use to the ObiAnimatorController in the Editor.

    That makes sure the IK components get updated in sync with Obi.

    Hey,
    There's no official Timeline support yet, sorry. It would have to be custom scripted for now, using
    Code (CSharp):
    1. https://docs.unity3d.com/ScriptReference/Playables.PlayableBehaviour.ProcessFrame.html
    Final IK components can be updated in Editor too, here's an example.

    Hey,
    Could be done like so (changing UserControlInteractions.cs a bit):

    Code (CSharp):
    1. if (Input.GetKey(KeyCode.E)) {
    2.                 if (interactionSystem.TriggerInteraction(closestTriggerIndex, false))
    3.                 {
    4.                    StartCoroutine(MoveToTrigger(interactionSystem.triggersInRange[closestTriggerIndex].transform, interactionSystem.GetClosestInteractionRange()));
    5.                 }
    6.             }
    Code (CSharp):
    1. private IEnumerator MoveToTrigger(Transform trigger, InteractionTrigger.Range range) {
    2.             while (interactionSystem.IsInInteraction(range.interactions[0].effectors[0]))
    3.             {
    4.                 transform.position = Vector3.Lerp(transform.position, trigger.position, Time.deltaTime * 5f);
    5.                 yield return null;
    6.             }
    7.         }
    Hey,
    You'll basically just need to make the avatar root position.y match the character controller (the object that you move when you climb or jump) position.y.
    PuppetMaster would not make these activities easier. Adding ragdoll dynamics to your first person model would make things more complicated, it is some pretty experimental avant garde stuff mixing VR and physics like that.

    Hey,
    Thanks, this issue has been fixed for the next version. In the meanwhile, please add if (rootController != null) to the begging of that line.

    Cheers,
    Pärtel
     
  34. makeshiftwings

    makeshiftwings

    Joined:
    May 28, 2011
    Posts:
    3,301
    Perfect, thank you!
     
    Partel-Lang likes this.
  35. VrTechEx

    VrTechEx

    Joined:
    Aug 4, 2013
    Posts:
    30
    @Partel-Lang You are the best! Partel. No regrets buying your assets. I've all of your products :D
     
    Partel-Lang likes this.
  36. Mikekan13

    Mikekan13

    Joined:
    May 30, 2015
    Posts:
    72
    Thanks! The Additional Pin was something I always just looked over. That helped tremendously! I still have to figure out how I am going to get the object to affect the players rigidbody. Ultimately I would like the ability to take something like a sword, stick it into a wall, and use it as a way to climb.
     
  37. Rouder

    Rouder

    Joined:
    Nov 14, 2018
    Posts:
    1
    hi!This is a great plugin.you're a genius.
    I am using FBBIK and RotationLimit to pose a pose for the character.Is there any way to handle the problem of the hand going through the head?
     

    Attached Files:

  38. Volkerku

    Volkerku

    Joined:
    Nov 23, 2016
    Posts:
    50
    I worked through your InteractionSystem Part 1 tutorial (which is great by the way), What I can't figure out, how do I change the duration of an interactionObject. An increase the duration of the PositionWeight curve dos not do this.
    Also, if pickup is selected, the character reaches for the object, picks it up and then instantly the arm jumps back to the original position without blending?
    Thanks, Volker
     
  39. Partel-Lang

    Partel-Lang

    Joined:
    Jan 2, 2013
    Posts:
    1,965
    hey,
    I think the easiest would be to do this kinematically, I mean, while the sword is sticking into a wall, apply the delta position of your hand inversely to the root of the entire rig. Haven't tried it myself, but makes sense I guess...

    Hey and thanks!
    There's no built in solution for this. I think the best way to do something like this would be making a script that just keeps the hand target at a specific min radius from the head, making sure the hand target is not set too close to the head.

    Hey,
    Did you adjust the length of the PositionWeight curve in runtime? It doesn't work like that, because the curve length is cached when InteractionSystem initiates to save some performance.

    About picking up, did you set up the interaction object like the Ball example in the "Interaction" demo? You should make the PositionWeight curve go up to 1 and back to 0, then add a pick up event to a time in the interaction when PositionWeight is 1.

    Best,
    Pärtel
     
  40. Partel-Lang

    Partel-Lang

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

    I'll be on vacation until the 7th. Please leave your questions here, I'll answer as soon as I get back.
    Thank you for your patience!

    Cheers,
    Pärtel
     
    Mikekan13 and keeponshading like this.
  41. Mikekan13

    Mikekan13

    Joined:
    May 30, 2015
    Posts:
    72
    Hey! Hope your vacation was great. I am trying to isolate ragdoll to arms in VR. Essentially if an arm gets to far away from the controller it unpins and should drop loosely to the side of the body. This works if I manually do it when the editor is running by setting the pin weight, muscle weight, and muscle damper to 0 but when I do this with code, the arms lock in front of the body without ragdoll properties.
     
    Last edited: May 1, 2019
  42. halley

    halley

    Joined:
    Aug 26, 2013
    Posts:
    729
    @Partel-Lang, is there a reason the body effector only has position-weight but not rotation-weight? Trying to force a little pelvic action seems tough. (Posing through a dive or fall, getting onto a motorbike, rocking hips in a dance, twisting mid-body left-to-right, etc.)
     
  43. marvalshot

    marvalshot

    Joined:
    Dec 29, 2013
    Posts:
    158
    I apologize if asked but Unity 2019 support/status?
     
  44. Politician

    Politician

    Joined:
    Apr 27, 2019
    Posts:
    5
    Why enabling the FBBIK Grounder causing bones to flicker especially when moving on ascent or descent (10 sec)? Adding pelvis weight helps a bit but cause other glitches. Enabling or disabling Animator IK doesn't do anything with that neither do other settings.
     

    Attached Files:

  45. SpyrosUn

    SpyrosUn

    Joined:
    Nov 20, 2016
    Posts:
    83
    Hi there, i grabbed the opportunity to get Final IK on sale, thanks ! :)

    I haven't messed much with animations before but I will be doing some customizations for a new game we are working on and I thought that Final IK would be very useful, so i bought it.

    My question is, I was wondering if it would make sense to buy Umotion Pro, the animation editor, as well, or if it's basically similar to Final IK and would be redundant. Would you see these two assets integrating meaningfully ? Or it just wouldn't make sense to also get Umotion Pro now that I got Final IK?

    Thanks!
     
  46. seanybaby2

    seanybaby2

    Joined:
    May 17, 2013
    Posts:
    108
    Questin about optimizing VRIK.

    I've been reading through this forum on optimizing VRIK and I've made a good bit of progress.

    I have an online game with 24 players using VRIK, I've made a good bit of optimization but I still need to do more.

    Currently, I am disabling VRIK when the meshes are not visible, I'm also disabling VRIK when meshes are far from the player camera.

    Each VRIK setup takes about .6MS from the main thread. So if a bunch of players are close to the main player and in visible range. This really hogs up our CPU cost. We also have AI, a big map, and lots of other things so we can't dedicate that many resources to VRIK.

    Are there any built-in options to optimize VRIK? I saw an iteration option for FBIK but I don't see one for VRIK. I also saw some posts about turning off the animator and the VRIK then updating them on a tick rate but this was creating some issues when I tried it. Any advice is appreciated.
     
  47. Mikekan13

    Mikekan13

    Joined:
    May 30, 2015
    Posts:
    72

    Why use VRIK for anyone but the local player? Couldn't everyone else be a FBIK?
     
  48. seanybaby2

    seanybaby2

    Joined:
    May 17, 2013
    Posts:
    108
    I guess you're right. I just set it up so that they're using VRIK because it was already done and easier. I could try and switch it over.

    If there is a way to do this with VRIK though that would be preferable... it took me a while to make VRIK look good for everyone.
     
  49. Mikekan13

    Mikekan13

    Joined:
    May 30, 2015
    Posts:
    72
    I feel like using VRIK for every player will never be as efficient as just mapping their points but maybe not.
     
  50. KospY

    KospY

    Joined:
    May 12, 2014
    Posts:
    83
    Does it's possible to disable the locomotion IK / tip toes on VRIK?
    I don't need it as I'm using my own solution however I tried to set everything to 0 weight but the character legs animations are still modified by the IK. It look really weird as the character run and tip toes at the same time.
    Thanks for your help!