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 按钮。Unity动画

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

Unity动画

Unity动画

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

Root Motion

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

Animator Component

就是这个Unity动画

Animator Controller(Asset)

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

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

Unity动画

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

Unity动画

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

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

Unity动画Animator

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

Unity动画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 支持的。

上一篇:关于目标检测(Object Detection)的文献整理


下一篇:【我们都爱Paul Hegarty】斯坦福IOS8公开课个人笔记2 Xcode、Auto Layout及MVC