前言
编辑器示例After Effects 中的运动曲线编辑器
我们开始于这样一个图像,在各类 GUI 动画制作软件中,我们往往使用到了如上图所示的运动曲线图像来调整运动的效果,但是:
如何认知这类图像的真实意义,如何使用他们来达到我们想要的运动效果?
如果我们使用手动拖拽的方式,怎么放置锚点才能更接近我们需要的物理运动效果?
如果我们可以精确地用参数来设定锚点,又该怎样去得到合适的参数呢?
正如:设计的呈现可能是简单的,但是往往越简单的呈现代表的是越复杂的设计过程。这类动画曲线编辑器实在是过于常见,似乎也过于简单,但是这种简单呈现背后所蕴含的力量是如此强大,甚至能够让我们自己探索并一窥经典物理学大厦所建立的根基。
这篇文章准备用基本的运动学和动力学方式推导出运动函数图像的具体形式以解答问题 2,再结合贝塞尔算法推算如何拟合以解答问题 3,由此尝试给出一个我们看待模拟运动的视角。由于作者水平极其有限,因此我们仅以基础的位移时间相关的运动为例。涉及到的物理数学知识也仅限于高中水平,对于一些更深入,和更广泛的问题我们最多简单介绍。
如果看完本文的读者能够明白:一旦我们对各种动态效果有更深入的数学直觉和足够高度的物理认知,那么一切软件对动画的参数模拟都有其物理意义,一切对动画的算法模拟都有其数学形式,这些都是我们可以完全理解和构建的。那么,本文的目的就达到了。
2.什么是我们的问题
回到文首的图片,我们不难发现这其实是一个坐标系中的函数图像,其纵轴为某元素的位移,横轴即是时间。基本在所有动画制作的软件中,对运动构建的这类可调节的曲线都是如此形式,并且其横轴绝大部分都是时间,纵轴则可以有各种不同单位,如:速度。而这个图像本身,又是由贝塞尔锚点控制的曲线。
所以,我们如果想要得到一条符合真实运动的曲线,需要考虑的是两部分内容:
一个运动的图像应该是什么样的;
如何用贝塞尔来拟合一个图像。
这也是本文接下来的两块主要内容。
一旦有了方向,我们就可以按部就班开始了,首先我们从头开始开始捋一捋运动这回事:我们知道,宏观低速的非电磁运动可以由牛顿建立的经典力学很好地解释,在经典力学中,运动分解为运动学和动力学两部分。其中运动学是我们获取运动物体的信息,动力学则是我们如何去预测物体接下来的运动。如何去理解这两句话?
举个🌰! 随便拿起手边一个物件(最好不要太大太重,或者脆弱、珍贵),然后上抛,如果这个物件对你而言不是一团垃圾,那么你应该会尝试去接住它。显然,这个物件在抛出时,它被你在某个高度施加了一个初始速度,最后在某段时间后落地,这些我们观察到的内容,这就是它的运动学信息(显然,我们并不关心其颜色、价值等)。而你打算伸手接住它,因为你知道它会先上升,然后下降,最后你把手伸到了你预测的位置尝试接住它(显然,此时我们也并不太关心你预测的正确与否),这就是它的动力学。
*如果你用一个杯子做了这个试验,然后它杯具了,那么你可以自豪的说:我获取到的运动学信息和我用来预测的动力学至少有一个错误了(我们暂时相信自己的大脑在正确的前提下总能够作出正确快速的运算,并且我们的肢体完全跟得上大脑的指令。这也是一种科学研究方法:不妨设,我们是个小天才)。
现在我们知道,我们应该获取一些关于运动物体的信息,但是有哪些信息?一般而言,信息取决于我们需要使用它们的场景,鉴于上一个例子可能让我们失去一些宝贵的个人物品,我们还是从最简单的模型开始入手:
数轴上的质点 如上图所示,我们得到了一个一维的质点!并且在其所处的一维数轴上用刻度标示了它的位置!显然我们不会因为这个质点出了问题而失去什么!于是,我们得以放开手脚分析这个质点,来讨论如何构建我们的动力学了。首先,随着时间的流逝,它得动起来:
数轴随时间运动 如果我们连续地体现出这个过程,那么我们就能得到一个图像,即位移随时间的关系图像: s(t)s\left( t \right)s(t) ,必须不能混淆的是,这个图像并不是质点的运动路径,质点本身是沿着数轴上下往复运动的:
数轴随时间运动 呃,这不是一个美观优雅的图像,但是往好的方面看,我们发现了它和动画软件中的曲线编辑器的关系了:他们是同一种图像,因为他们具有同样的坐标系。也就是说如果我们搞清楚一个物体的运动如何体现在这种位移/速度/etc与时间的函数图像关系中,我们就知道这个曲线应该是什么样了,对应编辑出正确的曲线图,则我们就可以描述一个运动了。
数轴随时间运动 如上图,这是一般曲线编辑器中都会直接预设的一种曲线模式,命名 Linear ,即线性的图像模式,不难发现,当我们将曲线设置成这样的时候,物体将以均匀不变的速度运动(当我们后面讨论完动力学表述之后,再回来看我们就会明白为什么这样就是均匀不变的速度)。
然而,自然的运动过程往往不是那么 Linear,我们需要更详细的剖析这个图像,以期能够编辑出正确的各种曲线。而在帮助我们理解图像这一点上,几乎所有的曲线编辑器往往都在偷懒:它们总是将带有图像笼统地用 easy-ease 形式命名,“渐入渐出”这类模糊主观的词语把运动推向了“感官和感觉”的深渊(很多设计领域已经在此深渊吃尽苦头)。
正如“节奏、动感”可以用“乐理、构成”对应和指导一样,运动,或者至少在虚拟世界中,运动是由数学和物理严格描述的。而“感觉“是一种高级的归类抽象,设计可以被外行用“感觉”描述,但设计师如果忽视思考和剖析,一味凭“感觉”行事,认识不到自己到底是在做什么,终究会迷惘。