一起学WP7 XNA游戏开发(六. 3d Model的载入)
2011-03-08 13:43
465 查看
在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方法来绘制
}
示例下载地址:http://www.52winphone.com/bbs/viewthread.php?tid=282&extra=page%3D1
一.载入:
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方法来绘制
}
示例下载地址:http://www.52winphone.com/bbs/viewthread.php?tid=282&extra=page%3D1
相关文章推荐
- 一起学WP7 XNA游戏开发(八. 让3d model动起来)
- 一起学WP7 XNA游戏开发(七. 3d基本光源)
- 一起学wp7 XNA游戏开发(二. XNA Game 开发架构)
- 一起学WP7 XNA游戏开发(三.二 Sprite Texture Font)
- 一起学wp7 XNA游戏开发
- 一起学wp7 XNA游戏开发(一. 初识XNA)
- 一起学WP7 XNA游戏开发(四. Input)
- 一起学wp7 XNA游戏开发(三. 一 SpriteFont)
- 一起学WP7 XNA游戏开发(五. Sound)
- XNA 3D游戏开发入门基本——鼠标选择3D模型(3D物体的拾取)
- Direct 3D和XNA游戏开发基础(C#语言版)(奋斗的小鸟)_PDF 电子书
- WP7游戏开发:TweeJump(cocos2d-xna)
- WP7-XNA 3D开发 显示3D模型(BasicEffect、DualTexturesEffect)
- xna 3D游戏开发(1)
- Windows Phone XNA 4.0 3D游戏开发
- Windows Phone XNA 4.0 3D游戏开发
- WP7游戏开发:TweeJump(cocos2d-xna)
- Windows Phone XNA 4.0 3D游戏开发
- WP7游戏开发:TweeJump(cocos2d-xna)
- 3D数学基础及图形与游戏开发的学习 (一)