我有一个从FBX文件导入3D模型的问题。
源模型包含575个对象+1摄像机,如下所示:model.png
在用内容管道模型制作的XNA中,包含82个网格,576块骨头。所以,当我画我的模型时,我只看到了源模型的一部分。结果图片如下: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个网格?
谢谢!
UPD:我尝试将我的FBX模型导入到3DSmax,选择所有网格并使用"Export“。结果FBX文件大11倍。然后将其作为内容添加到XNA项目中,加载模型包含所有575个网格,并正确呈现。
不幸的是,这种手动转换方法不适合我--我需要从可变存储库呈现各种fbx模型。
那么,对于XNA内容处理器(我使用XNA 4)来说,什么FBX文件是“好的”?
发布于 2011-05-11 03:49:11
因此,在MSDN上,我发现FbxImporter设计用于2006.11版本的FBX格式。
最近,Autodesk发布了FBX转换器2012.1,它包含其他工具,如FBX、FBX。
FBX资源管理器可以显示FBX文件的结构,并比较了从3D MAX文件导出的FBX文件和源文件FBX。它们有不同的内部格式。我试图进行以下转换: FBX -> Collada -> FBX,结果FBX文件包含类似于从MAX数据结构导出的内容。
因此,我简单地将结果FBX添加到我的XNA应用程序的内容中,并且它呈现得很好:)
另一种使其工作的方法是使用Autodesk手动读取模型,并在XNA中绘制。
结论:
发布于 2012-08-08 10:13:32
打开最新的3DXmax 2012 3d模型,并以.fbx格式导出它。这个.fbx与xna模型加载器一起正确加载。在导出时,您甚至可以嵌入资源,因此您不必通过XNA向其添加纹理。
发布于 2012-11-10 08:04:44
你在3DS MAX中使用实例。XNA不直接支持这一点。你必须自己画出每个实例的网眼。理想情况下,您可以使用DirectX实例来在一个call ()调用中为每个骨头绘制一次网格。但是你必须通过将骨头转换成实例顶点来滚动你自己的代码。默认情况下,XNA只支持最基本的操作。
https://stackoverflow.com/questions/5901709
复制相似问题