2016-11-14 58 views
0

我試圖從文件導入瑪雅動畫之後,但它給我的插補之間奇怪的結果:是關閉蟒蛇importantion

https://i.imgur.com/cP27Yai.mp4

這真是奇怪,因爲他們的關鍵幀看起來是正確的,直到我看圖編輯器。

enter image description here

認爲這是在第一個萬向節鎖定,所以我用了歐拉過濾器,但它沒有給出解決的辦法。有時,一個鍵和另一個鍵之間的差異是180,這就是爲什麼,通過只看動畫,鍵看起來很好,但插值使它旋轉180度。因此,如果我一個接一個,並減去180的密鑰的價值,然後倒數(根據具體情況爲正或負),我可以通過調整它的工作。

但是,這是太多的工作,特別是對於Biped動畫,它可能帶我永遠。

這是一個常見問題還是之前發生的任何事情?有沒有什麼辦法解決這一問題?也許這是我申請的歐拉角的方式,因爲他們最初是四元,但我沒有找到一個方法來直接申請的四元數:

#Taking a rotation from the QUATERNION Array and converting it to Euler. 
arot = anim.AnimRot[index].normal().asEulerRotation() 
frot = MEulerRotation(arot.x*180/math.pi, arot.y*180/math.pi, arot.z*180/math.pi) 

cmds.setAttr((obj + ".rotate"), frot.x, frot.y, frot.z) 
cmds.setKeyframe(obj, time=anim.TotalKeys[i]) 

有什麼辦法,從編輯器或解決這個問題腳本?任何修復它都會對導入此Biped動畫非常有利。我相信這是由於歐拉轉換,但我發現沒有辦法將四元數應用於maya API中的骨骼。

+0

我想你需要雙四元數的無瞬間(180轉)插值 –

+0

有沒有什麼辦法可以將它們從文件轉換爲雙精度?問題是,我無法直接應用四元數... –

回答

0

如果旋轉已經是四元,你可能想簡單地設置動畫曲線使用像

cmds.rotationInterpolation('pSphere2.rotateX', 'pSphere2.rotateY', 'pSphere2.rotateZ', c="quaternionSquad") 

東西是安全的四元數插值你可以設置一個鍵,然後應用rotationInterpolation改變鍵quats,然後逐步通過應用您的原始四元數。由於您已經在API空間中,因此您可以製作MTransformationMatrix並使用其setRotationComponents方法設置quat值,以便您永遠不會轉換爲eulers。

+0

我會給它一個去,讓你知道,謝謝!我正在調查 –

+0

可悲的是,我沒有設法把它關掉,關於如何正確應用這個想法的任何想法? –