Kinect联合规模

时间:2016-07-28 20:40:56

标签: c# unity3d kinect oculus

我正试图找到一种方法,使用Final IK将Kinect关节链接到Unity中角色的身体部位。

现在,所有的关节都与身体部位正确连接(我可以移动并且移动重复到角色),但似乎关节之间的比例(由Kinect发送)比身体部位的比例。例如,当Kinect检测到我的身体时,角色似乎会自行崩溃。当我移动时,会检测到移动,但与角色的身体相比,它确实很小。

有没有办法同步这两个尺度?

非常感谢!

1 个答案:

答案 0 :(得分:1)

我终于找到了这样做的方法并且效果很好。我会尽量保持这个简单。

我遇到的主要问题是从Kinect Joints获得一个适用于我的角色大小的比例值。

为了解决这个问题,我添加了一种执行以下操作的校准方法:

  1. 要求用户保持T位置。
  2. 读取用户左臂的长度(kinect)
  3. 在游戏中读取角色左臂的长度。
  4. 比较两个长度并找到一个相对比例(例如:如果左边的臂长度由kinect返回,如果4和caracter的左臂为2,那么得分为4/2 = 2)
  5. 起初我遇到了一个小问题,但最终解决了这个问题。由Kinect在Unity中返回的Vector3的值与Kinect的原点(相机)相关。在那里,我不得不使用一些线性代数来解决这个问题。由于Vector3(左手和左肩)都是相对于Kinect的原点,我不得不减去它们以找到左臂长度。 Linear Algebra Screenshot

    由于线性代数,我们知道A + C = B,因此,我们可以说B - A = C.在我们的例子中,LeftHand - LeftShoulder =左臂。通过将此原理应用于kinect接收的Vector3,我们现在具有代表左臂的向量。我们需要做的就是获得“幅度”属性,我们现在有它的长度。

    这几乎总结了它。