In any recorded session, we provide two main sources of information: joint center data and joint angle data. Below, we outline the joint center keypoints and joint angles in our data exports.
Joint Center Data
Our models currently export 28 keypoints to the user. Figure 3 outlines these keypoints:
#  Name  #  Name  #  Name 
0  nose_3d  10  right_wrist_jc_3d  20  right_first_toe_3d 
1  left_eye_3d  11  left_hip_jc_3d  21  right_fifth_toe_3d 
2  right_eye_3d  12  right_hip_jc_3d  22  right_heel_3d 
3  left_ear_3d  13  left_knee_jc_3d  23  pelvis_3d 
4  right_ear_3d  14  right_knee_jc_3d  24  proximal_neck_3d 
5  left_shoulder_jc_3d  15  left_ankle_jc_3d  25  right_mid_toe_3d 
6  right_shoulder_jc_3d  16  right_ankle_jc_3d  26  left_mid_toe_3d 
7  left_elbow_jc_3d  17  left_first_toe_3d  27  mid_head_3d 
8  right_elbow_jc_3d  18  left_fifth_toe_3d 


9  left_wrist_jc_3d  29  left_heel_3d 


Note that keypoint 27, the midHead keypoint, is not shown as it would be located directly behind the nose keypoint [0] in this example.
These keypoints represent the joint center trajectories computed from our Inverse Kinematics solver. Thus, segment lengths will be “constrained” (i.e., will not meaningfully change lengths) throughout the motion trial.
Joint Angle Data
In addition to our keypoint data, we also export joint angle (and angular velocity) data. Before outlining the various angles we compute, it will be important to first highlight the two main ways we define a joint angle in our data exports (note: if you have a formal education in biomechanics, you can probably skip ahead to the “Our Joint Angle Exports” section below).
What is a joint angle?
There are two main ways that we compute joint angles using Uplift Capture. The first is called a cosine angle, which is simply the angle between two vectors. One example of a cosine angle that we compute are ankle dorsiflexion angles. This angle can be visualized by drawing one line (vector) from the ankle to the mid toe and another line (vector) from the ankle to the knee:
and then computing the angle between these two lines (vectors). The angular velocity is then computed via the finite difference method.
Other joints, such as the shoulder, are instead computed using Euler Angles. The mathematics are beyond the scope of this document, but instead of creating two vectors and computing a single angle, we instead create two Local Coordinate Systems (LCSs), define the rotation matrix between the “child” segment (usually the distal segment) and the “parent” segment (usually the proximal segment), and then decompose this matrix into rotations about 3 axes (i.e., X, Y, and Z). For a visual explanation of Euler angles, please see this linked video (click here). For example, when computing shoulder angles, we are decomposing the rotation matrix that defines the transformation from the Trunk’s LCS to the Upper Arm’s LCS. By decomposing these rotations in a specific order (outlined by the International Society of Biomechanics), we know that these angles will roughly correspond to the anatomical definitions of shoulder flexion/extension, ab/adduction, internal/external rotation, and so on (note that Euler angles computed with most motion capture systems are only approximations of the joint motions outlined in anatomy textbooks). Because Euler angles are not vectors, the joint angular velocities are not computed via simple differentiation. Instead, we compute an angular velocity tensor using the rotation matrices under the assumption that joints are rotating about a fixed axis.
Our Joint Angle Exports
Listed below are the specific joint angles that we export, by default, during any recorded session. Note that we only show the joint angles in the table below (except for global segment velocities used in the kinematic sequence). Joint velocities are appended with an _velocity naming convention in our data exports. For variables specified as “Euler”, note that angular velocities are computed by differentiating the rotation matrices whereas variables specified as “3D” are computed via finite differences of the joint angle.
Note: Visual explanation images coming soon.
Name  Description  Neutral/ “Zero” 
head_extension  Head Extension relative to the trunk (Euler).  Anatomical Position 
head_lateral_flexion_clockwise  Head lateral flexion relative to the trunk (Euler).  Anatomical Position 
head_twist_clockwise  Head rotation relative to the trunk (Euler).  Anatomical Position 
trunk_lateral_flexion_right  Trunk lateral rotation with reference to the pelvis (Euler).  Anatomical Position 
trunk_twist_clockwise  Trunk rotation with reference to the pelvis (Euler).  Anatomical Position 
right_shoulder_flexion  Upper arm flexion relative to the trunk (Euler).  Anatomical Position 
right_shoulder_adduction  Upper arm adduction relative to the trunk (Euler).  Anatomical Position 
right_shoulder_external_rotation  Upper arm external rotation relative to the trunk (Euler).  Tpose 
right_shoulder_horizontal_adduction  Upper arm horizontal adduction relative to the trunk (Euler).  Tpose 
right_elbow_flexion  Lower arm flexion relative to the upper arm (3D).  Anatomical Position 
right_hip_flexion_with_respect_to_trunk  Thigh flexion relative to the trunk (Euler).  Anatomical Position 
right_hip_adduction_with_respect_to_trunk  Thigh adduction relative to the trunk (Euler).  Anatomical Position 
right_hip_internal_rotation_with_respect_to_trunk  Internal rotation of the thigh relative to the trunk (Euler).  Anatomical Position 
right_hip_adduction_with_respect_to_pelvis  Thigh adduction relative to the pelvis (Euler).  Anatomical Position 
right_hip_internal_rotation_with_respect_to_pelvis  Internal rotation of the thigh relative to the pelvis (Euler).  Anatomical Position 
right_knee_extension  Shank flexion relative to the thigh (Euler).  Anatomical Position 
right_knee_varus  Shank varus relative to the thigh (Euler)  Anatomical Position 
right_knee_internal_rotation  Shank internal rotation relative to the thigh (Euler)  Anatomical Position 
right_ankle_dorsiflexion  Ankle flexion relative to shank (3D)  Anatomical Position 
pelvis_rotational_velocity_with_respect_to_ground  Rotational velocity of the pelvis segment relative to the GCS (Velocity)  NA 
trunk_rotational_velocity_with_respect_to_ground  Rotational velocity of the trunk segment relative to the GCS (Velocity)  NA 
right_arm_rotational_velocity_with_respect_to_ground  Rotational velocity of the upper arm segment relative to the GCS (Velocity)  NA 
Read here how to interact with these kinematic outputs in our raw data exports, our cloud visualizer, and our generated reports.