游戏动画基础

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游戏开发从零单排(四) - 制作一个iOS游戏

    提要 此篇是一个国外教程的翻译,尽管有点老,可是适合新手入门. 自己去写代码.debug,布置场景,能够收获到非常多.游戏邦上已经有前面两部分的译文,这里翻译的是游戏的最后一个部分. 欢迎回来 在第一 ...

  2. Unity3D游戏开发从零单排(三) - 极速创建狂拽酷炫的游戏地形

    提要 在Unity工作流程内,地形是一个必不可少的重要元素.不论是游戏或虚拟现实都会使用到各种类型的地形效果,在这个教学中我们须要了解到地形的制作基本概念与,当中对于Unity的地形操作部分须要大量的 ...

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

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

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

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

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

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

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

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

  7. [Unity3D]Unity3D游戏开发之飞机大战项目解说

    大家好,我是秦元培,欢迎大家继续关注我的博客,我的博客地址是blog.csdn.net/qinyuanpei. 首先感谢大家对我博客的关注,今天我想和大家分享的是一个飞机大战的项目.这是一个比較综合的 ...

  8. [Unity3D]Unity3D游戏开发之跑酷游戏项目解说

    大家好,我是秦元培.我參加了CSDN2014博客之星的评选,欢迎大家为我投票,同一时候希望在新的一年里大家能继续支持我的博客. 大家晚上好.我是秦元培,欢迎大家关注我的博客,我的博客地址是blog.c ...

  9. [Unity3D]Unity3D游戏开发之伤害数值显示

    大家好,我是秦元培,欢迎大家关注我的博客,我的博客地址是blog.csdn.net/qinyuanpei.众所周知,在RPG游戏策划中最为重要的一个环节是数值策划.数值策划是一个关于游戏平衡方面的概念 ...

随机推荐

  1. 利用boost做string到wstring转换,以及字符集转换 - Error - C++博客

    利用boost做string到wstring转换,以及字符集转换 - Error - C++博客 利用boost做string到wstring转换,以及字符集转换 #include <boost ...

  2. Mac/ios 模拟器 测试模拟慢网速

    原文:http://www.heyuan110.com/2015/06/16/Mac%E6%B5%8B%E8%AF%95%E6%A8%A1%E6%8B%9F%E6%85%A2%E7%BD%91%E9% ...

  3. 确定比赛名次(map+邻接表 邻接表 拓扑结构 队列+邻接表)

    确定比赛名次 Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 65536/32768K (Java/Other) Total Submis ...

  4. Cocos2d-x官方在线视频-Cocos2d-x3.2《2048》手游开发揭秘

    Cocoachina 官方在线视频 http://cn.cocos2d-x.org/tutorial/lists?id=58 一.游戏介绍 2048游戏是一款风靡全球的休闲类游戏,通过控制4X4范围内 ...

  5. JSF简单介绍

    JSF简单介绍 一. 什么是 JSF: JavaServer Faces (JSF) 是一种用于构建 Web 应用程序的新标准 Java 框架.它提供了一种以组件为中心来开发 Java Web 用户界 ...

  6. Android 仿微信滑动删除

    做这个功能主要是项目需要:找了很多资料但是效果都不理想,后来就自己研究写了一个,拿出来共享给大家,贴上代码大家慢慢看看,还是比较容易懂的. 主要代码: package com.zbq.widget; ...

  7. AngularJs(八) 过滤器filter创建

    大纲 示例 过滤器的使用 创建过滤器 demo 这是整个示例demo 1.filter.js文件 angular.module("exampleApp", []) .constan ...

  8. js实现弹出窗口、页面变成灰色并不可操作的例子

    function show() //显示隐藏层和弹出层 { var hideobj=document.getElementById("hidebg"); hidebg.style. ...

  9. 基于php常用正则表达整理(上)

    电子邮件:/\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/变量:/[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/ 基于p ...

  10. java InputStream使用

    InputStream读取流有三个方法,分别为read(),read(byte[] b),read(byte[] b, int off, int len).其中read()方法是一次读取一个字节,效率 ...