大家好,我是佛系工程师☆恬静的小魔龙☆,不定时更新Unity开发技巧,觉得有用记得一键三连哦。

一、前言

AnyPortrait是一个创建2D角色动画制作的Unity拓展编辑器插件。

AnyPortrait提供了很多功能,让你可以在Unity里面就完成动画的制作。

使用AnyPortrait插件轻松创建2D网格,并且实现各种动画技术。

AnyPortrait关键特性:

  • 用户创建的网格
  • 通过解析PSD
  • 自动创建字符顶点变形动画
  • 色彩和变换动画
  • 使用控制参数的组合状态控制
  • 骨操纵动画
  • 基于张力的顶点物理效应关键帧动画
  • 为用户提供备份、数据导出/导入、捕获等多种功能。
  • 支持8种语言(英语、韩语、法语、德语、西班牙语、丹麦语、日语和汉语)

先放一张效果图:

【Unity3D插件】(二)使用AnyPortrait插件制作角色动画(AnyPortrait插件教程)_动画

下载链接:

​javascript:void(0)​

这是本系列文章的第二篇:

​【Unity3D插件】(一)使用AnyPortrait插件制作史莱姆动画(AnyPortrait插件教程)​

​【Unity3D插件】(二)使用AnyPortrait插件制作角色动画(AnyPortrait插件教程)​

二、教程分享

本教程基于插件包中的PSD文件。

学习如何通过PSD文件创建网格组。

以及如何添加骨骼和创建动画。

2-1、导入PSD文件

让我们新建一个场景,保存场景后,在菜单栏选择“Windows→AnyPortrait→2D Editor”,点击新建肖像,命名为PeacockTheAria:

【Unity3D插件】(二)使用AnyPortrait插件制作角色动画(AnyPortrait插件教程)_自动驾驶_02

按下 导入PSD文件 按钮导入新的PSD文件:

【Unity3D插件】(二)使用AnyPortrait插件制作角色动画(AnyPortrait插件教程)_插件_03

确保文件正常打开,然后单击Next按钮:

【Unity3D插件】(二)使用AnyPortrait插件制作角色动画(AnyPortrait插件教程)_自动驾驶_04

进入第二个页面,“图层”页面,加载的图层图像就会出现,接着就选择文件层:【Unity3D插件】(二)使用AnyPortrait插件制作角色动画(AnyPortrait插件教程)_自动驾驶_05

接下来,需要将PSD文件里面的若干图片制作成资源:

【Unity3D插件】(二)使用AnyPortrait插件制作角色动画(AnyPortrait插件教程)_unity_06

设置完地图集Atlas后,点击Complete按钮:

【Unity3D插件】(二)使用AnyPortrait插件制作角色动画(AnyPortrait插件教程)_动画_07

可以看到所有的图像、网格和网格组都是自动创建的:

【Unity3D插件】(二)使用AnyPortrait插件制作角色动画(AnyPortrait插件教程)_插件_08

使用PSD文件,自动创建网格和网格组,非常方便。

2-2、编辑骨骼动画的网格

因为自动创建的网格比较粗糙,所以需要优化一下网格。

选中要优化的网格,删除所有顶点:

【Unity3D插件】(二)使用AnyPortrait插件制作角色动画(AnyPortrait插件教程)_插件_09

接着,就重新设置网格:

【Unity3D插件】(二)使用AnyPortrait插件制作角色动画(AnyPortrait插件教程)_动画_10

重复上面操作,重新设置所有的网格:

【Unity3D插件】(二)使用AnyPortrait插件制作角色动画(AnyPortrait插件教程)_自动驾驶_11

2-3、剪切层

打开网格组后,可以在层级列表看到一个箭头形状的图标,Teeth和Tongue,如果选择这两个网格,可以看到网格只渲染了一部分,这是因为Teeth和Tongue具有剪切层属性:

【Unity3D插件】(二)使用AnyPortrait插件制作角色动画(AnyPortrait插件教程)_unity_12

下面的图片演示了剪切层属性的效果,可以看到图片的隐藏部分:

【Unity3D插件】(二)使用AnyPortrait插件制作角色动画(AnyPortrait插件教程)_动画_13

剪切功能是通过指定另一个网格作为蒙版来渲染网格的一部分。

主要用于眼睛、嘴巴等部位。

但是,请注意以下几点:

  1. 剪辑功能导致过程变慢,所以它减慢了Game。只在必要的部分使用。
  2. 如果你创建并使用一个自定义着色器,你还必须编写与剪辑功能相关的代码。

2-4、添加骨骼

AnyPortrait支持骨骼IK(逆运动学)和支持骨骼插槽。

接下来,就演示如何为骨骼动画添加骨骼:

【Unity3D插件】(二)使用AnyPortrait插件制作角色动画(AnyPortrait插件教程)_动画_14

在身体重心位置添加一块骨骼,方向不是很重要:

【Unity3D插件】(二)使用AnyPortrait插件制作角色动画(AnyPortrait插件教程)_自动驾驶_15

修改这个骨骼的名字和形状:

【Unity3D插件】(二)使用AnyPortrait插件制作角色动画(AnyPortrait插件教程)_unity_16

继续添加骨骼,命名为Bone Spine 1:

【Unity3D插件】(二)使用AnyPortrait插件制作角色动画(AnyPortrait插件教程)_unity_17

继续添加骨骼,命名为Bone Spine 2,颜色和大小跟上一根骨骼相似:

【Unity3D插件】(二)使用AnyPortrait插件制作角色动画(AnyPortrait插件教程)_unity_18

给角色的帽子耳朵上也添加一块骨头:

【Unity3D插件】(二)使用AnyPortrait插件制作角色动画(AnyPortrait插件教程)_unity_19

重复上面的步骤,创建下面图片设置的骨骼样式:

【Unity3D插件】(二)使用AnyPortrait插件制作角色动画(AnyPortrait插件教程)_unity_20

接下来需要将骨骼都连接到一起,这样就可以像真人一样移动:

【Unity3D插件】(二)使用AnyPortrait插件制作角色动画(AnyPortrait插件教程)_原力计划_21

这样,Bone Spine 1就成了Bone Pelvie的子对象了。

用同样的方法,连接头和双臂,耳朵等:

【Unity3D插件】(二)使用AnyPortrait插件制作角色动画(AnyPortrait插件教程)_自动驾驶_22

2-5、使用绑定修改器

设置完骨骼,就可以使用绑定修改器了,绑定修改器的作用就是连接顶点到网格。在顶点处输入骨骼不同的重量,这样顶点就会跟随骨骼移动。

【Unity3D插件】(二)使用AnyPortrait插件制作角色动画(AnyPortrait插件教程)_动画_23

在上面左图中,所有顶点的权重都是1:0.0,因此它不依赖于绿色的骨骼移动。

右图中,顶点的权重依次递增给绿色骨骼,可以看到绿色骨骼在平滑移动。

也就是说绑定修改器是设置顶点+骨骼的连接权重的过程。

下面,就添加一个绑定修改器:

【Unity3D插件】(二)使用AnyPortrait插件制作角色动画(AnyPortrait插件教程)_原力计划_24

将Hood网格的顶点添加到绑定修改器:

【Unity3D插件】(二)使用AnyPortrait插件制作角色动画(AnyPortrait插件教程)_unity_25

点击左下角的开始绑定按钮,开始绑定顶点和骨骼,选择所有顶点,然后选择Bone Head骨骼:

【Unity3D插件】(二)使用AnyPortrait插件制作角色动画(AnyPortrait插件教程)_unity_26

设置顶点的权重:

【Unity3D插件】(二)使用AnyPortrait插件制作角色动画(AnyPortrait插件教程)_插件_27

2-6、创建动画片段

接着添加一个与动画关联的修饰符:

【Unity3D插件】(二)使用AnyPortrait插件制作角色动画(AnyPortrait插件教程)_原力计划_28

在左边菜单选择添加动画剪辑,然后设置动画的名字,然后选择网格组PeacockTheAria:

【Unity3D插件】(二)使用AnyPortrait插件制作角色动画(AnyPortrait插件教程)_插件_29

注意:动画名称用于在游戏过程中播放动画,名称重复或错误无法删除。

动画片段属性:

【Unity3D插件】(二)使用AnyPortrait插件制作角色动画(AnyPortrait插件教程)_动画_30

  1. 动画剪辑和网格组的名称
  2. 动画剪辑的开始和结束帧
  3. 是否循环
  4. 每秒帧数
  5. 动画事件
  6. 导出/导入动画文件

2-7、添加时间

要创建关键帧动画,必须向动画剪辑添加时间轴:

【Unity3D插件】(二)使用AnyPortrait插件制作角色动画(AnyPortrait插件教程)_自动驾驶_31

添加了变换(动画)时间轴:

【Unity3D插件】(二)使用AnyPortrait插件制作角色动画(AnyPortrait插件教程)_unity_32

接下来,给时间轴动画添加一个骨骼:

【Unity3D插件】(二)使用AnyPortrait插件制作角色动画(AnyPortrait插件教程)_动画_33

点击开始编辑,在关键位置添加关键帧:

【Unity3D插件】(二)使用AnyPortrait插件制作角色动画(AnyPortrait插件教程)_unity_34

当打开编辑模式并选择关键帧时,你可以变换对象。这个状态记录在关键帧中。

接下来,在生成的关键帧中,移动选定的骨骼并记录它:

【Unity3D插件】(二)使用AnyPortrait插件制作角色动画(AnyPortrait插件教程)_动画_35

播放动画:

【Unity3D插件】(二)使用AnyPortrait插件制作角色动画(AnyPortrait插件教程)_unity_36

2-8、动画曲线设置

插值是理解关键帧动画时最重要的原则。

插值是计算关键帧和关键帧之间的形式的过程。

根据插值方法,即使你有相同的关键帧,动画的结果也可能是不同的。

这一节就介绍动画曲线处理插值方法。

选择一个关键帧,设置动画曲线:

【Unity3D插件】(二)使用AnyPortrait插件制作角色动画(AnyPortrait插件教程)_unity_37

设置动画曲线:

【Unity3D插件】(二)使用AnyPortrait插件制作角色动画(AnyPortrait插件教程)_插件_38

2-9、创建骨骼动画

接下来,就根据上面的内容,做一个骨骼动画。

创建一个新的动画剪辑之间,先删除之间创建的动画关键帧:

【Unity3D插件】(二)使用AnyPortrait插件制作角色动画(AnyPortrait插件教程)_unity_39

选择所有的骨骼并将它们加入到时间轴是很麻烦,可以将所有骨骼一次性添加到时间轴:

【Unity3D插件】(二)使用AnyPortrait插件制作角色动画(AnyPortrait插件教程)_unity_40

所有骨头都在时间线上了:

【Unity3D插件】(二)使用AnyPortrait插件制作角色动画(AnyPortrait插件教程)_unity_41

设置动画循环:

【Unity3D插件】(二)使用AnyPortrait插件制作角色动画(AnyPortrait插件教程)_自动驾驶_42

如果在一帧动画中有多个时间轴,这设置起来很麻烦,这时候就可以使用 将关键帧添加到所有层, 批量创建关键帧:

【Unity3D插件】(二)使用AnyPortrait插件制作角色动画(AnyPortrait插件教程)_原力计划_43

移动时间滑动到生成的关键帧所有位置,打开编辑模式,制作动画。

动画制作完成后,需要将动画移动到场景中,先设置根目录:

【Unity3D插件】(二)使用AnyPortrait插件制作角色动画(AnyPortrait插件教程)_原力计划_44

设置根节点后,选择动画,并播放动画,就可以看到设置后的动画了:

【Unity3D插件】(二)使用AnyPortrait插件制作角色动画(AnyPortrait插件教程)_unity_45

点击烘焙,将动画烘焙到场景中:

【Unity3D插件】(二)使用AnyPortrait插件制作角色动画(AnyPortrait插件教程)_动画_46

运行程序,就可以看到设置的动画了。

三、后言

可以看出来AnyPortrait插件还是很强大的。

可以做很多的效果跟动画。

但是,如果想要做出精细的动画效果,还需要专业的美工人员去制作。