FBXによって生成された不良Colladaを修正する方法


10

FBX SDK(2011.3.1)を使用してFBXファイルをロードし、それらをColladaファイルとして保存して、FBXファイルをPanda3Dにインポートできるようにしました。残念ながら、作成されたColladaファイルは、いくつかの理由で使用できません。

  • Maya固有の追加テクニックがあります

拡散する

<diffuse>
    <texture texture="Map__2-image" texcoord="CHANNEL0">
        <extra>
            <technique profile="MAYA">
                <wrapU sid="wrapU0">TRUE</wrapU>
                <wrapV sid="wrapV0">TRUE</wrapV>
                <blend_mode>ADD</blend_mode>
            </technique>
        </extra>
    </texture>
</diffuse>
  • ファイル内の他のどこからも参照されていないtexcoordチャネル名を割り当てます(前のコードサンプルでは、​​ジオメトリは "CHANNEL0" ...を使用していません)。

  • すべてのポリゴンは2回エクスポートされます。1回目は基本マテリアル(拡散反射光カラー、鏡面反射光カラーなど)でエクスポートされ、2回目はテクスチャマテリアルでエクスポートされます->これにより、各モデルのポリゴン数が2倍になります。

とにかく、結果のColladaファイルは、OpenCOLLADAまたはPanda3Dの「dae2egg」のいずれでも正しく開くことができません。

それを「修正」し、OpenCOLLADAなどの一般的で評判の高いColladaインポーターが理解できるようにする方法について、誰もが何か経験がありますか?


3
これは私がColladaで見つけた大きな問題です。非常に一般化された形式であるため、それをサポートしていると主張する任意のツール間でデータを転送するのに実際にはそれほど役に立ちません。ほぼすべてのスキーマのデータを含むことができますが、使用している特定のインポーターが実際に処理できない有効な標準準拠のColladaファイルである可能性があります。インポーター/エクスポーターをより詳細に制御できる場合、またはツールが偶然にColladaを生成する場合は、データ交換フォーマットとしてわずかに役立ちます。

1
@Josh:クローズドバイナリ形式とは異なり、少なくとも人間が読める形式です。少なくともColladaを使用すると、1つのデータセットから別のデータセットに変換できるツールとスクリプトを作成できます。追加の作業が必要な場合でも、相互運用は少なくとも可能です。
Nicol Bolas、2011

回答:


2

AC#ツールは、ここでの友です-.NET System.Xmlフレームワークを使用して、入力ファイルを反復処理し、不要な部分を見つけ、それらをドキュメントから削除(または微調整)してから書き戻すことができます。再び。事実上、それがXSLTの機能ですが、実際には、C#コードを記述して変換を記述する方が、同じことを実行するための不可解なXSLT構文を見つけるよりも簡単であることが常にわかります。

あなたがする必要があるのは「悪い」ケースを見て、それらが共通して持っているものを見つけることです。たとえば、texcoord = "CHANNEL0"を使用するテクスチャを持つすべての拡散テクニックの場合、簡単に見つけることができます。すべてのオブジェクトを反復処理し、オブジェクトごとに、問題のある属性についてすべての手法をチェックします。見つからない場合は、ノードを出力ドキュメントに追加して次に進みます。ノードを認識できない場合は、出力に追加して次に進んでください。見つかった場合は、わざわざ出力ドキュメントに追加しないでください。削除すると効果的に削除されます。

ただし、ポリゴンの各ペアを同等に分析する必要があるため、重複するポリゴンを見つけるのは少し難しいです。「平坦な色のポリゴンは気にせず、テクスチャポリゴンのみを使用する」などのルールを決定できれば、はるかに簡単になります。適切なポリゴンを破棄できます。

ただし、実際には重複を取得しているのは非常に奇妙に思えます。ジオメトリの複製は明らかな理由で非常に難しいので、FBXがそうするのには驚いています。ColladaをMaya / Maxで使用したことがあるので、FBXが生成するものを保証できませんでした。ただし、FBXファイルのジオメトリが重複していないことを本当に二重に確認していますか。


ご回答有難うございます。もちろん、自分のインポーターで修正することもできました。標準の修正を取得し、まだ発見していない問題に修正を適用できるように、まったく同じ問題がすでに発生して修正されている人を探していました。
デビッド

0

別のエクスポーターを検索または作成します。または(Colladaファイルは単なるXMLであるため)[XSLT] [1]を使用して、不要なデータを、より一般的な形式に変換しますか?


それは私がやっていることは確かですが、既にそれをした人を探していました(ホイールを再発明しないでくださいね?)
David
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.