ae expression cheat sheet
1.0.0
물체 | 설명 | 예 |
---|---|---|
thisComp | 현재 구성 | thisComp; |
thisLayer | 현재 레이어 | thisLayer.transform.scale[1]; |
thisProperty | 현재 속성 표현식이 적용됩니다. | thisProperty[1]; |
time | 커서 위치에서의 전류 타임 코드. | "Seconds: " + time; |
value | 현재 속성과 관련된 현재 값. | value + "_TEST"; |
물체 | 설명 | 예 |
---|---|---|
colorDepth | 픽셀 당 비트의 프로젝트 색 깊이. | colorDepth; |
기능 | 설명 |
---|---|
layer(index || number) | 레이어, 조명 또는 카메라 객체를 반환합니다. |
layer(layer, relIndex) | 상대 색인으로 객체를 주어진 레이어로 반환합니다. |
기능 | 설명 | 예 |
---|---|---|
framesToTime(frames, fps) | 프레임을 몇 초 만에 타임 코드로 변환합니다. | framesToTime(50, 1.0 / thisComp.frameDuration); |
timeToCurrentFormat(t, fps, isDuration) | 타임 코드를 현재 프로젝트 설정 디스플레이 형식으로 변환합니다. | |
timeToFeetAndFrames(t, fps, framesPerFoot, isDuration) | 타임 코드를 피트 및 프레임 형식으로 변환합니다. | |
timeToFrames(t, fps, isDuration) | 타임 코드를 프레임으로 변환합니다. | |
timeToNTSCTimecode(t, ntscDropFrame, isDuration) | 타임 코드를 드롭 프레임의 유무에 관계없이 NTSC 타임 코드로 변환합니다. | |
timeToTimecode(t, timecodeBase, isDuration) | 주어진 타임베이스를 사용하여 타임 코드를 다른 타임 코드로 변환합니다. |
기능 | 설명 | 예 |
---|---|---|
comp(name) | 주어진 이름으로 열린 구성을 찾으십시오. | comp("Comp 1"); |
footage(name) | 주어진 이름으로 프로젝트 영상을 찾으십시오. | footage("RedHarring.png"); |
당신은 다음과 같습니다.
당신은 다음을 원합니다 :
해결책:
사각형 모양의 모양 레이어가 있다고 가정 해 봅시다.
사각형 레이어의 부모를 텍스트 레이어로 설정하면 텍스트 레이어의 위치 지정에 비해 위치를 만듭니다.
사각형 경로의 크기 속성에 다음 표현식을 추가하십시오
var textLayer = thisComp . layer ( "Text Layer 1" ) ;
var textRect = textLayer . sourceRectAtTime ( time - textLayer . inPoint , true ) ;
// set size of rectangle path to text rectangle's width and height
[ textRect . width , textRect . height ] ;
이것은 사각형의 크기를 텍스트 크기로 설정합니다. 여러 줄이 있으면 모든 라인의 전체 크기가 필요합니다.
var rectPath = content ( "Rectangle 1" ) . content ( "Rectangle Path 1" ) ;
var x = rectPath . size [ 0 ] ;
var y = rectPath . size [ 1 ] ;
// set position of rectangle path to text rectangle's width and height
[ x / 2 , - ( y / 2 ) ] ;
이것은 사각형 경로의 왼쪽 하단 위치를 레이어의 왼쪽 상단으로 설정합니다. 텍스트 레이어는 항상 첫 번째 텍스트 줄의 왼쪽 하단에 앵커 포인트가 있습니다. 이렇게하면 계산이 더 쉬워집니다.
var textLayer = thisComp . layer ( "Text Layer 1" ) ;
var textRect = textLayer . sourceRectAtTime ( time - textLayer . inPoint , true ) ;
[ textLayer . transform . position [ 0 ] + textRect . left ,
textLayer . transform . position [ 1 ] + textRect . top + textRect . height ] ;
이것은 사각형 층의 위치를 텍스트의 위치로 설정합니다. 사각형 크기를 추가하는 이유는 글꼴 렌더링으로 인해 첫 번째 문자가 위치에서 몇 픽셀이 될 수 있기 때문입니다. 사각형 좌표를 추가하면이를 보상합니다.
문제 :
당신은 다음과 같습니다.
당신은 다음을 원합니다 :
50Hz 인터 로킹처럼 보이도록 비디오에 수평 지터를 추가하십시오.
해결책:
[ transform . position [ 0 ] , transform . position [ 1 ] + ( ( timeToFrames ( time ) % 2 ) * 2 ) ]
문제 :
지터가 너무 무겁기 때문에 표현의 곱셈을 제거하여이를 해결할 수 있습니다.
[ transform . position [ 0 ] , transform . position [ 1 ] + ( timeToFrames ( time ) % 2 ) ]
또는 매우 미묘한 흔들림을 얻으려면 반으로 여러 번.
[ transform . position [ 0 ] , transform . position [ 1 ] + ( ( timeToFrames ( time ) % 2 ) * 0.5 ) ]
텍스트는 수직 중앙에 있어야합니다. 텍스트 계층의 변환 속성에 다음 표현식을 추가하십시오.
S = thisLayer ;
x = transform . position [ 0 ] ;
y = transform . position [ 1 ] ;
rect = S . sourceRectAtTime ( time , false ) ;
y_offset = rect . height / 2 ;
[ x , y - y_offset ]