技巧:如何用表达式模拟球透视
原作者:John Schlemmer,非原创动画。
此文章非教程(无奈投稿选项中较贴合本文内容的分类为教程)。
确切的说,本文是分享练习中思考得到的个人觉得较简单实用的方法。
此次分享主要分享思路与方法,不进行逐步分析。
首先,给大家看一下,这是dribbble上的大神John Schlemmer的作品。



看了这组动图是不是感觉很棒但想制作出来有一定的困难。不过别急,在这里我将分享我临摹过程的一些小心得。
首先,我想到的是在C4D里做球的动画,剩下来的可以在AE中制作,因为那些动画都是在球静止的情况之下变化的。所以,首次我在C4D进行了尝试,不过很快遇到了三个问题:阴影,描边,高光。
首先导出模型动画:(这里仅展示tif序列的末尾帧)

阴影:建好模型,做好动画之后,给模型一个纯白(仅颜色,无反射)的材质,建立,然后建立灯光,强度升到很高,以致明暗有明确的线区分,导出。得到以下效果。

描边:添加草绘标签—素描样式,修改各项参数,得到以下效果。

高光:问题未解决。
最终导入AE,主要是加粗描边,利于实边+柔边阻塞工具进行调节。最终C4D制作效果如下。

总体感觉不仅动画风格不够,而且高光需要手动k帧,但是变化速率是个问题。
所以我考虑纯AE制作。首先看一下AE模拟透视的效果。(本来想把源文件放出来给大家自行下载研究的,发现之前给别人发打包的时候把源文件打包了发过去了,现在那些文件可能要穿越回过去才能找得到了)

这里我用了一个固定不变的圆(颜色深的)和一个变化的圆(颜色浅的),然后给深色的圆加上一个矩形遮罩,矩形锚点在大圆中心,父级为浅色的圆。之后便是给浅色圆添加表达式。

以上为AE界面总览,以下为表达式详细内容。

大小的表达式解析:
1~2行:将椭圆移动滑块的数值取绝对值。
3~倒数第2行:判断n的大小,这里是防止n大于圆的半径(圆半径150),浅色椭圆会超出深色圆的边界。当然此处也可不进行判断,因为椭圆移动大于等于150之后,短轴即X=0。

5~13行:将椭圆横向拉伸因数滑块数值取绝对值,并是该值上下限为0~300。(AE中椭圆大小的值都为长/短轴的值,特殊化为圆即为直径而非半径)。
14行:计算了半长轴的长度的平方。
15行:半长轴长度*椭圆纵向拉伸因数%。这里主要是进行微调,因为椭圆与圆内切,切点的连线长度小于等于长轴长度。
位置的表达式解析:(x,y)——>(x+椭圆移动滑块的数值,y).
旋转的表达式解析:旋转角度=椭圆剖面倾斜滑块的数值。
以上流程理解了,剩下就是未解决的高光速率问题了,因为球的进入到停止,上下两部分的分开都是我们在AE中进行的速度曲线调节,所以确保高光变换的速率与位置变化的速率一致即可。可能唯一麻烦的是阴影,不过速率一直知道了,起码可以确保阴影的感觉与求得运动是一致的。
下一步整体动画的制作,难点在于遮罩的设定,需要理清楚图层之间的关系以及巧妙的借助整体动画给局部设定遮罩。由于这里仅教大家表达式模拟透视的方法,所以对此不过多赘述。
最后是效果图:

个人觉得,John Schlemmer大神应该是用更好的方法模拟出来的(猜测依据:模拟效果极好,帧率相当高),但是无奈本人愚笨没有想出更好的方法,而大神也没有联系上T^T。不过有朋友提出过使用极坐标方程来模拟,理论上应该会更方便,但是抱歉本人实在没有耐心去尝试了。
所以,本文仅作为一种思路提供给大家,更优的方法若有朋友知道,望告知,谢谢。




































