표현식 뒤에 숨은 개념 몇 가지를 이해했다면, 이제 커뮤니티에서 실제 사용 예시를 살펴보고 작업을 공유할 수 있습니다.
AE Enhancers 포럼에서는 스크립트 및 애니메이션 사전 설정뿐 아니라 표현식에 대한 여러 예제와 정보도 제공합니다.
표현식 컨트롤을 사용하여 텍스트 스타일 및 텍스트 속성을 편집합니다.
표현식을 사용하여 모든 텍스트 표현식 또는 모션 그래픽 템플릿의 텍스트 스타일을 조정할 수 있습니다. 표현식으로 할 수 있는 몇 가지 작업은 다음과 같습니다.
다음 텍스트 스타일 속성은 스타일 개체를 사용하여 읽고 설정할 수 있습니다.
텍스트 레이어의 소스 텍스트 속성은 표현식에서 JavaScript 문자열로 해석됩니다. 텍스트 자체는 sourceText로 읽을 수 있지만 스타일 속성이 수정되는 경우 setText 메서드를 사용하여 스타일 개체에 설정해야 합니다. 일부 예시를 살펴봅니다.
문자열 표현식에 \r을 사용하여 새로운 텍스트 줄을 시작할 수 있습니다. 예를 들어 원본 텍스트를 한 레이어에서 같은 레이어로 복사하고 해당 텍스트를 모두 대문자로 변환하여 새 줄에 나타내려면 다음 표현식을 사용합니다.
textourceText + “\r” + textourceTextoUpperCase()
텍스트 스타일 특성 외에도 단락 특성이 있습니다. 이 옵션은 전체 텍스트 레이어에만 적용할 수 있습니다. 단락 속성은 After Effects에서만 사용할 수 있습니다.
표현식에서 글꼴을 참조할 때 특수한 "시스템 이름"(또는 이와 유사한 이름)을 사용해야 합니다. 이 특수한 이름은 표현식 오류가 발생하지 않도록 텍스트 > 글꼴 > 글꼴 선택 대화 상자에서 삽입하는 것이 좋습니다.
표현식 편집기에서만 참조되는 글꼴은 프로젝트에서 사용하는 글꼴로 기록되지 않습니다. 표현식 편집기에서 참조한 모든 글꼴이 자동으로 동기화되거나 글꼴 확인 대화 상자에 입력되도록 하기 위해 한 레이어에 참조 글꼴을 모두 사용합니다. 해당 레이어 소스는 숨겨져 있어도 됩니다.
텍스트 레이어의 모든 스타일 속성은 스타일 개체에 있으며, 다음을 사용하여 소스 텍스트 속성에서 액세스할 수 있습니다.
// 소스 텍스트 속성에 전체 경로 사용 text.sourceText.style // 현재 속성의 일반 이름 사용 thisProperty.style
스타일 자체를 사용하는 것은 위의 두 가지 예 중 하나를 사용하는 것과 동일하지만 여러 텍스트 레이어의 스타일 속성을 결합하는 경우 혼동될 수 있습니다.
다른 텍스트 레이어의 스타일 속성도 읽을 수 있습니다. 위에 표시된 첫 번째 예제 시작 부분에서 뚝딱 도구를 사용하여 다른 텍스트 레이어로 가는 링크를 만듭니다.
// 특정 텍스트 레이어 스타일 객체에 액세스 thisComp.layer(“Other Layer Name”).text.sourceText.style;
텍스트 표현식을 사용하여 전체 텍스트 레이어의 스타일 속성을 설정하는 것 외에도 해당 레이어 내 개별 문자의 스타일 속성을 설정할 수 있습니다. 이 문자별 컨트롤의 장점 중 하나는 문자 패널에서 하위 문자열 스타일을 사용할 때와 마찬가지로 문자의 비율을 조정하고, 위 첨자를 사용하고, 다른 글꼴을 사용하는 등 다양한 상황에서 텍스트가 자동으로 재조정된다는 것입니다.
textourceTexttyle etFont(“Montserrat-Light”) etFont(“Gigantic”, 0, 6)etFont(“Gigantic”, 10, 6)etFont(“Gigantic”, 20)
text.sourceText.style.setFontSize(100, 0, 30).setFauxBold(true, 0, 30)
문자열을 사용하려면 ‘1st 및 2nd Place’ 텍스트가 포함된 텍스트 레이어를 추가하고 소스 텍스트에 다음을 적용합니다.
textourceTexttyleetBaselineOption(“superscript”,1,2)etBaselineOption(“superscript”, 9, 2)
스타일과 실제 소스 텍스트의 값을 동시에 반환하려면 getStyleAt 및 setText 함수를 결합해야 합니다. 다음은 이 표현식을 작성하는 방법에 대한 두 가지 예입니다.
// 스타일과 실제 소스 텍스트의 값을 동시에 반환하려는 경우(줄임) var sourceTextProperty = thisCompayer(“MAIN TEXT”)extourceText; var newStyle = sourceTextPropertyetStyleAt(0,0 newStyleetText(sourceTextProperty
// 레이어 스택 순서에서 이전 레이어의 실제 소스 텍스트와 스타일 값을 모두 반환하려는 경우 var sourceTextProperty = thisComp.layer(index - 1).text.sourceText; var newStyle = sourceTextProperty.getStyleAt(0,0); newStyle.setText(sourceTextProperty);
드롭다운 메뉴를 사용하여 텍스트 레이어를 특정 글꼴로 잠그는 것과 같은 텍스트 스타일 제어를 할 수 있습니다 이는 브랜드 지침, 템플릿, MoGRTS 등에 유용합니다.
// 드롭다운 메뉴 컨트롤을 사용하여 텍스트 레이어를 특정 글꼴로 잠그려는 경우 var dropDownMenu = thisCompayer(“LayerName”)ffect(“Dropdown Menu Control”)(“Menu” switch (dropDownMenualue) { case 1 : textourceTexttyleetFont(“Georgia” break; case 2 : textourceTexttyleetFont(“Impact” break; default : textourceTexttyleetFont(“Tahoma” }
여러 텍스트 레이어를 기본 글꼴 컨트롤러에 연결하여 한 번에 여러 레이어의 텍스트 스타일을 제어합니다. 두 개의 텍스트 레이어를 만들고 이 표현식을 그 중 하나의 소스 텍스트에 붙여넣습니다.
// 텍스트 레이어에서 모든 텍스트 속성을 가져오는 경우 thisCompayer(“Text Layer 1”)extourceTexttyle;
텍스트 레이어에서 스타일을 가져올 수 있지만 Set 함수로 값을 추가하여 특정 텍스트 속성을 재정의할 수 있습니다. 다음은 칠 색상 및 글꼴 크기를 사용하는 두 가지 예입니다.
// “텍스트 레이어 1”에서 모든 텍스트 속성을 가져오지만 채우기 색상 및 글꼴 크기를 하드코드된 값으로 재정의하려는 경우 var newStyle = thisCompayer(“Text Layer 1”)extourceTexttyle; newStyleetFillColor(hexToRgb(“FF0000”))etFontSize(100
// “텍스트 레이어 1”에서 모든 텍스트 속성을 가져오지만 채우기 색상 및 글꼴 크기를 레이어의 현재 텍스트 속성으로 재정의하려는 경우 var newStyle = thisCompayer(“Text Layer 1”)extourceTexttyle; var currentFillColor = thisPropertytyleillColor; var currentFontSize = thisPropertytyleontSize; newStyleetFillColor(currentFillColor)etFontSize(currentFontSize
다음은 표현식을 사용하여 텍스트 속성 값에 액세스하고 이를 사용하는 방법에 대한 예시입니다.
다음은 텍스트 레이어의 글꼴, 글꼴 크기, 포 볼드체, 포 이탤릭, 자간 및 행간에 액세스하는 예입니다.
// 텍스트 레이어 자체의 글꼴 이름을 반환하려는 경우 text.sourceText.style.font; // 다른 텍스트 레이어가 사용 중인 글꼴 이름을 반환하려는 경우 var otherLayer = thisComp.layer(“Other Layer Name”); otherLayer.text.sourceText.style.font; // 텍스트 레이어 자체의 글꼴 크기를 반환하려는 경우 text.sourceText.style.fontSize; // 다른 텍스트 레이어의 글꼴 크기를 반환하려는 경우 var otherLayer = thisComp.layer(“Other Layer Name”); otherLayer.text.sourceText.style.fontSize; // 레이어의 텍스트가 포 볼드체인지 여부(True 또는 False)에 대한 부울 값을 반환하려는 경우 text.sourceText.style.isFauxBold; // 레이어의 텍스트가 포 이탤릭체인지 여부(True 또는 False)에 대한 부울 값을 반환하려는 경우 text.sourceText.style.isFauxItalic; // 텍스트 레이어의 자간 값을 숫자로 반환하려는 경우 text.sourceText.style.tracking; // 텍스트 레이어의 행간 값을 숫자로 반환하려는 경우 text.sourceText.style.leading;
다음은 텍스트 레이어의 채우기 및 칠 색상에 액세스하는 예입니다.
// 레이어의 텍스트에 채우기가 적용되었는지 여부(True 또는 False)에 대한 부울 값을 반환하려는 경우 text.sourceText.style.applyFill; // 텍스트 레이어의 채우기 색상 값을 반환하려는 경우 // 기본적으로 0 – 1.0 범위의 RGB 값 배열을 반환합니다 text.sourceText.style.fillColor; // setApplyFill 및 setFillColor를 사용하여 텍스트 레이어의 채우기 색상 설정 // setFillColor 값은 0 – 1.0 범위의 RGB 배열로 정의됩니다 var newStyle = style.setApplyFill(true); newStyle.setFillColor([1.0, 1.0, 1.0]); // 16진수 값으로 색상 값을 정의하기 위해 0 – 1.0 RGB 배열을 hexToRGB로 대체하는 텍스트 레이어의 채우기 색상을 설정합니다 var newStyle = style.setApplyFill(true); newStyle.setFillColor(hexToRgb(“FFFFFF”));
// 채우기 색상의 빨간색(R) 값을 반환하려는 경우 text.sourceText.style.fillColor[0];
텍스트 레이어의 R, G 또는 B에 대한 채우기 색상 값을 반환하려면 대괄호 안에 각각 0, 1 또는 2를 추가합니다.
다음은 텍스트 레이어의 선, 선 색상, 획 너비에 액세스하는 예시입니다.
// 레이어의 텍스트에 선이 적용되었는지 여부(True 또는 False)에 대한 부울 값을 반환하려는 경우 text.sourceText.style.applyStroke; // 텍스트 레이어의 선 색상 값을 반환하려면 // 기본적으로 0 – 1.0 범위의 RGB 값 배열을 반환합니다. text.sourceText.style.strokeColor; // setApplyStroke 및 setStrokeColor를 사용하여 텍스트 레이어의 선 색상 설정 // setStrokeColor 값은 0 – 1.0 범위에서 RGB 배열로 정의됩니다. var newStyle = style.setApplyStroke(true); newStyle.setStrokeColor([1.0, 0.0, 0.0]); // 16진수 값으로 색상 값을 정의하기 위해 0 – 1.0 RGB 배열을 hexToRGB로 대체하는 텍스트 레이어의 선 색상을 설정합니다. var newStyle = style.setApplyStroke(true); newStyle.setStrokeColor(hexToRgb(“FF0000”)); // 텍스트 레이어의 선 너비 값을 숫자로 반환하려는 경우 text.sourceText.style.strokeWidth;
// 선 색상의 녹색(G) 값을 반환하려는 경우 text.sourceText.style.strokeColor[1];
텍스트 레이어의 R, G 또는 B에 대한 선 색상 값을 반환하려면 대괄호에 각각 0, 1 또는 2를 추가합니다.
이 get 함수를 사용하면 특정 시간에 특정 문자의 스타일 값을 반환합니다. index는 숫자여야 하며, 스타일이 필요한 글자 또는 문자의 인덱스입니다. atTime도 숫자여야 합니다. 스타일이 키프레임되고 시간이 지남에 따라 변경되는 경우 스타일을 가져올 컴포지션 내 시간입니다.
text.sourceText.getStyleAt(index, atTime);
text.sourceText.style을 사용하는 것은 text.sourceText.getStyleAt(0,0)을 사용하는 것과 동일합니다.
// 타임라인 시작 부분의 첫 번째 문자 스타일을 가져옵니다. text.sourceText.getStyleAt(0,0);
개별적으로 사용하거나 레이어 전반에 걸쳐 스타일을 적용하기 위해 서로 조합하여 사용할 수 있는 추가 set 함수입니다. 이 함수 각각은 소스 텍스트 속성의 스타일 개체에서 호출됩니다.
// Arial에 사용할 글꼴 설정 styleetFont(“ArialMT”) // 글꼴 크기를 80으로 설정 styleetFontSize(80 // 부울로 포 볼드체 활성화 styleetFauxBold(true) // 부울로 포 이탤릭체 활성화 styleetFauxItalics(true) // 부울로 모든 대문자 활성화 styleetAllCaps(true) // 부울로 작은 대문자 활성화 styleetSmallCaps(true) // 자간을 숫자로 설정 styleetTracking(10 // 행간을 숫자로 설정 styleetLeading(10 // 부울로 자동 행간 활성화 styleetAutoLeading(true // 기준선 이동을 숫자로 설정 styleetBaselineShift(10 // 선 폭을 숫자로 설정 styleetStrokeWidth(10 // 텍스트 레이어의 첫 번째 줄을 굵게 설정하고 확대 textourceTexttyleetFontSize(100, 0, 30)etFauxBold(true, 0, 30) // 문자의 위 첨자 설정 textourceTexttyleetBaselineOption(“superscript”,1,2)etBaselineOption(“superscript”, 9, 2)
다음 예제와 같이 매번 새로운 스타일을 선언할 필요 없이 텍스트 스타일에 대한 모든 set 함수를 함께 연결하여 여러 속성을 쉽게 설정할 수 있습니다.
가장 마지막 속성을 설정할 때까지 세미콜론을 사용되지 않습니다. 각 속성을 한 줄에 나열하면 전체 연결을 더 쉽게 읽을 수 있습니다.
// 채우기 활성화, 채우기 색상 설정, 기준선 설정, 자간 설정 및 자동 행간 활성화 text.sourceText.style .setApplyFill(true) .setFillColor(hexToRgb(“FFFFFF”)) .setBaselineShift(10) .setTracking(25) .setAutoLeading(true);
컴포지션에 텍스트 레이어를 추가하고 소스 텍스트 속성에 표현식을 추가하는 것은 다른 레이어의 속성 값을 확인하는 데 유용합니다. 예를 들어 소스 텍스트 속성의 다음 표현식은 레이어 스태킹 순서상 다음 레이어에 대해 불투명도 속성의 이름과 값을 보고합니다.
var nextLayer = thisComp.layer(index + 1); nextLayer.name + “\rOpacity = ” + nextLayer.opacity.value;
다음 예제에서는 현재의 겹침 순서에서 맨 위에 있고 비디오 스위치 세트가 설정되어 있는 이미지 레이어의 소스로 사용되는 푸티지 항목의 이름을 보여줍니다:
// sourceFootageName을 빈 문자열로 생성 var sourceFootageName = “”; // (var i = 1; i <= thisComp.numLayers; i++)에 대해 컴포지션의 모든 레이어를 반복합니다 { // i가 이 레이어의 인덱스와 일치하면 다음 루프를 계속합니다. (i == index) { continue; } // 루프의 현재 반복에 대해 myLayer를 설정합니다 var myLayer = thisComp.layer(i); // myLayer에 비디오가 없거나 활성화되지 않은 경우 다음 루프/레이어로 계속 진행합니다 if ( !myLayer.hasVideo || !myLayer.active ) { continue; } // 현재 시간에 myLayer가 활성화되어 있으면 if ( myLayer.active ) { try { // sourceFootageName을 myLayer의 소스 이름으로 설정합니다 sourceFootageName = myLayer.source.name; } catch ( err ) { // myLayer에 소스가 없으면 // sourceFootageName을 myLayer의 이름으로 설정합니다 sourceFootageName = myLayer.name; } // 루핑 브레이크 중지; } } // sourceFootageName을 sourceFootageName으로 표시합니다;
표현식이 추가된 소스 텍스트 속성을 선택합니다. 그리고 애니메이션 > 애니메이션 사전 설정 저장을 선택하면 표현식을 다른 프로젝트에서 사용할 수 있습니다. 애니메이션 사전 설정은 효과 및 사전 설정 패널에 저장됩니다.
자세한 내용은 효과 및 애니메이션 사전 설정 개요를 참조하세요.
표현식 뒤에 숨은 개념 몇 가지를 이해했다면, 이제 커뮤니티에서 실제 사용 예시를 살펴보고 작업을 공유할 수 있습니다.
AE Enhancers 포럼에서는 스크립트 및 애니메이션 사전 설정뿐 아니라 표현식에 대한 여러 예제와 정보도 제공합니다.