2016-07-28 63 views
1

我想找到一种方法将Kinect关节连接到Unity中使用最终IK的人体部位。Kinect关节尺寸

眼下,所有的关节都与身体部位正确链接(我可以移动和动作被复制到字符),但它似乎是关节间的规模(通过Kinect的发送)比方法更小身体部位的比例。例如,当Kinect检测到我的身体时,角色似乎自行崩溃。当我移动时,移动被检测到,但与角色身体相比它确实很小。

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

非常感谢!

回答

1

我终于找到了一个这样做的方法,它工作得很好。我会尽量保持这一点尽可能简单。

我所遇到的主要问题是从Kinect接头中获取适用于我的caracter尺寸的缩放值。

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

  1. 向用户维持为T的位置。
  2. 读取用户左臂的长度(kinect)
  3. 读取游戏中角色左臂的长度。
  4. 比较两个长度并找到一个相对比例(例如:如果4的左手臂长度由kinect返回,并且caracter的左手臂为2,那么所需的比例为4/2 = 2)

我有一个小问题,但最终解决了它。 Kinect在Unity中返回的Vector3的值与Kinect的原点(相机)有关。因此,我不得不使用一些线性代数来解决这个问题。既然Vector3(左手和左肩)都是相对于Kinect的起源,我不得不减去它们以找到左手臂的长度。由于线性代数,我们知道A + C = B,所以我们可以说B-A = C。在我们的例子中,LeftHand - LeftShoulder = Left Arm。通过将该原理应用于由kinect接收的Vector3,我们现在具有表示左臂的向量。我们所需要做的就是获得“大小”属性,现在我们有它的长度。

这几乎总结了它。