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 ...
随机推荐
- 开源分布式实时计算引擎 Iveely Computing 之 WordCount 详解(3)
WordCount是很多分布式计算中,最常用的例子,例如Hadoop.Storm,Iveely Computing也不例外.明白了WordCount在Iveely Computing上的运行原理,就很 ...
- angular的$scope,这东西满重要的
<!doctype html> <html> <head> <meta charset="utf-8"> <title> ...
- “耐撕”团队 2016.03.30 站立会议
1. 时间: 16:45--17:05 总计:20分钟 2. 成员: Z 郑蕊 * 组长 (博客:http://www.cnblogs.com/zhengrui0452/), P 濮成林(博客:ht ...
- beta版本工作百分比
1.附上github上,beta阶段的整体工作情况 2.beta版本分工情况: 马凛凛 031302620(组长):主要负责任务分配和规划,编码工作主要是系统的“实时编辑”功能,以及服务器的配置和部署 ...
- HTML5开发注意事项及BUG解决
1.点透Q:元素A上定位另外一个元素B,点击元素B,如果元素A有事件或链接,会触发元素A上的事件或链接,即点透A:在元素B的touchend中增加ev.preventDefault();阻止默认事件即 ...
- Svn-在eclipse中安装svn插件
在eclipse中安装svn有两种方式 1:直接下载svn的插件包安装 使用的版本为1.8.x Links for 1.8.x Release: Eclipse update site URL: ht ...
- 【ZOJ 3897】Candy canes//Fiddlesticks
题 题意 给你一串数,a1...an,从左到右每次让一个数减小c,如果这个数小于c,那就减为0.第n个数减小后,又从第一个开始从左到右.如果这次某个数减小到0,那就改变方向,如果遇到已经是0的,就跳过 ...
- bzoj 3437 斜率优化DP
写题解之前首先要感谢妹子. 比较容易的斜率DP,设sum[i]=Σb[j],sum_[i]=Σb[j]*j,w[i]为第i个建立,前i个的代价. 那么就可以转移了. /**************** ...
- JavaScript parser
JavaScript parser 和上面功能有点像,折叠JS代码,快速找到JS中类,方法的工具
- C++中使用array报错 requires compiler and library surpport for the ISO c++ 2011 standard
#error This file requires compiler and library support for the \ISO C++ 2011 standard. This support ...