许久不用Unity做骨骼动画还是会遗忘很多操作,这次使用又发现了很多新的细节。
必要插件
不出意外的是2D Animation和2D Sprite?项目本来就是2D包。
素材要求格式
万物皆可骨骼,unity的2d骨骼教程_哔哩哔哩_bilibili
参考上面的教程(很直观易懂),有单张图片、分散式绘制的单张图片,还有psb文件。
第二种方法挺令我惊奇的,虽然和第一种方法一样本质上都是一张图,但分离素材也能省去分图层的功夫。而且能更明显地看出,骨骼对图片中被圈出来并且刷好权重的网格像素能单独控制,底层来说可能是复制了一份像素并且受骨骼影响?待研究。
psb文件能够保留所有的图层。这样分层控制会更精细一些。
我这里素材比较复杂,所以用的还是psb文件。
素材导入
直接把psb文件拖入到Asset文件夹中,不需要做其它设置。
打开SpriteEditor,可以看见各图层已经排列出来。
绑骨
点击窗口左上角的Skinning Editor,有以下四个栏,分别是姿势、骨骼关节、网格、权重和所有骨骼。
点击CreateBone,像针一样的便是骨骼关节,针头是运动的"根"的位置,相当于树的主枝干,树一摆动上面的所有枝叶也会随之摇摆。(这个我经常搞反头尾......)
就这样哐哐绑骨。
骨骼分派给图层
同一个骨骼可能只会影响到其中一缕发丝而不是所有的头发,分图层的意义就在于此。
点击Weights->BoneInfluence,再点击右上角的SpriteSheet,
回到图层排列模式,双击想要控制的图层,就能显示对应的骨骼。
再点击SpriteSheet回到整合状态,可以看到图层在整体的情况。透明骨骼是无关骨骼,深色反之。
点击不需要的深色骨骼,在右下角就会跳到对应的名称,点击删除符号。新增骨骼也是相似操作。
网格生成
点击AutoGeometry便自动生成网格。网格的分布非常重要,之前接触三维建模的时候要求网格点均匀分布还得三角片面,2D也需要更均匀的网格(不然等到刷权重就后悔了)。
点数量适中:我这里的素材刚生成网格的时候点巨多,因为素材文件比较大像素就很分明,识别的时候就自动添加很多点,要狠狠地删掉点然后重新规划。
点沿轮廓分布:这样能够进行合理分区,影响的范围更可控。
点分布均匀:也是为了让影响范围更细致更可控。不排除一些特殊情况,点密集控制范围越精细,反之越笼统,可以根据需要摸索。
操作上的话,在EditGeometry模式下时,双击图片某处可以新增一个点并随意拖动点(非边界),这样就能对边界范围内进行更细致的点的排布;
(边界上)SplitEdge比CreateVertex好用。
权重
点击AutoWeights为关节以及网格自动刷权重。权重也就是连接了骨骼和网格,并且决定骨骼对某个点的影响比例多大。
在WeightBrush模式下可以刷权重,个人习惯从根骨骼开始一个个检查效果。
长按笔刷刷准网格点,这样就不容易点到骨骼,刷得才有效果,在网格里面刷是没用的。
如果效果很离谱或者没啥用,也多返回检查网格。
K动画
一系列工作做好后,右上角Apply一下应用更改,资产就多了很多东西。 突然想到,上面的图层应该就是从原图层复制出来受骨骼控制的。
直接把该psb文件拖到场景中,添加Animator和Animation,就可以愉快地k动画了。
个人习惯在第一帧先把所有的骨骼的position、rotation以及一切可能用得上的参数都add key
k帧,再把该帧作为最后一帧(循环动画),中间想怎么k就怎么k了。
拓展
挖个坑,看到网上还有IK、换装什么的,下次用上再回来补充。