我在理解项目中使用 VS2012 的 3D 功能时遇到问题。我目前正在使用 DirectX (Direct3D) 构建一个 3D 项目,并希望为初学者显示一个简单的 3D 对象(茶壶)。我了解着色图的使用,这很有帮助,但是在加载 FBX 模型时,是否有替代使用内置的 Autodesk FBX SDK 的替代方法,或者我只是坚持使用它(FBXSDK)?
一般来说,在 C++ 的 VS2012 中是否有任何类似于 XNA 如何使用其内容管道来简化加载和使用模型的内容?
我在理解项目中使用 VS2012 的 3D 功能时遇到问题。我目前正在使用 DirectX (Direct3D) 构建一个 3D 项目,并希望为初学者显示一个简单的 3D 对象(茶壶)。我了解着色图的使用,这很有帮助,但是在加载 FBX 模型时,是否有替代使用内置的 Autodesk FBX SDK 的替代方法,或者我只是坚持使用它(FBXSDK)?
一般来说,在 C++ 的 VS2012 中是否有任何类似于 XNA 如何使用其内容管道来简化加载和使用模型的内容?
Visual Studio 2012 现在实际上拥有自己的模型处理器。
您可以为您的项目添加不同的网格(我认为它本机支持 .dae、.fbx 和 .obj),它会生成一个易于解析的“.cmo”模型。
directX Toolkit 对加载格式也有很好的支持,所以如果您已经在使用 DXTK,那么我建议您查看模型加载器是否满足您的要求。
您肯定需要管理从模型文件格式到典型 D3D 网格/网格部分排列的转换。您有时可以找到旧 .x 格式的模型,它对应于 Direct3D 模型。这个页面对于加载 .x 文件有一些很好的参考,并且还链接到了 maya 和 max 的导出器。
OTOH 如果您的源数据在 fbx 中,请使用 fbx sdk;它比任何其他获取 fbx 数据的方法都简单。您需要一些库来导入 3d 模型,尽管它们都以不同的方式受到限制,但 FBX 的优势在于得到了最广泛的 DCC 应用程序的支持。FBX 格式有文本和二进制版本,因此如果您对手动调试感兴趣,可以使用基于文本的版本,以便更轻松地交叉检查您的结果。 此示例讨论了将 FBX SDK 与 DirectX 11 一起使用 - 尽管它是在 vs 2010 的上下文中,但在迁移到 VS 2012 时可能会出现问题。
如果您使用另一种中间格式,您应该寻找您将使用的 3d 工具或您购买的模型供应商支持的格式。 Collada是最广泛可用的交换格式,它基于 XML,因此您可能可以实现自己的加载器 - 但是它也因复杂性和不一致的标准而臭名昭著,因此除非您有令人信服的理由或有大量资金,否则我会避免使用它Collada 格式文件。
如果您的需求非常简单并且不包括动画,那么OBJ 格式可以广泛使用并且您自己也很容易实现——但是它不支持动画。
VS2012 中是否有任何与 XNA 使用其内容管道的方式类似的 C++ 内容
据我所知,没有这样的事情。您将需要自己的解决方案,就像在本机 C++ 世界中一样 =)。或许,您可以使用一些现代渲染引擎:Unity、OGRE、Irrlicht、Torque 等。
在加载 FBX 模型时,是否有使用内置 Autodesk FBX SDK 的替代方法,或者我只是坚持使用它(FBXSDK)
据我所知,FBX是一种封闭的专有格式,所以你坚持使用 FBX SDK。
另一种方式(从gamedev视图)
中型游戏标签通常会为其创建自己的格式、转换器和加载器:
严肃的游戏标签开发自己的内容管道:它可以包括多种自定义格式(静态网格、动画网格等)、加载器(将内容加载和流式传输到应用程序)、3ds max/Maya/Blender 插件、视觉场景/关卡编辑器(让艺术家开心)。所有内容都由艺术家创建和管理,因此程序员不需要将任何内容集成到他们的 IDE 中。