在XNA中渲染显示3DsMax中的模型(FBX)

最近在研究XNA,正好将一些学习过程中的心得写下来。

XNA中显示模型是需要通过XNA的pipeline来实现的,一般来说,XNA自带了两类3D模型的导入处理器,可以分别处理.FBX文件和.x文件,其中.x文件在DirectX 3D编程中应用得比较广泛,而.FBX文件则能很方便的由3DsMax中导出,所以我决定采用.FBX文件作为模型的载体。

(一)让3DsMAX能导出.FBX类型的文件

一般来说,如果你安装的是完整版的3DsMAX,FBX的插件一般就一并安装上了,如果安装的是精简版,那么就需要手动安装FBX导出插件。

Autodesk官方提供的FBX插件下载地址:http://usa.autodesk.com/adsk/servlet/index?siteID=123112&id=6839916

安装完FBX插件后,3DsMAX就拥有了导出FBX文件的能力,如下图所示:




因为我们只需要很简单的模型,因此只要将模型的Mesh结构导出即可。所以全部选项都按默认即可。

(二)在XNA中渲染FBX模型

打开Visual Studio,新建一个XNA Games项目。


然后导入刚才生成的fbx文件。



 
右键点击刚刚导入的fbx文件,点“属性”,查看该资源在程序中的名称。如下图为“guidao”


接下来就是程序部分了:

我们先声明一个模型对象——

1 Model guidao;



然后在LoadContent()方法实例化该对象——

guidao = Content.Load<Model>("guidao");



最后就是最重要的环节了——三大矩阵(摄影机)的设定,我将其实现在了DrawModel()方法内:

private void DrawModel(Model m)
{
Matrix[] transforms = new Matrix[m.Bones.Count];
float aspectRatio = graphics.GraphicsDevice.Viewport.Width / Graphics.GraphicsDevice.Viewport.Height;
m.CopyAbsoluteBoneTransformsTo(transforms);
Matrix projection = Matrix.CreatePerspectiveFieldOfView(MathHelper.ToRadians(45.0f),
aspectRatio, 1.0f, 10000.0f);
Matrix view = Matrix.CreateLookAt(new Vector3(0.0f, Height, Zoom), Vector3.Zero, Vector3.Up);

foreach (ModelMesh mesh in m.Meshes)
{
foreach (BasicEffect effect in mesh.Effects)
{
effect.EnableDefaultLighting();

effect.View = view;
effect.Projection = projection;
effect.World = transforms[mesh.ParentBone.Index] * Matrix.CreateTranslation(Vector3.One);
}
mesh.Draw();
}
}

 


之后在Draw()方法内调用

DrawModel(guidao);


按F5执行——

转载于:https://www.cnblogs.com/maozhenyu/archive/2012/07/04/xna_fbximport.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值