文章源自狐狸影视城-https://fox-studio.net/37545.html
故事
惯例,先说背后故事。不喜欢的同学直接下划。文章源自狐狸影视城-https://fox-studio.net/37545.html
最近在尝试使用 AE 制作逐帧动画,因为是一个完整的片子,最困难的是 K 帧的时间,平均每天能 K 帧 2 秒的动画。下面的图可以感受一下,只是其中一个场景的 2 秒时间,总共几十个场景文章源自狐狸影视城-https://fox-studio.net/37545.html
动画已经做完了,有兴趣戳这里:https://fox-studio.net/37737.html文章源自狐狸影视城-https://fox-studio.net/37545.html
文章源自狐狸影视城-https://fox-studio.net/37545.html
虽然不能说全部都需要 K 帧,但也是大部分动画。文章源自狐狸影视城-https://fox-studio.net/37545.html
连续好几天,实在受不了了。一直在网上寻找类似的插件,能降低 K 帧的工作量,可是真没有。虽然使用 Duik + 表达式可以勉强实现,但是操作不是很方便。文章源自狐狸影视城-https://fox-studio.net/37545.html
为此我还专门去问了 @大众脸 是否知道有这个插件,但好像真没有这个功能。文章源自狐狸影视城-https://fox-studio.net/37545.html
然后就化了 3 天时间研究,今天算是第三天,基本已经完成。文章源自狐狸影视城-https://fox-studio.net/37545.html
使用方法
文章源自狐狸影视城-https://fox-studio.net/37545.html
共有 3 个脚本功能,昨天完成主要的绑定功能过后,录制了一个 Demo。先看下操作文章源自狐狸影视城-https://fox-studio.net/37545.html
文章源自狐狸影视城-https://fox-studio.net/37545.html
你需要有一个已经完成的路径动画,包含关键帧。然后为此路径设置 final 关键字。文章源自狐狸影视城-https://fox-studio.net/37545.html
文章源自狐狸影视城-https://fox-studio.net/37545.html
然后选中完成的路径和要绑定的路径,至少有 2 个路径。可以是同一个形状层下,也可以是不同的图层。文章源自狐狸影视城-https://fox-studio.net/37545.html
然后使用 「Path Bind」 路径绑定脚本。他会为 「绑定」 的路径属性添加表达式,以及为所在图层添加 『效果控件』。文章源自狐狸影视城-https://fox-studio.net/37545.html
文章源自狐狸影视城-https://fox-studio.net/37545.html
绑定序号的值,如果大于当前所有的点总数,则表示不绑定。默认 999,一般不会有这么多点的图层。文章源自狐狸影视城-https://fox-studio.net/37545.html
这个时候,我们还不知道 「完成」 路径上点的顺序。选中 『完成』 路径,然后使用 「Show Points」 脚本,显示路径上点的序号。文章源自狐狸影视城-https://fox-studio.net/37545.html
文章源自狐狸影视城-https://fox-studio.net/37545.html
Show Points 和 Clean Points 两个脚本是一对,一个是创建显示,另一个是清除。并且显示的序号,会跟随路径上动画的位移。文章源自狐狸影视城-https://fox-studio.net/37545.html
绑定完成之后,还需要自己微调一下。文章源自狐狸影视城-https://fox-studio.net/37545.html
文章源自狐狸影视城-https://fox-studio.net/37545.html
以上就是我用来接上 K 帧时间的工具。哎~ 又浪费 3 天时间。文章源自狐狸影视城-https://fox-studio.net/37545.html
脚本同时也支持蒙版 mask 上的路径属性。文章源自狐狸影视城-https://fox-studio.net/37545.html
代码
代码就不贴了,3 个功能加起来,有上千行了。太多了,这里放不下。有兴趣可以下载研究。文章源自狐狸影视城-https://fox-studio.net/37545.html
分享几个比较重要的函数,供各位研究。文章源自狐狸影视城-https://fox-studio.net/37545.html
// 获取激活的合成 var thisComp = proj.activeItem; // 当前选中的图层 var thisLayer = thisComp.selectedLayers[0]; // 当前图层中选中的属性 var currentLayerSelectedProperties = thisLayer.selectedProperties; // 当前选中的路径属性对象 var thisPathProperty = currentLayerSelectedProperties[currentLayerSelectedProperties.length - 1]; // 当前遍历到的点 vertices 点位置属性 var thisPoint = thisLayer.sourcePointToComp(thisPathProperty.value.vertices[index]); // 当前遍历到的点 inTangents 入点切线 var thisPoint = thisLayer.sourcePointToComp(thisPathProperty.value.inTangents[index]); // 当前遍历到的点 outTangents 出点切线 var thisPoint = thisLayer.sourcePointToComp(thisPathProperty.value.outTangents[index]);文章源自狐狸影视城-https://fox-studio.net/37545.html