Kenwright (2013, pp. 63-64) discusses how the typical CCD algorithm can be applied to multiple hierarchy structures with separate end effectors.
“It work inwards from the end-effectors and bias the constrain update order towards the starting end-effector (i.e., by bouncing back to the start each time a joint moves), we can avoid joint ownership fighting. In such situations, however, the last updated sequence of joints for an end-effector will get priority on the final orientation (or length) of joints.” (Kenwright, 2013, pp. 63-64)
In this way the spine of the body can also react to reach towards (priority) targets should full extension of the arm still leave the 3D model unable to touch the target. As discussed by Bouckley (2018) (also referenced within previous blog entry) this mirrors humans natural motion where the spine will be moved to reach targets out of reach at full extension of the limb.
This should prove more believable than simple treating the shoulder to hand chains as two singular entities.
To ensure that both arm limbs continue to seek their respective targets (rather than the previous behaviour where the seeking arm would reposition the entire torso), a check is added to monitor whether any of the chain’s targets move position, and if they do, then all chains iteration counts are set to 0 so the CCD solution rotates their joints to reach the target.
The result:
Figure 1: Partially shared kinematic chain structure with two end effector targets |
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 2 Apr. 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 3 Apr. 2019]