Import XNA 4:导入FBX问题
我在从FBX文件导入3D模型时遇到问题 源模型包含575个对象和1个摄影机,如下所示: 在XNA中,内容管道模型包含82个网格和576个骨骼。 所以,当我绘制模型时,我只看到源模型的一部分。结果图片如下: 我的绘图代码: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
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中绘制模型
结论:
以最新的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.