我有一个人脸检测应用程序,我希望角色的头部根据检测到的人脸姿势旋转。
我已经设法以四元数的形式获得了检测到的人脸的旋转,但我不确定如何将数据从四元数转换为操纵角色的参考点的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的脖子看一个玩家。这也应该对你的交易有效。