这是在我最近在这里提出的一个问题的基础上构建的:
Unity3D Leap Motion - 将手放在静态姿势中(SetTransform导致手旋转疯狂)
然而,唯一给出的回答中建议的代码并不起作用。我一直在使用'SetTransform'方法,虽然它确实允许我将手移动到所需位置,但旋转却很疯狂。手不断旋转,尽管我花了四天的时间,也找不到解决办法。
简而言之,我只是想将手设置为固定的姿势(例如握拳),但随着实时手部数据的移动和旋转。我创建了一个方法(在先前的问题中详细说明),该方法会手动重新计算关节的位置,以将手放置在姿势中,因为SetTransform导致了这种疯狂的旋转。然而,由于必须转换手来旋转它,我仍然遇到了疯狂的旋转,因此我已经切换回SetTransform方法以便于操作。
posedHand = PoseManager.LoadHandPose(mhd.LeftHand, int.Parse("2"), transform);
Hand h = new Hand();
if(posedHand != null)
{
h.CopyFrom(posedHand);
h.SetTransform(LiveData.LeftHand.PalmPosition.ToVector3(), LiveData.LeftHand.Rotation.ToQuaternion());
}
我想要的是一个方法,我可以传入两个手部对象(一个是当前“活动”的手部,另一个是期望的姿势),然后得到一个手部对象并进行渲染。
更新
根据要求,这里提供了我目前所获得的图像和我想要实现的图像。
目前状况:
目标:
目标图像将显示固定的姿势,例如在此示例中为当前位置和旋转的握拳。这意味着我的手可以“张开”,但在屏幕上我会看到一个握拳移动。正如您从“当前”所看到的那样,SetTransform正在给我正确的姿态和位置,但旋转出现了问题。