2013-02-15 90 views
0

我正在使用FBX SDK 2013.3和DirectX上的項目。將FBX SDK集成到DirectX

我需要一些基本的知識,

認爲我有一個立方體,從瑪雅出口與.FBX延伸,它有動畫,但問題不在於現在。

現在我需要將此.fbx文件加載到DirectX,因此索引,頂點位置必須處理。

我看了FBX SDK Documentations,Samples(主要是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值。

您是否看到任何錯誤或錯過的要求?

感謝您的關注。

回答

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文件包含多個網格,則需要遍歷場景,直到找到所需的網格。

希望這有助於

+0

非常感謝,我解決我的問題在這條路上,我可以不看帖子5-6天。但這個答案完全是解決方案。 – HamitEnes 2013-03-01 19:03:47

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();