2017-03-05 27 views
-1

私は主にEvaluateGlobalTransformを使用してfbxファイルからアニメーションを取得しています。このメソッドは、samples \ ViewSceneディレクトリのhumanoid.fbxと、Blenderで作った別のascii形式のfbxモデルで動作します。FBX SDKアニメーションを取得

しかし、同じブレンダーモデルをバイナリ形式で書き出し、そのアニメーションを取得しようとすると、結果は完全に間違っています。私がEvaluateGlobalTransformと呼んで得たすべてのフレームの行列は、ほとんど同じです。ここでの結果のいくつか抜粋している(それはので、私はファイルでそれらを書いたそれらのすべてを印刷するにはあまりにも多くのです)

間違ったもの:。 enter image description here

右1: enter image description here

私が使用するすべてのfbxファイルには少なくとも1つのアニメーションスタックが含まれており、FBX Reviewでそれらを開くと完全にアニメーション化できることを確信しています。

私がBlenderで作ったモデルのサイズ(記憶サイズではなく、空間的なサイズではない)は、アスキーフォーマットよりもバイナリフォーマットでいくらか大きいことに言及する価値があります。

私を助けてください!ありがとう!

+0

達成しようとしていることは何ですか?テキストの代わりにFBXのバイナリ形式を使用しますか? – zwcloud

+0

アニメーションを読み込みたい。コードはテキスト形式のFBXで動作しますが、バイナリ形式のFBXでは動作しません。 – ACskyline

+0

だから、問題はUnity3Dとは関係ありませんよね? – zwcloud

答えて

0

もう一度私です。私は自分の質問に対する答えがあると思う。すべての行列がバイナリfbxファイルで同じであるがascii fbxファイルで同じでない理由は、すべての行列を含む2つのアニメーションが同じではないことです。バイナリファイルでは、デフォルトのテイクはアイドルアニメーションですが、asciiファイルではデフォルトテイクはウォーキングアニメーションです。私はfbxファイルから行列を抽出したとき、実際にはアイドルアニメーションをバイナリfbxファイルのコントラストからにウォークアニメーション ascii fbxファイルから抽出しました。

したがって、私はアニメーションを抽出するデフォルトテイクを変更する方法を見つける必要があります。私は自分の問題を解決したと思う。私はこれもあなたの問題を解決できることを願っています。

+0

デフォルトのアニメーションテイクを変更するには、void fbxsdk :: FbxScene :: SetCurrentAnimationStack(FbxAnimStack * pAnimStack)を使用します。例えばFbxAnimStack * currAnimStack = mFBXScene-> GetSrcObject (スタック番号); // mFBXScene-> SetCurrentAnimationStack(currAnimStack); // – ACskyline

関連する問題