2024年4月16日发(作者:)

AE表达式详解

表达式元素的基本说明:

A. 标题:描述表达式对象。属性或方法涉及的所有元素在标题下面。许多属性和方法返回另一个对象 这

些对象决定如何继续下面的表达式。

B. 以大写的罗马字母开头的字段描述返回值的类型。一些返回值由在方括号中数字组成—这个数字指定了

返回的属性或数组的维度,如果没有指定维度数,就依赖于输入的情况了。

C.粗体字描述的是表达式语言元素的类型。

D. 粗体字中的圆括弧中描述的是你必须增加的参数的类型。如果参数包括“=”和数字(例如t=time or

width=.2)这个数字就是这个参数的默认值。

E.花括弧里面的内容是对参数的描述。一些参数的描述包含由在方括号中数字组成——这个数字指定了期

待的属性或数组的维度。

F.花括弧后面的内容是对该元素的举例。

全局对象:

Comp comp(name) 用另一个名字给合成命名。

Footage footage(name) 用另一个名字给脚本标志命名。

Comp thisComp 描述合成内容的表达式。例如:(2)

Layer, Light, or Camera thisLayer 是对层本身的描述,thisLayer是一个默认的对象,对它的应用是可

选的。例如, 用表达式 或 width 可获得同样的结果。

Property thisProperty 描述属性的表达式。例如,如果写一个旋转属性的表达式就能获取旋转属性的值。

Number time 描述合成的时间, 单位是秒。

Number colorDepth 返回8或16表示的彩色深度位数值。例如, 当项目的每通道的彩色深度为16位时

colorDepth 返回16 。

Number posterizeTime(framesPerSecond) {framesPerSecond 是一个数}返回或改变帧率。允许用这个

表达式设置比合成低的帧率。

向量数学方法:

Array add(vec1, vec2) {vec1 和 vec2 是数组} 两个向量相加。

Array sub(vec1, vec2) {vec1 和 vec2 是数组}两个向量相减。

Array mul(vec1, amount) {vec1 是数组, amount 是数} 向量的每个元素被 amount相乘。

Array div(vec1, amount) {vec1 是数组, amount 是数}向量的每个元素被 amount相除。

Number or Array Clamp(value, limit1, limit2) 限制value中每个元素的值在 limit1 到 limit2之间。

Number dot(vec1, vec2) {vec1 和 vec2 是数组} 返回点积, 结果为两个向量相乘。

Array [2 or 3] cross(vec1, vec2) {vec1 和 vec2 是数组 [2 or 3]} 返回向量的交积。

Array normalize(vec) {vec 是数组} 格式化一个向量,如某长度表示为1.0.

Number length(vec) {vec是数组}返回向量的长度。

Number length(point1, point2) {point1 and point2 是数组} 返回两点间的距离。Point2 是可选的。 例

如, length(point1, point2)和length(sub(point1, point2))是相同的。

Array [3] lookAt(fromPt, atPt) {fromPt和atPt 是数组 [3]} 参数fromPt 是想要确定朝向的点在世界空

间的位置(即观察点的位置)。参数atPt 是想要指向的点在世界空间的位置 ,返回值可用于表示方向的属

性。层的Z轴对准atPt. 对摄象机和灯光尤其有用。. 例如, lookAt(position, (1).position). 如

果用在摄象机上, 请关掉自动定向( auto-orientation)。

向量数学是对数组操作的全局函数。treating them as mathematical vectors.与JavaScript 内置的数学

方法不同,例如()。除非有特别的说明, 向量数学方法能接受和返回维度相差很大的数组,在没有

元素的地方用0补充。例如, 表达式[10, 20]+[1, 2, 3] 返回 [11, 22, 3].

随机数方法

Nothing seedRandom(seed, timeless=false) {seed 是一个数, 默认 timeless 为 false} 取现有的seed

增量一个随机值,这个随机值依赖于层的 index (number) 和 stream (property),但不总是这样. 例如,

seedRandom (n, true)通过给第二个参数赋值 true ,seedRandom()获取一个0到1间的随机数.

Number random()返回0和1间的随机数.

Number or Array random(maxValOrArray) {maxValOrArray 是一个数或数组}返回0到maxVal间的数,

维度 与 maxVal相同; 或返回与maxArray相同维度的数组, 数组的每个元素在 0 到 maxArray之间

Number or Array random(minValOrArray, maxValOrArray) {minValOrArray 和 maxValOrArray 是一个

数或数组} 返回一个minVal 到 maxVal间的数, 或返回一个与 minArray和maxArray有相同维度的数组,

其每个元素的范围在 minArray 与 maxArray之间.例如, random([100, 200], [300, 400]) 返回数组的第一

个值在 100 到300间, 第二个值在 200 到400间.如果两个数组的维度不同,较短的一个后面自动用0

补齐.

Number gaussRandom()返回一个0到1之间的随机数. 结果为钟形分布,大约90%的结果在 0 到1之

间, 剩余10%在边沿.

Number or Array gaussRandom(maxValOrArray){maxValOrArray是一个数或数组}当用maxVal,它返回

一个0到maxVal之间的随机数. 结果为钟形分布,大约90%的结果在0到maxVal之间,剩余10%在边缘.

当用maxArray,它返回一个与maxArray相同维度的数组, 结果为钟形分布,大约90%的结果在 0到

maxArray之间, 剩余10%在边缘.

Number gaussRandom(minValOrArray, maxValOrArray){minValOrArray和maxValOrArray是一个数或

数组} 当用minVal和 maxVal, 它返回一个minVal到maxVal之间的随机数. 结果为钟形分布,大约90%的

结果在minVal到maxVal之间, 剩余10%在边缘.当用minArray和maxArray, 它返回一个与 minArray和

maxArray相同维度的数组, 结果为钟形分布,大约90%的结果在 minArray到maxArray之间, 剩余10%在

边缘. 剩余10%在边缘.

Number noise(valOrArray) {valOrArray是一个数或数组 [2 or 3]}返回一个0到1间的数.噪声不是事实

上的随机,但它是在样本附近相关的随机数.它基于花边噪声 . 例如, add(position, noise(position)*50).

插值方法

Number or Array linear(t, value1, value2) {t 是一个数, value1 和 value2 是一个数或数组}当t的范围从

0到1时,返回一个从value1到value2的线性插值。当 t <= 0时返回value1,当 t >= 1时返回 value2 。 .

Number or Array linear(t, tMin, tMax, value1, value2) {t, tMin和 tMax are 数, value1和value2 是数或

数组} 当

t <= tmin时返回value1;当t >= tMax时,返回value2 ;当tMin < t < tMax 时, 返回 value1

和value2 的线性联合。

Number or Array ease(t, value1, value2) {t 是一个数, value1 和 value2 是数或数组} 返回值与linear

相似, 但在开始和结束点的速率都为0。这种方法的结果是动画非常平滑。

Number or Array ease(t, tMin, tMax, value1, value2) {t, tMin, 和 tMax 是数, value1 和 value2 是数或

数组} 返回 值与 linear相似, 但在开始和结束点的速率都为0。这种方法的结果是动画非常平滑。

Number or Array easeIn(t, value1, value2) {t 是一个数, and value1 and value2 是数或数组} 返回 值

与ease相似, 但只在切入点value1 的速率为0,靠近value2 一边是线性的。

Number or Array easeIn(t, tMin, tMax, value1, value2) {t, tMin和tMax 是一个数, value1和value2 是

数或数组}返回 值与ease相似, 但只在切入点tMin 的速率为0,靠近tMax 一边是线性的。

Number or Array ea*****ut(t, value1, value2) {t 是一个数, value1和value2 是数或数组}.返回 值与

ease相似, 但只在切入点value2 的速率为0,靠近value1 一边是线性的。

Number or Array ea*****ut(t, tMin, tMax, value1, value2) {t, tMin和tMax 是数, value1 value2 是数或数

组} 返回 值与ease相似, 但只在切入点tMax的速率为0,靠近tMin 一边是线性的。

Number or Array easeIn(t, tMin, tMax, value1, value2) {t, tMin和tMax 是一个数, value1和value2 是数

或数组}返回 值与ease相似, 但只在切入点tMin 的速率为0,靠近tMax 一边是线性的。

Number or Array ea*****ut(t, value1, value2) {t 是一个数, value1和value2 是数或数组}.返回 值与

ease相似, 但只在切入点value2 的速率为0,靠近value1 一边是线性的。

Number or Array ea*****ut(t, tMin, tMax, value1, value2) {t, tMin和tMax 是数, value1 value2 是数或数

组} 返回 值与ease相似, 但只在切入点tMax的速率为0,靠近tMin 一边是线性的。

彩色转换方法

Array [4] rgbToHsl(rgbaArray) {rgbaArray 是数组 [4]} 转换 RGBA 彩色空间到 HSLA彩色空间。输入

数组指定红、绿、蓝、透明, 它们的范围都在 0.0 到 1.0之间。结果值是一个指定色调、饱和度、亮度

和透明的数组,它们的范围都在 0.0 到 1.0之间。例如, ("CHANge Color")("Color To

CHANge")。

Array [4] hslToRgb(hslaArray) {hslaArray 是数组[4]}. 转换 HSLA彩色空间到RGBA 彩色空间。其操作

与rgbToHsl相反。

其它数学方法

Number degreesToRadians(degrees)转换度到弧度。

Number radiansToDegrees(radians) 转换弧度到度。

Comp属性和方法

Layer, Light, or Camera layer(index) {index 是一个数} 得到层的序数(在时间线窗口中的顺序). 例如,

(3).

Layer, Light, or Camera layer("name") {name是一个字串} 得到层名。指定的名字与层名匹配,或者在

没有层名时与源名匹配。如果存在重名,After Effects 使用时间线窗口中的第一个. 例如,

("Solid 1").

Layer, Light, or Camera layer(otherLayer, relIndex) {otherLayer 一 个层对象, relIndex 是一个数} 得

到otherLayer (层名)上面或下面relIndex (数) 的一个层。 例如, layer(thisLayer, -2) 返回 在时间线窗口中

比写这个表达式的层高两层的一个层。

Number marker(markerNum) {markerNum 是一个数}得到合成中一个标记点的时间。你可以用它减淡标

记点的透明,实现淡出。例如, markTime = (1); linear(time, markTime - .5, markTime, 100,

0).

Number numLayers 返回 合成中层的数量。

Camera activeCamera 从在当前帧中着色合成所经过的摄象机获取值。这不一定是你在合成窗口所看到

的。

Number width 返回合成的宽度,单位为像素(pixels.)

Number height 返回合成的高度,单位为像素(pixels.)

Number duration 返回合成的持续时间值,单位为秒。

Number frameDuration 返回画面的持续时间.

Number shutterAngle 返回合成中快门角度的度数.

umber shutterPhase 返回合成中快门相位的度数

Array [4] bgColor 返回合成背景的颜色。

Number pixelAspect 返回合成中用width/heigh表示的像素(pixel )宽高比。

String name 返回合成的名字。

脚本属性和方法

Number width 返回脚本的宽度,单位为像素。

Number height返回脚本的高度,单位为像素。

Number duration 返回脚本的持续长度,单位为秒。

Number frameDuration 返回画面的持续长度,单位为秒。

Number pixelAspect 返回脚本的像素比, 表示为 width/height.

tring name 返回脚本的名字。

从项目窗口使用脚本就象在表达式中使用对象,使用全局的footage()方法, 如在 footage("filename")

中加一些属性在上面。也可以在一个脚本标志所在的层通过source 属性访问脚本。

层子对象属性和方法

Comp or Footage source 返回层的源 Comp 或源Footage 对象。默认时间是在这个源中调节的时间。

例如, (1).position.

Effect effect(name) {name是一个字串} 返回 Effect 对象。 After Effects 在效果控制窗口中用这个名

字查找对应的效果。这个名字可以是默认名,也可以是用户自定义名。如果这里有一些相同的效果名则选

择效果控制窗口中同名字的最上面的一个效果。

Effect effect(index) {index 是一个数} 返回 Effect 对象。After Effects 在效果控制窗口中用这个序号

查找对应的效果。起始于1 且从顶部开始。

Mask mask(name) {name是一个字串} 返回层 Mask 对象。 这个名字可以是默认名,也可以是用户

自定义名。

Mask mask(index) {index 是一个数} 返回层 Mask 对象。After Effects 在时间线窗口中用这个序号查

找对应的遮罩。起始于1 且从顶部开始。

层的一般属性和方法

Number width 返回以像素为单位的层宽度。 它与 相同。

Number height 返回以像素为单位的层高度。 它与 相同。

Number index 返回合成中层数.

Layer, Light, or Camera parent 返回层的父层对象, 例如, position[0] + .

Boolean hasParent 如果有父层返回 true ,如果没有父层返回 false .

Number inPoint 返回层的入点,单位为秒.

Number outPoint 返回层的出点,单位为秒.

Number startTime 返回层的开始时间,单位为秒.

Boolean hasVideo 如果有视频(video)返回 true ,如果没有(video)返回 false.

Boolean hasAudio 如果有音频(audio)返回 true ,如果没有音频(audio)返回 false.

Boolean active 如果层的视频开关打开返回 true ,如果层的视频开关关闭返回 false.

Boolean audioActive 如果层的音频开关打开返回 true ,如果层的音频开关关闭返回 false.

Layer 特征属性和方法

Property [2 or 3] anchorPoint 返回层空间内层的锚点值.

Property [2 or 3] position 如果该层没有父层,返回本层在世界空间的位置值;如果有父层,返回本层在

父层空间的位置值 .

Property [2 or 3] scale 返回层的缩放值,表示为百分数.

Property rotation 返回层的旋转度数, 对于3D 层, 它 返回 z旋转度数.

Property [1] opacity 返回层的透明值,表示为百分数.

Property [2] audioLevels 返回层的音量属性值,单位为分贝.这是一个2维值;第一个值表示左声道的音

量,第二个值表示右声道的音量.这个值不是源声音的幅度,而是音量属性关键帧的值.

Property timeRemap 当时间重测图被激活时,返回重测图属性时间值,单位是秒.

Marker Number (index) {index 是一个数} 返回层的标记数属性值. 可能用到的方法和属

性只有key(), nearestKey和numKeys.

Marker Number ("name") {name是一个字串} 返回层中与指定名对应的标记号.这个名字

是标记名, 它在标记对话框的注释区,例如, ("ch1"). 这个值对于 marker keys是一个字串, 不

是数字.例如, m1 = ("Start").time; m2 = ("End").time; linear(time, m1, m2, 0, 1

00);

Marker Number tKey 返回最接近当前时间的标记.

Number s 返回层中标记的总数.

String name 返回层名.

当你加 masks, effects, paint, text, 或应用 运动追踪(motion tracker) 到一个层, After Effects 新的

属性到 时间线窗口。哪里的大多数属性列于这里, 所以用链选工具 就可以去学习在你的表达式中涉及到

这些语法。对于任意水平的属性组,你可以用.name 和 .numEntries去返回用户自定义名和在组中的个数。

例如, text("Animators").numEntries 返回在 text层animators个数。

Layer 3D属性和方法

Property [3] orientation对3D层 ,返回3D 方向的度数。

Property [1] rotationX 对3D层,返回 x旋转值的度数。

Property [1] rotationY 对3D层,返回 Y 旋转值的度数。

Property [1] rotationZ 对3D层,返回 Z 旋转值的度数。

Property [1] lightTransmission 对3D层,返回光的传导属性值。

Property castsShadows 如果层投射阴影返回 1.0 。

Property acceptsShadows 如果层接受阴影返回 1.0 。

Property acceptsLights 如果层接受灯光返回 1.0 。

Property ambient 返回环境因素的百分数值。

Property diffuse 返回慢射因素的百分数值。

Property specular 返回镜面因素的百分数值。

Property shininess 返回发光因素的百分数值。

层空间转换方法

Array [2 or 3] toComp(point, t = time) {point 是一个数组[2 or 3], t 是一个数} 从层空间转换一个点到合

成空间,例如, toComp(anchorPoint)。

Array [2 or 3] fromComp(point, t=time) {point 是一个数组[2 or 3], t 是一个数}从合成空间转换一个点

到层空间。得到的结果在 3D 层可能是一个非

fromComp((2).position).

Array [2 or 3] toWorld(point, t=time) {point 是一个数组[2 or 3], t 是一个数} 从层空间转换一个点到视

点独立的世界空间。例如, ("Bulge")("Bulge Center").

Array [2 or 3] fromWorld(point, t=time) {point 是一个数组[2 or 3], t 是一个数}从世界空间转换一个点

到层空间。例如, fromWorld((2).position).

Array [2 or 3] toCompVec(vec, t=time) {vec 是一个数组[2 or 3], t 是一个数} 从层空间转换一个向量到

合成空间。例如, toCompVec([1, 0]).

Array [2 or 3] fromCompVec(vec, t=time) {vec 是一个数组[2 or 3], and t 是一个数} 从合成空间转换

一个向量到层空间例如 (2D layer), dir=sub(position, (2).position); fromCompVec(dir).

Array [2 or 3] toWorldVec(vec, t=time) {vec 是一个数组[2 or 3], t 是一个数} 从层空间转换一个向量到

世界空间。例如, p1 = effect("Eye Bulge 1")("Bulge Center"); p2 = effect("Eye Bulge 2")("Bulge Center");

toWorld(sub(p1, p2)).

Array [2 or 3] fromWorldVec(vec, t=time) {vec 是一个数组[2 or 3], t 是一个数}从世界空间转换一个向

量到层空间。例如, fromWorld((2).position).

Array [2] fromCompToSurface(point, t=time) {point 是一个数组[2 or 3], t 是一个数} 在合成空间中从

激活的摄象机观察到的位置的层表面(Z值为0)定位一个点。这对于设置效果控制点有用。仅用于3D层。

Property metal 返回才质因素的百分数值。

摄象机属性和方法:

Property [3] pointOfInterest 返回在世界空间中摄象机兴趣的的值。

Property zoom 返回摄象机的缩放值,单位为像素。

Property depthOfField 如果摄象机景深打开返回 1,否则返回0。

Property focusDistance 返回摄象机焦距值,单位为像素。

0值。例如 (2D layer),

Property aperture返回摄象机光圈值,单位为像素。

Property blurLevel 返回摄象机的模糊水平的百分数。

Boolean active (a) 如果摄象机的视频开关 打开, 返回 true ; (b) 当前时间在摄象机的出入点之间,

(c)且它是时间线窗口中列出的第一个摄象机,若以上条件之一不满足,返回 false 。

摄象机对象的多数属性和方法与层对象都相同 ,除 source, effect, mask, width, height, anchorPoint,

scale, opacity, audioLevels, timeRemap, 和所有material 属性以外。

灯光属性和方法

Property [3] pointOfInterest 在工作区 返回灯光兴趣点。

Property intensity 返回灯光亮度的百分数。

Property [4] color 返回灯光彩色值。

Property coneAngle 返回灯光光锥角度的度数。

Property coneFeather 返回灯光光锥的羽化百分数。

Property shadowDarkness 返回灯光阴影暗值的百分数。

Property shadowDiffusion 返回灯光阴影扩散的像素。

灯光对象的大部分属性和方法与层对象相同, 除 source, effect, mask, width, height, anchorPoint,

scale, opacity, audioLevels, timeRemap, 和所有的material 属性。

效果的属性和方法

Boolean active 返回 a true value if the effect is turned on in both the 如果效果在时间线窗口和效果

控制窗口都打开返回 true , 如果在以上任意一个窗口关闭,返回false。

Property param(name) {name是一个字串} 返回 效果里面的属性。例如, .effect("Bulge")("Bulge

Height")。效果点控制总是在层空间。

Property param(index) {index 是一个数} 返回 效果里面的属性。例如, .effect("Bulge")(4) 返回 Bulge

Height 属性。 效果点控制总是在层空间。

String name 返回效果名。

遮罩属性和方法

Property MaskOpacity 返回遮罩透明值的百分数。

Property MaskFeather 返回遮罩羽化的像素值。

Boolean invert 如果遮罩是反向的,返回 true ;否则返回 false。

Property MaskExpansion 返回 遮罩的像素。

String name 返回遮罩名。

表达式不能作用于遮罩形状。