我試圖構建和重建遊戲引擎的格式,並且在嘗試將其恢復到Maya時,會產生奇怪的結果。通過Python在Maya中導入動畫給出了奇怪的結果
這不是一個真正的錯誤或類似的東西,但動畫的結果很奇怪。
我真的需要它Quaternion
在發動機的目的,格式,因爲它處理它比Euler axis
更好,而是試圖將其應用到瑪雅的時候,我不能找到一個妥善的辦法。
這是我做的,因爲我真的不能找到應用只是Quaternion
的一個直接的方式:
arot_count = struct.unpack("<L", f.read(4))[ 0 ] # Reads the number of animation frames
for i in range(0, arot_count):
keytime = (struct.unpack("<L", f.read(4))[ 0 ]/80) # Keyframe
arot = om.MQuaternion(struct.unpack("f", f.read(4))[ 0 ], struct.unpack("f", f.read(4)[ 0 ], struct.unpack("f", f.read(4))[ 0 ], struct.unpack("f", f.read(4))[ 0 ])# Reads quat from file
narot = arot.normal() # Normalizes the quaternion
rot = narot.asEulerRotation() # Converts it to euler angles
if isMesh == False:
cmds.setAttr((obj.name + ".rotate"), rot.x * 180/math.pi, rot.y * 180/math.pi, rot.z * 180/math.pi)
cmds.setKeyframe(obj.name, time = keytime)
這裏的結果:
你可以看到它很容易告訴動畫是做什麼的,但你可以看到手臂或腿部飛行一段時間之間的那些奇怪的框架,並將整個動畫搞砸。
我相信這是因爲我對代碼做了轉換的數據丟失。我基本上規範了Quaternion
(它實際上什麼都沒做,因爲它給出了相同的結果,但很多人推薦),然後我將它轉換爲來自Maya API的角度爲Euler
,然後我只是將弧度傳遞給具有良好的舊數學的度數,但是這似乎沒有辦法去,可能是文件的一些數據丟失的結果。
我不知道是否有更好的方法來應用旋轉關鍵幀比這個,我會很感激。
在此先感謝。
雖然完全看是這樣的話,顯然它不是出於某種原因,這不是一個關鍵是怪異的框架集。 我將不得不繼續尋找其他解決方案,但這實際上對製作動畫非常有幫助,非常感謝:)。 –