导入Fbx文件

我需要将一个复杂的fbx模型导入到C ++中。 复杂的我的意思是,它有很多的顶点,摄像头等。据我所见,这是使用ViewScene样本。我想采取的样本,并建立一个新的项目,但它给了我一些链接错误,如:

1> main.cpp 1>main.obj : error LNK2019: unresolved external symbol "public: __thiscall SceneContext::SceneContext(char const *,int,int,bool)" (??0SceneContext@@QAE@PBDHH_N@Z) referenced in function _main 1>main.obj : error LNK2019: unresolved external symbol "bool __cdecl InitializeOpenGL(void)" (?InitializeOpenGL@@YA_NXZ) referenced in function _main 1>main.obj : error LNK2019: unresolved external symbol "public: __thiscall SceneContext::~SceneContext(void)" (??1SceneContext@@QAE@XZ) referenced in function "public: void * __thiscall SceneContext::`scalar deleting destructor'(unsigned int)" (??_GSceneContext@@QAEPAXI@Z) 1>main.obj : error LNK2019: unresolved external symbol "public: bool __thiscall SceneContext::SetCurrentAnimStack(int)" (?SetCurrentAnimStack@SceneContext@@QAE_NH@Z) referenced in function "void __cdecl CreateMenus(void)" (?CreateMenus@@YAXXZ) 1>main.obj : error LNK2019: unresolved external symbol "public: void __thiscall SceneContext::OnTimerClick(void)const " (?OnTimerClick@SceneContext@@QBEXXZ) referenced in function "void __cdecl TimerCallback(int)" (?TimerCallback@@YAXH@Z) 1>main.obj : error LNK2019: unresolved external symbol "public: bool __thiscall SceneContext::LoadFile(void)" (?LoadFile@SceneContext@@QAE_NXZ) referenced in function "void __cdecl DisplayCallback(void)" (?DisplayCallback@@YAXXZ) 1>main.obj : error LNK2019: unresolved external symbol "public: bool __thiscall SceneContext::OnDisplay(void)" (?OnDisplay@SceneContext@@QAE_NXZ) referenced in function "void __cdecl DisplayCallback(void)" (?DisplayCallback@@YAXXZ) 1>main.obj : error LNK2019: unresolved external symbol "public: void __thiscall SceneContext::OnReshape(int,int)" (?OnReshape@SceneContext@@QAEXHH@Z) referenced in function "void __cdecl ReshapeCallback(int,int)" (?ReshapeCallback@@YAXHH@Z) 1>main.obj : error LNK2019: unresolved external symbol "public: void __thiscall SceneContext::OnKeyboard(unsigned char)" (?OnKeyboard@SceneContext@@QAEXE@Z) referenced in function "void __cdecl KeyboardCallback(unsigned char,int,int)" (?KeyboardCallback@@YAXEHH@Z) 1>main.obj : error LNK2019: unresolved external symbol "public: void __thiscall SceneContext::OnMouse(int,int,int,int)" (?OnMouse@SceneContext@@QAEXHHHH@Z) referenced in function "void __cdecl MouseCallback(int,int,int,int)" (?MouseCallback@@YAXHHHH@Z) 1>main.obj : error LNK2019: unresolved external symbol "public: void __thiscall SceneContext::OnMouseMotion(int,int)" (?OnMouseMotion@SceneContext@@QAEXHH@Z) referenced in function "void __cdecl MotionCallback(int,int)" (?MotionCallback@@YAXHH@Z) 1>D:\LuminusCore\Debug\LuminusCore.exe : fatal error LNK1120: 11 unresolved externals 

我已经将Fbx includes / libs添加到项目中,但我想知道还应该添加哪些内容才能消除这些错误。

稍后编辑:

对不起忘了提,我正在使用Visual C ++ 2010。

关于错误,它看起来像你有声明,但忘了在派生类中添加虚拟方法的定义。

我不知道如何将fbx文件内容导入到项目中,但是可以执行以下操作(适用于VS2012,我无权访问VS2010进行检查):

  • 添加fbx文件作为资产
  • 在构建自定义添加MeshContentTask from your_visual_studio_path \ Common7 \ IDE \ Extensions \ Microsoft \ VsGraphics \
  • 确保fbx文件的属性项目types设置为网格内容管道
  • 在编译主程序之前,Visual Studio会将fbx文件转换为cmo文件并提取纹理(如果它们打包在一起)
  • 你必须parsing自己的二进制文件的cmo,这相当简单。 您可以在DirectX Tool Kit (ModelLoadCMO.cpp)中find规范(以及如何执行此操作)。 转换文件的名称将与fbx相同,但具有cmo扩展名。

编辑:注意FBX文件可以是二进制或ASCII,并且可以包含纹理的path或纹理内部包装。 您可以使用Autodek的FBX Converter 2013切换和打包/解压缩纹理。