我认为像很多新手,我奋力把握四元数的应用,特别是如何手动操纵它们...修改四元数,同时更新
我有一个mecanim模型(即基本姿势的数组)所以每一帧,我需要更新我的模型与最新的姿势,所以它看起来生活。
我用23根mecanim骨头,所以有映射我的模型的骨骼到Unity的mecanim系统,我想对待头不同,通过使它变成在相反的方向是什么运动数据使然,或什么:东西显示头部移动的方式不同。
for (int i = 0; i < 23; i++)
{
switch (i)
{
case (int)AnimationSegment.Head:
model[i].rotation = pose[i].rotation; // Let's turn the head...
break;
default:
model[i].rotation = pose[i].rotation;
break;
}
}
我怎么才能乘以(一对注释行)pose[i].rotation
,例如,旋转头45度,比它如何会更?
下面是我自己的不成功的尝试(其希望展示我是如何误解了四元数,所以我希望得到任何帮助):
Quaternion q = Quaternion.Euler(new Vector3(-x, y, z));
在此之后,我改变了该行以将注释:
model[i].rotation = pose[i].rotation * q;
您将需要一个void更新方法。请参阅http://docs.unity3d.com/ScriptReference/MonoBehaviour.Update.html。至于实际的代码,我也是Unity的初学者,但是尝试一下你之前做过的事情,并将其作为每帧更新方法更新中的任何代码以无效更新方法实现。如果你想让头部与当前方向相反,那么x和y方向的旋转-1会简单地乘以-1? –