一起学WP7 XNA游戏开发(八. 让3d model动起来)

如何让3d model动起来,其实就是要给model的bone设置动作,这样整个model就会动起来了。

  一.获取Bones

  在fbx文件中可以看到所有bones的名称,这样就可以通过名称来获取到bones。

  turretBone = tankModel.Bones["turret_geo"];
   cannonBone = tankModel.Bones["canon_geo"];
   hatchBone = tankModel.Bones["hatch_geo"];

  二.保存bones原始Transform

turretTransform = turretBone.Transform;
   cannonTransform = cannonBone.Transform;
   hatchTransform = hatchBone.Transform;

  三.为Bones设置动作

//设置动作的变化值
turretRotationValue = (float)Math.Sin(time * 0.333f) * 1.25f;
   cannonRotationValue = (float)Math.Sin(time * 0.25f) * 0.333f - 0.333f;
   hatchRotationValue = MathHelper.Clamp((float)Math.Sin(time * 2) * 2, -1, 0);
   //创建动作矩阵
   turretRotation = Matrix.CreateRotationY(turretRotationValue);
   cannonRotation = Matrix.CreateRotationX(cannonRotationValue);
   hatchRotation = Matrix.CreateRotationX(hatchRotationValue);

  四.将设置的动作赋给bones的Transform

turretBone.Transform = turretRotation * turretTransform;
   cannonBone.Transform = cannonRotation * cannonTransform;
   hatchBone.Transform = hatchRotation * hatchTransform;

  由以上的实现代码可以看出,如果想让3d model 动起来,只要给model所包含的bones赋予动作,以及动作的变化量,就可以了。

开发(八. 让3d model动起来)-一起快乐动起来教案">

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

时间: 2024-08-31 06:11:42

一起学WP7 XNA游戏开发(八. 让3d model动起来)的相关文章

一起学wp7 XNA游戏开发(二. XNA Game 开发架构)

对于新建一个XNA for WP7的工程,可以看到在它的工程文件中,有:Initialize(), LoadContent(), Update(),Draw()这几个主要的函数,由这些也就可以看得出XNA开发游戏的一个基本架构了: Loading:用来加载保证游戏可以正常运行的所有资源等,这个状态在整个系统中只在游戏开始前运行,也就是说整个游戏的生命周期中只运行一次. Update:这个状态是由所设置的时间间隔来驱动的,在每个时间间隔里重新计算游戏中各角色的状态,以及游戏分值和各种游戏逻辑.一般

一起学WP7 XNA游戏开发(四. Input)

对于Windows Phone7来说与用户的交互方法主要有三种:手势.按键.触控和一些传感器的信号(如重力感应等,对于最后一种,在一起学Windows Phone7开发(十四. Device)中已经详细介绍过了)所以XNA游戏所能用到的交互方式也是一样的.但对于XNA来说与Windows phone7是有很大区别的.其主要的函数在Microsoft.Xna.Framework.Input和Microsoft.Xna.Framework.Input.TouchPanel. 一.按键:对于按键来说,

一起学wp7 XNA游戏开发(一. 初识XNA)

XNA中的X表示能够在Windows Xbox和合作伙伴之间达到跨平台的强大的软件工具.N表示"下一代(Next-generation)",A表示"架构(Architecture)". XNA是基于DirectX的游戏开发环境,是微软对于 Managed DirectX 的修正及扩充版本.它的任务是帮助开发者在创建更加优秀快速和跨平台的游戏时能够减少费用.通过整合Microsoft的最佳创新和来自业界的对于游戏开发的最佳创新,XNA旨在降低大量的开发费用并且允许开发

一起学wp7 XNA游戏开发(三. 一 SpriteFont)

在游戏开发中,一般首先碰到的是文字,对于文字又需要字体的支持,在XNA中,如果要使用文字,就需要先指定字体,对于字体XNA使用了SpriteFont和 SpriteFontTexture两种方式来指定字体. SpriteFont 这个字体文件实际上是一个XML的配置文件,用来配置字体.字体大小.字体样式.字体编码范围.然后在编译时会按这个配置,将字体编译成.xnb二进制文件. <?xml version="1.0″ encoding="utf-8″?><XnaCont

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

在XNA中3D Model 一般都是autodesk公司的fbx 格式.载入的方法和2D基本上是一样的,但是在绘制时是有很大不同的. 一.载入: protected override void LoadContent() { tankModel = Content.Load<Model>("tank");//载入fbx model tankBonesTransforms = new Matrix[tankModel.Bones.Count];//创建一个model的bone

一起学WP7 XNA游戏开发(七. 3d基本光源)

  对3d model施加光源进行渲染,可以使用BasicEffect 类下的方法来实现.这个类可以完成多数复杂的渲染效果. LightingEnabled -- 设置是否打开光源渲染.默认为false,也就是场景被渲染时使用"a base light"一固定的光照亮物体的每个部分.如果为true,灯光的效果使用在BasicEffect中被定义的效果. EnableDefaultLighting – 使用默认光源效果.如果没有打开光源渲染,使用该函数也会自动打开. PreferPerP

一起学WP7 XNA游戏开发(三.二 Sprite Texture Font)

Sprite Texture Font 对于XNA的字体,除了之前的SpriteFont外还有一种是SpriteTextureFont,其实就是生成的字体bitmap图片,也就是说可以用bitmap类型的字库来当作XNA的字体集,这样就等于扩充了字体库,使手机里没有的字体库也可以使用.其使用方法和SpriteFont是一样的,都是以SpriteFont加载,然后通过DrawString方法画出来. 要使用图片字库,那首先就要制作字体图片.在http://www.daisy123.com/?pag

一起学WP7 XNA游戏开发(五. Sound)

在游戏中声音是非常重要的一块,对于声音来说又分为音频和音乐,在这方面XNA也提供了很方便的方法用来管理和播放. 一.音频:一般用来播放一些很短的wav格式的音频,比如点击等声音效果. Microsoft.Xna.Framework.Audio 命名空间中的SoundEffect包括了对Audio的处理API,如Play.Stop.Pause等还可以循环播放. SoundEffect se = .Game.Content.Load("Hit"); se.GreateInstance().

XNA游戏开发之字符篇

摘要: 游戏中开发不同于一般应用程序的开发,它更注重于界面美观,我们需要在游戏界面设计中花费大量的时间以便使它看起来更炫.更酷,当然这其中就少不了游戏中的字符文本,那么如何制作出漂亮的游戏文本呢?今天我们就一起来看一下. 内容: 在XNA中2D文本的绘制方式种类比较多,这有助于我们制作出更美观的文本效果,下面我就逐一来看一下. 一.SpriteFont 这种方式在XNA游戏开发中应该算是最基本的一种形式,使用方法就是在游戏对应的Content项目中添加SpriteFont文件(右键Add-New