前几天在群里面看到一个问题“如何让一个圆角矩形右侧固定,左侧伸长”。一般来说,转成贝塞尔曲线是最直接的方法,调节的直接就是那些路径锚点。但是在其他时候,可能会出现伸长以后再进行下一步的变化,所以贝塞尔曲线并不是最好的方法。
在PS或者AI中,我们的习惯通常是这样的
我尝试着调整 图层—内容—矩形 里面的大小,矩形会根据矩形的锚点为中心,向四周伸缩。
而将锚点先放在右边中间的位置的时候……
这特么!!!!
但是调整了几次以后,发现规律了。
假如我需要左侧始终固定(左对齐)的话,矩形向右增加多少,矩形中心点就会对应的向右移动一半的距离。
那要怎么让AE帮我做到,我调整好大小以后,矩形的位置自动移动那一半的距离呢?毫无疑问,表达式。
在AE中,输入表达式的感觉好像有点似曾相识?
在Excel中,最最最常用的fx是求和以及计算差值
这似乎可以同样在AE试试
而在AE中,当我们按着Alt单击码表的时候,可以看到表达式的输入框出现了一行字
那么这意味着这时候这个表达式等于它自己,而它自己的关键帧又带有变化的数值,所以这个表达式最终计算的结果就等于关键帧的值。
那么它能不能获得其他属性的值呢?可以的。跟链接父子级的操作一样,拖动这个蚊香一样的图标到别的属性就可以获得对应的值
但是需要注意的是,某些属性的值不一定只有一个数字,有些属性可能有两个(譬如位置xy)、三个(三维的位置xyz)甚至四个(颜色rgba)。而AE表达式是以js为基础的,因此数组的详细内容可以阅读相关的js资料。
MDN/Glossary/Array https://developer.mozilla.org/en-US/docs/Glossary/array
JavaScript 数组 https://www.w3school.com.cn/js/js_obj_array.asp
回到最初的问题上,我们希望这个圆角矩形固定一边不变,而向另一侧变宽,因此对它来说它每变宽两个单位长度就必须移动一个单位长度。
siez= 叫矩形的内容 里面的 叫矩形路径的内容 里面的 尺寸
w= 尺寸的第一个值---宽
h= 尺寸的第二个值---高
wX = 宽/2
hY = 高/2
p = x方向上的值是wX---宽的一半,y方向的值是hY---高的一半
我们可以看到位置的移动就等于宽高分别的二分一了。
除了这个变化的规则以外,还涉及它初始的位置。因为位置是属性本身的值(value),所以直接追加在最后就可以了。
add(value,p)--- value---当前表达式的属性的值,这个值有x和y的,分别和p的第一个值和第二个值相加 。
然后添加上各种判断,是对齐左边的还是右边的,上面还是下面
于是我们终于获得了一个能够固定一边,向另一边扩展的,并且能随时调整圆角的圆角矩形了。
后记: 其实把变化值放在位置容易解释,但是需要做位移动画之类的会比较麻烦,所以后来也做了一个把变化值放在锚点的版本,并且保存成预设,假如在使用中遇到什么问题请务必告诉我!
百度网盘链接:https://pan.baidu.com/s/1jIdlRds 密码:7wbt
--------------------------------------------------
放去AE文件夹下面的Support Files\Presets\userPresets 就可以了!
//userPresets 是我自己建的文件夹,放自定义预设用的,感谢鸡爷教会我生成预设!
---------------20200628--------
https://uiiiuiii.com/aftereffects/121210645.html
© leizingjiu | Powered by LOFTER