点击这里给我发消息 点击这里给我发消息

一起学WP7 XNA游戏开发(六. 3d Model的载入)

添加时间:2013-12-6
    相关阅读: 开发 公司
在XNA中3D Model 一般都是autodesk公司的fbx 格式。载入的方法和2D基本上是一样的,但是在绘制时是有很大不同的。

  一.载入:

protected override void LoadContent()
        {
            tankModel = Content.Load<Model>("tank");//载入fbx model
          
            tankBonesTransforms = new Matrix[tankModel.Bones.Count];//创建一个model的boneTransform数组,用来保存所有的model boneTransform.
  }

  二.绘制:

  tankModel.CopyAbsoluteBoneTransformsTo(tankBonesTransforms);//将model中的boneTransform拷到数组中,为绘制做准备
  Matrix projection = Matrix.CreatePerspectiveFieldOfView(MathHelper.PiOver4,                                                                    GraphicsDevice.Viewport.AspectRatio, 10, 20000);//创建投影矩阵
  Matrix view = Matrix.CreateLookAt(new Vector3(1500, 550, 0) * 1 + new Vector3(0, 150, 0), new Vector3(0, 150, 0), Vector3.Up);//创建视图矩阵,将世界坐标转为摄像机的坐标
            foreach (ModelMesh m in tankModel.Meshes)//开始绘制世界坐标中的每个对象
            {
                foreach (BasicEffect e in m.Effects)
                {
                    e.World = tankBonesTransforms[m.ParentBone.Index];
                    e.View = view;
                    e.Projection = projection;
                    e.LightingEnabled = true;
                    e.SpecularColor = new Vector3(0.8f, 0.8f, 0.6f);
                    e.SpecularPower = 16;
                    e.TextureEnabled = true;
                 
                }
  m.Draw();//使用ModelMesh中的draw方法来进行绘制,而不是用SpriteBatch中的draw方法来绘制

  一起学WP7 XNA游戏开发(六. 3d Model的载入)

示例下载地址:http://www.52winphone.com/bbs/viewthread.php?tid=282&extra=page%3D1

本文作者:未知
咨询热线:020-85648757 85648755 85648616 0755-27912581 客服:020-85648756 0755-27912581 业务传真:020-32579052
广州市网景网络科技有限公司 Copyright◎2003-2008 Veelink.com. All Rights Reserved.
广州商务地址:广东省广州市黄埔大道中203号(海景园区)海景花园C栋501室
= 深圳商务地址:深圳市宝源路华丰宝源大厦606
研发中心:广东广州市天河软件园海景园区 粤ICP备05103322号 工商注册