我在从 FBX 文件导入 3D 模型时遇到问题。
源模型包含 575 个对象 + 1 个相机,如下所示:http://habreffect.ru/files/23d/542fa7f67/source_model.png http://habreffect.ru/files/23d/542fa7f67/source_model.png
在用内容管道准备的XNA中,模型包含82个网格和576个骨骼。
因此,当我绘制模型时,我只能看到源模型的一部分。结果图如下:http://habreffect.ru/files/28a/6e61c0215/Result_view.png http://habreffect.ru/files/28a/6e61c0215/Result_view.png
我的绘图代码:
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 个网格?
Thanks!
UPD: 我尝试将 FBX 模型导入 3ds max,选择所有网格并使用“导出所选”。结果 FBX 文件增大了 11 倍。然后我将其作为内容添加到 XNA 项目中,加载的模型包含所有 575 个网格,并且它渲染正确。
不幸的是,这种手动转换方法不适合我 - 我需要从可变存储库渲染各种 fbx 模型。
那么,什么 FBX 文件对于 XNA 内容处理器“好”(我使用 XNA 4)?
So, on MSDN http://msdn.microsoft.com/en-us/library/bb447762%28v=XNAGameStudio.40%29.aspx我发现 FbxImporter 设计用于 2006.11 版本的 FBX 格式。
最近欧特克发布了,其中包含其他工具,例如 FBX Explorer、FBX Viewer。
FBX资源管理器可以显示FBX文件的结构,我比较了从3D MAX文件导出的和源FBX文件。它们具有不同的内部格式。我尝试进行以下转换:FBX -> Collada -> FBX,结果FBX文件包含类似于从MAX导出的数据结构。
因此,我只需将结果 FBX 添加到我的 XNA 应用程序的内容中,它就可以很好地呈现:)
另一种方法是使用 Autodesk FBX SDK 手动读取模型,并在 XNA 中进行绘制。
结论:
- XNA FbxImporter 的正确工作不依赖于 FBX 文件的版本(2006、2011 等)和形式(二进制、ascii)。内部 FBX 数据结构更为重要。
- 要使 FBX 对于 XNA 导入器“可读”,您可以使用双重转换,例如 FBX -> Collada -> FBX
- 您还可以使用 FBX SDK 手动从 FBX 加载数据
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)