Import XNA 4:导入FBX问题

Import XNA 4:导入FBX问题,import,xna,fbx,Import,Xna,Fbx,我在从FBX文件导入3D模型时遇到问题 源模型包含575个对象和1个摄影机,如下所示: 在XNA中,内容管道模型包含82个网格和576个骨骼。 所以,当我绘制模型时,我只看到源模型的一部分。结果图片如下: 我的绘图代码: GraphicsDevice.Clear(Color.CornflowerBlue); Matrix[] transforms = new Matrix[_model.Bones.Count]; _model.CopyAbsoluteBoneTransformsTo(tra

我在从FBX文件导入3D模型时遇到问题

源模型包含575个对象和1个摄影机,如下所示:

在XNA中,内容管道模型包含82个网格和576个骨骼。 所以,当我绘制模型时,我只看到源模型的一部分。结果图片如下:

我的绘图代码:

GraphicsDevice.Clear(Color.CornflowerBlue);

Matrix[] transforms = new Matrix[_model.Bones.Count];
_model.CopyAbsoluteBoneTransformsTo(transforms);

foreach (var mesh in _model.Meshes)
{
    foreach (BasicEffect effect in mesh.Effects)
    {
        effect.LightingEnabled = true;
        effect.EnableDefaultLighting();
        effect.World = transforms[mesh.ParentBone.Index] * _world;
        effect.View = _view;
        effect.Projection = _proj;
    }
    mesh.Draw();
}
base.Draw(gameTime);
如何在XNA中获取模型实例中的所有575个网格

谢谢

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

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

那么,什么样的FBX文件对XNA内容处理器(我使用的是XNA 4)是“好”的呢?

因此,在上一节课上,我发现FbxImporter设计用于使用2006.11版本的FBX格式

最近Autodesk发布了,其中包含其他工具,如FBX Eplorer、FBX Viewer

FBX浏览器可以显示FBX文件的结构,我比较了从3D MAX文件导出的FBX文件和源FBX文件。它们有不同的内部格式。我尝试进行以下转换:FBX->Collada->FBX,结果FBX文件包含类似于从MAX数据结构导出的内容

因此,我只需将结果FBX添加到我的XNA应用程序的内容中,就可以很好地呈现:)

另一种方法是使用Autodesk FBX SDK手动读取模型,并在XNA中绘制模型

结论

  • XNA FBX文件的正确工作不依赖于FBX文件的版本(2006、2011等)和形式(二进制、ascii)。内部FBX数据结构更为重要
  • 要使XNA导入器的FBX“可读”,可以使用双转换,如FBX->Collada->FBX
  • 您还可以使用FBX SDK从FBX手动加载数据

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

    您正在3DS MAX中使用实例化。XNA不直接支持这一点。 您必须自己为每个骨骼实例绘制网格。 理想情况下,您可以使用DirectX实例化在单个draw()调用中为每个骨骼绘制一次网格。 但要做到这一点,您必须使用自己的代码,将骨骼转换为实例顶点。
    默认情况下,XNA仅支持最基本的操作。

    感谢您提供FBX转换器的链接。由于Blender以ASCII FBX格式导出,而不是二进制,因此我可以使用此应用程序将ASCII转换为二进制,从而大大减小文件大小。一架简单的飞机从122.81 KB飞行到33.50 KB+1.