Spine骨骼动画知识普及

一些基本概念

以下将介绍一些骨骼动画的基础概念,便于对骨骼动画不甚了解的童鞋(比如技术)进行扫盲。已经熟悉骨骼动画的童鞋可以直接跳过。

动画的基本原理

动画,顾名思义,即是能动的画,画能随着时间的推移进行变换,从而给人产生一种连续在动的感觉。

在游戏里动画大体有两种制作方式:逐帧动画和补间动画。

逐帧动画即为每一帧画出一张图,然后通过按照一定速度(帧率,每秒多少帧)来播放这些画好的图,从而达到动画的效果。

补间动画则比较偷懒,它不为每一帧绘制一张图,而是对一个「动」的形体设置关键帧,而关键帧之间则通过不同的插值算法进行自动补全中间帧的形体的变化轨迹。

相比于逐帧动画,补间动画更加节省图片,使动画运行时的内存更少和最终包的大小更小,同时也减少了原画的工作量,但其画面的表现可能会略逊于逐帧动画。其中的利弊需要开发者进行平衡取舍。

关键帧(key frame)

关键帧其实就是要动的形体发生「变化」且我们手动记录这些变化的帧,剩余的其他帧则称为补间帧。

关键帧称为「关键」的原因就是每个补间帧上形体的形变参数都是程序根据其前后两个关键帧自动推导出来的。

假设形体在第A帧的位置为PA,我们将这帧标记为关键帧,这个动作一般称为“K帧”。然后在第A+N帧,形体的位置我们设置为PN,我们在A+N帧进行K帧。这样我们就有两个关键帧,当我们播放从A到A+N帧的动画时,我们会发现形体会有从PA到PN的一个位移动画。

骨骼动画(skeleton animation)

想象一个你坐在电脑前打字,你的手指在移动,同时你的手腕也在移动,但是你的躯干却保持不动,你的肘部也固定在桌面上。这一切都是因为你的骨骼驱动了你的肌肉和皮肤,从而使你完成了一系列打字的动作。

骨骼动画即是利用了这个原理,它是一种补间动画。它由两部分组成:骨骼(bone)和蒙皮(skin/mesh)。

蒙皮是素材,可以认为是一张贴图,它显示了动画的外在表现。骨骼本身是不可见的,但对其进行形变会带动蒙皮进行各种形变,从而产生出各种看起来比较真实的动画。

Spine

蒙皮动画(skinned animation)

一般情况下,一根骨骼通常跟一个贴图进行绑定,这根骨骼完全控制这张贴图的形变。但是因为是刚性的绑定,在关节移动的时候,容易出现裂缝,如下图。 

随着硬件的能力提升,骨骼动画能对贴图的每个顶点做出形变。称为蒙皮(skin)的圆滑三角形网格会绑定到骨骼上,其三角形的顶点会追踪骨骼的移动而产生相应的移动。蒙皮上的每个顶点可以按照权重绑定到多个骨骼上,从而产生自然的拉伸效果。

本文最开始提到的腿部柔性弯曲效果就可以利用蒙皮动画来实现。

权重(weights)

上文提到了权重,其实是一个很关键的概念。

权重是蒙皮上的顶点受到不同骨骼的一个影响因子。其总和为1。

想象一下你弯曲你的肘部,试想你肘部靠前臂上的皮肤的一个点,它主要受到前臂骨骼的影响,但是它也受到上臂骨骼的一些影响。假设其受到前臂骨骼的影响占到它总形变的80%,则它的前臂骨骼的权重为0.8,相应的上臂骨骼对它的权重为1 – 0.8 = 0.2,因为其他骨骼对它的影响可以忽略不计。

以上即是权重的直观概括,权重表示了蒙皮受到不同骨骼的对其形变影响占比,合理分配好每个蒙皮顶点的权重至关重要。



  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值