使一个装配角色的头部与Unity中的四元数同步旋转

时间:2016-07-29 08:42:45

标签: animation unity3d

我有一个人脸检测应用程序,我希望角色的头部根据检测到的脸部姿势旋转。

我设法以四元数的形式获得检测到的面部的旋转,但我不确定我应该如何将数据从四元数转换为3D点以获取被操纵的参考点我认为将决定轮换的角色。

假设我有这个角色:http://i.imgur.com/3pcRoYx.png

一种解决方案可能是切断头部并使其成为自己的对象,然后根据四元数设置该对象的旋转,但我不希望这样。我想要一个完整的角色。

是否可以使用四元数中的数据移动头部的参考点?或者我是否弄错了被操纵的角色如何转过头来?我之前没有动画。

1 个答案:

答案 0 :(得分:2)

您可以将旋转应用于单个骨骼。在脚本中获取该骨骼。在类中保留var以存储最后一个四元数和每个更新,将其与之进行比较并按不同方式旋转。我没有这里的实际编辑器,但试试这个伪代码。

class NeckRotator {
    public GameObject Neck;
    private Quaternion LastFace;


    void Start(){
        LastFace = Neck.transform.Rotation;
    }

    void Update(){
        var DetectedFace = ... // Whatever you do to get this
        var Change = Quaternion.Inverse(DetectedFace) * LastFace; // Found this online real quick
        Neck.Rotate(Change);
        LastFace = Neck.transform.Rotation;
    }
}

我之前做过类似的事情,旋转一个NPC的脖子来看一个玩家。它也适用于你的交易。