Pages

Monday, March 25, 2019

CCD - Joint Bias and Rotation Damping

Joint Bias 

As discussed by Bouckley (2018) the seeking action of CCD through a kinematic chain does not effectively mimic the natural motion of a human. A human will choose to move there limbs as little as possible to reach their goal, only moving their spine if it becomes necessary, whereas my solution will update every link in the chain each iteration.

To simulate more organic movement of the chain, Kenwright (2013, pp. 59-64) and Bouckley (2018) suggest giving joints closer to the end effector a higher bias, which will cause the joint order to “bounce back towards the start end and updates earlier joints” (Kenwright, 2013, p. 60) each time a joint is corrected, before progressing to the subsequent joint in the chain.

Figure 1: Joint bias
This favouring one chain end for joint correction more closely mirrors the natural joint accommodation behaviour of humans.


Rotation Damping 

Because CCD is a heuristic iterative search each joint correction does not guarantee a smooth approach to the target location. As my solution will be used to generate animations, this is a significant problem. Kenwright (2013, p. 64) suggests damping the CCD to give a smoothed approach.

Figure 2: Rotation damping
This is done by moving each joint a only a portion of the rotation towards the corrective rotation each iteration. This removes any oscillating results that may occur as all joints are continuously reconfigured.


Result 

The result (shown in 2D so the difference may be highlighted across a chain of more degrees of freedom) is contrasted with the previous behaviour in figure 3.

Figure 3: Comparison of biased and dampened CCD (bottom) versus unrestricted CCD (top)
The updated behaviour appears far more natural, though joint corrections can still result in overextensions of sequential bone segments.


Next Objective 

Constraining the range and axis of joint rotations at each joint would prevent impossible joint configurations and ensure that the biped limbs never exceed a regular configuration.


References
Bouckley, J. (2018). An Introduction to CCD IK and How to use it - Unite Berlin 2018. Available at: https://www.youtube.com/watch?v=MA1nT9RAF3k [Accessed 23 Mar. 2019]

Kenwright, B. (2013). Game Inverse Kinematics. [Place of publication not identified]: CreatSpace, pp.59-65.

Bibliography
Bereznyak, A. (2016). IK Rig: Procedural Pose Animation - GDC 2016. Available at: https://www.youtube.com/watch?v=KLjTU0yKS00 [Accessed 21 Mar. 2019]

Bergen, G. (2014). Math for Game Programmers: Inverse Kinematics. Available at: https://www.gdcvault.com/play/1020056/Math-for-Game-Programmers-Inverse [Accessed 1 Mar. 2019]

Kenwright, B. (2012). Game Physics. pp.8, 90-91.

Kenwright, B. (2012). Inverse Kinematics – Cyclic Coordinate Descent (CCD). Journal of Graphics Tools, 16(4), pp.177-217. Available at: https://www.researchgate.net/publication/263226178_Inverse_Kinematics_-_Cyclic_Coordinate_Descent_CCD [Accessed 24 Mar. 2019]