Search Unity

  1. Going to #UniteBerlin? Bring a buddy & get 25% off the 2nd ticket! More info here.
    Dismiss Notice
  2. Famed game designer and creator of The Sims, SimCIty, and Spore is looking for a 3D artist to join their team. Join the challenge.
    Dismiss Notice
  3. Unity 2017.4 has arrived! Read about it here.
    Dismiss Notice
  4. ARCore is out of developer preview! Read about it here.
    Dismiss Notice
  5. Magic Leap’s Lumin SDK Technical Preview for Unity lets you get started creating content for Magic Leap One™. Find more information on our blog!
    Dismiss Notice
  6. We've opened a new World Building sub-forum to faciltate all your world building discussions! Drop in and ask any ProBuilder, ProGrids, or PolyBrush questions.
    Dismiss Notice
  7. Want to see the most recent patch releases? Take a peek at the patch release page.
    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,602
    I test all major versions from 5.3.6 up.
    Just tested on 2017.2.2 to make sure, still not seeing it. Also tried parenting a sphere with collider and kinematic rigidbody. Were you just attaching a collider to the head bone or did you do it some other way? Do you have any script on that?

    Does it help if you set Animator's update mode to "Animate Physics"?

    Hey,
    Do you have locomotion enabled in VRIK? Because that's the only thing moving the root of the character. Might help narrowing down the issue.

    I've tested VRIK extensively in real games, never seen that issue appear though, so it would help immensely if I could get some kind of a repro from you guys.

    Best,
    Pärtel
     
  2. DirtyHippy

    DirtyHippy

    Joined:
    Jul 17, 2012
    Posts:
    186
    In SolverManager::UpdateSolverExternal you have:

    if (!enabled) return;

    I manually update all of my solvers, including in this case, derived HandPosers. I've had to comment out this line so I could disable the component and update it manually. Is there a better way to do this?
     
  3. warreneng

    warreneng

    Joined:
    Mar 13, 2017
    Posts:
    5
    Thanks for your guidance. I'm going to try this out today. Right now I'm using VRIK 1.6 solely for good arm/shoulder solving, but I'm using Mecanim animation to animate the rest of the player's body. The observable difference between 1.6 and 1.7 is that the player now has a bend in the spine when crouching. I liked how my animation blending had already solved the pose, but there seems to be no way to disable VRIK 1.7 spine solving. This happens even when I give the VRIK component no references to the head/spine bones. Could this be the update to IKSolverVRSpine?
     
  4. MariusRu

    MariusRu

    Joined:
    Oct 15, 2015
    Posts:
    12
    Hi Pärtel,

    I'm trying to instantiate characters with FBBIK at runtime as discussed here: https://groups.google.com/forum/#!msg/final-ik/0gtnAIMBYnU/35knbZczBwAJ
    While adding the FBBIK component works well, I encountered a problem when creating the head effector IK. Unity gives me this error:

    NullReferenceException: Object reference not set to an instance of an object
    RootMotion.FinalIK.FBBIKHeadEffector.Awake () (at Assets/FinalIK/RootMotion/FinalIK/IK Solvers/FBBIKHeadEffector.cs:121)
    UnityEngine.GameObject:AddComponent()
    GenericIK:Start() (at Assets/RuntimeIK.cs:53)

    Line 53 in RuntimeIK.cs is this:
    HeadTarget.AddComponent<FBBIKHeadEffector>();

    Interestingly, my HeadTarget does get an FBBIKHeadEffector in the inspector before the error is thrown. Is there an obvious reason for this, or do you need my full code?

    Thanks,
    Marius
     
  5. Partel-Lang

    Partel-Lang

    Joined:
    Jan 2, 2013
    Posts:
    1,602
    Hey,
    Ok, normally you manually update IK solvers by disabling the component and calling ik.solver.Update();
    Is the problem that you also need to manually update the HandPoser too?

    Please add this code to Poser.cs:
    Code (CSharp):
    1.  
    2. /// <summary>
    3.         /// For manual update of the poser.
    4.         /// </summary>
    5.         public void UpdateManual() {
    6.             UpdatePoser();
    7.         }
    8.  
    9.  
    Hey,
    Ok I see.. There were some changes to the spine solver because it sometimes bent the spine the wrong way when crouching. I might extract the arm solver of VRIK the same way I did with the LegIK component. Would be more efficient than running the whole VRIK with parts disabled.

    Hey,
    Please update FIK, this problem was fixed with version 1.7.

    Cheers,
    Pärtel
     
    Last edited: Apr 10, 2018
    warreneng likes this.
  6. DirtyHippy

    DirtyHippy

    Joined:
    Jul 17, 2012
    Posts:
    186
    Right. I was just asking since it felt like "UpdateExternal" was essentially meant to be what you are proposing with UpdateManual (). Will you be adding UpdateManual to the API for the next update? If so I will just add that code and use that from now on.

    While we are discussing it, could you make "children" and "StoreDefaultState ()" protected in HandPoser so I can override InitiatePoser without having to change code?

    Finally, can you remove the warnings in FinalIK / samples before you release? Every release I have to pragma out all these warnings, and it would take you, maybe five minutes, to clear them up on your side :). Thanks!
     
  7. wirelessdreamer

    wirelessdreamer

    Joined:
    Apr 13, 2016
    Posts:
    59
    I was putting a demo together for a vr meetup tonight using the finalik leap motion integration. I'm using a vive, and the vrik leap motion integration. After updating rotation offsets for hands and figers, if i face one direction everything lines up:
    upload_2018-4-10_15-40-28.png

    When I look at my hands, with fingers pointing straight up, and rotate my body 360 degress around though, the hands on my wrists stay stationary. So if i spin clockwise, they appear to spin counterclockwise, because they are not rotating. I've tried adjusting a lot off offset rotations, with no success so far.

    uploaded test scene, only needs final ik and vrik package in project to run.
     

    Attached Files:

  8. MariusRu

    MariusRu

    Joined:
    Oct 15, 2015
    Posts:
    12
    You're right, updating to 1.7 solved the problem. Thanks!
     
  9. Mikekan13

    Mikekan13

    Joined:
    May 30, 2015
    Posts:
    28
    It doesn't help. At this point, I feel like I have tried everything and have even broken my puppet master slightly where it seems really jittery. If you could take a look I have sent you the project in PM. Thank you, and sorry for the trouble.
     
  10. tspk91

    tspk91

    Joined:
    Nov 19, 2014
    Posts:
    30
    Hi, we are currently using FinalIK for our space sim. The pilot uses a FullBodyBipedIK with effectors in both hands and head. It has four spine bones and we set all reach to 0.

    In the profiler we are getting 1 ms total aggregating FinalIK calls in hardware equivalent to current gen consoles , which is an eighth of our logic budget, is this to be expected with just one character?
     
  11. Partel-Lang

    Partel-Lang

    Joined:
    Jan 2, 2013
    Posts:
    1,602
    Hey,
    Yeah, I've added those changes to the next version, also children and StoreDefaultState.

    Which warnings were you referring to? I only see a bunch of demo asset import warnings like "File 'Anim MP-40 Standing Front' has rig import warnings. See Import Messages in Rig Import Tab for more details." that show up just once when you import FIK. I'd love to get rid of them, but to my knowledge those can't be pragmad out.

    Hey,
    VRIKLeapMotion script is outdated by now. This is the latest package. It uses VRIKHand.cs instead, please check the demo scene in that. That package was originally made for the previous version of Leap Core Assets, but they have new core assets out now (4.3.4). The script errors introduced with that update in the integration package have been fixed, but I can't really verify it still works as my Leap device has just stopped working altogether.

    Hey,
    I'll take a look at the project you sent me, hold on..

    Hey,
    Not really familiar with the details of console performance, but on a i7 processor you could expect a single instance of FBBIK with the head efftor to take about 0.16ms (SolverManager.LateUpdate + SolverManager.Update in the Profiler). If you disable "Hands Pull Body" in the FBBIKHeadEffector, it goes down to 0.08ms.

    1 ms sounds a lot in that light. Does anything in particular take unproportionately long when you deep profile and expand SolverManager.LateUpdate?
     
  12. tspk91

    tspk91

    Joined:
    Nov 19, 2014
    Posts:
    30
    I tested again with hands pull body disabled. In my computer with an i7-2600, it gives me 0.2 ms with normal profiler, and 0.7 ms with deep profile.

    In the deep profile, it is distributed between IKSolverFullBiped.ReadPose at 0.27ms, IKSolverFullBody.Solve at 0.24ms and IKSolverFullBiped.WritePose at 0.1ms. Below that it is mostly distributed uniformly over the calls.
     
  13. wirelessdreamer

    wirelessdreamer

    Joined:
    Apr 13, 2016
    Posts:
    59
    I just cleared out the old package, and pulled in the new one you posted. It looks like the protection level on handedness may have changed with the current leap motion package: upload_2018-4-12_14-16-45.png \

    side note, editing their sdk and making it public again resolves that issue, just tested the package with current leapmotion and 2017.2 and all seems good. Thanks again.
     
    Last edited: Apr 12, 2018
  14. Partel-Lang

    Partel-Lang

    Joined:
    Jan 2, 2013
    Posts:
    1,602
    Hey,
    Could you try what the Profile says if you just make a new scene, add FBBIK without the head effector?
    Hey,

    Oh, forgot to mention that, the change you made was the right change to make.

    Cheers,
    Pärtel
     
  15. yuyorke

    yuyorke

    Joined:
    Nov 4, 2016
    Posts:
    2
    Hello, I'm trying to create a climbing system using Final IK,
    everything works good but I would like the capsule collider & rigidbody to follow the pivot of the character's mesh. What happens now is that my character climbs correctly but the capsule and rigidbody stay back. Could you suggest the right approach?

    Thank you
     
  16. Partel-Lang

    Partel-Lang

    Joined:
    Jan 2, 2013
    Posts:
    1,602
    Sure, just turn the rigidbody kinematic and move it via script. You could use
    Code (CSharp):
    1. Vector3.Lerp(ik.solver.leftFootEffector.position, ik.solver.rightFootEffector.position, 0.5f)
    or something like that to approximate it's position.
     
  17. kokkorollo

    kokkorollo

    Joined:
    Jan 16, 2013
    Posts:
    9

    Hi Pärtel, Yes, we have locomotion enabled in VRIK.
    I will try to make a video of the problem to let you know where is the problem.
    We are using microsoft immersive reality Lenovo explorer as headset.
     
  18. warreneng

    warreneng

    Joined:
    Mar 13, 2017
    Posts:
    5
    I would really like that functionality, actually. VRIK's arms are great. It's the rest of the body solvers I'm trying to disable.
     
  19. SkyClimbersVR

    SkyClimbersVR

    Joined:
    Jun 27, 2017
    Posts:
    10
    Hi Partel,

    We are using VRIK within our game, and am facing a problem on OVR specifically (not on SteamVR). The player body seems to be stuck on it's y-axis position, and doesn't seem to be following the Tracked Rig. If you go up or down a slope then the IK rig will not follow the y-axis position (it will either be above or below the camera). No such issues occur on SteamVR. Any thoughts on the matter would be appreciated.
     
  20. wirelessdreamer

    wirelessdreamer

    Joined:
    Apr 13, 2016
    Posts:
    59
    Using the VRIKLeapMotion434 package you posted on a morph3d model, the hand and finger rotations are offset, but the offset options that were in the old package don't exist in the new package, Can you add those offsets back in so they'll work with other models as well.

    Thanks
     
  21. wightwhale

    wightwhale

    Joined:
    Jul 28, 2011
    Posts:
    358
    I looked at it some more today and saw the bones are not the same after pulling the gun out as they are before the gun is pulled out. The "Fix Transforms" does have something to do with it because when I activate the aimIK for a frame with the fix transforms checked the aim corrects to the proper location, but if I don't have the fix transforms checked when activating aimIK for a frame the aim doesn't correct to the proper location. How could I force the fix transforms in my update script or is there another way to handle this issue?
     
  22. CptDustmite

    CptDustmite

    Joined:
    Jun 17, 2014
    Posts:
    47
    Hi Partel

    I have set up a VRIK character so I could record animations using VR gear. I recorded the head/hands effector target positions into an animation clip.

    Currently it looks good except for the elbow "popping". I suspect the character's arms are shorter than my own hands + controller length. So when I extend my arm it fully extends the character's arm into totally straight. This results in the elbow popping to fully straight.

    How can I put a rotation limit on the elbow so it never goes to fully straight, it's always partially bent? I tried putting Rotation Limit Angle component on the lower arm bone, but it does not seem to have any effect.

    Thanks
     
  23. Partel-Lang

    Partel-Lang

    Joined:
    Jan 2, 2013
    Posts:
    1,602
    Hey, It's gonna take some time to develop, so I added it to my todo list for the next update.

    Hey,
    VRIK doesn't move the root vertically. It just doesn't know the height to follow. If you want it to follow the tracked rig gameobject, you'll have to do it by script.

    Code (CSharp):
    1. ik.references.root.position = new Vector3(ik.references.root.position.x, trackedRig.position.y, ik.references.root.position.z);
    Hey,
    The new version just uses a different method for the finger rotations so I can't add them back. It might be that the "Palm To Thumb Axis" and "Wrist To Palm Axis" are wrong in VRIK arm settings for that character. Could you right-click on VRIK header and select "Guess Hand Orientations" from the context menu?

    Code (CSharp):
    1. ik.solver.FixTransforms();
    That rotates the bones back to how they were at Start, which is what FIK components normally do in each Update when they are enabled and "Fix Transforms" is checked.

    Hey,
    The latest version of VRIK has automatic hand stretching. It is disabled by default, but you can go into the "VRIK (Basic)" demo scene and copy the "Stretch Curve" over from the Pilot, it's under VRIK's arm settings. Note that there is also "Arm Length Mlp" that you can use to reproportion your arms. The next version will also add leg stretching.

    Cheers,
    Pärtel
     
  24. Daemonhahn

    Daemonhahn

    Joined:
    Oct 5, 2013
    Posts:
    591
    Your asset has been reported to be ILEGALLY bundled with a bunch of stolen assets, please comment here to support punitive action against them once and for all:

    EDIT: all users please comment on this thread to support action against this user: https://forum.unity.com/threads/stolen-assets-scam-master-anim-system.527329/

    Also heard puppetmaster is also in there.

    EDIT2: I mean your asset is stolen by another developer.

    Realized I wrote this a little unclear, i mean to help you as the original author of the assets, not punish you for being stolen from! XD
     
    Last edited: Apr 18, 2018 at 12:54 PM