Animation 制作一个被操纵的字符';s的头部与一个四元数同步旋转
我有一个人脸检测应用程序,我希望角色的头部根据检测到的人脸姿势旋转 我已经设法以四元数的形式获得检测到的人脸的旋转,但我不确定如何将四元数中的数据转换为3D点,以用于我认为将决定旋转的装配角色的参考点 假设我有这样的性格: 一种解决方案是,只需切断头部,使其成为自己的对象,然后根据四元数设置该对象的旋转,但我不希望这样。我想要一个完整的角色Animation 制作一个被操纵的字符';s的头部与一个四元数同步旋转,animation,unity3d,Animation,Unity3d,我有一个人脸检测应用程序,我希望角色的头部根据检测到的人脸姿势旋转 我已经设法以四元数的形式获得检测到的人脸的旋转,但我不确定如何将四元数中的数据转换为3D点,以用于我认为将决定旋转的装配角色的参考点 假设我有这样的性格: 一种解决方案是,只需切断头部,使其成为自己的对象,然后根据四元数设置该对象的旋转,但我不希望这样。我想要一个完整的角色 是否可以使用四元数中的数据移动头部中的参考点?还是我搞错了被操纵的角色是如何转头的?我以前没有设置过动画。可以对单个骨骼应用旋转。把那根骨头放进你的剧本里。
是否可以使用四元数中的数据移动头部中的参考点?还是我搞错了被操纵的角色是如何转头的?我以前没有设置过动画。可以对单个骨骼应用旋转。把那根骨头放进你的剧本里。在类中保留一个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的脖子看球员。这对你的交易也应该有用。等等,a和b应该是什么?我的错。这是被检测到的脸和最后一张脸。尽管这可能是相反的。此外,LastFace应该是上次更新时颈部的四元数。我想你会得到这样的结果,对吧?我不需要计算倒数。我可以用四元数设置骨骼的旋转。谢谢。我很高兴它对你有用!当我个人这么做的时候,当其他事情导致骨骼的旋转发生变化时,它会引起问题。骨头不会像我希望的那样随着身体的其他部分转动。如果遇到相同的问题,您可以尝试以下方法: