0

FBX SDK 2013.3を使用しており、DirectXでプロジェクトを行っています。

基本的な知識が必要です、

Mayaから.fbx拡張子でエクスポートされたキューブがあり、アニメーションがありますが、問題は今ではありません。

次に、この.fbxファイルをDirectXにロードする必要があるため、インデックス、頂点位置を処理する必要があります。

FBX SDKのドキュメント、サンプル(主にViewSceneのサンプル)を調べて、いくつかの情報を入手しました。

const char* lFilename = ".\..\..\..\DuzZemin.fbx";  

/* Memory Management */
FbxManager* myManager = FbxManager::Create();

FbxIOSettings* ioSettings = FbxIOSettings::Create(myManager,IOSROOT);
myManager->SetIOSettings(ioSettings);

// Importer
FbxImporter* myImporter = FbxImporter::Create(myManager,"");

if( !myImporter->Initialize(lFilename,-1,ioSettings))
{
    /* Error Handling */
}

/* Scene for Imported File */

FbxScene* myScene = FbxScene::Create(myManager,"My Scene");


myImporter->Import(myScene);

    // Memory DeAllocation
myImporter->Destroy();


FbxNode* rootNode = myScene->GetRootNode();

FbxMesh* myMesh = FbxMesh::Create(myScene,"");

int indexCount = myMesh->GetControlPointsCount();

このコードスニペットを作成しても、エラーは発生しません。しかし、実行時に、

indexCountは0の値で戻ります。

間違った要件や見逃した要件はありますか?

興味を持ってくれてありがとう。

4

2 に答える 2

1

メッシュを作成しますが、シーン内のメッシュをポイントしません。.fbxファイルをロードしたら、メッシュポインターを作成してから、シーンに移動してメッシュを取得します。このコードを検討してください。

FbxMesh* mesh;

FbxNode* node = myScene->GetRootNode()->GetChild(0);

//I want my mesh to be formed by triangles so i convert the mesh into triangles
FbxGeometryConverter lConverter(node->GetFbxManager());
lConverter.TriangulateInPlace(node);

mesh = node->GetMesh();

これで、メッシュから正しい頂点数を取得し、頂点を抽出できるようになります。注:.fbxファイルが複数のメッシュで構成されている場合は、目的のメッシュが見つかるまでシーンを反復処理する必要があります。

お役に立てれば

于 2013-02-16T14:49:40.157 に答える
0
FbxMesh* mesh;

FbxNode* node = myScene->GetRootNode()->GetChild(0);

//I want my mesh to be formed by triangles so i convert the mesh into triangles
FbxGeometryConverter lConverter(node->GetFbxManager());
lConverter.TriangulateInPlace(node);

mesh = node->GetMesh();
于 2017-05-15T01:53:04.293 に答える