2017-03-05 129 views
-1

我主要使用EvaluateGlobalTransform從fbx文件獲取動畫。此方法適用於samples \ ViewScene目錄中的humanoid.fbx以及我在Blender中創建的另一個ascii格式fbx模型。FBX SDK獲取動畫

但是,當我以二進制格式導出相同的Blender模型並嘗試從中獲取動畫時,結果完全錯誤。我通過調用EvaluateGlobalTransform得到的每個幀的矩陣大部分是相同的。下面是結果的一些片段(實在是太多了打印所有的人,所以我寫了他們在文件中)

的錯誤之一: enter image description here

的權利之一: enter image description here

我相信我使用的所有fbx文件至少包含一個動畫堆棧,如果您在FBX Review中打開它們,可以完美地動畫。

值得一提的是,我在Blender中創建的模型的大小(不是存儲大小,但是空間大小)在二進制格式上大於ascii格式。

請幫幫我!謝謝!

+0

你想達到什麼目的?使用FBX的二進制格式而不是文本? – zwcloud

+0

我想加載動畫。它看起來代碼與文本格式FBX一起使用,但不適用於二進制格式FBX。 – ACskyline

+0

所以..你的問題與Unity3D無關,對吧? – zwcloud

回答

0

這是我再次。我想我對自己的問題有一個答案。所有矩陣在二進制fbx文件中相同但在ascii fbx文件中不相同的原因是包含所有矩陣的兩個動畫不是同一個。在二進制文件中,默認值爲空閒動畫,而在ASCII文件中默認值爲步行動畫。當我從fbx文件中提取矩陣時,我實際上從二進制fbx文件中提取了空閒動畫對比步行動畫從ascii fbx文件。

因此,我只需要找到一種方法來更改從中提取動畫的默認值。我想我已經解決了我的問題。我希望這也能解決你的問題。

+0

要更改默認動畫,請使用void fbxsdk :: FbxScene :: SetCurrentAnimationStack(FbxAnimStack * pAnimStack)。例如FbxAnimStack * currAnimStack = mFBXScene-> GetSrcObject (stackNum); // mFBXScene-> SetCurrentAnimationStack(currAnimStack); // – ACskyline