从FBX文件导入3D模型时出现问题。

源模型包含575个对象+ 1个摄像头,看起来像这样: http:// habreffect .ru / files / 23d / 542fa7f67 / source_model.png

在使用内容管道模型编写的XNA中,包含82个网格和576个骨骼。 因此,当我绘制模型时,我只会看到源模型的一部分。结果图片如下: http://habreffect.ru/files/28a/6e61c0215/Result_view.png

我的绘图代码: 通用标签

如何在XNA的Model实例中获得所有575个网格?

谢谢!

UPD 我试图将我的FBX模型导入3ds max,选择所有网格并使用“导出所选对象”。结果FBX文件大11倍。然后,将其作为内容添加到XNA项目中,加载的模型包含所有575网格,并且可以正确呈现。

不幸的是,这种手动转换方法不适合我-我需要从可变存储库中渲染各种fbx模型。

那么,对于XNA内容处理器(我使用XNA 4),哪些FBX文件“很好”?

有帮助吗?

解决方案

因此,在 MSDN 我发现FbxImporter设计为可以使用FBX格式的2006.11版本。

最近,Autodesk发布了 FBX Converter 2012.1 ,其中包含其他工具,例如FBX Eplorer,FBX Viewer。

FBX Explorer可以显示FBX文件的结构,并且我比较了从3D MAX文件导出的文件和源FBX文件。它们具有不同的内部格式。我尝试进行以下转换:FBX-> Collada-> FBX,结果FBX文件包含与从MAX数据结构中导出的文件相似的文件。

因此,我只是将结果FBX添加到XNA应用程序的Content中,并且呈现效果很好:)

使其工作的另一种方法是使用Autodesk FBX SDK手动读取模型,并在XNA中进行绘制。

结论

  1. XNA FbxImporter的正确工作不依赖于FBX文件的版本(2006、2011等)和格式(二进制,ASCII)。内部FBX数据结构更为重要。
  2. 要使XNA Importer可以读取FBX,可以使用FBX-> Collada-> FBX之类的双重转换
  3. 您还可以使用FBX SDK手动从FBX加载数据

其他提示

在最新的3dx max 2012中打开3d模型,并将其导出为.fbx格式。xna模型加载器已正确加载了该.fbx。导出时,您甚至可以嵌入资源,因此不必通过XNA向其添加纹理。

您正在3DS MAX中使用实例化。XNA不直接支持此功能。 您必须自己为每个实例骨骼绘制网格。 理想情况下,您应该使用DirectX实例化在单个Draw()调用中为每个骨骼绘制一次网格。 但是,您必须将自己的代码转换为实例顶点,才能滚动自己的代码。 默认情况下,XNA仅支持最基本的操作。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top