VS2012使用3D模型的困境

VS2012 using 3D models dilemma

本文关键字:困境 模型 3D 使用 VS2012      更新时间:2023-10-16

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

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

您肯定需要管理从模型文件格式到典型 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。

另一种方式(从游戏开发的角度来看)

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

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

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

您可以向项目添加不同的网格(我认为它本身支持 .dae、.fbx 和 .obj),它会吐出一个易于解析的".cmo"模型。

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