0

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

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

4

3 回答 3

1

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

您可以为您的项目添加不同的网格(我认为它本机支持 .dae、.fbx 和 .obj),它会生成一个易于解析的“.cmo”模型。

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

于 2013-09-18T02:59:43.960 回答
1

您肯定需要管理从模型文件格式到典型 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 格式可以广泛使用并且您自己也很容易实现——但是它不支持动画。

于 2013-09-16T18:06:24.620 回答
1

VS2012 中是否有任何与 XNA 使用其内容管道的方式类似的 C++ 内容

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

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

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

另一种方式(从gamedev视图)

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

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

于 2013-09-15T07:03:47.453 回答