c++ - VS2012使用3D模型的困境

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

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

一般来说,在 VS2012 for C++ 中有什么在本质上类似于 XNA 如何使用它的内容管道来简化加载和使用模型的东西吗?

最佳答案

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

关于c++ - VS2012使用3D模型的困境,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18807457/

相关文章:

visual-studio-2012 - 在 Visual Studio 2012 中使用 CTRL + 箭头跳过完整符号

java - 如何使用 Java/JavaFX MVC 跨多个 Controller 持久保存用户模型的单个实例?

swift - 如何从其他几个类创建一个 Realm 类?

c++ - 使用带有 wxWidgets 的 mysql lib 的类崩溃

c++ - 我可以在不实例化的情况下使用函数对象吗?

oracle - 带有 Oracle.ManagedDataAccess : Error 175 in EDMX File 的 Entity Framework

javascript - 对象不支持 ajax POST 到 Web Api 上的属性或方法 'val'

javascript - ASP.NET MVC 客户端时间从模型转换

c++ - 使用对象作为键时从 STL 映射返回迭代器

c++ - 如果函数调用导致按引用传递,为什么要为字符串使用共享指针?