如何让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赋予动作,以及动作的变化量,就可以了。

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

转载于:https://www.cnblogs.com/randylee/archive/2011/03/10/1979841.html

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

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

    Sprite Texture Font 对于XNA的字体,除了之前的SpriteFont外还有一种是SpriteTextureFont,其实就是生成的字体bitmap图片,也就是说可以用bitmap类 ...

  2. 师傅带徒弟学:Python游戏开发引擎cocos2d-python-关东升-专题视频课程

    师傅带徒弟学:Python游戏开发引擎cocos2d-python-299人已学习 课程介绍         Python语言之所以受欢迎,很大的原因是有很多可以使用的库,Python社区也有很多游戏 ...

  3. XNA游戏开发之字符篇

    摘要: 游戏中开发不同于一般应用程序的开发,它更注重于界面美观,我们需要在游戏界面设计中花费大量的时间以便使它看起来更炫.更酷,当然这其中就少不了游戏中的字符文本,那么如何制作出漂亮的游戏文本呢?今天 ...

  4. 视频教程-Layabox3D游戏开发入门-微信3D小游戏案例 -微信开发

    Layabox3D游戏开发入门-微信3D小游戏案例 有多年Unity程序开发经验,有策划和美术设计的经验.愿意在csdn这个平台和大家一起分享! 金龙 ¥29.00 立即订阅 扫码下载「CSDN程序员 ...

  5. Silverlight C# 游戏开发:L5 3D基本的灯光

    Silverlight C# 游戏开发:L5 3D基本的灯光 我们在设计和开发3D的时候最常用的就是灯光,它有的时候比摄像机还要重要,一些花哨漂亮的表现主要通过灯光实现,相比场景中只有一个的主要摄像机 ...

  6. 《XNA游戏开发》简介

    一.XNA简介 XNA是基于DirectX的游戏开发环境. 以C# 为开发语言 以 .NET Framework 为基础.并加入游戏应用所需之函式库所构成的 XNA Framework 可开发XNA ...

  7. XNA游戏开发之滚动背景

    摘要: 在很多游戏开发中角色的运动都是相对游戏背景而言的,也就是说我们通过移动游戏场景来给游戏角色带来一种运动效果,毕竟我们的游戏视窗是有限的,如果无止境的让角色运动肯定是不可行的,下面我们就一块看一 ...

  8. XNA游戏开发之(六)——保存游戏数据

    [原创]Alex 游戏过程中,通常需要存储游戏状态.在下次启动游戏时,重新载入游戏,继续游戏. 实现过程非常简单,首先建立一个结构体定义需要保存的游戏参数,然后通过XmlSerializer类将其保存 ...

  9. 移动端h5游戏开发中的动画和动效展示

    在移动端h5游戏开发中,经常会遇到动画和动效的展现需求,比较常用的实现方法有css3.svg.定时器等,针对不同的场景和需求使用不同的技术,可以提升设计和开发的效率,保证产品的效果和质量,也能让用户有 ...

最新文章

  1. “AI就是统计学”?阿里AI负责人金榕逐条驳诺奖得主萨金特
  2. 15-数据结构探险系列-图篇
  3. java rect平移_如何在Java Swing中使用鼠标平移图像
  4. [windows版]搭建php的redis环境
  5. uoj#422. 【集训队作业2018】小Z的礼物
  6. 中控指纹采集器开发指纹识别项目(说明)
  7. 获取弹出的窗口_Win7系统如何获取设置everyone权限的问题
  8. hanlp中文分词、提取摘要关键字、语句分析、智能推荐
  9. 编译wxWidgets
  10. linux元组和列表的区别,列表,元组,集合
  11. god is a girl
  12. 总结过去10年的程序员生涯
  13. linux访问db2数据库操作命令行,DB2数据库基本操作指令30条
  14. 会员管理系统单机版哪里有?
  15. Android webview调用本地文件选择失败解决
  16. 信息检索1.4.学术搜索引擎--百度学术搜索
  17. UG工程图模板制作方法,超级实用
  18. 微信原生组件|基于小程序实现音视频通话
  19. SQL行转列,列转行
  20. 来看看生词:CVBS、S-Video、YPbPr、模拟RGB、DVI和HDMI

热门文章

  1. Go语言的错误异常处理机制及其应用
  2. 【Design pattern】简单工厂过渡策略模式
  3. 路由器远程登陆配置:02多人登陆一台设备
  4. 经典笔试上机考题-表达式求值
  5. SLAM图优化g2o
  6. Paddle预训练模型应用工具PaddleHub
  7. ITS智能交通监控系统技术解析
  8. DCN-S4600 telent、http远程登录配置
  9. Ubuntu 系统 Pycharm中无法使用中文输入法问题
  10. 微信小程序去掉左上角的返回箭头