VS2012使用3D模型进退两难

时间:2013-09-14 23:38:10

标签: c++ visual-studio-2012 model 3d directx

我在理解项目中VS2012 3D功能的使用时遇到了问题。我目前正在使用DirectX(Direct3D)构建一个3D项目,并希望为初学者显示一个简单的3D对象(茶壶)。我理解shadergraph的用法非常有帮助,但是在加载FBX模型时,是否可以使用内置的Autodesk FBX SDK,或者我只是坚持使用它(FBXSDK)?

一般来说,VS2012中的C ++是否有类似于XNA如何使用它的内容管道来简化加载和使用模型?

3 个答案:

答案 0 :(得分:1)

  

VS2012 for C ++中有什么东西与XNA的使用方式类似   这是内容管道

据我所知,没有这样的事情。您将需要自己的解决方案,就像在本机C ++世界中一样=)。也许你可以使用一些现代rendering engines:Unity,OGRE,Irrlicht,Torque等。

  

在加载FBX模型时,是否有替代方案   使用内置的Autodesk FBX SDK或我只是坚持使用它   (FBXSDK)

据我所知,FBX是一种封闭的专有格式,因此您坚持使用FBX SDK。

另一种方式(来自gamedev视图)

  1. FBX格式是一个非常复杂和多功能的。通常,您不需要FBX来绘制茶壶。你甚至不需要FBX来创造一个好游戏。
  2. 只是为了画茶壶,你可能最好采取另一个简单的(或不那么简单的)format,例如.obj,.dae或.3ds。您可以使用第三方库加载它,例如assimp(这只是几行代码)或推出自己的加载器(也不是那么难)。
  3. 绘制一些有意义的互动“茶壶世界”,你还需要将它们包装成某种场景:scenegraph是一种常见的解决方案。
  4. 中型游戏标签通常会为它们创建自己的格式,转换器和加载器:

    • 艺术家用自己喜欢的3D编辑器创建模型
    • 然后他们使用转换器转换它:转换为自定义二进制.mesh格式。这可以通过3D编辑器插件或小型独立应用程序
    • 完成
    • 在C ++应用程序中,程序员只需加载.mesh,反序列化为结构和类并使用它。
  5. 严肃的游戏标签开发自己的内容管道:它可以包括多种自定义格式(静态网格,动画网格等),加载器(加载和流式传输内容到应用程序),3ds max / Maya / Blender插件,视觉场景/关卡编辑(让艺术家感到高兴)。所有内容都是由艺术家创建和管理的,因此程序员不需要将任何内容集成到他们的IDE中。

答案 1 :(得分:1)

您肯定需要管理从模型文件格式到典型D3D网格/网格部件排列的转换。您有时可以找到旧的.x格式的模型,它对应于Direct3D模型。 This page对于加载.x文件以及maya和max的导出器链接有一些很好的参考。

OTOH如果您的源数据是fbx,请使用fbx sdk;它比获取fbx数据的任何替代方法更简单。你需要一些用于导入3d模型的库,虽然它们都以不同的方式受到限制,FBX的优势在于可以被最广泛的DCC应​​用程序所支持。 FBX格式有文本和二进制版本,因此如果您对手动调试感兴趣,可以使用基于文本的版本来更轻松地交叉检查结果。 This sample讨论了将FBX SDK与DirectX 11一起使用 - 虽然它是在vs 2010的上下文中,但可能会有问题转移到VS 2012。

如果您使用其他中间格式,则应查找您将使用的3d工具或您要购买的型号供应商支持的格式。 Collada是最广泛使用的交换格式,它基于XML,因此你可以实现自己的加载器 - 但它也因复杂性和不一致的标准而臭名昭着,所以除非你有令人信服的理由,否则我会避免使用它。 Collada格式档案的一大特色。

如果您的需求非常简单并且不包含动画,OBJ format可以广泛使用并且易于自行实现 - 但它不支持动画。

答案 2 :(得分:1)

Visual Studio 2012现在实际上拥有自己的模型处理器。

你可以为你的项目添加不同的网格物体(我认为它本身支持.dae,.fbx和.obj)并且它会吐出一个易于解析的“.cmo”模型。

directX Toolkit对加载格式也有很好的支持,所以如果您已经在使用DXTK,那么我建议您查看模型加载器是否符合您的要求。