AE锚点和位置梳理

By 八月 30, 2017 After Effects

锚点和位置的关系及区别算是最基础的问题了,但是好像从没认真研究过。

以往遇到需要解决锚点和位置的时候,都是靠着经验硬掰过去,真要是说个知有冇有反而更蒙圈了。

今天在写《移动锚点脚本分析函数篇》时遇到一个方法:

媒体层对象方法:app.project.item(index).layer(index).sourceRectAtTime(timeT,extents)

描述:在指定时间索引时检索指定层的矩形边界,修正文字图层或形状图层的内容。比如用来使文字与基础线对齐。

作者用来解决文本图层和形状图层锚点与固态层锚点差异化的问题,到了这种较真的时候,对锚点理解不够很难去理解其中代码的涵义。

所以暂时放下函数篇,专门来研究下锚点的问题,把锚点的概念固定下来。


当新建一个合成时,AE的世界坐标系是以左上角为原点的。

按Ctrl+R调出标尺可以看到,合成左上角对应的坐标是0,向下和向右为正方向。

这个是锚点存在的前提。


下面拿固态层来说明锚点和位置的区别以及联系,文本图层和形状图层的锚点计算方式跟固态层有些不同,但是原理都是一样的。

现在合成中有个固态层,现在问你它距离合成原点的位置是什么?

遇到问题了!这个固态层虽然比合成小,但仍然是一个有面积的图形,它距离合成原点的位置?是指固态层左上角距离原点的位置?还是右下角的距离?

可见需要一个没有面积、只表示位置的点来代替固态层在合成中的位置。

所谓的位置就是这个点到合成原点的位置,也就是蓝色剪头所指的距离。

而这个点在固态层中的位置则称为锚点,这个位置是锚点相对于固态层中的左上角的距离,也就是黑色剪头所指的距离。

这个点就是锚点。嗯,没错,锚点这个名词本身也被用来表示锚点在固态层内的位置了。


Layer-anchorP-Position

现在建立一个这个场景来理解固态层和素材层的锚点计算方式。

合成为800×800,固态层为400×400,蓝色线交叉位置为合成中心点。

固态层的位置是参照合成原点来计算的,而锚点的位置是锚点在固态层的位置,相对于固态层的左上角计算。固态层自己也有个坐标系来计算锚点的位置。

新建合成后,默认的锚点位于屏幕中心,也位于固态层中心,而不是左上角。

所以固态层或其它媒体素材层中,默认下的锚点位置不是(0,0)。而是固态层长宽的一半。

在这个案例中,锚点在默认下的位置为(200,200),位置则是(400,400)。


现在把锚点位置改为(400,0)。在调节的过程中,锚点位置不变,而是固态层在合成中的位置发生了变化,但是固态层的位置参数却没有变。

这是什么原因呢?

首先,固态层在合成中显示的位置确实变了,但是固态层的位置参数仍然是(400,400),因为你调节是锚点参数,并没有调节位置参数。

也就是说变得是锚点相对于固态层的位置,而相对于合成原点的位置不变,所以锚点还处于合成中心位置。

之前说了,锚点是代替固态层表示固态层在合成中位置的点,在表示位置时可以把锚点看作是固态层,所以此时固态层距离合成原点还是(400,400)。

所以固态层显示的位置变了,但是用来计算的实际位置并没有变。

而锚点相对于固态层的位置变了,锚点位置现在为(400,0),固态层大小是400×400,所以现在锚点的位置处于固态层的右边中点,也就是现在蓝线交叉的位置。

因此锚点变了,位置没有变,只有移动固态层在合成中的显示位置才能满足这个要求了。


现在再看一个例子,只要锚点X和位置X数值相同,锚点Y和位置Y数值相同,那么这个固态层总是位于合成的原点处。

这又是什么原因呢?

拿上面这个图做例子,锚点为(400,200),位置同样为(400,200)。

最开始说过,锚点的位置是相对于固态层左上角为原点计算的,也就是说锚点位于固态层左上角位置为(400,200)。

而固态层位置是相对于合成左上角计算的,锚点又是表示固态层位置的点,也就是锚点距离合成左上角为(400,200)。

于是锚点距离合成左上角的位置和距离固态层的位置相同了,自然固态层就贴在了合成左上角。

换做其他数值也是同样道理。


然后再看看形状图层的锚点,形状图层和文字图层差不多,但是细掰扯还是有点差异,所以分两个段单独梳理。

这是一个形状图层场景,合成大小为800×800,形状图层大小为400×400。

想要控制绘制出来的形状图层大小还真不容易呢,好像还真没有直接控制形状图层大小的调节参数,这个是依照之前那个固态层绘制的。

新创建后默认下,形状图层的锚点也在合成中心点。

但是查看以下形状图层的锚点却和固态层不同了,形状图层的锚点为(0,0),也就是说形状图层的锚点是相对于形状图层的中心为原点进行计算的。

这就是形状图层的锚点和固态层锚点的区别之处,除此之外所有的原理都是相通的。

但是有时候会出现这个情况。

现在我没有依照合成中心绘制形状图层,而是随意在合成中画了一个。

为什么锚点仍然是在合成中心,而不是在形状图层中心了呢?

打开形状图层的属性,在Contens(内容)中有之前画的矩形,打开它的属性后发现它自己也有一个单独的变化控制属性组,其中位置属性并不是(0,0),如果把这个位置属性调节为(0,0)。这个矩形就会回到屏幕中间,也就是让锚点处于其中心点位置了。

即,在绘制形状图层的时候就已经给内容一个初始位置值了。

一个形状图层可以有很多内容,很多个形状,每个都有自己的变化属性组。

那么问题来了,内容变化属性组中锚点与形状图层的锚点的关系又是什么呢?

形状图层的锚点是表示着这个图层与合成的关系,形状图层虽然没有直接的显示区域,但是确实存在。

如果没有直接显示区域,不能直接看到,那怎么才能知道形状图层的状态呢?

还是那句话,形状图层的锚点就相当于形状图层。这个锚点相当于所有内容的父级,控制着整体位置。

而内容的变化属性组的锚点则控制着每个内容的状态,这个锚点也各自内容的中心点为原点进行计算,位置则是以形状图层的锚点为原点进行计算。

举个例子:

这个场景中,锚点为(100,100),位置为(500,500)。

锚点相对于形状图层中心点偏移了(100,100),位置相对于合成原点偏移的是(500,500)。

但是为什么形状图层的锚点向正方向偏移,锚点反而在形状的左上区域呢?

这就是因为形状图层的内容变化组属性也变了。内核就是形状图层的锚点控制着形状图层(全部形状),而不受某一形状的影响。

内容的锚点为(100,100),位置为(200,200)。

锚点相对于形状中心偏移了(100,100),位置相对于形状图层锚点为(200,200),正好符合全部描述。

(所有计算都忽略了描边带来的影响,只考虑形状本身)


文本图层比较特殊。

不实用文字工具,直接在时间线右键新建一个文本图层,默认下还是会显示在合成中心。

默认下,锚点在文本的左下角,但是可以在段落窗口中调节。

但是同样的,以文本图层的中心为原点。

可以把文本图层当做是形状图层,文本就是形状内容。

只不过每个文本图层中只能有一个文本,而且文本这个“内容”并没有直接的控制自己位置和锚点的参数,需要再添加。

在文本的Text属性的右边有个小三角,点击就可以添加锚点和位置了。

这样文本的锚点体系就和形状图层的体系完全相同了。


这就是各类型图层锚点的性质的梳理了。有的地方确实很绕,不过值的花些时间来弄清楚这些。

(完)

 

发表回复

让技术与审美并行