Unity 动画

Unity 并没有自带建模工具。

3D建模工具

maya, 3dmax, blender

Skinned Mesh Renderer

Mesh Renderer

Mesh Filter

Modelling

最好是 T-pose

Rigging

建立骨架(Skeleton) 的过程。定义骨头之间的运动关系。是由外部制作的(Maya 3dmax)。Unity也没有工具用来做这个事情。Homanoid Character 至少需要15根骨头。臀部应该做为根

Skinning

将骨架绑定到 Mesh 的过程,定义每个顶点受到哪几根骨头的影响。定义当骨头动时,身体的哪一部分跟着动,绑定顶点。Unity 最多支持一个顶点受4个骨头的影响。是由外部制作的

Modelling, Rigging, Skinning 这3部全部是在外部制作的。

Muscle

肌肉,是一个 Mecanim里的概念,它可以让你更直观地控制角色的骨架,当 Avatar 存在时, Mecanim 是在 Muscle 空间工作的,而不是在 bone 空间工作的,这更加直观。

Muscle Clip

就是 Animation Clip

Mecanim

是 Unity 4.0.0 引入的新的动画系统的名字,旧的现在被称为 Legacy。Mecanim 包含2种,一种是 Humnoid, 一种是 Generic。这个新系统特别适合做人形的动画(Humnoid)。人形动画在游戏中使用非常广泛,Unity专门为他提供了一套工作流程。因为骨架是相似的,所以很容易将动画应用到另一个人形骨架上,就是retargeting,还有IK。人形都包含身体、头、四肢。Mecanim系统简单了人形的 Rigging,和动画的控制。

T-pose

就是一个人双臂展开的姿势。为了做 Avatar

Bind-pose

角色被建模时的姿势。

Human template

如何 将 FBX 中的 bone 匹配到 Avatar 的模板。

Retargeting

将动画应用到其他模型上去

Avatar

将骨架应用到另一个模型上去,定义骨骼结构。Avatar 就是一个人形的样子。创建 Avatar:导入 fbx 文件后,选择 Mesh -> 看 Inspector 中的 XX Import Settings -> Rig -> Animation Type -> Homanoid。然后点击 Apply。然后你的 fbx 下面就会出现一个 avatar子对象。然后选中这个avatar,在 Inspector 中就会有一个 config 按钮。。如果是generic,也会有一个 avatar,但他没有 Configure Avatar 按钮。

改完之后发现,在 import setting 的 Model 页中,下面本来是 Animation,现在变成了 Animator

然后,拖一个这个 fbx 到场景中 ,自然也会有一个 Animator 组件

Root Motion

角色的根的运动。可以被动画控制,也可以被外部控制。

Animator Component

就是这个

Animator Controller(Asset)

是在Unity 编辑器中编辑的,也可以新建。他使用 State Machine 来处理动画之间的过渡。然后你通过为模型添加 Animator 组件,为 Animator 添加 Animator Controler 来实现模型的动画。

在Unity中编辑Animator Controller:选中某个Animator -> Inspector 中点击 Edit

 -> 

在文件夹中的对应文件如下:

Animation Layer

动画的层。用于控制整个模型的动画,或者是模型的一部分。他包含一个 Animation State Machine。例子:一个层用于控制整个角色的行走、跳跃,还有一个更高的层用于控制用于控制上半身的动作比如投掷或射击。后者优先级更高。

Animation State Machine

动画状态转换图。控制动画状态的转换。每一个动作就是一个状态,需要限定每一个状态可以过渡到哪几个状态。

Animation State

动画状态,每个状态代表一个 Animaiton Blend Tree 或是一个简单的 Clip

Animation Blend Tree

使用 Animation parameters 在相似的 Clip 中进行混合。

Blend Node

就是一个 Blend Tree,因为他也是一个 State,所以算是一个节点。

ATENTION!! 注意区分transition(过渡)和 blend tree(混合相似动作)

transition 是指在一定的时间内,从一个动作(状态)平滑地过渡到另一个动作(状态)。过渡是animation state machine 的一部分。他不是一种状态。

blend tree 是将多个相似的动作进行混合,每个动作都有一个权重。blend tree 是一种state。混合时使用“归一化的时间” normalized time。应该是指按比例对应。在相同的时间点,左脚同时着地。2个clip不需要时间一样长。

Animation parameters

在脚本和 Animation Controller 中进行通信。有一些是在脚本中设置,然后在 Animation Controller 中使用。有一些是是 Clip 中的 Curves 的参数,然后在脚本中使用。

Humanoid Character

Humanoid Animation

Generic Animation

也是 Mecanim 系统,但是他并不使用 Homanoid ,也没有 Avatar。

Legacy Animation

以前的动画系统,如果不想从以前的动画转换到新的,可以继续使用。在新的项目中,不需要使用这种动画了。

 Animator

新的动画,导入 fbx 时,如果 Rig 选择 Generic 和 Humanoid,那么都使用 Animator。

 Animation

旧的动画,导入 fbx 时,如果 Rig 选择 Legacy,就会自动加一个 Animation。

包含很多 AnimationState,每个 AnimationState 包含 AnimationClip 及剪辑的参数。

Animation Clip

是动画剪辑,如“跑步”,“行走”,“空闲”。Mecanim的Clip和Legacy的Clip在Inspector中是不一样的。

Animation Curves 曲线可以被附加到剪辑上,他可以用多个参数,然后由脚本进行控制。

Animation Layer

Skeleton

Body Mask

用于指定在一个骨架中,将身体的哪一部分剔除出去。在 Animation Layer 和 Importer 中使用

一个模型,从多个文件中载入动画。

Orc.FBX

Orc@idle.FBX

Orc@attack.FBX

在这种情况下,有带@的文件,导入时,只会使用他包含的 Animation,Mesh 则是从 Orc.FBX 中取出,这是 Unity 支持的。

时间: 2024-10-10 09:49:35

Unity 动画的相关文章

Unity动画

Unity 并没有自带建模工具. 3D建模工具 maya, 3dmax, blender Skinned Mesh Renderer Mesh Renderer Mesh Filter Modelling 最好是 T-pose Rigging 建立骨架(Skeleton) 的过程.定义骨头之间的运动关系.是由外部制作的(Maya 3dmax).Unity也没有工具用来做这个事情.Homanoid Character 至少需要15根骨头.臀部应该做为根. Skinning 将骨架绑定到 Mesh

【Unity编程】Unity动画系统(一)

Unity动画系统 Unity动画系统,也称为"Mecanim",提供了以下功能: 简单的工作流程,设置动画的所有元素,包括对象,角色和属性. 支持导入外部创建的动画片段和使用内置动画编辑器制作的动画片段. 人型动画重新定位,动画角色的运动控制可以被所有的角色模型共享,即角色的外观(SkinedMesh)和运动(Animator)是分离的,它们互相组合之后形成最终的动画. 用于编辑动画状态的的简化工作流程,即动画控制器. 方便预览动画片段,以及片段之间的插值过渡. 这使得动画师可以独立

Unity 动画知识之一

Unity现在已经用的很广泛啦,可是却一直没有什么美术向的教程. 程序用方面的内容在各个论坛都有讨论,但是美术似乎很弱势啊. 明明美术也很需要掌握引擎方面的内容嘛! 山谷里的野百合还有春天呢 我们美术也要出教程! 这次选了本菜鸡比较不那么菜的细分领域?unity3d  3D美术模块 来讲 美术小伙伴们肯定是懒得看那么多字啦,所以我就写的尽量有意思一点吧…… 计划是从入门到住院全部讲完的,但是能不能讲完我也不晓得,挖坑不填什么的最开心了 至于为什么是从入门到住院,因为学了这套东西,你就具备了在项目

Unity 动画系统 Animation 和 Animator的小实例

本文结合一个很简单的动画demo,分别采用2种方法,来对比Animation和Animator的使用方式: 方法1:单独使用Animation 方法2:Animation结合Animator 动画Demo 两个动画.一个是移动,一个是缩放. 实现方式的对比 一.单独Animation来实现 空场景,找到一张Sprite图片,拖到面板中,右键添加Animation组件.如下: 点中这张pig猪的图片,点击Unity的 Window->Animation->Animation.出现如下: 这个时候

Unity动画状态机学习

在Unity4.x之前,动画位移,上楼梯下楼梯等动作都需要自己写模块实现,包括人物转向等等.Unity状态机的出现解决了这个问题.它有一个Apply Root Motion的选项,勾选之后即可应用根骨骼的位移. Unity的状态机大致有如下知识点: 1.Hellow world 2.如何驱动 有时间继续写... Default State 默认状态,在视图里呈现为橙色 Any State 不管处于什么状态,只要条件满足,必然触发. 一般用于死亡的判断

Unity 动画(UITweener)、协程(Coroutine)和委托(Delegate)队列管理

问题         前段时间,项目中要做奖励界面UI缓动动画要一个接着一个播放,如:先播放达成星星动画,在播放经验数字增加动画,最后播放奖励物品动画. 当然最笨最直接的方法可以类似成语接龙那样,把下个动画的开始播放都写在上一个动画播放完毕委托中.一般直接的方法是实现起来非常之简单,但这里却不是,会看见代码中有一系列播放完毕回调函数(除了最后一个),显然维护起来是否费劲. 把上面的方法进行简化,把回调函数变为一个:维护一个动画的 List 和当前播放动画的索引 index ,然后再回调函数中只需

Unity 动画插件 DOTween 的简单使用

1. 找来找去,居然找不到一个比较适合的 DOTween例子,就自己写一点来熟悉熟悉.首先当然得导入 dotween 的插件包.先说一下,dotween 的动画效果对于2D 和 3D 都是适用的. 场景中新建一个Cube1,重置位置,新建按钮取名Button1,然后我们写代码使用 dotween 来控制这个cube的移动.新建脚本 Button1 给按钮添加上,我们要监听里面的事件: using UnityEngine; using System.Collections; using DG.Tw

unity动画相关

当前动画控制器是在播放哪个动画: Animator alice; AnimatorStateInfo currentBaseStage; int idle = Animator.StringToHash("Base Layer.Idle"); int hit = Animator.StringToHash("Base Layer.Jump"); currentBaseStage=alice.GetCurrentAnimatorStateInfo(0); if(cur

【总结】Unity动画模块

动画模块没有太多好说的,更多是练习积累的经验 Animator动画控制器 AnimatorControllerLayer 状态层,layer层级越高,动作优先级越高 AnimatorStateMachine 状态机 SubAnimatorStateMachine 子状态机 RuntimeAnimatorController 运行时动画状态机 Animate Physics 适合动画有物理的相互作用 ApplyRootMotion 用动画还是脚本控制位置 Culling Mode 动画裁剪 Wri