游戏动画基础

Animation组件

Animation组件是对于老的动画系统来说的。

老的动画形同对应的动画就是clip,每个运动都是一段单独的动画,使用Play()或CrossFade(),直接播放动画 或淡入淡出播放动画。

animation.Play("name");
animation.CrossFade("name");

下面的是它的几个属性

Animation:默认的动画片段;

Aniamtions:包含的动画片段;

Play Automatically: 是否自动播放;

Aniamate Physics:动画是否应与物理交互。
Culling Type:什么时候不播放动画。
始终播放动画 (Always Animate) 始终播放动画。
基于渲染器 (Based on Renderers) 基于默认动画姿势剔除。
基于片段边界 (Based on Clip Bounds) 基于片段边界(在导入过程中计算)剔除,如果片段边界超出视图,则不会播放动画。
基于用户边界 (Based on User Bounds) 基于用户定义的边界剔除,如果用户定义边界超出视图,则不会播放动画。

Animator组件

新的动画系统Macanim(具体文档参考这里)提供了一个Animator组件用于控制角色动画,这两个组件不能同时使用。

Animator组件也对应了几个属性:

Controller:Animator Controller资源;

Avator:骨骼模型

(注:何为Avatar?因为骨骼结构的类似性,使得把动画从一个类人骨架映射到另外一个类人骨架成为可能,也使得重定向和反向动力学成为可能。极少例外地,类人模型可以被认为是有相同的结构,有清晰的身体,头,四肢。Mecanim系统很好地利用这个主意来简化搭骨架和控制动画。创建动画的一个基本步骤是设置一个unity3d可理解的简化后的类人骨骼到骨架中实际骨骼的映射;在Mecanim的术语中,这个映射称为Avatar)

Apply Root Motion: 是否使用RootMotion,如果我们勾选了的话,当播放动画时是通过动画运动的幅度来改变角色的Transform的,如果我们不勾选,我们就可以用脚本设定此角色的Tranform。

下面两个选项和Animation组件基本一致。

Animator Controller

Animator控制器,用来设置角色上的行为。这些包括状态机、融合树和通过脚本控制的事件。Unity为Animator controller的编辑提供了一个可视化的窗口,打开一个Animator controller,里面就像这样:

通过在里面添加各种状态和变量,可以让角色在各个状态中自由变换,而且,controller资源是可以复用的。假如有两个模型的Avatar完全一样,那么controller就可以直接套用。

状态机之中的状态不仅可以是单个剪辑,也可以是一个混合树。构建和编辑复杂的状态机和混合树,以便完全控制的角色如何运动。Unity编辑器提供强大的工具,用于分割、创建循环和从导入的动画文件中提取轨迹。然后可以把这些动画短片用作一个多层混合树的叶子,或者作为分层状态机中的一种状态。混合树让您只使用几个动画剪辑就能创建各种各样的运动。在混合树编辑器中,您可以定义混合参数并在3D视图中预览混合动画。混合树和动画剪辑一样,可以用作分层状态机中的状态。

导入CS模型到Unity3D

CS应该是我们这代人第一个接触的FPS游戏了,虽然是2000年以前的产物,但是即使拿到现在来看,品质也是世界级的。

下面就介绍下如何把CS1.6中的模型提取到Unity3d中。

相关软件:

Unity3D 4.2

MilkShape 3D 1.8.4 - 分解MDL模型

smd importer_v1.0 - 导入smd模型进3dsmax

3dsmax2009 - 编辑模型,导出fbx格式的模型

Jed's Half-Life Model Viewer - 查看游戏模型

1.分解模型

首先你得有CS1.6.

安装好Jed's Half-Life Model Viewer ,可以到对应的模型路径中加载游戏模型。

相关的路径如下:

统一路径 cstrike\models\player
匪1 terror\terror.mdl
匪2 leet\leet.mdl
匪3 arctic\arctic.mdl
匪4 guerilla\guerilla.mdl
警1 urban\urban.mdl
警2 gsg9\gsg9.mdl
警3 sas\sas.mdl
警4 gign\gign.mdl
VIP vip\vip.mdl

更详细的路径介绍参考这里。

接下来就要将MDL模型分解为SMD模型,用到的工具是MilkShape。

(注:MDL模型和SMD模型

MDL文件并不是单纯的模型文件,他是一个文件包,里面包含模型,贴图,所有动作,以及脚本。CS中的mdl模型由控制文件(扩展名为QC) 和数据文件(扩展名为SMD)再加上贴图(只能是Windows格式的256色BMP位图,而且它的长宽都必须是八的倍数。)编译而成。其中QC文件保存了模型的附件、接触点和子模型等数据,并指定编译时要读取的SMD文件。Smd有两种,一是记录模型的信息,包括模型、骨骼、hitbox、皮肤贴图。另一种是动作镜头,记录每一帧骨骼的位置,形成动画。)

打开MilkShape,Tools -> Half-Life -> Decompile Normal HL MDL file -> 选取需要解压的mdl文件。
片刻,解好了,是qc,bmp,和一大堆smd文件,我们需要用的是smd。

2.导入smd到3dsmax

首先将插件装好,将解压后得到的文件SMDImporterx64.dli放到 X:\Program Files\Autodesk\3ds Max 2009\plugins 中,X是你安装软件的盘符。

打开3dsmax2009.文件->导入,选择SMD,定位到GSG9.smd,加载。

加载进来的模型没有贴图,所以要手动赋一下材质。编辑材质->漫反射 -> 位图,选择分解出来的bmp纹理,加载。

将材质球赋上去,打开纹理开关,模型就正常显示了。

导出动画

导入run.smd,可以拖动滑块开一下跑的动画(发现是反向的 - -).

文件->导出FBX,注意勾选Animation和Embed Media.,确定。

加载FBX模型进Unity3D

打开Unity3D,创建一个新项目,将刚才导出的fbx模型拖到assets中。在Inspector中点Rig,Animation Type选Humanoid,其他的默认,Apply.

接下来创建一个Animation Controller,Create -> Animation Controller,将fbx自带的run动画拖拽进Controller中。

黄色表示是默认的动画。

接下来就可以把模型拖入到场景中了,Animation controller拖拽到Animator组件对应的位置。

循环动画的话,在模型的Animation选项卡中勾选Loop Pose.

接下来及可以用脚本来控制人物的跑动了 ^^.

参考

解决Unity3d 4.3 动画系统带来的烦恼 - http://blog.sina.com.cn/s/blog_7dcf9f690101p22x.html

从3DMax中导出CS模型为X格式模型 - http://linuxtest.blog.163.com/blog/static/1999270882013128103226704/

Unity3D游戏开发从零单排(五) - 导入CS模型到Unity3D相关推荐

  1. Unity3D游戏开发从零单排(一) - 真机运行(Android和WindowsPhone)

    提要 周末不想学习,就来玩一玩Unity3D好了. 本以为网上会有很多关于Unity3D的配置文章,但搜到的要么是iOS的,要么比较 坑爹,所以还是自己来写一篇. 又是一个单排,希望这次的单排能够一路 ...

  2. Unity3D游戏开发从零单排(六) - 人物运动及攻击连击

    提要 今天要实现的是一个简单人物控制器.包括用w,a,s,d来控制人物上下左右跑动,鼠标左击发出连招,都是基于老的lagacy的动画.虽然unity3d自带有charactorcontroller,但 ...

  3. unity3d游戏开发学习之使用3dmax创建导弹模型

    在着手研究Unity3D的游戏开发时,3D模型可以考虑从unity的assets store去获取,也可以从网上搜索下载,同时咱们也可以尝试下自己动手去做一些简单的模型. 这里就根据unity3d坦克 ...

  4. 【Unity3D游戏开发学习笔记】(六)上帝之手—GameObject的操作

    在Unity中,所有实体都属于游戏对象(GameObject),比如外部导入到场景中的模型,Unity自带的立方体等等,而要将这些GameOject进行管理,交互等操作,则需要用到脚本来实现,上一节我 ...

  5. Unity3D游戏开发之仿仙剑奇侠传角色控制效果

    在上一篇文章中,我们从Unity3D为我们提供的相机原型实现了非编码式的小地图,如果结合GUI在这个小地图下面绘制一些背景贴图,相信整体的效果会更好一些.博主希望这个问题大家能够自己去做更深入的研究, ...

  6. 从一点儿不会开始——Unity3D游戏开发学习(一)

    一些废话 我是一个windows phone.windows 8的忠实粉丝,也是一个开发者,开发数个windows phone应用和两个windows 8应用.对开发游戏一直抱有强烈兴趣和愿望,但奈何 ...

  7. Unity3D游戏开发之邂逅Unity3D

    从今天起,博主决定要在毕业前把大学里想学的东西都学完.所以,从今天起,大家将看到由我为大家带来的Unity3D系列文章,让我们一起来学习Unity3D游戏开发吧! 在正式今天的文章之前,博主想简单介绍 ...

  8. 2019该怎么学unity3D游戏开发?

    Unity 3D本来是由德国的一些苹果粉丝开发的一款游戏引擎,一直只能用于Mac平台,所以一直不被业外人士所知晓.但是后来也推出了2.5版,同时发布了PC版本,并将其发布方向拓展到手持移动设备.怎么学 ...

  9. Unity3D游戏开发初探—2.初步了解3D模型基础

    一.什么是3D模型? 1.1 3D模型概述 简而言之,3D模型就是三维的.立体的模型,D是英文Dimensions的缩写. 3D模型也可以说是用3Ds MAX建造的立体模型,包括各种建筑.人物.植被. ...

  10. [Unity3D]Unity3D游戏开发之当仙剑奇侠传遇上Mecanim动画系统

    大家好,我是秦元培,欢迎大家关注我的博客,我的博客地址是 blog.csdn.net/qinyuanpei.博主总算赶在这个月底写出了这篇文章.这个月因为期末考试一直没时间研究太多关于技术方面的东西, ...

最新文章

  1. 13-linux定时任务不起作用到的问题解决办法
  2. docker image aarch64 x86_64_「docker」交叉编译适用于ARM平台的Docker源码
  3. 13-爬虫之js加密,解密,混淆,逆向破解思路
  4. 数据结构与算法之BFPRT算法
  5. 密码学系列之:feistel cipher
  6. python写一个聊天程序_python实现一个简单的网络聊天程序
  7. Delphi IDE使用的一些主要技巧
  8. python递归_python3之递归
  9. c++ map底层_深入浅出Redisredis底层数据结构(上)
  10. The requested profile “pom.xml“ could not be activated because it does not e
  11. 【Qt教程】3.2 - Qt5 event事件、定时器timerEvent
  12. Zabbix监控Jenkins过程详解
  13. 参考文献如何居中_一线教师如何写教育教学论文?
  14. ATM柜员机JAVA课程设计_JAVA课程设计报告银行ATM机系统.doc
  15. Go-技篇第二 命名规范
  16. 比赛打分展示系统_《评委计分系统-双屏标准版》典型赛事案例图片展示-省直机关歌咏比赛
  17. 怎么查看自己java程序的源码
  18. 谈计算机财务管理的相关论文,有关计算机财务管理的思考论文
  19. *使用phpspider -- PHP蜘蛛爬虫框架来爬取数据
  20. 软件:汽车的灵魂操盘手

热门文章

  1. chm 已取消到该网页的导航,打不开!
  2. matlab方波经过低通滤波,方波滤波matlab的实现
  3. qq留言板html代码,qq主人寄语代码_QQ留言板主人寄语
  4. android 优秀框架整理
  5. 安装SQL2000,出现以前的某个程序安装已在安装计算机上创建挂起的文件操作(完美解决)
  6. 屏蔽烦人的网易云音乐评论区(附防颓小技巧)
  7. 网站服务器登录很慢,网站打开速度慢如何解决?有何技巧?
  8. Linux实战——Shell编程练习(更新12题)
  9. 光明勇士iOS服务器维护,裕际网络科技《光明勇士》3月11日 iOSamp;安卓部分区服数据互通公告 - 热门手游公告-TK游戏...
  10. JS for循环练习题