Objeto | Descripción | Ejemplo |
---|---|---|
thisComp | Composición actual | thisComp; |
thisLayer | Capa actual | thisLayer.transform.scale[1]; |
thisProperty | Propiedad actual sobre la que se aplica la expresión. | thisProperty[1]; |
time | Código de tiempo actual en la posición del cursor en segundos. | "Seconds: " + time; |
value | Valor actual asociado a la propiedad actual. | value + "_TEST"; |
Objeto | Descripción | Ejemplo |
---|---|---|
colorDepth | Proyecto de profundidad de color en bits por píxel. | colorDepth; |
Función | Descripción |
---|---|
layer(index || number) | Devuelve una capa, luz o objeto de cámara. |
layer(layer, relIndex) | Devuelve el objeto con un índice relativo a la capa dada. |
Función | Descripción | Ejemplo |
---|---|---|
framesToTime(frames, fps) | Convierta los marcos en código de tiempo en segundos. | framesToTime(50, 1.0 / thisComp.frameDuration); |
timeToCurrentFormat(t, fps, isDuration) | Convierte el código de tiempo en el formato de visualización de configuración del proyecto actual. | |
timeToFeetAndFrames(t, fps, framesPerFoot, isDuration) | Convierte el código de tiempo en formato de pies y marcos. | |
timeToFrames(t, fps, isDuration) | Convierte el código de tiempo en marcos. | |
timeToNTSCTimecode(t, ntscDropFrame, isDuration) | Convierte TimeCode en NTSC TimeCode con o sin marco de caída. | |
timeToTimecode(t, timecodeBase, isDuration) | Convierte el código de tiempo en otro código de tiempo utilizando la base de tiempo dada. |
Función | Descripción | Ejemplo |
---|---|---|
comp(name) | Encuentre la composición abierta con el nombre de pila. | comp("Comp 1"); |
footage(name) | Encuentre las imágenes del proyecto con el nombre de pila. | footage("RedHarring.png"); |
Tienes:
Tú quieres:
Solución:
Digamos que tiene una capa de forma con forma rectángulo.
Establezca el padre de la capa del rectángulo en la capa de texto, esto hará que el posicionamiento sea relativo al posicionamiento de la capa de texto.
Agregue la siguiente expresión a la propiedad de tamaño de la ruta del rectángulo
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 ] ;
Esto establecerá el tamaño del rectángulo al tamaño del texto. Cuando hay múltiples líneas, toma el tamaño completo de todas las líneas.
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 ) ] ;
Esto establece la posición inferior izquierda de la ruta del rectángulo hacia la parte superior izquierda de la capa. Las capas de texto siempre tienen sus puntos de anclaje en la parte inferior izquierda de la primera línea de texto. Esto hará que el cálculo sea más fácil de hacer.
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 ] ;
Esto establece la posición de la capa del rectángulo a la posición del texto. La razón para agregar el tamaño del rectángulo es porque la representación de fuentes puede hacer que la primera letra sea unos pocos píxeles fuera de la posición. Agregar las coordenadas del rectángulo compensará eso.
Problemas:
Tienes:
Tú quieres:
Agregue el jitter horizontal al video para que parezca un interconectores de 50 Hz.
Solución:
[ transform . position [ 0 ] , transform . position [ 1 ] + ( ( timeToFrames ( time ) % 2 ) * 2 ) ]
Problemas:
El Jitter es demasiado pesado, puedes resolver esto eliminando la multiplicación en la expresión
[ transform . position [ 0 ] , transform . position [ 1 ] + ( timeToFrames ( time ) % 2 ) ]
O incluso múltiples a la mitad para obtener un batido muy sutil.
[ transform . position [ 0 ] , transform . position [ 1 ] + ( ( timeToFrames ( time ) % 2 ) * 0.5 ) ]
El texto debe centrarse verticalmente. Agregue la siguiente expresión a la transformación de la capa de texto. Propiedad de posición
S = thisLayer ;
x = transform . position [ 0 ] ;
y = transform . position [ 1 ] ;
rect = S . sourceRectAtTime ( time , false ) ;
y_offset = rect . height / 2 ;
[ x , y - y_offset ]