我認爲像很多新手,我奮力把握四元數的應用,特別是如何手動操縱它們...修改四元數,同時更新
我有一個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? –