Avatar Control Algorithm
by Jason Wu
1. Class KinectManager
1.1. GetJointKinectPosition()
1.2. GetJointPosition()
1.3. GetJointVelocity()
1.4. GetJointDirection()
1.5. GetDirectionBetweenJoints()
1.6. GetJointOrientation()
1.7. Awake()
1.7.1. StartKinect()
1.7.1.1. AvatarController
1.8. Update()
1.8.1. UpdateKinectStreams()
1.8.1.1. jointPositionFilter.UpdateFilter(ref bodyframe)
1.8.1.2. KinectInterop PollBodyFrame()
1.8.1.3. jointVelocityFilter.UpdateFilter(ref bodyFrame)
1.8.2. ProcessKinectStreams()
1.8.2.1. ProcessBodyFrameData()
1.8.2.1.1. CalculateJointOrients(ref bodyData)
2. Class AvatarController
2.1. MapBones()
2.2. SetModelArmsInTpose()
2.3. CheckMuscleLimits()
2.4. UpdateAvatar()
2.4.1. MoveAvatar()
2.4.2. TransformBone()
2.4.2.1. Kinect2AvatarRot()
2.4.3. CheckMuscleLimits()
2.5. Dictionaries about bones and unity mapping
3. Class KinectInterop
3.1. enum JointType
3.2. Vector3[] JointBaseDir
3.3. Class SensorData
3.4. Struct BodyFrameData
3.4.1. Struct BodyData
3.4.1.1. Struct Joint Data
3.5. JointType GetParentJoint()
3.6. JointType GetNextJoint()
3.7. Bool PollBodyFrame()
3.7.1. CalcBodyFrameJointVels()
3.7.2. CalcBodyFrameBoneDirs()