题
从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中进行绘制。
结论:
- XNA FbxImporter的正确工作不依赖于FBX文件的版本(2006、2011等)和格式(二进制,ASCII)。内部FBX数据结构更为重要。
- 要使XNA Importer可以读取FBX,可以使用FBX-> Collada-> FBX之类的双重转换
- 您还可以使用FBX SDK手动从FBX加载数据
其他提示
在最新的3dx max 2012中打开3d模型,并将其导出为.fbx
格式。xna模型加载器已正确加载了该.fbx
。导出时,您甚至可以嵌入资源,因此不必通过XNA向其添加纹理。
您正在3DS MAX中使用实例化。XNA不直接支持此功能。 您必须自己为每个实例骨骼绘制网格。 理想情况下,您应该使用DirectX实例化在单个Draw()调用中为每个骨骼绘制一次网格。 但是,您必须将自己的代码转换为实例顶点,才能滚动自己的代码。 默认情况下,XNA仅支持最基本的操作。