fillQuats(joint,lastgood,movementInfo.size()-1);
if (lastgood!=movementInfo.size()-1){ ((PointInTime)movementInfo.get(movementInfo.size()-1)).jointRotation[joint]= new Quaternion(((PointInTime)movementInfo.get(lastgood)).jointRotation[joint]); fillQuats(joint,lastgood,movementInfo.size()-1); }
    private void fillRots() {        for (int joint=0;joint<numJoints;joint++){            // 1) Find first non-null rotation of joint <code>joint</code>            int start;            for (start=0;start<movementInfo.size();start++){                if (((PointInTime)movementInfo.get(start)).jointRotation[joint]!=null) break;            }            if (start==movementInfo.size()){    // if they are all null then fill with identity                for (int i=0;i<movementInfo.size();i++)                    ((PointInTime)movementInfo.get(i)).jointRotation[joint]=new Quaternion();                continue;  // we're done with this joint so lets continue            }            if (start!=0){  // if there -are- null elements at the begining, then fill with first non-null                unSyncbeginAngle.set( ((PointInTime)movementInfo.get(start)).jointRotation[joint]);                for (int i=0;i<start;i++)                    ((PointInTime)movementInfo.get(i)).jointRotation[joint]=new Quaternion(unSyncbeginAngle);            }            int lastgood=start;            for (int i=start+2;i<movementInfo.size();i++){                if (((PointInTime)movementInfo.get(i)).jointRotation[joint]!=null){                    fillQuats(joint,lastgood,i);    // fills gaps                    lastgood=i;                }            }            fillQuats(joint,lastgood,movementInfo.size()-1);  // fills tail        }    }