我在理解项目中VS2012 3D功能的使用时遇到了问题。我目前正在使用DirectX(Direct3D)构建一个3D项目,并希望为初学者显示一个简单的3D对象(茶壶)。我理解shadergraph的用法非常有帮助,但是在加载FBX模型时,是否可以使用内置的Autodesk FBX SDK,或者我只是坚持使用它(FBXSDK)?
一般来说,VS2012中的C ++是否有类似于XNA如何使用它的内容管道来简化加载和使用模型?
答案 0 :(得分:1)
VS2012 for C ++中有什么东西与XNA的使用方式类似 这是内容管道
据我所知,没有这样的事情。您将需要自己的解决方案,就像在本机C ++世界中一样=)。也许你可以使用一些现代rendering engines:Unity,OGRE,Irrlicht,Torque等。
在加载FBX模型时,是否有替代方案 使用内置的Autodesk FBX SDK或我只是坚持使用它 (FBXSDK)
据我所知,FBX是一种封闭的专有格式,因此您坚持使用FBX SDK。
另一种方式(来自gamedev视图)
中型游戏标签通常会为它们创建自己的格式,转换器和加载器:
严肃的游戏标签开发自己的内容管道:它可以包括多种自定义格式(静态网格,动画网格等),加载器(加载和流式传输内容到应用程序),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,那么我建议您查看模型加载器是否符合您的要求。