将FBX SDK集成到DirectX



我正在使用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值。

您是否看到任何错误或遗漏的要求?

感谢您的关注。

您创建了一个网格,但没有将其指向场景中的网格。当我加载了一个.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文件由多个网格组成,则需要遍历场景,直到找到所需的网格。

希望这能帮助

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

相关内容

  • 没有找到相关文章

最新更新