Showing results for 
Search instead for 
Did you mean: 
Honored Contributor III

Unity Tip: Creating Realistic Lower Arm Movement with RealSense

Hi everyone,

For a long time in my RealSense Unity project featuring a full-body avatar with realistic limb control, I had difficulty creating accurate controls for the lower arms.  The problem was that real-life lower arms appeared to have two kinds of movement: bending when the upper arm is moved, and also bending when the upper arm is stationary, depending on where a person applies muscle effort.

I have, however, discovered the solution to this problem.  The bending up-down of the human lower arm when the upper arm moves is actually an optical illusion.  The elbow joint remains stationary, but the lower arm appears to be lifting or dropping because the angle of the upper arm is changing.  

So an arm and that is held out straight and then lifted or dropped with shoulder effort whilst the lower arm is held stationary will become diagonally-up straight or diagonally-down straight, with the lower arm maintaining its straight-ahead orientation no matter what the angle of the upper arm is.

Further anatomical study determined that when the lower arm is lowered or raised whilst the shoulder is held stationary, the hand is moving backwards when lifting and forwards when dropping.

I was therefore able to give the lower arm joint a TrackingAction rotation control script that had its rotational axes constrained to only move in the Z-depth direction.  The shoulder joint, meanwhile, has X-Y-Z open so that it can move up / down, towards / away from the side of the body, and back / forward.

The effect of this configuration was that when the avatar's upper arm was vertically lifted or dropped by moving the real-world hand up and down, the upper arm was moved but the angle of the lower arm remained relatively stationary.  When the hand was moved towards the camera, the lower arm dropped, and when the hand was moved backwards towards the body then it lifted.

The avatar was now able to mirror the real-world lower arm movements much more closely.  For example if my real right arm was moved across in front of the chest and the lower arm moved up to cover the face, the avatar also moved its arm to place its hand in front of its face.  If the hand was held close to the camera whilst lifting though then the arm remained relatively straight as it moved.


0 Kudos
0 Replies