在 Unity 中使纵角色的头部与四元数同步旋转



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

我已经设法以四元数的形式获得了检测到的人脸的旋转,但我不确定如何将数据从四元数转换为操纵角色的参考点的3D点,我相信这将决定旋转。

假设我有这样的性格:https://i.stack.imgur.com/BQ2oP.png

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

是否可以使用四元数中的数据移动头部中的参考点?或者我弄错了操纵角色的方式?我以前没有动画。

您可以对单个骨骼应用旋转。把那根骨头写进你的剧本里。在类中保留一个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的脖子看一个玩家。这也应该对你的交易有效。

最新更新