1using Microsoft.Azure.Kinect.BodyTracking;
2using Microsoft.Azure.Kinect.Sensor;
6using System.Runtime.Serialization;
20 public int Length {
get;
private set; }
21 public uint
Id {
get;
private set; }
33 int maxJointsLength = copyFromBody.
Length;
36 for (
int i = 0; i < maxJointsLength; i++) {
42 copiedBody.Id = copyFromBody.
Id;
43 copiedBody.Length = copyFromBody.
Length;
49 Length = Microsoft.Azure.Kinect.BodyTracking.Skeleton.JointCount;
51 for (
int bodyPoint = 0; bodyPoint <
Length; bodyPoint++) {
53 JointPositions3D[bodyPoint] = body.Skeleton.GetJoint(bodyPoint).Position / 1000.0f;
54 JointRotations[bodyPoint] = body.Skeleton.GetJoint(bodyPoint).Quaternion;
58 var position2d = sensorCalibration.TransformTo2D(
60 CalibrationDeviceType.Depth,
61 CalibrationDeviceType.Depth);
63 if (position2d !=
null) {
72 public BodyData(SerializationInfo info, StreamingContext context) {
73 float[] JointPositions3DX = (
float[])info.GetValue(
"JointPositions3DX", typeof(
float[]));
74 float[] JointPositions3DY = (
float[])info.GetValue(
"JointPositions3DY", typeof(
float[]));
75 float[] JointPositions3DZ = (
float[])info.GetValue(
"JointPositions3DZ", typeof(
float[]));
77 for (
int i = 0; i < JointPositions3DX.Length; i++) {
83 float[] JointPositions2DX = (
float[])info.GetValue(
"JointPositions2DX", typeof(
float[]));
84 float[] JointPositions2DY = (
float[])info.GetValue(
"JointPositions2DY", typeof(
float[]));
86 for (
int i = 0; i < JointPositions2DX.Length; i++) {
91 float[] JointRotationsX = (
float[])info.GetValue(
"JointRotationsX", typeof(
float[]));
92 float[] JointRotationsY = (
float[])info.GetValue(
"JointRotationsY", typeof(
float[]));
93 float[] JointRotationsZ = (
float[])info.GetValue(
"JointRotationsZ", typeof(
float[]));
94 float[] JointRotationsW = (
float[])info.GetValue(
"JointRotationsW", typeof(
float[]));
95 JointRotations =
new System.Numerics.Quaternion[JointRotationsX.Length];
96 for (
int i = 0; i < JointRotationsX.Length; i++) {
103 uint[] ConfidenceLevel = (uint[])info.GetValue(
"ConfidenceLevel", typeof(uint[]));
105 for (
int i = 0; i < ConfidenceLevel.Length; i++) {
109 Length = (int)info.GetValue(
"Length", typeof(
int));
110 Id = (uint)info.GetValue(
"Id", typeof(uint));
113 public void GetObjectData(SerializationInfo info, StreamingContext context) {
114 float[] JointPositions3DX =
new float[
Length];
115 float[] JointPositions3DY =
new float[
Length];
116 float[] JointPositions3DZ =
new float[
Length];
117 for (
int i = 0; i <
Length; i++) {
122 info.AddValue(
"JointPositions3DX", JointPositions3DX, typeof(
float[]));
123 info.AddValue(
"JointPositions3DY", JointPositions3DY, typeof(
float[]));
124 info.AddValue(
"JointPositions3DZ", JointPositions3DZ, typeof(
float[]));
126 float[] JointPositions2DX =
new float[
Length];
127 float[] JointPositions2DY =
new float[
Length];
128 for (
int i = 0; i <
Length; i++) {
132 info.AddValue(
"JointPositions2DX", JointPositions2DX, typeof(
float[]));
133 info.AddValue(
"JointPositions2DY", JointPositions2DY, typeof(
float[]));
135 float[] JointRotationsX =
new float[
Length];
136 float[] JointRotationsY =
new float[
Length];
137 float[] JointRotationsZ =
new float[
Length];
138 float[] JointRotationsW =
new float[
Length];
139 for (
int i = 0; i <
Length; i++) {
146 info.AddValue(
"JointRotationsX", JointRotationsX, typeof(
float[]));
147 info.AddValue(
"JointRotationsY", JointRotationsY, typeof(
float[]));
148 info.AddValue(
"JointRotationsZ", JointRotationsZ, typeof(
float[]));
149 info.AddValue(
"JointRotationsW", JointRotationsW, typeof(
float[]));
151 uint[] ConfidenceLevels =
new uint[
Length];
152 for (
int i = 0; i <
Length; i++) {
155 info.AddValue(
"ConfidenceLevels", ConfidenceLevels, typeof(uint[]));
157 info.AddValue(
"Length",
Length, typeof(
int));
158 info.AddValue(
"Id",
Id, typeof(uint));
static BodyData DeepCopy(BodyData copyFromBody)
System.Numerics.Quaternion[] JointRotations
System.Numerics.Vector2[] JointPositions2D
BodyData(int maxJointsLength)
JointConfidenceLevel[] JointConfidenceLevels
void CopyFromBodyTrackingSdk(Microsoft.Azure.Kinect.BodyTracking.Body body, Calibration sensorCalibration)
BodyData(SerializationInfo info, StreamingContext context)
System.Numerics.Vector3[] JointPositions3D
const float Invalid2DCoordinate
void GetObjectData(SerializationInfo info, StreamingContext context)