Jump to content

Inverse kinematics

From VR & AR Wiki

Inverse kinematics (IK) is the mathematical process of computing the joint parameters of a kinematic chain, such as a jointed arm or a character skeleton, so that the end of the chain (the end effector) reaches a desired position and orientation. It is the inverse of forward kinematics, which computes the end effector's pose from known joint angles.[1][2]

In virtual reality (VR) and augmented reality (AR), IK is the standard technique for animating an avatar's limbs. A headset typically reports only the pose of the head and, through the controllers, the two hands. IK takes these few tracked points as targets and solves for the rotations of the unmeasured joints (elbows, shoulders, spine, and, when extra trackers are present, hips, knees, and ankles), so the avatar's arms and body follow the user's real movements.[3][4]

Forward and inverse kinematics

A kinematic chain is a series of rigid links connected by joints. Forward kinematics asks where the end effector ends up given a set of joint angles; for a chain with fixed link lengths this has a single, directly computable answer. Inverse kinematics asks the opposite question: which joint angles place the end effector at a specified target. The inverse problem is harder. A chain with several rotational joints usually has many valid solutions, the desired target may be unreachable, and configurations called singularities can leave the solution ill-defined.[1][5]

Because of this ambiguity, an IK solver for an articulated figure rarely returns just any mathematically valid answer. It is constrained to produce a pose that looks natural, respecting joint limits (a human elbow does not bend backward) and preferring solutions close to the previous frame so the motion stays smooth.[1]

Solver families

The 2018 survey by Aristidou, Lasenby, Chrysanthou, and Shamir groups IK methods used in computer graphics into analytical, numerical, data-driven, and hybrid families.[1] Several are common in VR avatar systems:

Method Approach Notes
Analytic (closed-form) Solves the joint angles directly from geometry Fast and exact, but practical only for short, simple chains such as a two-bone arm or leg. Many VR arm solvers compute the elbow analytically.
Cyclic coordinate descent (CCD) Iteratively rotates one joint at a time, starting at the end effector and working back toward the root Simple and cheap, converges in a few passes, but can produce unnatural postures and struggles with multiple end effectors.
FABRIK Forward And Backward Reaching Inverse Kinematics; iterates in joint-position space rather than angle space, with one pass from the end effector to the root and one back Converges quickly with low computational cost, avoids the oscillations seen with CCD, and handles chains with multiple end effectors.
Jacobian-based Numerically linearizes the relationship between joint changes and end-effector motion using the Jacobian matrix Flexible and general, but heavier to compute and prone to instability near singularities.

CCD adjusts each joint in turn, from the end effector back to the root, until the end effector is close enough to the target.[1] FABRIK was introduced by Andreas Aristidou and Joan Lasenby in a 2011 paper in the journal Graphical Models. Rather than working with rotation angles, it treats the chain as a set of point positions and finds each joint location by working forward from the end effector to the base and then backward from the base to the end effector. The authors report that it converges in fewer iterations than earlier solvers, carries low computational cost, produces visually smooth movement without oscillations, and supports multiple chains with multiple end effectors.[2]

Use in VR and AR avatars

Mixed reality headsets track the user's head in world space and track the hands through the controllers, which on its own limits an avatar to its upper body.[4] Driving an avatar from these signals is known as three-point tracking: the system infers a full body pose from the poses of the head and the two hands.[3] An IK solver takes the head and hand poses as targets and computes the rotations of the untracked joints, reconstructing the arms, and approximating the torso, so the avatar mirrors the wearer.[3][1]

The lower body is the difficult part of three-point tracking, because the legs are not measured and many leg poses are consistent with the same head and hand positions.[6] Solvers therefore either keep the avatar's feet planted using procedural rules, or estimate the legs from the upper-body motion. Adding more tracked points reduces the guesswork. With extra trackers worn on the waist and both feet, a setup reaches six tracked points, giving the solver direct control over the hips and each lower limb.[7]

Because real link lengths differ between users, IK-driven avatars are usually calibrated to the wearer's body. In a common calibration the user stands in a T-pose while the software measures height, arm span, and leg length; inaccurate measurements show up as permanently bent virtual knees.[8]

Software and notable uses

VRChat, a social VR platform, drives avatars with an IK system. Its current version, IK 2.0, was introduced in 2022 and is described by the developer as a complete revamp of every aspect of tracking, adding support for more tracking points, calibration saving, and new IK settings, while also improving behavior for users on three-point tracking.[9] For full-body tracking VRChat supports additional tracking points using Lighthouse-ecosystem devices such as the Vive Tracker and the Tundra Tracker, assigned in software to the feet, knees, hip, chest, elbows, or shoulders; any bend in the spine is treated as slack that the IK system attempts to straighten.[10]

In the Unity engine, the RootMotion asset Final IK includes a solver called VRIK, a full-body solver aimed at VR avatars. According to its developer it supports up to six tracked points (head, hands, feet, and body) with elbow and knee bend goals and built-in procedural locomotion, and it is independent of the avatar's bone orientations, requiring only position and rotation offsets for the head and hands.[11] VRIK began as a purpose-built solver for the three-controller VR problem, written by Pärtel Lang for the Oculus Touch launch title Dead and Buried (2016) to drive each player's avatar body from the head and hand poses; at the time no existing full-body IK package met VR's requirements, so a custom hybrid analytic-heuristic solver was developed and later folded into Final IK.[12]

Research has moved beyond purely geometric solvers toward data-driven methods that learn plausible body motion from motion capture datasets. AvatarPoser, presented at the European Conference on Computer Vision in 2022 by Jiaxi Jiang and colleagues at ETH Zurich, was described as the first learning-based method to predict full-body poses in world coordinates using only motion input from the head and hands. It combines a Transformer network with a forward-kinematics module to position the joints and then refines the arm joints' positions with an inverse-kinematics optimization routine so they match the original tracking input.[4] Such hybrid systems pair a learned motion prior, which handles the ambiguous lower body, with an IK step that keeps the tracked hands precisely on target.[6]

References

  1. 1.0 1.1 1.2 1.3 1.4 1.5
    Lasenby, J.(September 2018). "Inverse Kinematics Techniques in Computer Graphics
    A Survey".{Template:Journal. 37(6)
    35-58. doi:10.1111/cgf.13310. https://onlinelibrary.wiley.com/doi/abs/10.1111/cgf.13310.
  2. 2.0 2.1
    Lasenby, J.(2011). "FABRIK
    A fast, iterative solver for the Inverse Kinematics problem".{Template:Journal. 73(5)
    243-260. doi:10.1016/j.gmod.2011.05.003. http://www.andreasaristidou.com/publications/papers/FABRIK.pdf.
  3. 3.0 3.1 3.2 Template:Cite thesis
  4. 4.0 4.1 4.2 Jiang, Jiaxi; Streli, Paul; Qiu, Huajian; Fender, Andreas; Laich, Larissa; Snape, Patrick; Holz, Christian (2022). "AvatarPoser: Articulated Full-Body Pose Tracking from Sparse Motion Sensing". Template:Hide in printTemplate:Only in print. https://arxiv.org/abs/2207.13784.
  5. "What Is Inverse Kinematics?". https://www.mathworks.com/discovery/inverse-kinematics.html.
  6. 6.0 6.1 Template:Cite arXiv
  7. "Full-Body Tracking Setup in VRChat: How to Get FBT and More". https://blog.vive.com/us/full-body-tracking-in-vrchat-how-to-get-fbt-and-more/.
  8. "Vive Trackers Experiments - Part 2: Setup, Props, and Full Body Virtual Reality". 2022-12-02. https://skarredghost.com/2022/12/02/vive-trackers-full-body-vrchat-2/.
  9. "IK 2.0 Features and Options". https://docs.vrchat.com/docs/ik-20-features-and-options.
  10. "Full-Body Tracking". https://docs.vrchat.com/docs/full-body-tracking.
  11. "VRIK". http://www.root-motion.com/finalikdox/html/page16.html.
  12. "Developer Perspectives: Character Animation in 'Dead and Buried'". https://developers.meta.com/horizon/blog/developer-perspectives-character-animation-in-dead-and-buried/.