Unity3D脚印6——模型动画
原地址:http://www.cnblogs.com/ybgame/archive/2013/02/21/2920009.html
如何导入一个模型,导入的模型在unity3d的project面板中是怎样显示的?包含什么内容?如何加载到场景中?怎样去控制它?模型和动画之间的关系?
如果你有一个从高精度多边形版本生成的带法线贴图的角色,你应该以180度的平滑角度(Smoothing angel)导入此角色的游戏质量版本。这将防止由于切线切割在光照中产生的奇怪的接缝。如果在应用了这些设置后仍然存在接缝,启用在UV接缝处分割切线选项(Split tangents across UV seams)。
【动画导入】
如果想播放一个简单的动画,可以使用Animation.Play;
如果想在动画之间交叉淡入,可以使用Animation.CrossFade;
如果想改变动画模式(循环,一次,乒乓),可以改变动画导入设置里面的动画帧的WrapMode,或者在运行时改变AnimationState.wrapMode的值;
AnimationState可以用于改变动画的层,修改播放速度,并且直接控制融合与混合。
- Animation
- AddClip添加剪辑
- animateOnlyIfVisible可见时动画
- animatePhysics是否物理动画
- Blend混合
- clip剪辑
- CrossFadeQueued淡入淡出队列
- CrossFade淡入淡出
- cullingType消隐类型
- GetClipCount获取剪辑数
- IsPlaying是否在播放?
- isPlaying是否在播放?
- localBounds本地边界框
- playAutomatically自动播放
- PlayQueued播放队列
- Play播放
- RemoveClip移除剪辑
- Rewind倒回
- Sample采样
- Stop停止
- SyncLayer同步层
- this [string name]操作名字
- wrapMode循环模式

1 function Start () {
2 // Set all animations to loop
3 animation.wrapMode = WrapMode.Loop;
4 // except shooting
5 animation["shoot"].wrapMode = WrapMode.Once;
6
7 // Put idle and walk into lower layers (The default layer is always 0)
8 // This will do two things
9 // - Since shoot and idle/walk are in different layers they will not affect
10 // each other's playback when calling CrossFade.
11 // - Since shoot is in a higher layer, the animation will replace idle/walk
12 // animations when faded in.
13 animation["shoot"].layer = 1;
14
15 // Stop animations that are already playing
16 //(In case user forgot to disable play automatically)
17 animation.Stop();
18 }
19
20 function Update () {
21 // Based on the key that is pressed,
22 // play the walk animation or the idle animation
23 if (Mathf.Abs(Input.GetAxis("Vertical")) > 0.1)
24 animation.CrossFade("walk");
25 else
26 animation.CrossFade("idle");
27
28 // Shoot
29 if (Input.GetButtonDown ("Fire1"))
30 animation.CrossFade("shoot");
31 }

Animation Playback and Sampling 动画播放和取样:
取样这个词可能不大好理解,取样在Unity里面是涉及到渲染的一个术语,就是对像素取样来进行综合运算,我们的动画是在不断运动的,将动画当前的运动状态提取出来,并渲染到屏幕上,这是我理解的取样。
我们在3ds Max或者Maya等模型编辑工具中编辑一个动画,我们按照某个帧速率(FPS)来创建这个动画,在动画被导入到U3D的时候,这个帧速率也会被导入,所以会跟编辑器的速率保持一致。
但我们游戏的运行帧速率并不稳定,可能有硬件的原因或者要渲染的对象,处理的逻辑复杂度不一样,而导致的帧速率不稳定,如果我们按照它设定的帧率来播放,动画就会一卡一卡的。Unity是在变化的帧频中对动画进行取样,而不在制作时的帧频。3D电脑图形动画不是由分散的动画组成,而是连续的曲线。这些曲线可以让我们在任何时间点取样,而不只是对应某一个原始帧的时间点。这样当我们的电脑比较快的时候,动画将会更加地平滑和流畅。
对于大多数的实际应用,事实上Unity对变化帧速的采样不是我们需要关切的,然而,如果你的某个游戏逻辑依赖于动画变换或属性的动画在一个非常特殊的配置,那必须知道这一点。例如,如果有一个动画是把一个物体30帧内从0旋转到180度,想从代码中知道当它已达到了一半,你不能写一段条件语句来检查现在旋转值是不是90度。因为
Unity 依照游戏的变化速率来对动画取样,它可能在旋转快到90度时进行取样,或刚好过90度的时候取样。当在一个动画指定一个点到达时,需要通知, 应该使用AnimationEvent来代替。
还要注意的变化帧速率采样的结果,一个使用WrapMode.Once模式播放的动画的采样不一定是精确的最后一帧。在游戏中很有可能是刚好结束前的某一帧,在下一帧时间可能超过动画的长度,所以它被禁用,而不再采样。如果需要动画的最后一帧取样精确,你可以使用WrapMode.ClampForever。
如在这种情况下,动画在这种情况下,动画将保持无限取样最后一帧,直到你停止动画。
Unity3D脚印6——模型动画的更多相关文章
- Unity3d 换装 之 模型动画分离
在手游中换装成了越来越不可缺的一个功能,毫无疑问各式各样的时装为游戏增添了不同的色彩. 对于2D手游,或许是更换对应的序列帧,也或许是如同3D手游一般,更换模型动画. 对于游戏中的人物,一般分为头.上 ...
- 时光煮雨 Unity3D实现2D人物动画② Unity2D 动画系统&资源效率
系列目录 [Unity3D基础]让物体动起来①--基于UGUI的鼠标点击移动 [Unity3D基础]让物体动起来②--UGUI鼠标点击逐帧移动 时光煮雨 Unity3D让物体动起来③—UGUI DoT ...
- 时光煮雨 Unity3D实现2D人物动画① UGUI&Native2D序列帧动画
系列目录 [Unity3D基础]让物体动起来①--基于UGUI的鼠标点击移动 [Unity3D基础]让物体动起来②--UGUI鼠标点击逐帧移动 时光煮雨 Unity3D让物体动起来③—UGUI DoT ...
- Unity3D ShaderLab 模拟精灵动画
Unity3D ShaderLab 模拟精灵动画 在上一篇,介绍了通过Shader 模拟纹理运动,那么更深一步讲,我们也可以把帧动画的精灵纹理运动通过shader实现. 虽然大家都是在游戏脚本中做更高 ...
- Unity3D研究院之Machine动画脚本自动生成AnimatorController(七十一)
以前的项目一直不敢用Machine动画,因为当时立项的时候Machine动画还不成熟,最近项目做得差不多了我能有点时间学习,我就想在研究学习学习Machine.用Machine动画的时候需要创建一个A ...
- Unity3D研究院之Machine动画脚本自动生成AnimatorController
原地址: http://www.xuanyusong.com/archives/2811 以前的项目一直不敢用Machine动画,因为当时立项的时候Machine动画还不成熟,最近项目做得差不多了我能 ...
- [Unity菜鸟] FBX模型动画提取
角色已经人形化(Humanoid)了,那它的动画可以用在其它的模型上了也就是可以共用一套模型动画了,但是你有没有发现那动画是和fbx模型绑在一起的,没关系你可以选中这几个动画文件按Contrl+D就可 ...
- fbx模型动画提取教程附带一个用代码提取的方法
角色已经人形化(Humanoid)了,那它的动画可以用在其它的模型上了也就是可以共用一套模型动画了但是你有没有发现那动画是和fbx模型绑在一起的,没关系你可以选中这几个动画文件按Contrl+D就可以 ...
- WPF 3D 平移模型+动画(桥梁检测系统)
原文:WPF 3D 平移模型+动画(桥梁检测系统) 关于WPF 3D,网上有很多旋转的例子,但是关于平移的例子并不是太多.本文并非WPF 3D扫盲篇,因此需要对WPF 3D有一定了解,至少知道View ...
随机推荐
- 第二章 OO大原则
昨天忙了一天,晚上加班到了12点,虽然工作有时候比较累,但是整体来讲还是比较轻松的,国企加上我是今年才毕业的应届生,导致了现在这种情况.工资也真的不算高...但我觉得最开始还是要踏踏实实一点比较好.学 ...
- SpringMVC实现Restful风格的WebService
1.环境 JDK7 MyEclipse2014 tomcat8 maven 3.3.3 spring4.1.4 2.创建maven工程 使用MyEclipse创建maven工程的方式可以参考这篇博文( ...
- WCF安装Windows服务
安装图解: 安装命令: 1. 开始 ->运行 ->cmd2. cd到C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319(Framework版本号按I ...
- 每天一个linux命令(31):grep 命令
Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来.grep全称是Global Regular Expression Print,表示全局正则表达 ...
- Servlet Study 1
this content below are come from the JSR154 by sun Just for record purpose. if this relate to some ...
- 【BZOJ 3224】普通平衡树 模板题
删除节点时把节点splay到根: 然后把根左子树的最右边节点splay到根的左孩子上: 然后删除就可以了: 我的教训是删根的时候根的右孩子的父亲指针一定要记得指向根的左孩子!!! my AC code ...
- 读JS高级——第五章-引用类型 _记录
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- 【BZOJ-1965】SHUFFLE 洗牌 快速幂 + 拓展欧几里德
1965: [Ahoi2005]SHUFFLE 洗牌 Time Limit: 3 Sec Memory Limit: 64 MBSubmit: 541 Solved: 326[Submit][St ...
- 移动H5页面,keyup事件不好使用处理解决
1.mouse事件换成touch,pointer事件,keyup换成textInput事件
- bzoj2054 疯狂的馒头
bzoj上现在找不到这题,所以目前只是过了样例,没有测 2054: 疯狂的馒头 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 715 Solved: ...