/* * This function will accept a ZigSkeleton instance and will extract world position and local rotation values for user joints. * These angles will then be added as a row into a user's time series tables * TODO: Create a way for the caller to be more specific about what joints to map */ public void SampleAllJoints(ZigSkeleton skel, int user_id, string scene_name, bool record_rotations = true, bool record_positions = true) { Vector3 r_shoulder_rot; Vector3 r_shoulder_pos; Vector3 r_elbow_rot; Vector3 r_elbow_pos; Vector3 r_wrist_rot; Vector3 r_wrist_pos; Vector3 r_hand_rot; Vector3 r_hand_pos; Vector3 l_shoulder_rot; Vector3 l_shoulder_pos; Vector3 l_elbow_rot; Vector3 l_elbow_pos; Vector3 l_wrist_rot; Vector3 l_wrist_pos; Vector3 l_hand_rot; Vector3 l_hand_pos; Vector3 head_rot; Vector3 head_pos; Vector3 neck_rot; Vector3 neck_pos; Vector3 l_collar_rot; Vector3 l_collar_pos; Vector3 r_collar_rot; Vector3 r_collar_pos; Vector3 torso_rot; Vector3 torso_pos; Vector3 waist_rot; Vector3 waist_pos; Vector3 l_hip_rot; Vector3 l_hip_pos; Vector3 r_hip_rot; Vector3 r_hip_pos; Vector3 l_knee_rot; Vector3 l_knee_pos; Vector3 r_knee_rot; Vector3 r_knee_pos; Vector3 l_ankle_rot; Vector3 l_ankle_pos; Vector3 r_ankle_rot; Vector3 r_ankle_pos; Vector3 l_foot_rot; Vector3 l_foot_pos; Vector3 r_foot_rot; Vector3 r_foot_pos; float [] rotation_values; float [] position_values; string query; if (record_rotations) { r_shoulder_rot = skel.GetJointLocalEulerAngles(ZigJointId.RightShoulder); l_shoulder_rot = skel.GetJointLocalEulerAngles(ZigJointId.LeftShoulder); r_elbow_rot = skel.GetJointLocalEulerAngles(ZigJointId.RightElbow); l_elbow_rot = skel.GetJointLocalEulerAngles(ZigJointId.LeftElbow); r_wrist_rot = skel.GetJointLocalEulerAngles(ZigJointId.RightWrist); l_wrist_rot = skel.GetJointLocalEulerAngles(ZigJointId.LeftWrist); l_hand_rot = skel.GetJointLocalEulerAngles(ZigJointId.LeftHand); r_hand_rot = skel.GetJointLocalEulerAngles(ZigJointId.RightHand); head_rot = skel.GetJointLocalEulerAngles(ZigJointId.Head); neck_rot = skel.GetJointLocalEulerAngles(ZigJointId.Neck); l_collar_rot = skel.GetJointLocalEulerAngles(ZigJointId.LeftCollar); r_collar_rot = skel.GetJointLocalEulerAngles(ZigJointId.RightCollar); torso_rot = skel.GetJointLocalEulerAngles(ZigJointId.Torso); waist_rot = skel.GetJointLocalEulerAngles(ZigJointId.Waist); l_hip_rot = skel.GetJointLocalEulerAngles(ZigJointId.LeftHip); r_hip_rot = skel.GetJointLocalEulerAngles(ZigJointId.RightHip); l_knee_rot = skel.GetJointLocalEulerAngles(ZigJointId.LeftKnee); r_knee_rot = skel.GetJointLocalEulerAngles(ZigJointId.RightKnee); l_ankle_rot = skel.GetJointLocalEulerAngles(ZigJointId.LeftAnkle); r_ankle_rot = skel.GetJointLocalEulerAngles(ZigJointId.RightAnkle); l_foot_rot = skel.GetJointLocalEulerAngles(ZigJointId.LeftFoot); r_foot_rot = skel.GetJointLocalEulerAngles(ZigJointId.RightFoot); rotation_values = new float[] { l_shoulder_rot.x, l_shoulder_rot.y, l_shoulder_rot.z, r_shoulder_rot.x, r_shoulder_rot.y, r_shoulder_rot.z, l_elbow_rot.x, l_elbow_rot.y, l_elbow_rot.z, r_elbow_rot.x, r_elbow_rot.y, r_elbow_rot.z, l_wrist_rot.x, l_wrist_rot.y, l_wrist_rot.z, r_wrist_rot.x, r_wrist_rot.y, r_wrist_rot.z, l_hand_rot.x, l_hand_rot.y, l_hand_rot.z, r_hand_rot.x, r_hand_rot.y, r_hand_rot.z, head_rot.x, head_rot.y, head_rot.z, neck_rot.x, neck_rot.y, neck_rot.z, l_collar_rot.x, l_collar_rot.y, l_collar_rot.z, r_collar_rot.x, r_collar_rot.y, r_collar_rot.z, torso_rot.x, torso_rot.y, torso_rot.z, waist_rot.x, waist_rot.y, waist_rot.z, l_hip_rot.x, l_hip_rot.y, l_hip_rot.z, r_hip_rot.x, r_hip_rot.y, r_hip_rot.z, l_knee_rot.x, l_knee_rot.y, l_knee_rot.z, r_knee_rot.x, r_knee_rot.y, r_knee_rot.z, l_ankle_rot.x, l_ankle_rot.y, l_ankle_rot.z, r_ankle_rot.x, r_ankle_rot.y, r_ankle_rot.z, l_foot_rot.x, l_foot_rot.y, l_foot_rot.z, r_foot_rot.x, r_foot_rot.y, r_foot_rot.z }; db_control.OpenDB(); db_control.InsertTimeSeriesRotations(active_user, scene_name, rotation_values); db_control.CloseDB(); } if (record_positions) { r_shoulder_pos = skel.GetJointWorldPosition(ZigJointId.RightShoulder); l_shoulder_pos = skel.GetJointWorldPosition(ZigJointId.LeftShoulder); r_elbow_pos = skel.GetJointWorldPosition(ZigJointId.RightElbow); l_elbow_pos = skel.GetJointWorldPosition(ZigJointId.LeftElbow); r_wrist_pos = skel.GetJointWorldPosition(ZigJointId.RightWrist); l_wrist_pos = skel.GetJointWorldPosition(ZigJointId.LeftWrist); l_hand_pos = skel.GetJointWorldPosition(ZigJointId.LeftHand); r_hand_pos = skel.GetJointWorldPosition(ZigJointId.RightHand); head_pos = skel.GetJointWorldPosition(ZigJointId.Head); neck_pos = skel.GetJointWorldPosition(ZigJointId.Neck); l_collar_pos = skel.GetJointWorldPosition(ZigJointId.LeftCollar); r_collar_pos = skel.GetJointWorldPosition(ZigJointId.RightCollar); torso_pos = skel.GetJointWorldPosition(ZigJointId.Torso); waist_pos = skel.GetJointWorldPosition(ZigJointId.Waist); l_hip_pos = skel.GetJointWorldPosition(ZigJointId.LeftHip); r_hip_pos = skel.GetJointWorldPosition(ZigJointId.RightHip); l_knee_pos = skel.GetJointWorldPosition(ZigJointId.LeftKnee); r_knee_pos = skel.GetJointWorldPosition(ZigJointId.RightKnee); l_ankle_pos = skel.GetJointWorldPosition(ZigJointId.LeftAnkle); r_ankle_pos = skel.GetJointWorldPosition(ZigJointId.RightAnkle); l_foot_pos = skel.GetJointWorldPosition(ZigJointId.LeftFoot); r_foot_pos = skel.GetJointWorldPosition(ZigJointId.RightFoot); position_values = new float[] { l_shoulder_pos.x, l_shoulder_pos.y, l_shoulder_pos.z, r_shoulder_pos.x, r_shoulder_pos.y, r_shoulder_pos.z, l_elbow_pos.x, l_elbow_pos.y, l_elbow_pos.z, r_elbow_pos.x, r_elbow_pos.y, r_elbow_pos.z, l_wrist_pos.x, l_wrist_pos.y, l_wrist_pos.z, r_wrist_pos.x, r_wrist_pos.y, r_wrist_pos.z, l_hand_pos.x, l_hand_pos.y, l_hand_pos.z, r_hand_pos.x, r_hand_pos.y, r_hand_pos.z, head_pos.x, head_pos.y, head_pos.z, neck_pos.x, neck_pos.y, neck_pos.z, l_collar_pos.x, l_collar_pos.y, l_collar_pos.z, r_collar_pos.x, r_collar_pos.y, r_collar_pos.z, torso_pos.x, torso_pos.y, torso_pos.z, waist_pos.x, waist_pos.y, waist_pos.z, l_hip_pos.x, l_hip_pos.y, l_hip_pos.z, r_hip_pos.x, r_hip_pos.y, r_hip_pos.z, l_knee_pos.x, l_knee_pos.y, l_knee_pos.z, r_knee_pos.x, r_knee_pos.y, r_knee_pos.z, l_ankle_pos.x, l_ankle_pos.y, l_ankle_pos.z, r_ankle_pos.x, r_ankle_pos.y, r_ankle_pos.z, l_foot_pos.x, l_foot_pos.y, l_foot_pos.z, r_foot_pos.x, r_foot_pos.y, r_foot_pos.z }; db_control.OpenDB(); db_control.InsertTimeSeriesPositions(active_user, scene_name, position_values); db_control.CloseDB(); } }