
#版本說明
筆者使用的是Adobe After Effects 2022,隨著版本變化更新,以下內容或多或少會有不同,可以使用跟筆者相同的版本,減少問題的發生。
一、Sub-objects 子對象
source
類型:對象
說明:當合成或者素材,作為圖層使用時,返回合成或素材本身。一般要配合其他屬性使用。
参数:無
返回:合成或者素材本身
示範:
source.duration //返回Comp2的持續時間:40(s)
sourceTime(t=time)
類型:函數
說明:返回圖層源當前的時間值。
参数:t=time,為數值。你可以寫具體的數值,或者寫個time(time代表當前時間軸時間,相當於逐漸變換的數值)
返回:數值
示範:
//如果在當前時間輸入:
thisLyaer.sourceTime(time) //返回0.5 。等於當前時間(2.5)減去圖層源起點(2) = 2.5-2 =0.5
sourceRectAtTime(t = time, includeExtents = false)
類型:函數
說明:
範圍僅適用於形狀圖層和段落文本圖層。
形狀圖層範圍根據需要增加圖層邊界的大小。
段落文本圖層返回段落框的邊界。
参数:t為時間數值,Extents為布爾值
返回:
示範:
effect(name)
類型:函數
說明:根據索引或者名稱引用效果。如果多個效果具有相同名稱,則會使用最接近”效果控件”面板頂層的效果。
参数:index為數值,name為字符串。
返回:效果本身
示範:
effect("閾值")("級別") //返回閾值效果的級別數值
thisComp.layer("Solid 1").effect(1)("Level") //返回純色圖層1下第1個效果(當然還是閾值啦)的level(級別)數值
effect(index)
類型:函數
說明:根據索引或者名稱引用效果。如果多個效果具有相同名稱,則會使用最接近”效果控件”面板頂層的效果。
参数:index為數值,name為字符串。索引從1開始計算
返回:效果本身
示範:
effect("閾值")("級別") //返回閾值效果的級別數值
thisComp.layer("Solid 1").effect(1)("Level") //返回純色圖層1下第1個效果(當然還是閾值啦)的level(級別)數值
mask(name)
類型:函數
說明:根據蒙版序號或者蒙版名稱引用蒙版。
参数:index為數字,name為字符串
返回:蒙版
示範:
thisComp.layer("Solid 1").mask("Mask 1").maskFeather[0] //返回蒙版1的羽化值
thisComp.layer("純色層 1").mask(2).maskFeather[0] //返回第2個蒙版的羽化值
mask(index)
類型:函數
說明:根據蒙版序號或者蒙版名稱引用蒙版。索引從1開始計算
参数:index為數字,name為字符串
返回:蒙版
示範:
thisComp.layer("Solid 1").mask("Mask 1").maskFeather[0] //返回蒙版1的羽化值
thisComp.layer("純色層 1").mask(2).maskFeather[0] //返回第2個蒙版的羽化值
二、General 圖層常規屬性和方法(表達式引用)
width
類型:
說明:圖層寬度值
参数:
返回:數值
示範:
thisLayer.width //返回1920。
height
類型:
說明:圖層高度值
参数:
返回:數值
示範:
thisLayer.height //返回1080
index
類型:
說明:圖層的索引號。從1開始計算
参数:
返回:數值
示範:
thisLayer.index //返回1。第1個圖層
parent
類型:
說明:返回圖層的父圖層對象(如果有的話),父對象就是小鞭子勾的對象。
参数:
返回:圖層、光照或攝像機對象。
示範:
thisLayer.parent.width
hasParent
類型:屬性
說明:是否有父對象
参数:無
返回:布爾值
示範:
thisLayer.hasParent //有父對象,返回True
inPoint
類型:屬性
說明:圖層入點時間。如果反轉圖層時間,則 inPoint 的值大於 outPoint 的值。
参数:無
返回:數值
示範:
thisLayer.inPoint.toFixed(1) //返回1.6(秒)
outPoint
類型:屬性
說明:圖層出點時間。如果反轉圖層時間,則 inPoint 的值大於 outPoint 的值。
参数:無
返回:數值
示範:
thisLayer.outPoint.toFixed(1) //返回7.6(秒),被擋住了,參考入點
starTime
類型:
說明:返回圖層的起始時間(以秒為單位)。
参数:
返回:數值
示範:
hasVideo
類型:屬性
說明:是否還有視頻軌
参数:無
返回:布爾值
示範:
thisComp.layer("Solid 2").hasAudio //純色層是否有視頻軌:True
hasAudio
類型:屬性
說明:是否還有音軌
参数:無
返回:布爾值
示範:
thisComp.layer("Solid 2").hasAudio //純色層是否有音頻軌:False
active
類型:屬性
說明:返回圖層/屬性是否激活的布爾值。如果小眼睛打開,且當前時間點該圖層存在於時間軸上,返回true。對於圖層來說,是加強版的enabled
参数:無
返回:布爾值
示範:
thisComp.layer("測試").active //對圖層使用。滿足條件,返回True
effect("Threshold")("Level").active //對效果使用。如果有該效果,返回true
enabled
類型:屬性
說明:圖層是否打開小眼睛,就是是否顯示的意思
参数:無
返回:布爾值
示範:
thisComp.layer("Solid 2").enabled //關上小眼睛:False
audioActive
類型:屬性
說明:返回某圖層是否打開小喇叭,且當前時間點該圖層是否存在於時間軸上。都滿足則返回True
参数:無
返回:布爾值
示範:
thisComp.layer("示例.mp4").audioActive // True
sampleImage(point, radius = [.5, .5], postEffect = true, t = time)
類型:函數
說明:根據圖層上某點進行採樣,返回RGBA顏色值
参数:
point:二維位置數組,表示要進行採樣的中心點
radius:二維數組,表示採樣區域。 [6,6]代表採樣12*12的正方形,結果是加權平均
postEffect:要採樣的圖層是否要計算效果和蒙版。 Tue就是算,加個調色效果就會變。 False就是不算,怎麼加都算原始圖層的。
t:時間,比如我想採樣3秒後的圖層,t=3
返回:RGBA四維數組
示範:
# 1.變色龍效果
給個顏色複雜的背景圖:bg
新建一個圓形:圓1
給圓1的填充顏色增加表達式
sourceLayer = thisComp.layer("bg"); //指定變量sourceLayer為背景層
p = transform.position; //指定變量p為圓的位置值
col = sourceLayer.sampleImage(p) //其他參數默認就行
//此時移動圓形,會根據背景的顏色變化而變化
# 2.雲彩中根據不透明度閃爍的星星
很簡單,同上,只不過給不透明度打個表達式
XX..sampleImage(p)[3] //因為表達式返回四維數組,是有不透明度的,所以用[3]調用不透明度即可
三、Properties圖層屬性特性和方法(表達式引用)
anchorPoint
類型:屬性
說明:錨點值
参数:[2 或 3維]數組
返回:
示範:
position
類型:屬性
說明:在世界空間中返回圖層的位置值(如果圖層沒有父級)。如果圖層有父級,則會在父圖層的坐標系中(在父圖層的圖層空間中)返回圖層的位置值。
参数:
返回:[2 或 3維]數組
示範:
scale
類型:屬性
說明:圖層的縮放值,表示為百分比。
参数:
返回:[2 或 3維]數組
示範:
rotation
類型:屬性
說明:返回圖層的旋轉值(以度為單位)。對於 3D 圖層,還會返回 z 旋轉值(以度為單位)。
参数:
返回:[2 或 3維]數組
示範:
opacity
類型:屬性
說明:圖層的不透明度值,表示為百分比。
参数:
返回:數值
示範:
audioLevels
類型:屬性
說明:返回圖層的音頻級別屬性的值(以分貝為單位)。此值是 2D 值;分別表示左音聲道和右聲道。不是原始音頻的分貝,可能會受關鍵幀影響。
参数:
返回:數組
示範:
timeRemap
類型:屬性
說明:如果啟用時間重映射,則返回時間重映射屬性的值。
参数:
返回:數值
示範:
marker
類型:
說明:圖層的標記
参数:
返回:
示範:
thisLayer.marker.key(1).time //返回本圖層第1個標記點的時間值
name
類型:屬性
說明:返回圖層的名稱。
参数:
返回:字符串
示範:
thisLayer.name //"text layer
四、3D圖層 3D屬性和方法(表達式引用)
orientation
類型:
說明:屬性 [3]
参数:
返回:返回 3D 圖層的 3D 方向值(以度為單位)
示範:
rotationX
類型:屬性
說明:
参数:
返回:返回 3D 圖層的 x 旋轉值(以度為單位)。
示範:
rotationY
類型:屬性
說明:
参数:
返回:返回 3D 圖層的 y 旋轉值(以度為單位)。
示範:
rotationZ
類型:屬性
說明:
参数:
返回:返回 3D 圖層的 z 旋轉值(以度為單位)。
示範:
lightTransmission
類型:屬性
說明:返回3D圖層材質選項的透光率
参数:無
返回:數值(百分比)
示範:
thisComp.layer("Solid 1").materialOption.lightTransmission //透光率默認為100%
castsShadows
類型:屬性
說明:返回3D圖層材質選項的投影
参数:無
返回:布爾值
示範:
thisComp.layer("Solid 1").materialOption.castsShadows //開啟投影,返回1。未開啟,返回0
acceptsShadows
類型:屬性
說明:是否接受陰影,3D圖層的材質選項下的接受陰影。
参数:無
返回:數值 1或0
示範:
thisComp.layer("Solid 1").acceptsShadows//接受陰影默認打開。故返回 1
acceptsLights
類型:屬性
說明:是否接受燈光,3D圖層的材質選項下的接受燈光。
参数:無
返回:數值 1或0
示範:
thisComp.layer("Solid 1").acceptsLights//接受燈光默認打開。故返回 1
ambient
類型:屬性
說明:3D圖層材質選項的環境
参数:無
返回:數值(百分比為單位)
示範:
thisComp.layer(純色 1").ambient //默認環境值就是100 故返回100
diffuse
類型:屬性
說明:3D圖層,材質選項下的漫射
参数:無
返回:漫射數值
示範:
thisComp.layer("Solid 1").materialOption.diffuse //返回本合成純色層1的材質選項的漫射值
specularIntensity
類型:屬性
說明:3D圖層,材質選項下的鏡面強度
参数:無
返回:數值(百分比)
示範:
thisComp.layer("Solid 1").materialOption.specularIntensity // 默認50%
specularShininess
類型:屬性
說明:3D圖層,材質選項下的鏡面反光度
参数:無
返回:數值(百分比)
示範:
thisComp.layer("Solid 1").materialOption.specularShininess // 默認5%
specular
類型:屬性
說明:3D圖層,材質選項下的反鏡面值
参数:無
返回:數值
示範:
thisComp.layer("Solid 1").materialOption.specular //2020沒有這個屬性了?
shininess
類型:屬性
說明:3D圖層,材質選項下的反光度
参数:無
返回:數值
示範:
thisComp.layer("Solid 1").materialOption.shininess //2020沒有這個屬性了?
metal
類型:屬性
說明:3D圖層的材質選項下的金屬質感。需開啟圖層的3D開關
参数:無
返回:金屬質感數值
示範:
materialOption.metal //默認為100%,返回數值100
五、space Transforms 圖層空間變換方法(表達式引用)
使用圖層空間變換方法將值從一個空間變換到其他空間
“from”方法可將值從合成空間或世界空間變換到圖層空間。 “to”方法可將值從圖層空間變換到合成空間或世界空間。
每個變換方法各採用一個可選參數來確定計算變換的時間;通常使用當前時間(默認)。
當變換方向矢量(例如兩個位置值之間的差值)時使用”Vec”變換方法。
當變換點(例如位置)時,使用簡單的(非”Vec”)變換方法。
2D 圖層,合成和世界空間是一樣的。然而,對於 3D 圖層,合成空間與活動攝像機有關,而世界空間獨立於攝像機。
合成空間:可以在合成設置裡更改空間的大小,一般固定。上圖點X在合成裡就是[540,0]
圖層空間:圖層自己本身的空間。上圖點X(位於圖層左上角)在圖層裡的位置始終固定,為[0,0]
世界空間:增加攝像機以後,各種點都有了空間上的深度感,也就是Z軸,因此有世界空間這一概念
注:點默認在合成空間裡
toComp(point, t = time)
類型:函數
說明:把點在圖層上的坐標,轉換為點在合成上的坐標
参数:point,點在圖層的坐標值。 time是圖層的動畫時間,比如位置在2秒內從[0,0]到[100,100],此時t=2,這時位置的point=[100,100]。
返回:點在合成中的坐標值
示範:
//假設,在2000*2000合成新建500*500的純色層。它的錨點為[250,250]位於圖層正中心
//此時給錨點添加表達式
thisLayer.toComp(transform.anchorPoint) //返回[1000,1000]。錨點在合成的[1000,1000]位置處
//如果打上三維開關
thisLayer.toComp(transform.anchorPoint) //為toComp表達式,本表達式結果會把[250,250,0]轉換為[1000,1000,2776.8]
fromComp(point, t = time)
類型:函數
說明:把點在合成上的坐標,轉換為點在圖層上的坐標
参数:point,點在合成的坐標值。 time是圖層的動畫時間,比如位置在2秒內從[0,0]到[100,100],此時t=2,這時位置的point=[100,100]。
返回:點在圖層中的坐標值
示範:
//假設,在2000*2000合成新建500*500的純色層。它的錨點為[250,250]位於圖層正中心
//此時給錨點添加表達式
thisLayer.fromComp(transform.anchorPoint) //為toComp表達式,本表達式結果會把[250,250]轉換為[-500,-500]
//如果打上三維開關
thisLayer.fromWorld(transform.anchorPoint) //為toComp表達式,本表達式結果會把[250,250,0]轉換為[-249.7,-249.7,-2776.8]
toWorld(point, t = time)
類型:函數
說明:將點從圖層空間變換到與視角無關的世界空間。
参数:point,點在圖層的坐標值。 time是圖層的動畫時間,比如位置在2秒內從[0,0]到[100,100],此時t=2,這時位置的point=[100,100]。
返回:點在世界坐標系的坐標值
示範:
//假設,在2000*2000合成新建500*500的純色層。它的錨點為[250,250]位於圖層正中心
//此時給錨點添加表達式
thisLayer.toWorld(transform.anchorPoint) //為toComp表達式,本表達式結果會把[250,250]轉換為[1000,1000]
//如果打上三維開關
thisLayer.toWorld(transform.anchorPoint) //為toComp表達式,本表達式結果會把[250,250,0]轉換為[1000,1000,0]
fromWorld(point, t = time)
類型:
說明:將點從世界空間變換到與圖層空間。
参数:point,點在世界的坐標值。 time是圖層的動畫時間,比如位置在2秒內從[0,0]到[100,100],此時t=2,這時位置的point=[100,100]。
返回:點在圖層的坐標值
示範:
//假設,在2000*2000合成新建500*500的純色層。它的錨點為[250,250]位於圖層正中心
//此時給錨點添加表達式
thisLayer.fromWorld(transform.anchorPoint) //為toComp表達式,本表達式結果會把[250,250]轉換為[-500,-500]
//如果打上三維開關
thisLayer.fromWorld(transform.anchorPoint) //為toComp表達式,本表達式結果會把[250,250,0]轉換為[-500,-500,0]
toCompVec(vec,t=time)
類型:
說明:將矢量從圖層空間變換到合成空間。
参数:vec 是數組 [2 或 3],t 是數值。
返回:數組 [2 或 3]。
示範:
詳情見toComp,只不過轉的不是位置,而是矢量,矢量是有方向的。
fromCompVec(vec,t=time)
類型:
說明:將矢量從合成空間變換到圖層空間。
参数:vec 是數組 [2 或 3],t 是數值。
返回:數組 [2 或 3]。
示範:
詳情見fromComp,只不過轉的不是位置,而是矢量,矢量是有方向的。
示例(2D 圖層):
dir=sub(position, thisComp.layer(2).position);
fromCompVec(dir)
toWorldVec(vec,t=time)
類型:
說明:將矢量從圖層空間變換到世界空間。
参数:vec 是數組 [2 或 3],t 是數值。
返回:數組 [2 或 3]。
示範:
詳情見toWorld,只不過轉的不是位置,而是矢量,矢量是有方向的。
示例:
p1 = effect("Eye Bulge 1")("Bulge Center");
p2 = effect("Eye Bulge 2")("Bulge Center");
toWorld(sub(p1, p2))
fromWorldVec(vec,t=time)
類型:
說明:
参数:vec 是數組 [2 或 3],t 是數值。
返回:數組 [2 或 3]。
示範:
將矢量從世界空間變換到圖層空間。
詳情見fromWorld,只不過轉的不是位置,而是矢量,矢量是有方向的。
示例:fromWorld(thisComp.layer(2).position)
fromCompToSurface(point,t=time)
類型:函數
說明:在從活動攝像機中進行查看時出現的位置將位於合成空間中的點投影到圖層表面上的點(零 z 值)。此方法有助於設置效果控制點。僅用於 3D 圖層。
参数:point 是數組 [2 或 3],t 是數值。
返回:數組 [2]。
示範: