我想通过kinect V2和unity3D获取用户的身高,这段代码不能正常工作我该怎么办?

I want to get user's height by using kinect V2 and unity3D,this code can't work well what should I do?

正在尝试使用 xbox kinect 在 Unity 中获取用户的身高。
下面是我的代码,我无法获得高度。
这使用了KinectV2界面。

// get User's height by KinectV2 and unity3D `enter code here`   
float  GetUserHeightByLeft(long userid)
{`enter code here`
    float uheight=0.0f;
    int[] joints = new int[9];
    int head = (int)KinectInterop.JointType.Head;
    joints[0] = head;
    joints[1] = (int)KinectInterop.JointType.Neck;
    int shoudlderCenter = (int)KinectInterop.JointType.SpineShoulder;
    joints[2] = shoudlderCenter;
    joints[3] = (int)KinectInterop.JointType.SpineMid;
    joints[4] = (int)KinectInterop.JointType.SpineBase;
    joints[5] = (int)KinectInterop.JointType.HipLeft;
    joints[6] = (int)KinectInterop.JointType.KneeLeft;
    joints[7] = (int)KinectInterop.JointType.AnkleLeft;
    joints[8] = (int)KinectInterop.JointType.FootLeft;
    int trackedcount = 0;
    for (int i = 0; i < joints.Length; ++i)
    {
        if (KinectManager.Instance.IsJointTracked(userid, joints[i]))
        {
            ++trackedcount;
        }
    }
    //if all joints that I need have been tracked ,compute user's height
    if (trackedcount == joints.Length)
    {
        for (int i = 0; i < joints.Length-1;++i)
        {
            if (KinectManager.Instance.IsJointTracked(userid, joints[i]))
            {
                Vector3 start= 100*KinectManager.Instance.GetJointKinectPosition(userid,joints[i]);
                Vector3 end = 100*KinectManager.Instance.GetJointKinectPosition(userid,joints[i+1]);
                uheight += Mathf.Abs(Vector3.Magnitude(end-start));
            }
        }
        //some height kinectV2 can't get  so I add it
        uheight += 8;
    }
        return uheight;
}

根据你的代码,我确实发现了一些问题

  1. 得到总高度的总和需要当时跟踪所有关节。
    • 为什么要跟踪高度需要跟踪所有关节?你应该只需要头和脚
  2. 你仔细检查每个关节是否被跟踪
  3. 对每个 foot/knee/hip 关节使用左侧会给你带来数学错误。它们在一个方向上偏移(因为我们的脚不在 body 的中心)
    • 我会同时跟踪左右 foot/knee/hip,然后在 x 轴上找到两者的中心。
  4. 如果您使用两个向量的大小,并且一个膝盖在您的臀部前方很远,它会给它一个夸大的值。
    • 我只会使用你的kinect关节的y位置来计算高度。