Search Unity

  1. Unity 2018.3 is now released.
    Dismiss Notice
  2. The Unity Pro & Visual Studio Professional Bundle gives you the tools you need to develop faster & collaborate more efficiently. Learn more.
    Dismiss Notice
  3. Want more efficiency in your development work? Sign up to receive weekly tech and creative know-how from Unity experts.
    Dismiss Notice
  4. Build games and experiences that can load instantly and without install. Explore the Project Tiny Preview today!
    Dismiss Notice
  5. Nominations have been announced for this years Unity Awards. Celebrate the wonderful projects made by your peers this year and get voting! Vote here!
    Dismiss Notice
  6. Want to provide direct feedback to the Unity team? Join the Unity Advisory Panel.
    Dismiss Notice
  7. Improve your Unity skills with a certified instructor in a private, interactive classroom. Watch the overview now.
    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. jfran227

    jfran227

    Joined:
    Dec 29, 2017
    Posts:
    9
    Will I be able to implement a blindfire system featured in escape from tarkov with this asset?

     
  2. AnneDraaisma

    AnneDraaisma

    Joined:
    Jul 14, 2014
    Posts:
    11
    Hi Pärtel,

    I'm working on a monster with FBBIK and I would like to use the interaction system to handle the bite animations. Can I use the Head Effector component with the interaction system? The interaction test GUI only handles the FBBIK effectors.
     
  3. BernieRoehl

    BernieRoehl

    Joined:
    Jun 24, 2010
    Posts:
    54
    I'm trying to play a sitting animation. It works fine if I set the IK position weight to zero, but of course then I lose the head and hand tracking, as shown below:

    upload_2018-2-22_18-31-1.png

    If I instead set the locomotion weight to zero, the legs are stretched out forwards rather than in a natural sitting position, like this:

    upload_2018-2-22_18-45-10.png

    Is there some way to tell VRIK that I really just want it to just handle the upper body, and let the animation control the legs?
     
  4. mrbdrm

    mrbdrm

    Joined:
    Mar 22, 2009
    Posts:
    511
    Hi
    what need to be changed to make interaction system script work with obi cloth?
    aim IK works fine, but interaction system doesn't work.

    PS: obi simulation order already set to "late update"
    tested using Final IK demo scene
     
  5. Partel-Lang

    Partel-Lang

    Joined:
    Jan 2, 2013
    Posts:
    1,757
    Hey, sorry for the delay..
    Its weird I can't see any jerk like that when I play that demo here, but I'm wondering where that weird shoulder motion comes from. Would it be possible for you to send me a repro so I could take a closer look?

    Hey,
    That game does use Final IK, but I'm not sure if that particular part was done with IK. It can be done with FIK nevertheless.

    Hey,
    No, sorry, the head effector was just a hacky way of doing VR IK before VRIK was developed. It can't be used with the Interaction System, but you could just weight the head effector in for the bite and back out with a little custom script.

    Hey,
    Setting locomotion weight to 0 would let the animation control the legs. The legs are stretched out like that probably because the root of the character is somewhere in front of the chair. Try moving the root closer to the chair. Btw, there is a seated VRIK example in the "VRIK (Basic)" demo.

    Hey,
    Update to the latest FIK version, it changed how the InteractionSystem updates. It now runs whenever the FBBIK component runs. Even if you have Obi simulation set to late update, it might run before the IK as Final IK components set themselves to a very high value in the Script Execution Order. Set Obi's to a higher value than FullBodyBipedIK.

    Best,
    Pärtel
     
  6. h33t92

    h33t92

    Joined:
    Aug 16, 2017
    Posts:
    1
    Hello Pärtel,
    Thanks for this wonderful asset. It has helped me solve a lot of problems.
    Im stuck at something which Ive not been able to solve as im a beginner in this.
    I am using VRIK for a Humanoid. Tracking the head and the hands with the controllers. As the player is moving forwards the hand and head movements work perfectly but what i want is that when the player rotates his head, the legs should rotate to a certain degree but the feet should be fixed but moving (with the player(parent gameobject) having a rigidbody on it as i am applying force to it).

    When I set locomotion to zero, the feet move with the player but also rotate. If I use Locomotion set to 1 and setting "Relax Leg Twist Min Angle" to180 (and setting max velocity, step speed and velocity factor to zero), the feet don't rotate (when i rotate the head) BUT they get fixed in place. so when I am moving my player (Rigidbody) forwards The model gets left behind as the feet are held in the same exact place they were at the start. Any solutions to have that NO rotation behavior of feet but still they move with their parent without getting fixed up in place?

    I mean is it possible to have one transform which affects the rotation of those feet and another to affect their position?
    Thanks
     
    Last edited: Feb 26, 2018
  7. mrbdrm

    mrbdrm

    Joined:
    Mar 22, 2009
    Posts:
    511
    worked, thank you very much
     
  8. BernieRoehl

    BernieRoehl

    Joined:
    Jun 24, 2010
    Posts:
    54
    Sure enough, that was the problem. Thanks, Pärtel !
     
  9. trappist-1

    trappist-1

    Joined:
    Mar 26, 2017
    Posts:
    337
    I have been having a lot of trouble with VRIK for the last couple of months with the way it tracks feet and other ik targets.

    Firstly, when I have a hip tracker, the hips are always pointing downward slightly and I can not figure out how to get the rotation of the hips so that it points straight like the tPose. I have tried with animator enabled/disabled and have also tried rotating the offset_target, and I find it works ok except for rotating around the forward/up plane (as if gimbal lock is occuring).
    Also the chest does not rotate at all based on the target's rotation, it only points at the offset position????

    Second, when the feet have trackers i notice that they still slide around and the feet are not 100% connected to the tracker like I would expect, regardless of the settings for locomotion weight, plant feet, animator enable/disable or the scale of the armature. How do I connect the feet to offset targets so that they are always where the target offset is????

    Lastly, when I kneel down, or sit/lay on the ground I see the chest flips around backwards????? During this test I had all ik targets/bend goals set with offset targets, the minimum head height set to 0, and was in full view of the lighthouses. I could clearly see the trackers were in correct location however the ik skeleton went crazy as the head got near the floor (or kneeling down low). Not sure but possibly occurs when hips are pointing almost straight up/down too? Is it possible to have this solver work for standing, sitting, kneeling and laying down??
     
    Last edited: Feb 28, 2018
  10. Partel-Lang

    Partel-Lang

    Joined:
    Jan 2, 2013
    Posts:
    1,757
    Hey,
    Set locomotion weight to 0 and assign Target transforms for the legs, they will become the footsteps that's position/rotation you can control however you please.

    Hey,
    Are you using the latest version of Final IK (1.7)? You can check version in Plugins/RootMotion/FinalIK/FinalIK ReadMe.
    Asking because some of these issues like foot target inaccuracy when using bend goals have been fixed.

    Best,
    Pärtel
     
    trappist-1 likes this.
  11. trappist-1

    trappist-1

    Joined:
    Mar 26, 2017
    Posts:
    337
    Thanks for that quick response! And I was using 1.6.1, so I just updated to latest version.

    I now notice the feet seem better, but the knees are flipped around completely backwards. Also something I never noticed before is that in 1.7 if I do a round house kick, the oppisite leg twists up. In the previous version both legs seemed completely independent, which was good for what Im doing, but now if i move one leg and hold the other completely still, it still moves....

    Also the hips rotation issue is still present and I cannot rotate on the up/forward plane. I have no way of knowing if the armature or avatar I am using has something wrong with it, and one of the biggest mysteries to me about FinalIK is in regards to bone orientation. I mean does it even matter what orientation Blender exports the bones? Or is there a preferred orientation (the bone orientations in my rigs are not the same as the dummy or pilot)?

    Not sure what changed but I liked the way the offsets worked in 1.6, now they seem to be very different and I hope I won't have to restructure my entire application.
     
    Last edited: Feb 28, 2018
  12. Partel-Lang

    Partel-Lang

    Joined:
    Jan 2, 2013
    Posts:
    1,757
    Hey,
    Sent you a PM to share the latest.
     
    trappist-1 likes this.
  13. CentViRe

    CentViRe

    Joined:
    Dec 6, 2016
    Posts:
    8
    @Partel-Lang
    Hi have huge problem with building VRIK to Oculus and Vive headsets with VRTK.
    Controllers have different position and rotation. Tried some customization but it no working properly.
     
  14. manuelgoellnitz

    manuelgoellnitz

    Joined:
    Feb 15, 2017
    Posts:
    5
    @Partel-Lang
    Hi we are using VRIK (1.7) with VRIKAnimatedLocomotion from this Thread and run into big problem: The localposition is set to NaN at some point. This leads to lots of error messages and in disappearing of the character-model.
    It occured (one time, but not every time) when the user put his VIVE headset outside of the Lighthouse covered Area and came back.

    Here are some of the error messages (all of them occur multiple times):
    Assertion failed on expression: 'CompareApproximately(det, 1.0F, .005f)'
    UnityEngine.Quaternion:INTERNAL_CALL_FromToRotation(Vector3&, Vector3&, Quaternion&)
    UnityEngine.Quaternion:FromToRotation(Vector3, Vector3) (at C:\buildslave\unity\build\artifacts\generated\common\runtime\MathBindings.gen.cs:95)
    RootMotion.FinalIK.VirtualBone:SwingRotation(VirtualBone[], Int32, Vector3, Single) (at Assets\Plugins\RootMotion\FinalIK\IK Solvers\IKSolverVRUtilities.cs:60)
    RootMotion.FinalIK.VirtualBone:SolveFABRIK(VirtualBone[], Vector3, Vector3, Single, Single, Int32, Single, Vector3) (at Assets\Plugins\RootMotion\FinalIK\IK Solvers\IKSolverVRUtilities.cs:208)
    RootMotion.FinalIK.Spine:FABRIKPass(Vector3, Vector3) (at Assets\Plugins\RootMotion\FinalIK\IK Solvers\IKSolverVRSpine.cs:399)
    RootMotion.FinalIK.Spine:Solve(VirtualBone, Leg[], Arm[]) (at Assets\Plugins\RootMotion\FinalIK\IK Solvers\IKSolverVRSpine.cs:375)
    RootMotion.FinalIK.IKSolverVR:Solve() (at Assets\Plugins\RootMotion\FinalIK\IK Solvers\IKSolverVR.cs:360)
    RootMotion.FinalIK.IKSolverVR:OnUpdate() (at Assets\Plugins\RootMotion\FinalIK\IK Solvers\IKSolverVR.cs:291)
    RootMotion.FinalIK.IKSolver:Update() (at Assets\Plugins\RootMotion\FinalIK\IK Solvers\IKSolver.cs:61)
    RootMotion.FinalIK.IK:UpdateSolver() (at Assets\Plugins\RootMotion\FinalIK\IK Components\IK.cs:27)
    RootMotion.SolverManager:LateUpdate() (at Assets\Plugins\RootMotion\Shared Scripts\SolverManager.cs:113)

    [C:\buildslave\unity\build\Runtime/Math/Quaternion.cpp line 426]
    (Filename: Assets/Plugins/RootMotion/FinalIK/IK Solvers/IKSolverVRUtilities.cs Line: 60)

    Assertion failed on expression: 'fRoot >= Vector3f::epsilon'
    UnityEngine.Quaternion:INTERNAL_CALL_FromToRotation(Vector3&, Vector3&, Quaternion&)
    UnityEngine.Quaternion:FromToRotation(Vector3, Vector3) (at C:\buildslave\unity\build\artifacts\generated\common\runtime\MathBindings.gen.cs:95)
    RootMotion.FinalIK.VirtualBone:SwingRotation(VirtualBone[], Int32, Vector3, Single) (at Assets\Plugins\RootMotion\FinalIK\IK Solvers\IKSolverVRUtilities.cs:60)
    RootMotion.FinalIK.VirtualBone:SolveFABRIK(VirtualBone[], Vector3, Vector3, Single, Single, Int32, Single, Vector3) (at Assets\Plugins\RootMotion\FinalIK\IK Solvers\IKSolverVRUtilities.cs:208)
    RootMotion.FinalIK.Spine:FABRIKPass(Vector3, Vector3) (at Assets\Plugins\RootMotion\FinalIK\IK Solvers\IKSolverVRSpine.cs:399)
    RootMotion.FinalIK.Spine:Solve(VirtualBone, Leg[], Arm[]) (at Assets\Plugins\RootMotion\FinalIK\IK Solvers\IKSolverVRSpine.cs:375)
    RootMotion.FinalIK.IKSolverVR:Solve() (at Assets\Plugins\RootMotion\FinalIK\IK Solvers\IKSolverVR.cs:360)
    RootMotion.FinalIK.IKSolverVR:OnUpdate() (at Assets\Plugins\RootMotion\FinalIK\IK Solvers\IKSolverVR.cs:291)
    RootMotion.FinalIK.IKSolver:Update() (at Assets\Plugins\RootMotion\FinalIK\IK Solvers\IKSolver.cs:61)
    RootMotion.FinalIK.IK:UpdateSolver() (at Assets\Plugins\RootMotion\FinalIK\IK Components\IK.cs:27)
    RootMotion.SolverManager:LateUpdate() (at Assets\Plugins\RootMotion\Shared Scripts\SolverManager.cs:113)

    [C:\buildslave\unity\build\Runtime/Math/Quaternion.cpp line 455]
    (Filename: Assets/Plugins/RootMotion/FinalIK/IK Solvers/IKSolverVRUtilities.cs Line: 60)

    Look rotation viewing vector is zero
    UnityEngine.Quaternion:INTERNAL_CALL_LookRotation(Vector3&, Vector3&, Quaternion&)
    UnityEngine.Quaternion:LookRotation(Vector3, Vector3) (at C:\buildslave\unity\build\artifacts\generated\common\runtime\MathBindings.gen.cs:107)
    RootMotion.FinalIK.VirtualBone:GetDirectionToBendPoint(Vector3, Single, Vector3, Single, Single) (at Assets\Plugins\RootMotion\FinalIK\IK Solvers\IKSolverVRUtilities.cs:171)
    RootMotion.FinalIK.VirtualBone:SolveTrigonometric(VirtualBone[], Int32, Int32, Int32, Vector3, Vector3, Single) (at Assets\Plugins\RootMotion\FinalIK\IK Solvers\IKSolverVRUtilities.cs:151)
    RootMotion.FinalIK.Leg:Solve() (at Assets\Plugins\RootMotion\FinalIK\IK Solvers\IKSolverVRLeg.cs:225)
    RootMotion.FinalIK.IKSolverVR:Solve() (at Assets\Plugins\RootMotion\FinalIK\IK Solvers\IKSolverVR.cs:431)
    RootMotion.FinalIK.IKSolverVR:OnUpdate() (at Assets\Plugins\RootMotion\FinalIK\IK Solvers\IKSolverVR.cs:291)
    RootMotion.FinalIK.IKSolver:Update() (at Assets\Plugins\RootMotion\FinalIK\IK Solvers\IKSolver.cs:61)
    RootMotion.FinalIK.IK:UpdateSolver() (at Assets\Plugins\RootMotion\FinalIK\IK Components\IK.cs:27)
    RootMotion.SolverManager:LateUpdate() (at Assets\Plugins\RootMotion\Shared Scripts\SolverManager.cs:113)

    [C:\buildslave\unity\build\artifacts/generated/common/runtime/MathBindings.gen.cpp line 92]
    (Filename: Assets/Plugins/RootMotion/FinalIK/IK Solvers/IKSolverVRUtilities.cs Line: 171)

    Assertion failed on expression: 'curveT >= GetRange().first && curveT <= GetRange().second'
    UnityEngine.AnimationCurve:Evaluate(Single)
    RootMotion.FinalIK.Arm:Stretching() (at Assets\Plugins\RootMotion\FinalIK\IK Solvers\IKSolverVRArm.cs:220)
    RootMotion.FinalIK.Arm:Solve(Boolean) (at Assets\Plugins\RootMotion\FinalIK\IK Solvers\IKSolverVRArm.cs:305)
    RootMotion.FinalIK.IKSolverVR:Solve() (at Assets\Plugins\RootMotion\FinalIK\IK Solvers\IKSolverVR.cs:442)
    RootMotion.FinalIK.IKSolverVR:OnUpdate() (at Assets\Plugins\RootMotion\FinalIK\IK Solvers\IKSolverVR.cs:291)
    RootMotion.FinalIK.IKSolver:Update() (at Assets\Plugins\RootMotion\FinalIK\IK Solvers\IKSolver.cs:61)
    RootMotion.FinalIK.IK:UpdateSolver() (at Assets\Plugins\RootMotion\FinalIK\IK Components\IK.cs:27)
    RootMotion.SolverManager:LateUpdate() (at Assets\Plugins\RootMotion\Shared Scripts\SolverManager.cs:113)

    [C:\buildslave\unity\build\Runtime/Math/AnimationCurve.cpp line 316]
    (Filename: Assets/Plugins/RootMotion/FinalIK/IK Solvers/IKSolverVRArm.cs Line: 220)

    Assertion failed on expression: 'curveT >= m_Curve[lhs].time && curveT <= m_Curve[rhs].time'
    UnityEngine.AnimationCurve:Evaluate(Single)
    RootMotion.FinalIK.Arm:Stretching() (at Assets\Plugins\RootMotion\FinalIK\IK Solvers\IKSolverVRArm.cs:220)
    RootMotion.FinalIK.Arm:Solve(Boolean) (at Assets\Plugins\RootMotion\FinalIK\IK Solvers\IKSolverVRArm.cs:305)
    RootMotion.FinalIK.IKSolverVR:Solve() (at Assets\Plugins\RootMotion\FinalIK\IK Solvers\IKSolverVR.cs:442)
    RootMotion.FinalIK.IKSolverVR:OnUpdate() (at Assets\Plugins\RootMotion\FinalIK\IK Solvers\IKSolverVR.cs:291)
    RootMotion.FinalIK.IKSolver:Update() (at Assets\Plugins\RootMotion\FinalIK\IK Solvers\IKSolver.cs:61)
    RootMotion.FinalIK.IK:UpdateSolver() (at Assets\Plugins\RootMotion\FinalIK\IK Components\IK.cs:27)
    RootMotion.SolverManager:LateUpdate() (at Assets\Plugins\RootMotion\Shared Scripts\SolverManager.cs:113)

    [C:\buildslave\unity\build\Runtime/Math/AnimationCurve.cpp line 408]
    (Filename: Assets/Plugins/RootMotion/FinalIK/IK Solvers/IKSolverVRArm.cs Line: 220)

    transform.position assign attempt for 'Avatar_Female(Clone)' is not valid. Input position is { NaN, NaN, NaN }.
    UnityEngine.Transform:INTERNAL_set_position(Vector3&)
    UnityEngine.Transform:set_position(Vector3) (at C:\buildslave\unity\build\artifacts\generated\common\runtime\TransformBindings.gen.cs:28)
    RootMotion.FinalIK.IKSolverVR:WriteTransforms() (at Assets\Plugins\RootMotion\FinalIK\IK Solvers\IKSolverVR.cs:304)
    RootMotion.FinalIK.IKSolverVR:OnUpdate() (at Assets\Plugins\RootMotion\FinalIK\IK Solvers\IKSolverVR.cs:294)
    RootMotion.FinalIK.IKSolver:Update() (at Assets\Plugins\RootMotion\FinalIK\IK Solvers\IKSolver.cs:61)
    RootMotion.FinalIK.IK:UpdateSolver() (at Assets\Plugins\RootMotion\FinalIK\IK Components\IK.cs:27)
    RootMotion.SolverManager:LateUpdate() (at Assets\Plugins\RootMotion\Shared Scripts\SolverManager.cs:113)

    [C:\buildslave\unity\build\Runtime/Transform/Transform.cpp line 794]
    (Filename: Assets/Plugins/RootMotion/FinalIK/IK Solvers/IKSolverVR.cs Line: 304)

    transform.position assign attempt for 'Character1_Hips' is not valid. Input position is { NaN, NaN, NaN }.
    UnityEngine.Transform:INTERNAL_set_position(Vector3&)
    UnityEngine.Transform:set_position(Vector3) (at C:\buildslave\unity\build\artifacts\generated\common\runtime\TransformBindings.gen.cs:28)
    RootMotion.FinalIK.IKSolverVR:WriteTransforms() (at Assets\Plugins\RootMotion\FinalIK\IK Solvers\IKSolverVR.cs:304)
    RootMotion.FinalIK.IKSolverVR:OnUpdate() (at Assets\Plugins\RootMotion\FinalIK\IK Solvers\IKSolverVR.cs:294)
    RootMotion.FinalIK.IKSolver:Update() (at Assets\Plugins\RootMotion\FinalIK\IK Solvers\IKSolver.cs:61)
    RootMotion.FinalIK.IK:UpdateSolver() (at Assets\Plugins\RootMotion\FinalIK\IK Components\IK.cs:27)
    RootMotion.SolverManager:LateUpdate() (at Assets\Plugins\RootMotion\Shared Scripts\SolverManager.cs:113)

    [C:\buildslave\unity\build\Runtime/Transform/Transform.cpp line 794]
    (Filename: Assets/Plugins/RootMotion/FinalIK/IK Solvers/IKSolverVR.cs Line: 304)

    transform.position assign attempt for 'Character1_LeftShoulder' is not valid. Input position is { NaN, NaN, NaN }.
    UnityEngine.Transform:INTERNAL_set_position(Vector3&)
    UnityEngine.Transform:set_position(Vector3) (at C:\buildslave\unity\build\artifacts\generated\common\runtime\TransformBindings.gen.cs:28)
    RootMotion.FinalIK.IKSolverVR:WriteTransforms() (at Assets\Plugins\RootMotion\FinalIK\IK Solvers\IKSolverVR.cs:304)
    RootMotion.FinalIK.IKSolverVR:OnUpdate() (at Assets\Plugins\RootMotion\FinalIK\IK Solvers\IKSolverVR.cs:294)
    RootMotion.FinalIK.IKSolver:Update() (at Assets\Plugins\RootMotion\FinalIK\IK Solvers\IKSolver.cs:61)
    RootMotion.FinalIK.IK:UpdateSolver() (at Assets\Plugins\RootMotion\FinalIK\IK Components\IK.cs:27)
    RootMotion.SolverManager:LateUpdate() (at Assets\Plugins\RootMotion\Shared Scripts\SolverManager.cs:113)

    [C:\buildslave\unity\build\Runtime/Transform/Transform.cpp line 794]
    (Filename: Assets/Plugins/RootMotion/FinalIK/IK Solvers/IKSolverVR.cs Line: 304)

    transform.position assign attempt for 'Character1_LeftArm' is not valid. Input position is { NaN, NaN, NaN }.
    UnityEngine.Transform:INTERNAL_set_position(Vector3&)
    UnityEngine.Transform:set_position(Vector3) (at C:\buildslave\unity\build\artifacts\generated\common\runtime\TransformBindings.gen.cs:28)
    RootMotion.FinalIK.IKSolverVR:WriteTransforms() (at Assets\Plugins\RootMotion\FinalIK\IK Solvers\IKSolverVR.cs:304)
    RootMotion.FinalIK.IKSolverVR:OnUpdate() (at Assets\Plugins\RootMotion\FinalIK\IK Solvers\IKSolverVR.cs:294)
    RootMotion.FinalIK.IKSolver:Update() (at Assets\Plugins\RootMotion\FinalIK\IK Solvers\IKSolver.cs:61)
    RootMotion.FinalIK.IK:UpdateSolver() (at Assets\Plugins\RootMotion\FinalIK\IK Components\IK.cs:27)
    RootMotion.SolverManager:LateUpdate() (at Assets\Plugins\RootMotion\Shared Scripts\SolverManager.cs:113)

    [C:\buildslave\unity\build\Runtime/Transform/Transform.cpp line 794]
    (Filename: Assets/Plugins/RootMotion/FinalIK/IK Solvers/IKSolverVR.cs Line: 304)

    transform.position assign attempt for 'Character1_LeftForeArm' is not valid. Input position is { NaN, NaN, NaN }.
    UnityEngine.Transform:INTERNAL_set_position(Vector3&)
    UnityEngine.Transform:set_position(Vector3) (at C:\buildslave\unity\build\artifacts\generated\common\runtime\TransformBindings.gen.cs:28)
    RootMotion.FinalIK.IKSolverVR:WriteTransforms() (at Assets\Plugins\RootMotion\FinalIK\IK Solvers\IKSolverVR.cs:304)
    RootMotion.FinalIK.IKSolverVR:OnUpdate() (at Assets\Plugins\RootMotion\FinalIK\IK Solvers\IKSolverVR.cs:294)
    RootMotion.FinalIK.IKSolver:Update() (at Assets\Plugins\RootMotion\FinalIK\IK Solvers\IKSolver.cs:61)
    RootMotion.FinalIK.IK:UpdateSolver() (at Assets\Plugins\RootMotion\FinalIK\IK Components\IK.cs:27)
    RootMotion.SolverManager:LateUpdate() (at Assets\Plugins\RootMotion\Shared Scripts\SolverManager.cs:113)

    [C:\buildslave\unity\build\Runtime/Transform/Transform.cpp line 794]
    (Filename: Assets/Plugins/RootMotion/FinalIK/IK Solvers/IKSolverVR.cs Line: 304)

    transform.position assign attempt for 'Character1_LeftHand' is not valid. Input position is { NaN, NaN, NaN }.
    UnityEngine.Transform:INTERNAL_set_position(Vector3&)
    UnityEngine.Transform:set_position(Vector3) (at C:\buildslave\unity\build\artifacts\generated\common\runtime\TransformBindings.gen.cs:28)
    RootMotion.FinalIK.IKSolverVR:WriteTransforms() (at Assets\Plugins\RootMotion\FinalIK\IK Solvers\IKSolverVR.cs:304)
    RootMotion.FinalIK.IKSolverVR:OnUpdate() (at Assets\Plugins\RootMotion\FinalIK\IK Solvers\IKSolverVR.cs:294)
    RootMotion.FinalIK.IKSolver:Update() (at Assets\Plugins\RootMotion\FinalIK\IK Solvers\IKSolver.cs:61)
    RootMotion.FinalIK.IK:UpdateSolver() (at Assets\Plugins\RootMotion\FinalIK\IK Components\IK.cs:27)
    RootMotion.SolverManager:LateUpdate() (at Assets\Plugins\RootMotion\Shared Scripts\SolverManager.cs:113)

    [C:\buildslave\unity\build\Runtime/Transform/Transform.cpp line 794]
    (Filename: Assets/Plugins/RootMotion/FinalIK/IK Solvers/IKSolverVR.cs Line: 304)

    transform.position assign attempt for 'Character1_RightShoulder' is not valid. Input position is { NaN, NaN, NaN }.
    UnityEngine.Transform:INTERNAL_set_position(Vector3&)
    UnityEngine.Transform:set_position(Vector3) (at C:\buildslave\unity\build\artifacts\generated\common\runtime\TransformBindings.gen.cs:28)
    RootMotion.FinalIK.IKSolverVR:WriteTransforms() (at Assets\Plugins\RootMotion\FinalIK\IK Solvers\IKSolverVR.cs:304)
    RootMotion.FinalIK.IKSolverVR:OnUpdate() (at Assets\Plugins\RootMotion\FinalIK\IK Solvers\IKSolverVR.cs:294)
    RootMotion.FinalIK.IKSolver:Update() (at Assets\Plugins\RootMotion\FinalIK\IK Solvers\IKSolver.cs:61)
    RootMotion.FinalIK.IK:UpdateSolver() (at Assets\Plugins\RootMotion\FinalIK\IK Components\IK.cs:27)
    RootMotion.SolverManager:LateUpdate() (at Assets\Plugins\RootMotion\Shared Scripts\SolverManager.cs:113)

    [C:\buildslave\unity\build\Runtime/Transform/Transform.cpp line 794]
    (Filename: Assets/Plugins/RootMotion/FinalIK/IK Solvers/IKSolverVR.cs Line: 304)

    transform.position assign attempt for 'Character1_RightArm' is not valid. Input position is { NaN, NaN, NaN }.
    UnityEngine.Transform:INTERNAL_set_position(Vector3&)
    UnityEngine.Transform:set_position(Vector3) (at C:\buildslave\unity\build\artifacts\generated\common\runtime\TransformBindings.gen.cs:28)
    RootMotion.FinalIK.IKSolverVR:WriteTransforms() (at Assets\Plugins\RootMotion\FinalIK\IK Solvers\IKSolverVR.cs:304)
    RootMotion.FinalIK.IKSolverVR:OnUpdate() (at Assets\Plugins\RootMotion\FinalIK\IK Solvers\IKSolverVR.cs:294)
    RootMotion.FinalIK.IKSolver:Update() (at Assets\Plugins\RootMotion\FinalIK\IK Solvers\IKSolver.cs:61)
    RootMotion.FinalIK.IK:UpdateSolver() (at Assets\Plugins\RootMotion\FinalIK\IK Components\IK.cs:27)
    RootMotion.SolverManager:LateUpdate() (at Assets\Plugins\RootMotion\Shared Scripts\SolverManager.cs:113)

    [C:\buildslave\unity\build\Runtime/Transform/Transform.cpp line 794]
    (Filename: Assets/Plugins/RootMotion/FinalIK/IK Solvers/IKSolverVR.cs Line: 304)

    transform.position assign attempt for 'Character1_RightForeArm' is not valid. Input position is { NaN, NaN, NaN }.
    UnityEngine.Transform:INTERNAL_set_position(Vector3&)
    UnityEngine.Transform:set_position(Vector3) (at C:\buildslave\unity\build\artifacts\generated\common\runtime\TransformBindings.gen.cs:28)
    RootMotion.FinalIK.IKSolverVR:WriteTransforms() (at Assets\Plugins\RootMotion\FinalIK\IK Solvers\IKSolverVR.cs:304)
    RootMotion.FinalIK.IKSolverVR:OnUpdate() (at Assets\Plugins\RootMotion\FinalIK\IK Solvers\IKSolverVR.cs:294)
    RootMotion.FinalIK.IKSolver:Update() (at Assets\Plugins\RootMotion\FinalIK\IK Solvers\IKSolver.cs:61)
    RootMotion.FinalIK.IK:UpdateSolver() (at Assets\Plugins\RootMotion\FinalIK\IK Components\IK.cs:27)
    RootMotion.SolverManager:LateUpdate() (at Assets\Plugins\RootMotion\Shared Scripts\SolverManager.cs:113)

    [C:\buildslave\unity\build\Runtime/Transform/Transform.cpp line 794]
    (Filename: Assets/Plugins/RootMotion/FinalIK/IK Solvers/IKSolverVR.cs Line: 304)

    transform.position assign attempt for 'Character1_RightHand' is not valid. Input position is { NaN, NaN, NaN }.
    UnityEngine.Transform:INTERNAL_set_position(Vector3&)
    UnityEngine.Transform:set_position(Vector3) (at C:\buildslave\unity\build\artifacts\generated\common\runtime\TransformBindings.gen.cs:28)
    RootMotion.FinalIK.IKSolverVR:WriteTransforms() (at Assets\Plugins\RootMotion\FinalIK\IK Solvers\IKSolverVR.cs:304)
    RootMotion.FinalIK.IKSolverVR:OnUpdate() (at Assets\Plugins\RootMotion\FinalIK\IK Solvers\IKSolverVR.cs:294)
    RootMotion.FinalIK.IKSolver:Update() (at Assets\Plugins\RootMotion\FinalIK\IK Solvers\IKSolver.cs:61)
    RootMotion.FinalIK.IK:UpdateSolver() (at Assets\Plugins\RootMotion\FinalIK\IK Components\IK.cs:27)
    RootMotion.SolverManager:LateUpdate() (at Assets\Plugins\RootMotion\Shared Scripts\SolverManager.cs:113)

    [C:\buildslave\unity\build\Runtime/Transform/Transform.cpp line 794]
    (Filename: Assets/Plugins/RootMotion/FinalIK/IK Solvers/IKSolverVR.cs Line: 304)

    Invalid AABB a

    (Filename: C:\buildslave\unity\build\Runtime/Geometry/Intersection.cpp Line: 633)

    Invalid AABB a

    (Filename: C:\buildslave\unity\build\Runtime/Geometry/Intersection.cpp Line: 633)

    Invalid AABB a

    (Filename: C:\buildslave\unity\build\Runtime/Geometry/Intersection.cpp Line: 633)

    Invalid AABB a

    (Filename: C:\buildslave\unity\build\Runtime/Geometry/Intersection.cpp Line: 589)

    Assertion failed on expression: 'IsFinite(d)'
    UnityEditor.EditorGUIUtility:INTERNAL_CALL_RenderGameViewCamerasInternal(RenderTexture, Int32, Rect&, Vector2&, Boolean)
    UnityEditor.EditorGUIUtility:RenderGameViewCamerasInternal(RenderTexture, Int32, Rect, Vector2, Boolean) (at C:\buildslave\unity\build\artifacts\generated\common\editor\EditorGUIUtilityBindings.gen.cs:793)
    UnityEditor.GameView:OnGUI() (at C:\buildslave\unity\build\Editor\Mono\GameView\GameView.cs:746)
    System.Reflection.MonoMethod:InternalInvoke(Object, Object[], Exception&)
    System.Reflection.MonoMethod:Invoke(Object, BindingFlags, Binder, Object[], CultureInfo) (at /Users/builduser/buildslave/mono/build/mcs/class/corlib/System.Reflection/MonoMethod.cs:222)
    System.Reflection.MethodBase:Invoke(Object, Object[]) (at /Users/builduser/buildslave/mono/build/mcs/class/corlib/System.Reflection/MethodBase.cs:115)
    UnityEditor.HostView:Invoke(String, Object) (at C:\buildslave\unity\build\Editor\Mono\HostView.cs:295)
    UnityEditor.HostView:Invoke(String) (at C:\buildslave\unity\build\Editor\Mono\HostView.cs:288)
    UnityEditor.HostView:InvokeOnGUI(Rect) (at C:\buildslave\unity\build\Editor\Mono\HostView.cs:255)
    UnityEditor.DockArea:OldOnGUI() (at C:\buildslave\unity\build\Editor\Mono\GUI\DockArea.cs:396)
    UnityEngine.Experimental.UIElements.IMGUIContainer:DoOnGUI(Event) (at C:\buildslave\unity\build\Runtime\UIElements\Managed\IMGUIContainer.cs:182)
    UnityEngine.Experimental.UIElements.IMGUIContainer:HandleIMGUIEvent(Event) (at C:\buildslave\unity\build\Runtime\UIElements\Managed\IMGUIContainer.cs:338)
    UnityEngine.Experimental.UIElements.IMGUIContainer:DoRepaint(IStylePainter) (at C:\buildslave\unity\build\Runtime\UIElements\Managed\IMGUIContainer.cs:69)
    UnityEngine.Experimental.UIElements.Panel:paintSubTree(Event, VisualElement, Matrix4x4, Rect) (at C:\buildslave\unity\build\Runtime\UIElements\Managed\Panel.cs:532)
    UnityEngine.Experimental.UIElements.Panel:paintSubTreeChildren(Event, VisualElement, Matrix4x4, Rect) (at C:\buildslave\unity\build\Runtime\UIElements\Managed\Panel.cs:547)
    UnityEngine.Experimental.UIElements.Panel:paintSubTree(Event, VisualElement, Matrix4x4, Rect) (at C:\buildslave\unity\build\Runtime\UIElements\Managed\Panel.cs:536)
    UnityEngine.Experimental.UIElements.Panel:Repaint(Event) (at C:\buildslave\unity\build\Runtime\UIElements\Managed\Panel.cs:564)
    UnityEngine.Experimental.UIElements.UIElementsUtility:DoDispatch(BaseVisualElementPanel) (at C:\buildslave\unity\build\Runtime\UIElements\Managed\UIElementsUtility.cs:236)
    UnityEngine.Experimental.UIElements.UIElementsUtility:processEvent(Int32, IntPtr) (at C:\buildslave\unity\build\Runtime\UIElements\Managed\UIElementsUtility.cs:78)
    UnityEngine.GUIUtility:processEvent(Int32, IntPtr) (at C:\buildslave\unity\build\Runtime\IMGUI\Managed\GUIUtility.cs:175)

    [C:\buildslave\unity\build\Runtime/Camera/RenderLoops/ReplacementRenderLoop.cpp line 69]
    (Filename: /Users/builduser/buildslave/mono/build/mcs/class/corlib/System.Reflection/MonoMethod.cs Line: 222)

    Assertion failed on expression: 'IsFinite(outDistanceForSort)'
    UnityEditor.EditorGUIUtility:INTERNAL_CALL_RenderGameViewCamerasInternal(RenderTexture, Int32, Rect&, Vector2&, Boolean)
    UnityEditor.EditorGUIUtility:RenderGameViewCamerasInternal(RenderTexture, Int32, Rect, Vector2, Boolean) (at C:\buildslave\unity\build\artifacts\generated\common\editor\EditorGUIUtilityBindings.gen.cs:793)
    UnityEditor.GameView:OnGUI() (at C:\buildslave\unity\build\Editor\Mono\GameView\GameView.cs:746)
    System.Reflection.MonoMethod:InternalInvoke(Object, Object[], Exception&)
    System.Reflection.MonoMethod:Invoke(Object, BindingFlags, Binder, Object[], CultureInfo) (at /Users/builduser/buildslave/mono/build/mcs/class/corlib/System.Reflection/MonoMethod.cs:222)
    System.Reflection.MethodBase:Invoke(Object, Object[]) (at /Users/builduser/buildslave/mono/build/mcs/class/corlib/System.Reflection/MethodBase.cs:115)
    UnityEditor.HostView:Invoke(String, Object) (at C:\buildslave\unity\build\Editor\Mono\HostView.cs:295)
    UnityEditor.HostView:Invoke(String) (at C:\buildslave\unity\build\Editor\Mono\HostView.cs:288)
    UnityEditor.HostView:InvokeOnGUI(Rect) (at C:\buildslave\unity\build\Editor\Mono\HostView.cs:255)
    UnityEditor.DockArea:OldOnGUI() (at C:\buildslave\unity\build\Editor\Mono\GUI\DockArea.cs:396)
    UnityEngine.Experimental.UIElements.IMGUIContainer:DoOnGUI(Event) (at C:\buildslave\unity\build\Runtime\UIElements\Managed\IMGUIContainer.cs:182)
    UnityEngine.Experimental.UIElements.IMGUIContainer:HandleIMGUIEvent(Event) (at C:\buildslave\unity\build\Runtime\UIElements\Managed\IMGUIContainer.cs:338)
    UnityEngine.Experimental.UIElements.IMGUIContainer:DoRepaint(IStylePainter) (at C:\buildslave\unity\build\Runtime\UIElements\Managed\IMGUIContainer.cs:69)
    UnityEngine.Experimental.UIElements.Panel:paintSubTree(Event, VisualElement, Matrix4x4, Rect) (at C:\buildslave\unity\build\Runtime\UIElements\Managed\Panel.cs:532)
    UnityEngine.Experimental.UIElements.Panel:paintSubTreeChildren(Event, VisualElement, Matrix4x4, Rect) (at C:\buildslave\unity\build\Runtime\UIElements\Managed\Panel.cs:547)
    UnityEngine.Experimental.UIElements.Panel:paintSubTree(Event, VisualElement, Matrix4x4, Rect) (at C:\buildslave\unity\build\Runtime\UIElements\Managed\Panel.cs:536)
    UnityEngine.Experimental.UIElements.Panel:Repaint(Event) (at C:\buildslave\unity\build\Runtime\UIElements\Managed\Panel.cs:564)
    UnityEngine.Experimental.UIElements.UIElementsUtility:DoDispatch(BaseVisualElementPanel) (at C:\buildslave\unity\build\Runtime\UIElements\Managed\UIElementsUtility.cs:236)
    UnityEngine.Experimental.UIElements.UIElementsUtility:processEvent(Int32, IntPtr) (at C:\buildslave\unity\build\Runtime\UIElements\Managed\UIElementsUtility.cs:78)
    UnityEngine.GUIUtility:processEvent(Int32, IntPtr) (at C:\buildslave\unity\build\Runtime\IMGUI\Managed\GUIUtility.cs:175)

    [C:\buildslave\unity\build\Runtime/Camera/RenderLoops/RenderLoopPrivate.cpp line 130]
    (Filename: /Users/builduser/buildslave/mono/build/mcs/class/corlib/System.Reflection/MonoMethod.cs Line: 222)

    Assertion failed on expression: 'IsFinite(outDistanceAlongView)'
    UnityEditor.EditorGUIUtility:INTERNAL_CALL_RenderGameViewCamerasInternal(RenderTexture, Int32, Rect&, Vector2&, Boolean)
    UnityEditor.EditorGUIUtility:RenderGameViewCamerasInternal(RenderTexture, Int32, Rect, Vector2, Boolean) (at C:\buildslave\unity\build\artifacts\generated\common\editor\EditorGUIUtilityBindings.gen.cs:793)
    UnityEditor.GameView:OnGUI() (at C:\buildslave\unity\build\Editor\Mono\GameView\GameView.cs:746)
    System.Reflection.MonoMethod:InternalInvoke(Object, Object[], Exception&)
    System.Reflection.MonoMethod:Invoke(Object, BindingFlags, Binder, Object[], CultureInfo) (at /Users/builduser/buildslave/mono/build/mcs/class/corlib/System.Reflection/MonoMethod.cs:222)
    System.Reflection.MethodBase:Invoke(Object, Object[]) (at /Users/builduser/buildslave/mono/build/mcs/class/corlib/System.Reflection/MethodBase.cs:115)
    UnityEditor.HostView:Invoke(String, Object) (at C:\buildslave\unity\build\Editor\Mono\HostView.cs:295)
    UnityEditor.HostView:Invoke(String) (at C:\buildslave\unity\build\Editor\Mono\HostView.cs:288)
    UnityEditor.HostView:InvokeOnGUI(Rect) (at C:\buildslave\unity\build\Editor\Mono\HostView.cs:255)
    UnityEditor.DockArea:OldOnGUI() (at C:\buildslave\unity\build\Editor\Mono\GUI\DockArea.cs:396)
    UnityEngine.Experimental.UIElements.IMGUIContainer:DoOnGUI(Event) (at C:\buildslave\unity\build\Runtime\UIElements\Managed\IMGUIContainer.cs:182)
    UnityEngine.Experimental.UIElements.IMGUIContainer:HandleIMGUIEvent(Event) (at C:\buildslave\unity\build\Runtime\UIElements\Managed\IMGUIContainer.cs:338)
    UnityEngine.Experimental.UIElements.IMGUIContainer:DoRepaint(IStylePainter) (at C:\buildslave\unity\build\Runtime\UIElements\Managed\IMGUIContainer.cs:69)
    UnityEngine.Experimental.UIElements.Panel:paintSubTree(Event, VisualElement, Matrix4x4, Rect) (at C:\buildslave\unity\build\Runtime\UIElements\Managed\Panel.cs:532)
    UnityEngine.Experimental.UIElements.Panel:paintSubTreeChildren(Event, VisualElement, Matrix4x4, Rect) (at C:\buildslave\unity\build\Runtime\UIElements\Managed\Panel.cs:547)
    UnityEngine.Experimental.UIElements.Panel:paintSubTree(Event, VisualElement, Matrix4x4, Rect) (at C:\buildslave\unity\build\Runtime\UIElements\Managed\Panel.cs:536)
    UnityEngine.Experimental.UIElements.Panel:Repaint(Event) (at C:\buildslave\unity\build\Runtime\UIElements\Managed\Panel.cs:564)
    UnityEngine.Experimental.UIElements.UIElementsUtility:DoDispatch(BaseVisualElementPanel) (at C:\buildslave\unity\build\Runtime\UIElements\Managed\UIElementsUtility.cs:236)
    UnityEngine.Experimental.UIElements.UIElementsUtility:processEvent(Int32, IntPtr) (at C:\buildslave\unity\build\Runtime\UIElements\Managed\UIElementsUtility.cs:78)
    UnityEngine.GUIUtility:processEvent(Int32, IntPtr) (at C:\buildslave\unity\build\Runtime\IMGUI\Managed\GUIUtility.cs:175)

    [C:\buildslave\unity\build\Runtime/Camera/RenderLoops/RenderLoopPrivate.cpp line 131]
    (Filename: /Users/builduser/buildslave/mono/build/mcs/class/corlib/System.Reflection/MonoMethod.cs Line: 222)

    Invalid AABB aabb
    UnityEditor.EditorGUIUtility:INTERNAL_CALL_RenderGameViewCamerasInternal(RenderTexture, Int32, Rect&, Vector2&, Boolean)
    UnityEditor.EditorGUIUtility:RenderGameViewCamerasInternal(RenderTexture, Int32, Rect, Vector2, Boolean) (at C:\buildslave\unity\build\artifacts\generated\common\editor\EditorGUIUtilityBindings.gen.cs:793)
    UnityEditor.GameView:OnGUI() (at C:\buildslave\unity\build\Editor\Mono\GameView\GameView.cs:746)
    System.Reflection.MonoMethod:InternalInvoke(Object, Object[], Exception&)
    System.Reflection.MonoMethod:Invoke(Object, BindingFlags, Binder, Object[], CultureInfo) (at /Users/builduser/buildslave/mono/build/mcs/class/corlib/System.Reflection/MonoMethod.cs:222)
    System.Reflection.MethodBase:Invoke(Object, Object[]) (at /Users/builduser/buildslave/mono/build/mcs/class/corlib/System.Reflection/MethodBase.cs:115)
    UnityEditor.HostView:Invoke(String, Object) (at C:\buildslave\unity\build\Editor\Mono\HostView.cs:295)
    UnityEditor.HostView:Invoke(String) (at C:\buildslave\unity\build\Editor\Mono\HostView.cs:288)
    UnityEditor.HostView:InvokeOnGUI(Rect) (at C:\buildslave\unity\build\Editor\Mono\HostView.cs:255)
    UnityEditor.DockArea:OldOnGUI() (at C:\buildslave\unity\build\Editor\Mono\GUI\DockArea.cs:396)
    UnityEngine.Experimental.UIElements.IMGUIContainer:DoOnGUI(Event) (at C:\buildslave\unity\build\Runtime\UIElements\Managed\IMGUIContainer.cs:182)
    UnityEngine.Experimental.UIElements.IMGUIContainer:HandleIMGUIEvent(Event) (at C:\buildslave\unity\build\Runtime\UIElements\Managed\IMGUIContainer.cs:338)
    UnityEngine.Experimental.UIElements.IMGUIContainer:DoRepaint(IStylePainter) (at C:\buildslave\unity\build\Runtime\UIElements\Managed\IMGUIContainer.cs:69)
    UnityEngine.Experimental.UIElements.Panel:paintSubTree(Event, VisualElement, Matrix4x4, Rect) (at C:\buildslave\unity\build\Runtime\UIElements\Managed\Panel.cs:532)
    UnityEngine.Experimental.UIElements.Panel:paintSubTreeChildren(Event, VisualElement, Matrix4x4, Rect) (at C:\buildslave\unity\build\Runtime\UIElements\Managed\Panel.cs:547)
    UnityEngine.Experimental.UIElements.Panel:paintSubTree(Event, VisualElement, Matrix4x4, Rect) (at C:\buildslave\unity\build\Runtime\UIElements\Managed\Panel.cs:536)
    UnityEngine.Experimental.UIElements.Panel:Repaint(Event) (at C:\buildslave\unity\build\Runtime\UIElements\Managed\Panel.cs:564)
    UnityEngine.Experimental.UIElements.UIElementsUtility:DoDispatch(BaseVisualElementPanel) (at C:\buildslave\unity\build\Runtime\UIElements\Managed\UIElementsUtility.cs:236)
    UnityEngine.Experimental.UIElements.UIElementsUtility:processEvent(Int32, IntPtr) (at C:\buildslave\unity\build\Runtime\UIElements\Managed\UIElementsUtility.cs:78)
    UnityEngine.GUIUtility:processEvent(Int32, IntPtr) (at C:\buildslave\unity\build\Runtime\IMGUI\Managed\GUIUtility.cs:175)

    [C:\buildslave\unity\build\Runtime/Geometry/Intersection.cpp line 259]
    (Filename: /Users/builduser/buildslave/mono/build/mcs/class/corlib/System.Reflection/MonoMethod.cs Line: 222)

    Invalid AABB rkBox
    UnityEditor.EditorGUIUtility:INTERNAL_CALL_RenderGameViewCamerasInternal(RenderTexture, Int32, Rect&, Vector2&, Boolean)
    UnityEditor.EditorGUIUtility:RenderGameViewCamerasInternal(RenderTexture, Int32, Rect, Vector2, Boolean) (at C:\buildslave\unity\build\artifacts\generated\common\editor\EditorGUIUtilityBindings.gen.cs:793)
    UnityEditor.GameView:OnGUI() (at C:\buildslave\unity\build\Editor\Mono\GameView\GameView.cs:746)
    System.Reflection.MonoMethod:InternalInvoke(Object, Object[], Exception&)
    System.Reflection.MonoMethod:Invoke(Object, BindingFlags, Binder, Object[], CultureInfo) (at /Users/builduser/buildslave/mono/build/mcs/class/corlib/System.Reflection/MonoMethod.cs:222)
    System.Reflection.MethodBase:Invoke(Object, Object[]) (at /Users/builduser/buildslave/mono/build/mcs/class/corlib/System.Reflection/MethodBase.cs:115)
    UnityEditor.HostView:Invoke(String, Object) (at C:\buildslave\unity\build\Editor\Mono\HostView.cs:295)
    UnityEditor.HostView:Invoke(String) (at C:\buildslave\unity\build\Editor\Mono\HostView.cs:288)
    UnityEditor.HostView:InvokeOnGUI(Rect) (at C:\buildslave\unity\build\Editor\Mono\HostView.cs:255)
    UnityEditor.DockArea:OldOnGUI() (at C:\buildslave\unity\build\Editor\Mono\GUI\DockArea.cs:396)
    UnityEngine.Experimental.UIElements.IMGUIContainer:DoOnGUI(Event) (at C:\buildslave\unity\build\Runtime\UIElements\Managed\IMGUIContainer.cs:182)
    UnityEngine.Experimental.UIElements.IMGUIContainer:HandleIMGUIEvent(Event) (at C:\buildslave\unity\build\Runtime\UIElements\Managed\IMGUIContainer.cs:338)
    UnityEngine.Experimental.UIElements.IMGUIContainer:DoRepaint(IStylePainter) (at C:\buildslave\unity\build\Runtime\UIElements\Managed\IMGUIContainer.cs:69)
    UnityEngine.Experimental.UIElements.Panel:paintSubTree(Event, VisualElement, Matrix4x4, Rect) (at C:\buildslave\unity\build\Runtime\UIElements\Managed\Panel.cs:532)
    UnityEngine.Experimental.UIElements.Panel:paintSubTreeChildren(Event, VisualElement, Matrix4x4, Rect) (at C:\buildslave\unity\build\Runtime\UIElements\Managed\Panel.cs:547)
    UnityEngine.Experimental.UIElements.Panel:paintSubTree(Event, VisualElement, Matrix4x4, Rect) (at C:\buildslave\unity\build\Runtime\UIElements\Managed\Panel.cs:536)
    UnityEngine.Experimental.UIElements.Panel:Repaint(Event) (at C:\buildslave\unity\build\Runtime\UIElements\Managed\Panel.cs:564)
    UnityEngine.Experimental.UIElements.UIElementsUtility:DoDispatch(BaseVisualElementPanel) (at C:\buildslave\unity\build\Runtime\UIElements\Managed\UIElementsUtility.cs:236)
    UnityEngine.Experimental.UIElements.UIElementsUtility:processEvent(Int32, IntPtr) (at C:\buildslave\unity\build\Runtime\UIElements\Managed\UIElementsUtility.cs:78)
    UnityEngine.GUIUtility:processEvent(Int32, IntPtr) (at C:\buildslave\unity\build\Runtime\IMGUI\Managed\GUIUtility.cs:175)

    [C:\buildslave\unity\build\Runtime/Geometry/AABB.cpp line 58]
    (Filename: /Users/builduser/buildslave/mono/build/mcs/class/corlib/System.Reflection/MonoMethod.cs Line: 222)

    Invalid AABB aabb
    UnityEditor.EditorGUIUtility:INTERNAL_CALL_RenderGameViewCamerasInternal(RenderTexture, Int32, Rect&, Vector2&, Boolean)
    UnityEditor.EditorGUIUtility:RenderGameViewCamerasInternal(RenderTexture, Int32, Rect, Vector2, Boolean) (at C:\buildslave\unity\build\artifacts\generated\common\editor\EditorGUIUtilityBindings.gen.cs:793)
    UnityEditor.GameView:OnGUI() (at C:\buildslave\unity\build\Editor\Mono\GameView\GameView.cs:746)
    System.Reflection.MonoMethod:InternalInvoke(Object, Object[], Exception&)
    System.Reflection.MonoMethod:Invoke(Object, BindingFlags, Binder, Object[], CultureInfo) (at /Users/builduser/buildslave/mono/build/mcs/class/corlib/System.Reflection/MonoMethod.cs:222)
    System.Reflection.MethodBase:Invoke(Object, Object[]) (at /Users/builduser/buildslave/mono/build/mcs/class/corlib/System.Reflection/MethodBase.cs:115)
    UnityEditor.HostView:Invoke(String, Object) (at C:\buildslave\unity\build\Editor\Mono\HostView.cs:295)
    UnityEditor.HostView:Invoke(String) (at C:\buildslave\unity\build\Editor\Mono\HostView.cs:288)
    UnityEditor.HostView:InvokeOnGUI(Rect) (at C:\buildslave\unity\build\Editor\Mono\HostView.cs:255)
    UnityEditor.DockArea:OldOnGUI() (at C:\buildslave\unity\build\Editor\Mono\GUI\DockArea.cs:396)
    UnityEngine.Experimental.UIElements.IMGUIContainer:DoOnGUI(Event) (at C:\buildslave\unity\build\Runtime\UIElements\Managed\IMGUIContainer.cs:182)
    UnityEngine.Experimental.UIElements.IMGUIContainer:HandleIMGUIEvent(Event) (at C:\buildslave\unity\build\Runtime\UIElements\Managed\IMGUIContainer.cs:338)
    UnityEngine.Experimental.UIElements.IMGUIContainer:DoRepaint(IStylePainter) (at C:\buildslave\unity\build\Runtime\UIElements\Managed\IMGUIContainer.cs:69)
    UnityEngine.Experimental.UIElements.Panel:paintSubTree(Event, VisualElement, Matrix4x4, Rect) (at C:\buildslave\unity\build\Runtime\UIElements\Managed\Panel.cs:532)
    UnityEngine.Experimental.UIElements.Panel:paintSubTreeChildren(Event, VisualElement, Matrix4x4, Rect) (at C:\buildslave\unity\build\Runtime\UIElements\Managed\Panel.cs:547)
    UnityEngine.Experimental.UIElements.Panel:paintSubTree(Event, VisualElement, Matrix4x4, Rect) (at C:\buildslave\unity\build\Runtime\UIElements\Managed\Panel.cs:536)
    UnityEngine.Experimental.UIElements.Panel:Repaint(Event) (at C:\buildslave\unity\build\Runtime\UIElements\Managed\Panel.cs:564)
    UnityEngine.Experimental.UIElements.UIElementsUtility:DoDispatch(BaseVisualElementPanel) (at C:\buildslave\unity\build\Runtime\UIElements\Managed\UIElementsUtility.cs:236)
    UnityEngine.Experimental.UIElements.UIElementsUtility:processEvent(Int32, IntPtr) (at C:\buildslave\unity\build\Runtime\UIElements\Managed\UIElementsUtility.cs:78)
    UnityEngine.GUIUtility:processEvent(Int32, IntPtr) (at C:\buildslave\unity\build\Runtime\IMGUI\Managed\GUIUtility.cs:175)

    [C:\buildslave\unity\build\Runtime/Geometry/AABB.h line 191]
    (Filename: /Users/builduser/buildslave/mono/build/mcs/class/corlib/System.Reflection/MonoMethod.cs Line: 222)

    transform.position assign attempt for 'Avatar_Female(Clone)' is not valid. Input position is { NaN, NaN, NaN }.
    UnityEngine.Transform:INTERNAL_set_position(Vector3&)
    UnityEngine.Transform:set_position(Vector3) (at C:\buildslave\unity\build\artifacts\generated\common\runtime\TransformBindings.gen.cs:28)
    VRIKAnimatedLocomotion:Update() (at Assets\VRIK Animated Locomotion\VRIKAnimatedLocomotion.cs:81)

    [C:\buildslave\unity\build\Runtime/Transform/Transform.cpp line 794]
    (Filename: Assets/VRIK Animated Locomotion/VRIKAnimatedLocomotion.cs Line: 81)

    Assertion failed on expression: 'curveT >= GetRange().first && curveT <= GetRange().second'
    UnityEngine.AnimationCurve:Evaluate(Single)
    VRIKAnimatedLocomotion:Update() (at Assets\VRIK Animated Locomotion\VRIKAnimatedLocomotion.cs:170)

    [C:\buildslave\unity\build\Runtime/Math/AnimationCurve.cpp line 316]
    (Filename: Assets/VRIK Animated Locomotion/VRIKAnimatedLocomotion.cs Line: 170)

    Assertion failed on expression: 'curveT >= m_Curve[lhs].time && curveT <= m_Curve[rhs].time'
    UnityEngine.AnimationCurve:Evaluate(Single)
    VRIKAnimatedLocomotion:Update() (at Assets\VRIK Animated Locomotion\VRIKAnimatedLocomotion.cs:170)

    [C:\buildslave\unity\build\Runtime/Math/AnimationCurve.cpp line 408]
    (Filename: Assets/VRIK Animated Locomotion/VRIKAnimatedLocomotion.cs Line: 170)

    Assertion failed on expression: 'curveT >= GetRange().first && curveT <= GetRange().second'
    UnityEngine.AnimationCurve:Evaluate(Single)
    VRIKAnimatedLocomotion:Update() (at Assets\VRIK Animated Locomotion\VRIKAnimatedLocomotion.cs:173)

    [C:\buildslave\unity\build\Runtime/Math/AnimationCurve.cpp line 316]
    (Filename: Assets/VRIK Animated Locomotion/VRIKAnimatedLocomotion.cs Line: 173)

    Assertion failed on expression: 'curveT >= m_Curve[lhs].time && curveT <= m_Curve[rhs].time'
    UnityEngine.AnimationCurve:Evaluate(Single)
    VRIKAnimatedLocomotion:Update() (at Assets\VRIK Animated Locomotion\VRIKAnimatedLocomotion.cs:173)

    [C:\buildslave\unity\build\Runtime/Math/AnimationCurve.cpp line 408]
    (Filename: Assets/VRIK Animated Locomotion/VRIKAnimatedLocomotion.cs Line: 173)

    I hope you can fix the problem or show us what we did wrong.


    Regards,

    Manuel
     
  15. Partel-Lang

    Partel-Lang

    Joined:
    Jan 2, 2013
    Posts:
    1,757
    Hey,
    One way to do this would be to play the scene with Oculus, adjust the localPosition/Rotation of the IK targets so they are right and write them down. Then play again with Vive and do the same. Then just make a script that sets the localPosition/Rotation of the IK targets to those values depending on which device is currently active.

    I've seen those errors, they happen when VRIK updates on a character that is already in a mathematically invalid state. The last time I saw this, it turned out the developers had player height missing in their calibration data so the scale of the character was set to (0, 0, 0) and then the IK failed on that producing the same errors.
    It also happens to characters that have been blasted away to infinity by some erroneous code.

    Do you have any code that handles the situation when the controllers leave the tracked area and does anything with the character?
     
  16. Slaghton

    Slaghton

    Joined:
    Sep 9, 2013
    Posts:
    122
    Edit - Ok I figured out how to set the head/arm/hand targets at runtime woop. This extra bit of code goes into the VRIK script attached to the player. Lol, I just guessed at solver.spine part.

    Code (csharp):
    1.  
    2.         void Start()
    3.         {
    4.             var head_lookup = GameObject.Find("[VRTK_SDKManager]");
    5.             var test = head_lookup.transform.Find("SDKSetups/SteamVR/[CameraRig]/Camera (eye)/Head_Target_Spawn");
    6.             head_target_mine = test;
    7.             solver.spine.headTarget = head_target_mine;
    8.         }
    9.  
     
    Last edited: Mar 1, 2018
  17. ysleungrockman

    ysleungrockman

    Joined:
    Mar 16, 2014
    Posts:
    13
    Although it has been several weeks now, still thank you for your reply.
    After changing the locomotion weight to 0, the animation now plays correctly. Thank you for that.
    But then I have some new questions, first, you said the locomotion can be disabled, but I don't see any options to disable that. Would you mind to tell me how I can do so?
    Also, how can I move the model along with the camera region movement? When I move the camera region by inputs, the model didn't move but instead it looked like it was just stretching its arms and legs at the original position. Is it also related to the locomotion?
     
  18. alex_m2000_cl

    alex_m2000_cl

    Joined:
    Dec 4, 2016
    Posts:
    9
    Hi.
    i have a trouble. maybe somebody have the answer to my question:
    i took the sample scene on final ik called 'grounder' that have a mesh, a fox, and so on. i did generate a navmesh for the scene, and add a navmesh agent to the mesh (to the character controller game object). and then hit the play button. i watched the mesh jitter. the question is how avoid that ?. i need to resolve this because i want to use final ik with navmesh agent but the jitter is a problem. Thanks in advance.
     
  19. alex_m2000_cl

    alex_m2000_cl

    Joined:
    Dec 4, 2016
    Posts:
    9
    i figured out that the problem is related to the grounder ik component. when i disable it, the jitters dissapears completely. I found that, if i enable it and set the root rotation weight to 0, in the case of the bot character the jitters is not present, and if i set the same parameter to 0 in the mesh the jittering is reduce nearly to 0. maybe somebody has an explanation ?.
     
    Last edited: Mar 2, 2018
  20. Mikekan13

    Mikekan13

    Joined:
    May 30, 2015
    Posts:
    41
    I started a personal conversation with a link to my project. Let me know if it is too big for you to download and I will try and reproduce it in a separate project.
     
  21. jake_vr

    jake_vr

    Joined:
    May 21, 2017
    Posts:
    2
    Hey, loving Final IK!
    Quick one, I have my player avatar atop a moving platform. The upper body is responding as expected (moving based on the motion controller inputs), but the legs a behaving a little strangely. Even though the avatar is childed to the platform, the legs are walking as if they're moving through world space. Ideally I need the legs to move local to the platform (so setting locomotion to 0 doesn't quite do the trick).
    Any ideas?
     
  22. kerrmedia

    kerrmedia

    Joined:
    Nov 4, 2015
    Posts:
    246
    Hi, have FinalIK, I saw in a post where you said:

    Sure, works for all kinds of creatures, also quadrupeds. Once you have it, go to the "Grounder" demo scene, under Characters there is a bot set up with GrounderIK and LimbIK components that is essentially the same as a spider. Just copy the grounder gameobject over to your spider and replace all the bone references.

    Could you, for the sake of us new to FinalIK, give a more detailed example of how to do this? I have an animated spider and I would like to apply FinalIK so it will negotiate my terrain. Looking at the grounder demo, I see Grounder IK and inside are the leg IKs, There are 4 there, would I be able to duplicate some of them for the 8 legged spider?
     
  23. kerrmedia

    kerrmedia

    Joined:
    Nov 4, 2015
    Posts:
    246
    Here is where I'm at. spider.JPG
     
  24. Grumpy-Dot

    Grumpy-Dot

    Joined:
    Feb 29, 2016
    Posts:
    13
    @Partel-Lang
    Hello, not sure if this was asked before, I believe you made a small error when you put the VRIKRootController.cs script inside the _DEMOS/VRIK/Scripts folder. I usually remove the 'Examples' folder in plugins I use, to not include unnecessary assets in my projects, but I got an error when I removed the '_DEMOS' folder from FinalIK as VRIKCalibrator is using the VRIKRootController class. I also noticed that VRIKRootController is in 'RootMotion.FinalIK' namespace and not in the 'Demos', so I believe it does not belong there.
    Let me know what you think, I hope that you can move it to 'FinalIK/Tools'. Thanks!
     
  25. OllieCJ

    OllieCJ

    Joined:
    Aug 2, 2017
    Posts:
    8
    Hi Partel,

    I'm in the process fof writing a tracking system that uses wearable IMUs to determine the users limb rotations. We are also using some machine vision to update these IMUs and reduce the effect of drift. I've been working with the LimbIK component and I was wondering if there is any way of setting the bendgoal to be a rotation?

    I'd be intrigued to hear your approach, such that (for example) given a wrist position and forearm rotation and a shoulder position and upper arm rotation FinalIK would best resolve an elbow target.

    Many thanks!
    Ol
     
    trappist-1 likes this.
  26. Partel-Lang

    Partel-Lang

    Joined:
    Jan 2, 2013
    Posts:
    1,757
    Hey,
    Setting locomotion weight to 0 is disabling the locomotion. It just won't solve the procedural footsteps and it won't move or rotate the root of the character if that is 0. You can move the model just by moving the root transform of the character.

    Hey,
    What exactly is jittering? I tried adding a navmesh to that scene and the navmesh agents, but didn't see it. Could you please make a video or something. It could be the navmesh agent fighting the character controller that was not designed to use a navmesh agent.

    Hey,
    Thanks, I'll check it out ASAP.

    Hey,
    Please see the "VRIK (Moving Platform)" demo and the script that is used to fix this is VRIKPlatform.cs.

    Yeah, just move the GrounderIK gameobject together with the IK components over from the bot to your spider. Then duplicate the IK components for your 8 legs and reassign all the bone references in them. Also make sure those IK components are referenced in GrounderIK's "Legs" and also reassign "Pelvis" and "Character Root" fields in there.
    Set localPosition/Rotation of the GrounderIK transform to zero. That should do it.

    Hey,
    You are completely right, that was a mistake. Will be under the Tools in the next version. Thanks!

    Hey,
    To set the bend goal to be a world space rotation, you could write this:
    Code (CSharp):
    1. ik.solver.bendGoal.position = ik.solver.bone1.transform.position + rotation * Vector3.forward;
    About the other question about elbow target, there's no perfect way of doing this, there will always be multiple possible correct results for a set of rotations. With LimbIK, you can set "Bend Modifier" to "Arm" and "Bend Modifier Weight" to 1 and the solver will try to behave as an arm. Also set "Avatar IK Goal" to left or right hand.
    It basically takes the direction from the shoulder to the target and lerps between a set of predefined elbow directions based on that.

    Cheers,
    Pärtel
     
    kerrmedia and Grumpy-Dot like this.
  27. jake_vr

    jake_vr

    Joined:
    May 21, 2017
    Posts:
    2
    Hi Partel, thanks for solving my problem!
     
  28. ysleungrockman

    ysleungrockman

    Joined:
    Mar 16, 2014
    Posts:
    13
    Thank you for reply. But that's strange. Since what I have done was setting the locomotion weight to zero, and moved the model around by controlling the parent object of the model... The model was just keeping stretching arms and legs and cannot be moved. I will try again tomorrow to figure out what's wrong. I may possibly need your help again...
     
  29. glenn_unity250

    glenn_unity250

    Joined:
    Nov 9, 2017
    Posts:
    2
    Hi Partel, i am new to final IK and just bought it yesterday, just did the first try, it looks cool. I have a simple question, what is the best practice for preventing the hand penetrates into the body? like i put my hand on top of my head, but the hand will intersect with head model. (i am using VRIK btw).
     
  30. trappist-1

    trappist-1

    Joined:
    Mar 26, 2017
    Posts:
    337
    I am using VRIK and I have an avatar where if I extend my real arms out fully into a t-pose I see that my character's arms are too short and my avatar's hands do not reach as far as I am reaching.

    I was wondering if there are any solutions for adding arm/leg stretching or a way to adjust the length of arm/legs (by just a little bit would really be nice)?

    Thanks
     
  31. glenn_unity250

    glenn_unity250

    Joined:
    Nov 9, 2017
    Posts:
    2
    maybe try scale up the model a little bit to match your physical body?
     
    trappist-1 likes this.
  32. trappist-1

    trappist-1

    Joined:
    Mar 26, 2017
    Posts:
    337
    I actually already have this as an option, however when I scale the entire avatar so that it's arm length matches mine then I notice that the legs become too long and the knees start to bend too much.

    I would really like to be able to tweak/offset certain bones like only the arms so the user can dial in to a custom fit.
     
  33. xc447395708

    xc447395708

    Joined:
    Mar 8, 2018
    Posts:
    1
    Hi Partel,I want to know the difference between the principle of Final IK and Unity IK. How does it change the position of the target while changing other bones?
     
  34. cspid

    cspid

    Joined:
    Apr 25, 2014
    Posts:
    13
    Hello, I'm trying to develop a system where two characters (rigged with final IK and puppetmaster) can grab one another and push and pull. This would not be like picking up the character, but simply pushing and pulling them off balance. It seems like the example in the 'Holding Hands' demo is a good starting point, but what exactly would be the best way to go about this?

    Thanks
     
  35. pan4ezzz

    pan4ezzz

    Joined:
    Jul 9, 2017
    Posts:
    12
    Good time Partel!

    I'm trying to adapt my game for UNET. I had a problem with Interaction Systems, in particular with pickUp flag, because network objects can not be placed in the hierarchy of other network objects. We have to change a lot.

    The first problem is resetting the handposer weight after completing the interaction (whithout pickUp flag).

    Because I will now simulate pickUp showing the fake object in the character's hand, I want the hand to remain in the handposer position after the interaction is complete.

    I assume that there is a competent solution and do not have to store another copy of the Interaction Target for an urgent substitution after the reset.

    Thank you!
     

    Attached Files:

    • io.PNG
      io.PNG
      File size:
      109.1 KB
      Views:
      169
  36. ysleungrockman

    ysleungrockman

    Joined:
    Mar 16, 2014
    Posts:
    13
    Hi. After testing again, the same thing happened after setting the locomotion weight to 0 and moving the root transform. Here are the pictures showing what happened:


    The locomotion weight was set to 0 before I hit play. After hitting the play button, the model looks like this on screen (it's like that since all equipment were on the table, and that's not the problem...) Then I tried to move the root manually in the Scene window.


    This happened. The root of the model has been moved but the model was still in the same position and stretched to pose differently. However I moved the root, the model was still in the same position and was only stretching.

    Here are the setting on the VRIK script:



    Have I done anything wrong?

    Edit: I think I figured out what's the problem. When I turn the position weights of both legs into 0, I successfully move the model. However, there is new problem happening. When I turn those position weights back to 1, the model goes back to its original position. How can I solve that?
     
    Last edited: Mar 9, 2018
  37. Partel-Lang

    Partel-Lang

    Joined:
    Jan 2, 2013
    Posts:
    1,757
    Hey, thanks for the purchase!
    There's no built in method for this yet, but you could just check the distance of the hand targets from the head target and keep them within a minimum distance from it.

    Hey,
    Arm stretching is already built in to the latest version. Go to the "VRIK (Basic)" scene and copy over the "Stretch Curve" from the arms of the Pilot to your own character. Leg stretching has already been developed for the next version, please PM me know if you are in a hurry with it.

    Hey,
    Final IK components work basically like layers on top of your animation. In each update, they read the pose of the character, solve according to solver parameters and targets (they do not change the position of the targets), then write the results back on the character. So compared to Unity IK that is restricted to updating within the Animator update cycle, Final IK components can be custom updated and stacked on top of each other to create more complex IK rigs.
    Final IK components also have more open API and of course there is no Full Body IK or VR IK in Unity IK.
    Final IK also comes with a bunch of extra tools built on those solvers like Grounder for foot placement correction and the procedural Interaction System.

    Hey,
    You could connect the hands with a physical joint. You'd have to release some pin weight from the arms and upper body or the pinning forces will fight with that joint, producing jitter. That should give you pulling/pushing range of about a meter or so. If you need to go past that, call behaviourPuppet.SetState(BehaviourPuppet.State.Unpinned) on the puppet that should lose balance or use a character controller with some locomotion animation to make one of the puppets follow the other by being dragged.

    Hey,
    If you set the weight curve for "Poser Weight" to end at 1, not 0, it should maintain the pose of the hand after interaction is complete.

    Hey,
    Yeah, if you have leg position weights set to 0, they will be locked to the leg target positions even if you don't have Targets assigned for the legs (then it will be either to the last position of the target or wherever the feet were at Start).

    If you set leg position weights back to 0, the model root will not go back to its original position, the leg target positions just pull the character from the legs to that position since you have "Plant Feet" enabled.
    You'll either need to keep those weights at 0 or move the leg targets to where you need your character to be.

    Cheers,
    Pärtel
     
  38. ysleungrockman

    ysleungrockman

    Joined:
    Mar 16, 2014
    Posts:
    13
    Thank you for your reply. So it's because of the position of the leg targets. If that's the case, would setting those targets as children of the cameraRig solve the problem?
     
  39. kerrmedia

    kerrmedia

    Joined:
    Nov 4, 2015
    Posts:
    246
    Hi Partel,
    Moving grounder demo over to spider. Grounder has 3 joints, the spider has 4? Is there a tutorial for this? Also, how is the foot assigned to a given ik segment?
     
  40. Partel-Lang

    Partel-Lang

    Joined:
    Jan 2, 2013
    Posts:
    1,757
    Yeah, you could try that, but I'm not sure as I don't know what you are using the foot targets for exactly.

    Hey,
    Don't have a tutorial for that specific thing, but GrounderIK enables you to use any IK component of Final IK (except for FBBIK, BipedIK and VRIK that have their own dedicated Grounders). So you can replace the LimbIK components with CCDIK or FABRIK that allow for more bones and RotationLimits on them.
    Or you could keep the LimbIK and just skip one of the bones in the leg, it will still work. Set the first bone as Bone 1, the last bone as Bone 3 and choose one of the middle bones for Bone2. It will just not use the missing bone, but the leg will still be grounded.

    Best,
    Pärtel
     
    kerrmedia likes this.
  41. GXMark

    GXMark

    Joined:
    Oct 13, 2012
    Posts:
    394
    If i want to remove the Demo folders and Files which do i remove from Final IK ? Its unclear because there are shared folders
     
  42. Partel-Lang

    Partel-Lang

    Joined:
    Jan 2, 2013
    Posts:
    1,757
    Hey,
    If you have the latest version, first you'll need to move VRIKCalibrator.cs to Plugins/RootMotion/FinalIK/Tools, it got into the demo folders by accident.
    After that, just nuke these folders:

    Plugins/RootMotion/FinalIK/_DEMOS
    Plugins/RootMotion/Editor/FinalIK/_DEMOS
    Plugins/RootMotion/Shared Demo Assets
    Plugins/RootMotion/Editor/Shared Demo Scripts

    Best,
    Pärtel
     
  43. skinwalker

    skinwalker

    Joined:
    Apr 10, 2015
    Posts:
    229
    I have problems when using full body biped IK. It's only attached to the character without doing anything in that scene but if I pause the game and my camera is up (where the characters body is not visible) the character starts blinking in T pose. It only happens when the game is paused and I'm looking upwards.

    The bug also happens if the game object has FBBIK attached and it has IK targets in it's hierarchy, then another object uses these targets and if you look up the other character starts flickering. The bug can be avoided if "Fix Transforms" is set to false, why this is even happening?
     
    Last edited: Mar 16, 2018
  44. UnnamedGameDev

    UnnamedGameDev

    Joined:
    Jul 24, 2012
    Posts:
    15
    Reposting this questin which never got an answer:

    Hi guys. I have another little problem, and I don't know how to solve it. Let me explain.
    I have a customizable character(I can change clothes on it). So I have a rigged character, and the clothes are rigged too, and if I apply FINAL IK on character, it not effect clothes too. So the question is: I have to apply FINAL IK on clothes and on character in the same time? Or it's not ok, and there should be another method for clothes. Thanks a lot, and sorry my english;)
     
  45. skinwalker

    skinwalker

    Joined:
    Apr 10, 2015
    Posts:
    229
    You can try attaching this script to the cloth game object that has a skinned mesh renderer component.

    Code (CSharp):
    1. using System.Collections.Generic;
    2. using UnityEngine;
    3. using System.Linq;
    4.  
    5. namespace Assets.Scripts.Game.Utilities
    6. {
    7.     public class BonesDuplicator : MonoBehaviour
    8.     {
    9.  
    10.         private void Start()
    11.         {
    12.             CopyBones();
    13.         }
    14.  
    15.         // Your character's Shape (containing Skinned Mesh Renderer)
    16.         [SerializeField] private SkinnedMeshRenderer _sourceHumanBody;
    17.  
    18.         private void CopyBones()
    19.         {
    20.             var targerRenderer = GetComponent<SkinnedMeshRenderer>();
    21.  
    22.             targerRenderer.bones = _sourceHumanBody.bones.Where(b => targerRenderer.bones.Any(t => t.name.Equals(b.name)))
    23.                 .ToArray();
    24.         }
    25.  
    26.         private void CopyBonesWithDictionary()
    27.         {
    28.             SkinnedMeshRenderer targetRenderer = _sourceHumanBody.GetComponent<SkinnedMeshRenderer>();
    29.  
    30.             Dictionary<string, Transform> boneMap = new Dictionary<string, Transform>();
    31.             foreach (Transform bone in targetRenderer.bones)
    32.             {
    33.                 boneMap[bone.name] = bone;
    34.             }
    35.  
    36.             SkinnedMeshRenderer thisRenderer = GetComponent<SkinnedMeshRenderer>();
    37.             Transform[] boneArray = thisRenderer.bones;
    38.             for (int idx = 0; idx < boneArray.Length; ++idx)
    39.             {
    40.                 string boneName = boneArray[idx].name;
    41.                 if (false == boneMap.TryGetValue(boneName, out boneArray[idx]))
    42.                 {
    43.                     Debug.LogError("failed to get bone: " + boneName);
    44.                     Debug.Break();
    45.                 }
    46.             }
    47.             thisRenderer.bones = boneArray;
    48.         }
    49.     }
    50. }
    51.  
    Then drag and drop the character's skinned mesh renderer in the "source human body", this will make the clothes / hair to follow the character. There are two methods that do the exact same thing (the second one will print errors).
     
    Partel-Lang likes this.
  46. UnnamedGameDev

    UnnamedGameDev

    Joined:
    Jul 24, 2012
    Posts:
    15
    Works like a charm when using CopyBonesWithDictionary(), thanks alot mate!
     
  47. skinwalker

    skinwalker

    Joined:
    Apr 10, 2015
    Posts:
    229
    No problem. Both should do the same, I have been using the first one because it's shorter. I think the only difference is that CopyBonesWithDictionary will map every bone that exists in the cloth and exists in the character model, but if there's a bone in the cloth that's not properly skinned to the character it will ignore it and continue, while the first method will fail and won't do anything if there's one bone that has a problem, so check your bones hierarchy make sure that every bone in the cloth's hierarchy is also present in the character's rig hierarchy and skinned to it.
     
  48. jcbhmmn

    jcbhmmn

    Joined:
    Oct 4, 2014
    Posts:
    12
    I am trying to use Leap Motion with VRIK. I am using unity 2017.3, I have the latest version of Final IK (Jan 2018) and the latest Leap Motion Core Asset Package. I was getting errors with the class IHandModel and have changed it to HandModel in the VRIKHand.cs file. The Leap capsule hands now appear, but are not attached to the dummy avatar in the example scene. The rotation of the avatar hand is linked to the leap motion hands, but not the fingers and the position. It looks like the finger and hand joints are not being found and referenced. I have attached a screenshot showing this issue. Am I missing something in the setup? VRIK_Leap.jpg
     
  49. Partel-Lang

    Partel-Lang

    Joined:
    Jan 2, 2013
    Posts:
    1,757
    Hey,
    Its because of culling. If the skinned mesh disappears, you'll have to enable "Update When Offscreen" in the SkinnedMeshRenderer. But what you are seeing is the Animator being culled, set Animator's "Culling Mode" to "Always Animate".

    Hey, sorry for missing your question, happens sometimes with all those questions. Looks like you already found the answer.

    Ahh, they just keep changing everything.... I updated to that latest core asset, but now my Leap device seems to have stopped working. Anyway, please import this update, you'll also have to go to HandModel.cs and change line 29 from private to protected. If fixes script errors, but I can't confirm it all will work as I cant make my Leap device work for some reason anymore.

    Best,
    Pärtel
     
  50. HiLiX

    HiLiX

    Joined:
    Sep 10, 2015
    Posts:
    11
    Hi Partel,
    What is the best way to calibrate height. I would like to calibrate player height at the beginning of game and then use calibration data for all levels (something like in Raw Data). Is it enough to keep only scale change of VRIK or something else also change? Another problem that I have is when I do calibration using VRIKCalibrator.Calibrate() when I rotate my arm the wrists are very thin and you can see gap between hand and arm. I'm using Strech Curve from "VRIK (Basic)" and Pilot model...
    twist.png twist2.png

    You can use
    VRTK_SDKTransformModify class - works great in my case.
     
    Last edited: Mar 20, 2018