Utilice los elementos de expresión de After Effects junto con los elementos estándar de JavaScript para escribir las expresiones. Puede utilizar el menú Lenguaje de expresión en cualquier momento para insertar métodos y atributos en una expresión y puede utilizar el icono espiral para insertar propiedades.

Si la descripción de un argumento contiene un signo igual (=) y un valor (como t=time o width=.2), el argumento utiliza el valor predeterminado incluido si no se especifica un valor diferente.

Las descripciones de algunos argumentos incluyen un número entre corchetes; este número indica la dimensión de la propiedad o del conjunto esperado.

Las descripciones de algunos valores devueltos incluyen un número entre corchetes; este número especifica la dimensión de la propiedad o del conjunto devuelto. Si no se incluye una dimensión específica, la dimensión del conjunto devuelto depende de la dimensión de la entrada.

En el sitio web de referencia sobre JavaScript W3Schools se proporciona información sobre el lenguaje estándar JavaScript, incluyendo páginas para los objetos de JavaScript Math y String.

Expresiones: motor JavaScript

After Effects utiliza el motor JavaScript al evaluar expresiones. El rendimiento de la evaluación de expresiones durante el procesamiento puede ser hasta 5 veces superior que con el antiguo motor ExtendScript.

En Windows, After Effects utiliza el motor de código abierto V8 para JavaScript. En macOS, After Effects utiliza el marco JavaScriptCore. Ambos motores ofrecen una versión más moderna de JavaScript de la que hay disponible en ExtendScript, que solo admite la 3.ª edición del estándar ECMA-262.

Para elegir si un proyecto utiliza el motor JavaScript o el antiguo ExtendScript, en el cuadro de diálogo Configuración del proyecto, haga clic en la pestaña Expresiones y cambie la opción Motor de expresiones. Los proyectos guardados en versiones anteriores de After Effects usarán de forma predeterminada el ExtendScript antiguo.

Mejoras proporcionadas por el motor JavaScript

  • Mayor precisión matemática en operaciones con punto flotante. 
  • Pueden utilizarse los métodos “array” y “string” del moderno JavaScript.
  • Se proporcionan otros objetos JavaScript modernos, como “typed arrays”, el uso de las palabras clave “let” y “const”, y muchas otras incorporaciones de las recientes versiones del estándar ECMA-262.

Diferencias entre los motores JavaScript y ExtendScript

  • La sintaxis de las declaraciones “if/else” es estricta en el motor JavaScript y debe escribirse para JavaScript estandarizado.
  • Al acceder a los índices de una capa de texto como matriz (valor “array”), utilice text.sourceText.value[i] en vez de text.sourceText[i].
  • Los antiguos métodos de expresión snake_case, como this_comp to_world, ya obsoletos en ExtendScript, no son compatibles.
  • No se admite la sintaxis “this(arg)” simplificada.

Objetos globales, atributos y métodos (referencia de expresión)

comp(name)

Tipo de valor devuelto: comp.

Tipo de argumento: name es una cadena.

Recupera otra composición por su nombre.

footage(name)

Tipo de valor devuelto: material de archivo.

Tipo de argumento: name es una cadena.

Recupera un elemento de material de archivo por el nombre.

thisComp

Tipo de valor devuelto: comp.

Representa la composición que contiene la expresión.

thisLayer

Tipo de valor devuelto: capa, luz o cámara.

Representa la capa que contiene la expresión. Dado que thisLayer es el objeto predeterminado, su uso es opcional. Por ejemplo, puede iniciar una expresión con thisLayer.width o width y obtener el mismo resultado.

thisProperty

Tipo de valor devuelto: propiedad.

Representa la propiedad que contiene la expresión. Por ejemplo, si escribe una expresión en la propiedad Rotación, puede iniciar una expresión con thisProperty para hacer referencia a la propiedad Rotación.

tiempo

Tipo de valor devuelto: número.

Representa el tiempo de la composición, en segundos, en el que se va a evaluar la expresión.

colorDepth

Tipo de valor devuelto: número.

Devuelve el valor de profundidad de color del proyecto. Por ejemplo, colorDepth devuelve 16 cuando la profundidad de color del proyecto es de 16 bits por canal.

posterizeTime(framesPerSecond)

Tipo de valor devuelto: número.

Tipo de argumento: framesPerSecond es un número.

El valor framesPerSecond se convierte en la velocidad de fotogramas a partir de la cual funciona el resto de la expresión. Esta expresión permite establecer que la velocidad de fotogramas de una propiedad sea más baja que la velocidad de fotogramas de la composición. Por ejemplo, la siguiente expresión actualiza el valor de la propiedad con un valor aleatorio una vez por segundo:

  posterizeTime(1);   random()

valor

Tipo de valor devuelto: número, conjunto o cadena.

Representa el valor en el momento actual de la propiedad que contiene la expresión.

Métodos de conversión del tiempo (referencia de expresión)

timeToFrames(t = time + thisComp.displayStartTime, fps = 1.0 / thisComp.frameDuration, isDuration = false)

Tipo de valor devuelto: número.

Tipo de argumento: t y fps son números; isDuration es un valor booleano.

Convierte el valor de t, que se define de manera predeterminada en el tiempo de la composición actual, en un número entero de fotogramas. El número de fotogramas por segundo se especifica en el argumento fps, que se define de manera predeterminada en la velocidad de fotogramas de la composición actual (1.0 / thisComp.frameDuration). El argumento isDuration, que está definido como falso de manera predeterminada, debe ser verdadero si el valor t representa una diferencia entre dos tiempos en lugar de un tiempo absoluto. Los tiempos absolutos se redondean a la baja hacia el infinito negativo; las duraciones se redondean alejándose de cero (hacia arriba para valores positivos).

framesToTime(frames, fps = 1.0 / thisComp.frameDuration)

Tipo de valor devuelto: número.

Tipo de argumento: frames y fps son números.

El inverso de timeToFrames. Devuelve el tiempo correspondiente al argumento frames, que es necesario. No es necesario que sea un número entero. Consulte timeToFrames para ver una explicación sobre el argumento fps.

timeToTimecode(t = time + thisComp.displayStartTime, timecodeBase = 30, isDuration = false)

Tipo de valor devuelto: cadena.

Tipo de argumento: t y timecodeBase son números; isDuration es un valor booleano.

Convierte el valor de t en una cadena que representa un código de tiempo. Consulte timeToFrames para ver una explicación de los argumentos t e isDuration. El valor timecodeBase, que se define en 30 de manera predeterminada, especifica el número de fotogramas por segundo.

timeToNTSCTimecode(t = time + thisComp.displayStartTime, ntscDropFrame = false, isDuration = false)

Tipo de valor devuelto: cadena.

Tipo de argumento: t es un número, ntscDropFrame e isDuration son valores booleanos.

Convierte t en una cadena que representa el código de tiempo NTSC. Consulte timeToFrames para ver una explicación de los argumentos t e isDuration. Si ntscDropFrame es falso (valor predeterminado), la cadena resultante es un código de tiempo sin eliminación de fotogramas NTSC. Si ntscDropFrame es verdadero, la cadena resultante es un código de tiempo con eliminación de fotogramas NTSC.

timeToFeetAndFrames(t = time + thisComp.displayStartTime, fps = 1.0 / thisComp.frameDuration, framesPerFoot = 16, isDuration = false)

Tipo de valor devuelto: cadena.

Tipo de argumento: t, fps y framesPerFoot son números; isDuration es un valor booleano.

Convierte el valor de t en una cadena que representa pies de película y fotogramas. Consulte timeToFrames para ver una explicación de los parámetros t, fps e isDuration. El argumento framesPerFoot especifica el número de fotogramas en un pie de película. Se define en 16 de manera predeterminada, que es la velocidad más común para material de archivo de 35 mm.

timeToCurrentFormat(t = time + thisComp.displayStartTime, fps = 1.0 / thisComp.frameDuration, isDuration = false)

Tipo de valor devuelto: cadena.

Tipo de argumento: t y fps son números; isDuration es un valor booleano.

Convierte el valor de t en una cadena que representa el tiempo en el formato de visualización actual de Ajustes del proyecto. Consulte timeToFrames para obtener una definición de todos los argumentos.

Se ha agregado un argumento opcional ntscDropFrame a la función timeToCurrentFormat() en After Effects CS5.5 y posterior. Opción predeterminada: ntscDropFrame = thisComp.ntscDropFrame.

Nota:

Si desea ejercer un mayor control sobre el aspecto del código de tiempo del material de archivo, utilice el método timeToCurrentFormat u otros métodos timeTo para generar el código de tiempo en lugar de utilizar el efecto Código de tiempo o Números. Cree una capa de texto, agregue una expresión a la propiedad Texto de origen e introduzca timeToCurrentFormat en el campo de expresión. Con este método, puede dar formato y animar el texto de código de tiempo. Asimismo, el código de tiempo utiliza el mismo estilo de visualización definido en los ajustes actuales del proyecto.

Métodos matemáticos vectoriales (referencia de expresión)

Las funciones matemáticas vectoriales son métodos globales que realizan operaciones en conjuntos, tratándolos como vectores matemáticos. A diferencia de los métodos JavaScript integrados, como Math.sin, estos métodos no utilizan el prefijo Math. A menos que se especifique lo contrario, los métodos matemáticos vectoriales no son estrictos con las dimensiones, devuelven un valor que es la dimensión del objeto Conjunto de entrada más grande y los elementos que faltan se rellenan con ceros. Por ejemplo, la expresión add([10, 20], [1, 2, 3]) devuelve [11, 22, 3].

El sitio web de JJ Gifford proporciona explicaciones y ejemplos que muestran cómo utilizar geometría y trigonometría simple con expresiones.

add(vec1, vec2)

Tipo de valor devuelto: conjunto.

Tipo de argumento: vec1 y vec2 son conjuntos.

Agrega dos vectores.

sub(vec1, vec2)

Tipo de valor devuelto: conjunto.

Tipo de argumento: vec1 y vec2 son conjuntos.

Resta dos vectores.

mul(vec, amount)

Tipo de valor devuelto: conjunto.

Tipo de argumento: vec es un conjunto, amount es un número.

Multiplica cada elemento del vector por la cantidad.

div(vec, amount)

Tipo de valor devuelto: conjunto.

Tipo de argumento: vec es un conjunto, amount es un número.

Divide cada elemento del vector entre la cantidad.

clamp(value, limit1, limit2)

Tipo de valor devuelto: número o conjunto.

Tipo de argumento: value, limit1 y limit2 son números o conjuntos.

El valor de cada componente de value debe encontrarse entre los valores correspondientes de limit1 y limit2.

dot(vec1, vec2)

Tipo de valor devuelto: número.

Tipo de argumento: vec1 y vec2 son conjuntos.

Devuelve el producto de puntos (interior) de los argumentos vectoriales.

cross(vec1, vec2)

Tipo de valor devuelto: conjunto [2 ó 3].

Tipo de argumento: vec1 y vec2 son conjuntos [2 ó 3].

Devuelve el producto vectorial cruzado de vec1 y vec2. Si desea obtener más información, consulte una referencia matemática o una guía de JavaScript.

normalize(vec)

Tipo de valor devuelto: conjunto.

Tipo de argumento: vec es un conjunto.

Normaliza el vector para que su longitud sea de 1,0. El uso del método normalize es un modo rápido de realizar la operación div(vec, length(vec)).

length(vec)

Tipo de valor devuelto: número.

Tipo de argumento: vec es un conjunto.

Devuelve la longitud del vector vec.

length(point1, point2)

Tipo de valor devuelto: número.

Tipo de argumento: point1 y point2 son conjuntos.

Devuelve la distancia entre dos puntos. El argumento point2 es opcional. Por ejemplo, length(point1, point2) es lo mismo que length(sub(point1, point2)).

Por ejemplo, añada esta expresión a la propiedad Distancia de enfoque de una cámara para bloquear el plano focal en el punto de interés de la cámara de modo que este punto esté enfocado:

 length(position, pointOfInterest)

lookAt(fromPoint, atPoint)

Tipo de valor devuelto: conjunto [3].

Tipo de argumento: fromPoint y atPoint son conjuntos [3].

El argumento fromPoint es la ubicación en el espacio del entorno de la capa que se desea orientar. El argumento atPoint es el punto en el espacio del entorno al que desea que apunte la capa. El valor devuelto se puede utilizar como expresión de la propiedad Orientación, haciendo que el eje z de la capa señale hacia atPoint. Este método es especialmente útil para cámaras y luces. Si utiliza esta expresión en una cámara, desactive la orientación automática. Por ejemplo, esta expresión de la propiedad Orientación de una luz concentrada hace que la luz señale hacia el punto de anclaje de la capa número 1 de la misma composición: lookAt(position, thisComp.layer(1).position)

Métodos de números aleatorios (referencia de expresión)

Nota:

El método wiggle, utilizado para modificar de forma aleatoria un valor de propiedad, se encuentra en la categoría de métodos y atributos de propiedad. Para obtener más información, vea Atributos y métodos de propiedad (referencia de expresión).

seedRandom(offset, timeless=false)

Tipo de valor devuelto: ninguno.

Tipo de argumento: offset es un Número, timeless es un Valor booleano.

Los métodos random y gaussRandom utilizan un valor de raíz que controla la secuencia de números. De forma predeterminada, la raíz se computa como una función de un identificador de capa único, la propiedad en la capa, el tiempo actual y un valor de desplazamiento de 0. Utilice seedRandom para establecer el desplazamiento en un valor distinto a 0 y crear una secuencia aleatoria diferente.

Utilice true para el argumento timeless para no utilizar el tiempo actual como entrada a la raíz aleatoria. El uso de true para el argumento timeless permite generar un número aleatorio que no varía dependiendo del tiempo de evaluación.

El valor offset, y no timeless, también se utiliza para controlar el valor inicial de la función wiggle

Por ejemplo, esta expresión de la propiedad Opacidad establece el valor Opacidad en un valor aleatorio que no varía con el tiempo:

seedRandom(123456, true);   random()*100

La multiplicación por 100 en este ejemplo convierte el valor entre 0 y 1 devuelto por el método random en un número entre 0 y 100; este rango suele ser más útil para la propiedad Opacidad, que tiene valores de 0% a 100%.

random()

Tipo de valor devuelto: número.

Devuelve un número aleatorio entre 0–1.

En After Effects CC y CS6, el comportamiento de aleatorio() se ha cambiado para ser más aleatorio cuando los ID de capa están próximos entre sí. La expresión wiggle() no resulta afectada.

random(maxValOrArray)

Tipo de valor devuelto: número o conjunto.

Tipo de argumento: maxValOrArray es un número o un conjunto.

Si maxValOrArray es un número, este método devuelve un número en el rango de 0 a maxValOrArray. Si maxValOrArray es un conjunto, este método devuelve un conjunto con la misma dimensión que maxValOrArray, donde cada componente varía entre 0 y el componente correspondiente de maxValOrArray.

random(minValOrArray, maxValOrArray)

Tipo de valor devuelto: número o conjunto.

Tipo de argumento: minValOrArray y maxValOrArray son números o conjuntos.

Si minValOrArray y maxValOrArray son números, este método devuelve un número en el rango de minValOrArray a maxValOrArray. Si los argumentos son conjuntos, este método devuelve un conjunto con la misma dimensión que el argumento de dimensión mayor, con cada componente en el rango desde el componente correspondiente de minValOrArray al componente correspondiente de maxValOrArray. Por ejemplo, la expresión random([100, 200], [300, 400]) devuelve un conjunto cuyo primer valor está en el rango 100–300 y cuyo segundo valor se encuentra entre 200–400. Si las dimensiones de los dos conjuntos de entrada no coinciden, los valores de mayor dimensión del conjunto más corto se rellenarán con ceros.

gaussRandom()

Tipo de valor devuelto: número.

Devuelve un número aleatorio. Los resultados tienen una distribución gaussiana (acampanada). Aproximadamente el 90% de los resultados está en el rango de 0–1 y el 10% restante está fuera de este rango.

gaussRandom(maxValOrArray)

Tipo de valor devuelto: número o conjunto.

Tipo de argumento: maxValOrArray es un número o un conjunto.

Cuando maxValOrArray es un número, este método devuelve un número aleatorio. Aproximadamente el 90% de los resultados está en el rango de 0 a maxValOrArray y el 10% restante está fuera de este rango. Cuando maxValOrArray es un conjunto, este método devuelve un conjunto de valores aleatorios, con la misma dimensión que maxValOrArray. El 90% de los valores está en el rango de 0 a maxValOrArray y el 10% restante está fuera de este rango. Los resultados tienen una distribución gaussiana (acampanada).

gaussRandom(minValOrArray, maxValOrArray)

Tipo de valor devuelto: número o conjunto.

Tipo de argumento: minValOrArray y maxValOrArray son números o conjuntos.

Si minValOrArray y maxValOrArray son números, este método devuelve un número aleatorio. Aproximadamente el 90% de los resultados está en el rango de minValOrArray a maxValOrArray y el 10% restante está fuera de este rango. Si los argumentos son conjuntos, este método devuelve un conjunto de números aleatorios con la misma dimensión que el argumento de mayor dimensión. Para cada componente, aproximadamente el 90% de los resultados están en el rango desde el componente correspondiente de minValOrArray al componente correspondiente de maxValOrArray y el 10% restante está fuera de este rango. Los resultados tienen una distribución gaussiana (acampanada).

noise(valOrArray)

Tipo de valor devuelto: número.

Tipo de argumento: valOrArray es un número o un conjunto [2 ó 3].

Devuelve un número en el rango de -1 a 1. El ruido no es realmente aleatorio; se basa en el ruido Perlin, lo que significa que los valores devueltos para los dos valores de entrada que están cerca entre sí tienden a estar cerca el uno del otro. Este tipo de ruido resulta útil cuando se desea una secuencia de números aparentemente aleatorios que no varíen mucho de uno a otro, como es habitual en el caso de la animación de cualquier tipo de movimiento natural aparentemente aleatorio. Ejemplo: rotation + 360*noise(time)

Métodos de interpolación (referencia de expresión)

Para todos los métodos de interpolación, el argumentot es a menudotiempo o valor, aunque puede tener otros valores en lugar de estos. Si t es tiempo, la interpolación entre los valores ocurre sobre una duración. Si t es valor, la expresión asigna un rango de valores a un nuevo rango de valores.

Para obtener explicaciones y ejemplos adicionales de los métodos de interpolación, consulte el sitio web de JJ Gifford.

Chris y Trish Meyer ofrecen ejemplos e información adicional para estos métodos en un artículo en el sitio web ProVideo Coalition (en inglés).

Ian Haigh proporciona una secuencia de comandos en el sitio web After Effects Scripts que se puede emplear para aplicar fácilmente expresiones del método de interpolación avanzadas como, por ejemplo, rebotes, a las propiedades.

Andrew Devis proporciona un par de tutoriales de vídeo en el sitio web de Creative COW que muestran con detalle cómo utilizar el método de expresión lineal junto con el comando Convertir audio en fotogramas clave.

linear(t, tMin, tMax, value1, value2)

Tipo de valor devuelto: número o conjunto.

Tipo de argumento: t, tMin y tMax son números y value1 y value2 son números o conjuntos.

Devuelve value1 si t <= tMin. Devuelve value2 si t >= tMax. Devuelve una interpolación lineal entre value1 y value2 si tMin < t < tMax.

Por ejemplo, esta expresión sobre la propiedad Opacidad hace que los valores de Opacidad aumenten linealmente del 20 % al 80 % durante el tiempo comprendido entre 0 y 6 segundos:

  linear(time, 0, 6, 20, 80)

Este método (al igual que todos los métodos de interpolación) también se puede emplear para convertir un rango de valores en otro. Por ejemplo, esta expresión sobre la propiedad Opacidad convierte los valores de Opacidad de 0 %-100 % al rango 20 %- 80 %:

  linear(value, 0, 100, 20, 80)

linear(t, value1, value2)

Tipo de valor devuelto: número o conjunto.

Tipo de argumento: t es un número y value1 y value2 son números o conjuntos.

Devuelve un valor que se interpola linealmente desde value1 a value2 a medida que t varía entre 0 y 1. Devuelve value1 si t <= 0. Devuelve value2 si t >= 1.

ease(t, value1, value2)

Tipo de valor devuelto: número o conjunto.

Tipo de argumento: t es un número y value1 y value2 son números o conjuntos.

Similar a linear con los mismos argumentos, excepto que la interpolación facilita la entrada y la salida para que la velocidad sea 0 en los puntos inicial y final. Este método permite obtener una animación suave.

ease(t, tMin, tMax, value1, value2)

Tipo de valor devuelto: número o conjunto.

Tipo de argumento: t, tMin y tMax son números y value1 y value2 son números o conjuntos.

Similar a linear con los mismos argumentos, excepto que la interpolación facilita la entrada y la salida para que la velocidad sea 0 en los puntos inicial y final. Este método permite obtener una animación suave.

easeIn(t, value1, value2)

Tipo de valor devuelto: número o conjunto.

Tipo de argumento: t es un número y value1 y value2 son números o conjuntos.

Similar a ease, excepto que la tangente es 0 solo en el lado de value2 y la interpolación es lineal en el lado de value1.

easeIn(t, tMin, tMax, value1, value2)

Tipo de valor devuelto: número o conjunto.

Tipo de argumento: t, tMin y tMax son números y value1 y value2 son números o conjuntos.

Similar a ease, excepto que la tangente es 0 solo en el lado de tMin y la interpolación es lineal en el lado de tMax.

easeOut(t, value1, value2)

Tipo de valor devuelto: número o conjunto.

Tipo de argumento: t es un número y value1 y value2 son números o conjuntos.

Similar a ease, excepto que la tangente es 0 solo en el lado de value1 y la interpolación es lineal en el lado de value2.

easeOut(t, tMin, tMax, value1, value2)

Tipo de valor devuelto: número o conjunto.

Tipo de argumento: t, tMin y tMax son números y value1 y value2 son números o conjuntos.

Similar a ease, excepto que la tangente es 0 solo en el lado de tMin y la interpolación es lineal en el lado de tMax.

Métodos de conversión de color (referencia de expresión)

Harry Frank ofrece un tutorial de vídeo en su sitio web graymachine que muestra cómo utilizar estos métodos de conversión de color para cambiar el color de las ondas producidas por el efecto Ondas de radio.

rgbToHsl(rgbaArray)

Tipo de valor devuelto: conjunto [4].

Tipo de argumento: rgbaArray es un conjunto [4].

Convierte un color del espacio RGBA al espacio HSLA. La entrada es un Conjunto de valores de los canales rojo, verde, azul y alfa normalizados, todos en el rango de 0,0 a 1,0. El valor obtenido es un Conjunto de valores de los canales de tono, saturación, luminosidad y alfa, también en el rango de 0,0 a 1,0. Ejemplo:

  rgbToHsl.effect("Change Color")("Color To Change")

hslToRgb(hslaArray)

Tipo de valor devuelto: conjunto [4].

Tipo de argumento: hslaArray es un conjunto [4].

Convierte un color del espacio HSLA al espacio RGBA. Esta conversión es el proceso inverso de la conversión realizada con el método rgbToHsl.

Otros métodos matemáticos (referencia de expresión)

degreesToRadians(degrees)

Tipo de valor devuelto: número.

Tipo de argumento: grados es un número.

Convierte los grados en radianes.

radiansToDegrees(radians)

Tipo de valor devuelto: número.

Tipo de argumento: radianes es un número.

Convierte los radianes en grados.

Atributos y métodos de Comp. (referencia de expresión)

layer(index)

Tipo de valor devuelto: capa, luz o cámara.

Tipo de argumento: index es un número.

Recupera la capa por el número (orden en el panel Línea de tiempo). Ejemplo: thisComp.layer(3)

layer(nombre)

Tipo de valor devuelto: capa, luz o cámara.

Tipo de argumento: name es una cadena.

Recupera la capa por el nombre. Los nombres se clasifican en función del nombre de capa o de origen, si no existe nombre de capa. Si existen nombres duplicados, After Effects utiliza el primero (posición más alta) del panel Línea de tiempo. Ejemplo:

  thisComp.layer("Solid 1")

layer(otherLayer, relIndex)

Tipo de valor devuelto: capa, luz o cámara.

Tipo de argumento: otherLayer es un objeto de capa y relIndex es un número.

Recupera la capa que está relIndex capas por encima o por debajo de otherLayer. Por ejemplo, thisComp.layer(thisLayer, 1).active devuelve verdadero si la siguiente capa en el panel Línea de tiempo está activa.

marcador

Tipo de valor devuelto: MarkerProperty.

Nota:

No puede acceder a un marcador de composición mediante un número de marcador. Si ha creado un proyecto en una versión anterior de After Effects que utiliza números de marcador de composición en expresiones, debe cambiarlos para utilizar marker.key(name). Debido a que el nombre predeterminado de un marcador de composición es un número, para la conversión de la referencia para que utilice el nombre solo suele ser necesario poner el número entre comillas.

marker.key(index)

Tipo de valor devuelto: MarkerKey.

Tipo de argumento: index es un número.

Devuelve el objeto MarkerKey del marcador con el índice especificado. El índice hace referencia al orden del marcador en el tiempo de composición, no al nombre del marcador. Por ejemplo, esta expresión devuelve el tiempo del primer marcador de composición:

  thisComp.marker.key(1).time

marker.key(name)

Tipo de valor devuelto: MarkerKey.

Tipo de argumento: name es una cadena.

Devuelve el objeto MarkerKey del marcador con el nombre especificado. El valor name es el nombre del marcador, tal como se escribió en el campo Comentario del cuadro de diálogo del marcador; por ejemplo, marker.key("1"). Para un marcador de composición, el nombre predeterminado es un número. Si más de un marcador en la composición tienen el mismo nombre, el método devuelve el marcador que sucede primero en el tiempo (en tiempo de composición). El valor de una clave de marcador es una cadena, no un número. Por ejemplo, esta expresión devuelve el tiempo del marcador de composición con el nombre “0”:

  thisComp.marker.key("0").time

marker.nearestKey(t)

Tipo de valor devuelto: MarkerKey.

Tipo de argumento: t es un número.

Devuelve el marcador que esté más cercano en el tiempo a t. Por ejemplo, esta expresión devuelve el tiempo del marcador de composición más cercano en el tiempo a 1 segundo:

  thisComp.marker.nearestKey(1).time

Esta expresión devuelve la hora del marcador de composición más cercana a la hora actual:

thisComp.marker.nearestKey(time).time

marker.numKeys

Tipo de valor devuelto: número.

Devuelve el número total de marcadores de composición en la composición.

numLayers

Tipo de valor devuelto: número.

Devuelve el número de capas de la composición.

activeCamera

Tipo de valor devuelto: cámara.

Devuelve el objeto Cámara de la cámara a través de la cual se procesa la composición en el fotograma actual. La cámara no es necesariamente por la que se mira en el panel Composición.

anchura

Tipo de valor devuelto: número.

Devuelve la anchura de la composición en píxeles.

Aplique la siguiente expresión a la propiedad Posición de una capa para centrar la capa en el fotograma de composición:

[thisComp.width/2, thisComp.height/2]

altura

Tipo de valor devuelto: número.

Devuelve al altura de la composición en píxeles.

duración

Tipo de valor devuelto: número.

Devuelve la duración de la composición en segundos.

ntscDropFrame

Tipo de valor devuelto: booleano.

Devuelve true si el código de tiempo está en el formato de fotograma eliminado. (After Effects CS 5.5 y posterior).

displayStartTime

Tipo de valor devuelto: número.

Devuelve el tiempo de inicio de la composición en segundos.

frameDuration

Tipo de valor devuelto: número.

Devuelve la duración de un fotograma, en segundos.

shutterAngle

Tipo de valor devuelto: número.

Devuelve el valor del ángulo del obturador de la composición en grados.

shutterPhase

Tipo de valor devuelto: número.

Devuelve la fase del obturador de la composición en grados.

bgColor

Tipo de valor devuelto: conjunto [4].

Devuelve el color de fondo de la composición.

pixelAspect

Tipo de valor devuelto: número.

Devuelve la proporción de aspecto de píxeles de la composición.

nombre

Tipo de valor devuelto: cadena.

Devuelve el nombre de la composición.

Atributo de región protegida con marcador de composición

La opción Región protegida para los marcadores de composición puede leerse con el atributo de marcador de composición protectedRegion.

Atributos y métodos de material de archivo (referencia de expresión)

Para utilizar un elemento de material de archivo del panel Proyecto como un objeto en una expresión, utilice el método global footage, como en footage("file_name"). También puede acceder a un objeto de material de archivo mediante el atributo source en una capa cuyo origen sea un elemento de material de archivo.

anchura

Tipo de valor devuelto: número.

Devuelve la anchura del elemento de material de archivo, en píxeles.

altura

Tipo de valor devuelto: número.

Devuelve la altura del elemento de material de archivo, en píxeles.

duración

Tipo de valor devuelto: número.

Devuelve la duración del elemento de material de archivo, en segundos.

frameDuration

Tipo de valor devuelto: número.

Devuelve la duración de un fotograma en el elemento de material de archivo, en segundos.

ntscDropFrame

Tipo de valor devuelto: booleano.

Devuelve true si el código de tiempo está en el formato de fotograma eliminado. (After Effects CS5.5 y posterior).

pixelAspect

Tipo de valor devuelto: número.

Devuelve la proporción de aspecto de píxeles del material de archivo.

nombre

Tipo de valor devuelto: cadena.

Devuelve el nombre del elemento de material de archivo tal y como se muestra en el panel Proyecto.

Atributos y métodos de subobjetos de capa (referencia de expresión)

Nota:

Para After Effects CC y CS6, el menú de lenguaje de expresión, “Layer Sub-objects”, “Layer General”, “Layer Properties”, “Layer 3D” y “Layer Space Transforms” se ha organizado en el submenú “Layer”.

origen

Tipo de valor devuelto: comp o material de archivo.

Devuelve el objeto Comp o Material de archivo de origen de la capa. El tiempo predeterminado se ajusta al tiempo del origen. Ejemplo: source.layer(1).position

sourceTime(t = time)

Tipo de valor devuelto: número.

Devuelve el origen de capa correspondiente al tiempo t. (After Effects CS5.5 y posterior).

sourceRectAtTime(t = time, includeExtents = false)

Tipo de retorno: objeto JavaScript con cuatro atributos: [arriba, izquierda, ancho, alto]. Las extensiones se aplican solo a las capas de formas, lo que aumenta el tamaño de los límites de las capas, según sea necesario, y las capas de texto de los párrafos (After Effects 15.1 y posteriores), donde se devuelven los límites del cuadro de párrafo. Ejemplo: myTextLayer.sourceRectAtTime().width.

effect(name)

Tipo de valor devuelto: Efecto.

Tipo de argumento: name es una cadena.

After Effects busca el efecto por su nombre en el panel Controles de efectos. El nombre puede ser el nombre predeterminado o el nombre definido por el usuario. Si varios efectos tienen el mismo nombre, se utiliza el efecto más cercano a la parte superior del panel Controles de efectos. Ejemplo:

  effect("Fast Blur")("Blurriness")

effect(index)

Tipo de valor devuelto: Efecto.

Tipo de argumento: index es un número.

After Effects busca el efecto en su índice del panel Controles de efectos, partiendo de 1 y continuando hacia abajo desde el principio.

mask(name)

Tipo de valor devuelto: Máscara.

Tipo de argumento: name es una cadena.

El nombre puede ser el nombre predeterminado o el nombre definido por el usuario. Si varias máscaras tienen el mismo nombre, se utiliza la primera (superior). Ejemplo:

  mask("Mask 1")

mask(index)

Tipo de valor devuelto: Máscara.

Tipo de argumento: index es un número.

After Effects busca la máscara por su índice en el panel Línea de tiempo, a partir de 1 hacia abajo desde el principio.

Atributos y métodos generales de capa (referencia de expresión)

anchura

Tipo de valor devuelto: número.

Devuelve la anchura de la capa, en píxeles. Es el mismo que source.width.

altura

Tipo de valor devuelto: número.

Devuelve la altura de la capa, en píxeles. Es el mismo que source.height.

index

Tipo de valor devuelto: número.

Devuelve el número de índice de la capa de la composición.

parent

Tipo de valor devuelto: capa, luz o cámara.

Devuelve el objeto Capa primario de la capa, si lo hay. Ejemplo: position[0] + parent.width

hasParent

Tipo de valor devuelto: booleano.

Devuelve verdadero si la capa tiene una capa primaria y falso si no la tiene.

Utilice el atributo hasParent para determinar si una capa tiene una capa primaria. Puede utilizar este atributo aunque la capa no tenga ninguna capa primaria en ese momento. Por ejemplo, la siguiente expresión indica que la capa a la que se aplica se ondulará según la posición de su capa primaria. Si la capa no dispone de capa primaria, se ondulará según su propia posición. Si la capa cuenta con capa primaria, el comportamiento de la capa cambia en consecuencia:

  idx = index;   if (hasParent) {     idx = parent.index;   }   thisComp.layer(idx).position.wiggle(5,20)

inPoint

Tipo de valor devuelto: número.

Devuelve el punto de entrada de la capa, en segundos.

Nota:

Por lo general, el valor de outPoint es mayor que el valor de inPoint. Sin embargo, si una capa se cambia en el tiempo, el valor de inPoint será mayor que el valor de outPoint. Del mismo modo, el valor de startTime puede ser mayor que el valor de inPoint.

outPoint

Tipo de valor devuelto: número.

Devuelve el punto de salida de la capa, en segundos.

startTime

Tipo de valor devuelto: número.

Devuelve la hora de inicio de la capa, en segundos.

hasVideo

Tipo de valor devuelto: booleano.

Devuelve verdadero si la capa tiene vídeo y falso si no lo tiene.

hasAudio

Tipo de valor devuelto: booleano.

Devuelve verdadero si la capa tiene audio y falso si no lo tiene.

active

Tipo de valor devuelto: booleano.

Devuelve true si el definidor de vídeo está activado para la capa y el tiempo actual está en el rango de Punto de inicio de la capa a Punto final de la capa; de lo contrario, devuelve false.

enabled

Tipo de valor devuelto: booleano.

Devuelve el valor true (verdadero) si el definidor de vídeo está activado para la capa; de lo contrario, se devuelve false (falso).

audioActive

Tipo de valor devuelto: booleano.

Devuelve true (verdadero) si el definidor de audio está activado para la capa y la hora actual está en el rango de Punto de inicio de la capa a Punto final de la capa; de lo contrario, devuelve false (falso).

sampleImage(point, radius = [.5, .5], postEffect=true, t=time)

Tipo de valor devuelto: conjunto [4].

Tipo de argumento: point es un Conjunto [2], radius es un Conjunto [2], postEffect es un valor booleano y t es un número.

Muestrea los valores de color y de canal alfa de una capa y devuelve el promedio del valor de peso de alfa de los píxeles dentro de la distancia especificada del punto como un conjunto: [ rojo, verde, azul, alfa]. Si postEffect es verdadero, los valores muestreados son para la capa después de que las máscaras y los efectos se hayan procesado. Si postEffect es falso, los valores muestreados son para la capa antes de que las máscaras y los efectos se hayan procesado. El valor de entrada point está en el espacio de capa, el punto [0,0] es el centro del píxel de la parte superior izquierda de la capa. El valor de entrada radius especifica la distancia horizontal y vertical desde el centro de la muestra hasta los bordes del rectángulo muestreado. El valor predeterminado muestrea un píxel.

Nota:

El parámetro postEffect hace referencia a los efectos aplicados directamente a la capa, no a los efectos aplicados indirectamente, como con una capa de ajuste.

Nota:

Si se utiliza sampleImage en una expresión, ya no se desactiva el multiprocesamiento.

Este ejemplo muestrea un rectángulo de 4 píxeles de ancho y 3 píxeles de alto, centrado alrededor de un punto 100 píxeles hacia abajo y hacia la derecha de la esquina superior izquierda de la capa:

  thisComp.layer(1).sampleImage([100, 100], [2, 1.5])

Dan Ebberts incluye un ejemplo de cómo utilizar el método sampleImage en su sitio web Motionscript.

Todd Kopriva proporciona instrucciones para el uso del método sampleImage y el efecto de control de puntos para controlar los colores de un punto especificado durante la corrección de color en su blog After Effects Region of Interest.

Atributos y métodos de las propiedades de capa (referencia de expresión)

Cuando se agregan máscaras, efectos, pintura o texto a una capa, After Effects agrega nuevas propiedades en el panel Línea de tiempo. Son muchas las propiedades que deberíamos incluir aquí, por ello recomendamos que utilice el icono espiral para conocer la sintaxis y poder hacer referencia a ellas en las expresiones.

anchorPoint

Tipo de valor devuelto: propiedad [2 ó 3].

Devuelve el valor de punto de anclaje de la capa en el sistema de coordenadas de la capa (espacio de capa).

position

Tipo de valor devuelto: propiedad [2 ó 3].

Devuelve el valor de posición de la capa, en el espacio de entorno si la capa no tiene primaria. Si la capa tiene una capa primaria, devuelve el valor de posición de la capa en el sistema de coordenadas de la capa primaria (en el espacio de capa de la capa primaria).

escala

Tipo de valor devuelto: propiedad [2 ó 3].

Devuelve el valor de escala de la capa, expresado como porcentaje.

rotación

Tipo de valor devuelto: propiedad.

Devuelve el valor de giro de la capa en grados. Para una capa 3D, devuelve el valor de giro z en grados.

opacidad

Tipo de valor devuelto: propiedad.

Devuelve el valor de opacidad de la capa, expresado como porcentaje.

audioLevels

Tipo de valor devuelto: propiedad [2].

Devuelve el valor de la propiedad Niveles de audio de la capa en decibelios. Se trata de un valor 2D; el primer valor representa el canal de audio izquierdo y el segundo valor al derecho. El valor no es la amplitud de la pista de audio del material de origen. Por el contrario, se trata del valor de la propiedad Niveles de audio, que se puede ver afectado por los fotogramas clave.

timeRemap

Tipo de valor devuelto: propiedad.

Devuelve el valor de la propiedad Reasignación de tiempo en segundos, si está habilitada.

marker.key(index)

Tipo de valor devuelto: MarkerKey.

Tipo de argumento: index es un número.

Devuelve el objeto MarkerKey del marcador de capa con el índice especificado.

marker.key(name)

Tipo de valor devuelto: MarkerKey.

Tipo de argumento: name es una cadena.

Devuelve el objeto MarkerKey del marcador de capa con el nombre especificado. El valor name es el nombre del marcador, tal como se escribió en el campo Comentario del cuadro de diálogo del marcador; por ejemplo, marker.key("ch1"). Si más de un marcador en una capa tienen el mismo nombre, este método devuelve el marcador que suceda en primer lugar (en el tiempo de capa). El valor de una clave de marcador es una cadena, no un número.

Esta expresión sobre una propiedad aumenta el valor de la propiedad de 0 a 100 entre dos marcadores identificados por el nombre:

  m1 = marker.key("Start").time;   m2 = marker.key("End").time;   linear(time, m1, m2, 0, 100);

marker.nearestKey(t)

Tipo de valor devuelto: MarkerKey.

Tipo de argumento: t es un número.

Devuelve el marcador de capa más cercano en el tiempo a t. Por ejemplo, esta expresión devuelve el tiempo del marcador en la capa más cercana en tiempo a 1 segundo:

  marker.nearestKey(1).time

Esta expresión devuelve la hora del marcador en la capa más cercana a la hora actual:

marker.nearestKey(time).time

marker.numKeys

Tipo de valor devuelto: número.

Devuelve el número total de marcadores en la capa.

nombre

Tipo de valor devuelto: cadena.

Devuelve el nombre de la capa.

Atributos y métodos en 3D de capas (referencia de expresión)

orientation

Tipo de valor devuelto: propiedad [3].

Devuelve el valor de orientación 3D, en grados, de una capa 3D.

rotationX

Tipo de valor devuelto: propiedad.

Devuelve el valor de giro x, en grados, de una capa 3D.

rotationY

Tipo de valor devuelto: propiedad.

Devuelve el valor de giro y, en grados, de una capa 3D.

rotationZ

Tipo de valor devuelto: propiedad.

Devuelve el valor de giro z, en grados, de una capa 3D.

lightTransmission

Tipo de valor devuelto: propiedad.

Devuelve el valor de la propiedad Transmisión de la luz de una capa 3D.

castsShadows

Tipo de valor devuelto: propiedad.

Devuelve un valor de 1.0 si la capa proyecta sombras.

acceptsShadows

Tipo de valor devuelto: propiedad.

Devuelve un valor de 1.0 si la capa acepta sombras.

acceptsLights

Tipo de valor devuelto: propiedad.

Devuelve un valor de 1.0 si la capa acepta luces.

ambient

Tipo de valor devuelto: propiedad.

Devuelve el valor del componente de ambiente como porcentaje.

difuso

Tipo de valor devuelto: propiedad.

Devuelve el valor del componente de difusión como porcentaje.

specular

Tipo de valor devuelto: propiedad.

Devuelve el valor del componente especular como porcentaje.

shininess

Tipo de valor devuelto: propiedad.

Devuelve el valor del componente de brillo como porcentaje.

metal

Tipo de valor devuelto: propiedad.

Devuelve el valor del componente de metal como porcentaje.

Métodos de transformación del espacio de capa (referencia de expresión)

Utilice los métodos de transformación de espacio de capa para transformar los valores de un espacio a otro, como del espacio de capa al espacio de entorno. Los métodos “de” transforman valores del espacio con nombre (composición o entorno) al espacio de capa. Los métodos “a” transforman valores del espacio de capa al espacio con nombre (composición o entorno). Cada método de transformación utiliza un argumento opcional para determinar el tiempo en el que se calcula la transformación; sin embargo, casi siempre se puede utilizar el tiempo actual (predeterminado).

Utilice los métodos de transformación “Vec” cuando desee transformar un vector de dirección, como la diferencia entre dos valores de posición. Utilice los métodos de transformación sencillos (no ”Vec”) para transformar un punto, como una posición. El espacio de composición (comp.) y de entorno es el mismo para las capas 2D. Sin embargo, en el caso de las capas 3D, el espacio de composición depende de la cámara activa y el espacio de entorno es independiente de la cámara.

toComp(point, t=time)

Tipo de valor devuelto: conjunto [2 ó 3].

Tipo de argumento: point es un conjunto [2 ó 3] y t es un número.

Transforma un punto del espacio de capa al espacio de composición.

fromComp(point, t=time)

Tipo de valor devuelto: conjunto [2 ó 3].

Tipo de argumento: point es un conjunto [2 ó 3] y t es un número.

Transforma un punto del espacio de composición al espacio de capa. El punto resultante en una capa 3D puede tener un valor distinto de cero aunque esté en el espacio de capa. Ejemplo: fromComp(thisComp.layer(2).position)

toWorld(point, t=time)

Tipo de valor devuelto: conjunto [2 ó 3].

Tipo de argumento: point es un conjunto [2 ó 3] y t es un número.

Transforma un punto del espacio de capa al espacio de entorno independiente de la vista. Ejemplo:

  toWorld.effect("Bulge")("Bulge Center")

Dan Ebberts incluye una expresión en su sitio web MotionScript que utiliza el método toWorld para orientar de forma automática una capa a lo largo únicamente de un eje. Por ejemplo, esto resulta útil a la hora de cambiar de posición los caracteres de lado a lado de modo que sigan a la cámara mientras permanecen verticales.

Rich Young ofrece un conjunto de expresiones en su sitio web AE Portal (en inglés) que utilizan el método toWorld para vincular una cámara y luz a una capa con el efecto Esfera CC.

fromWorld(point, t=time)

Tipo de valor devuelto: conjunto [2 ó 3].

Tipo de argumento: point es un conjunto [2 ó 3] y t es un número.

Transforma un punto del espacio de entorno al espacio de capa. Ejemplo: fromWorld(thisComp.layer(2).position)

Consulte Expresión de ejemplo: creación de un abombado entre dos capas para ver un ejemplo de cómo se puede utilizar este método.

toCompVec(vec, t=time)

Tipo de valor devuelto: conjunto [2 ó 3].

Tipo de argumento: vec es un conjunto [2 ó 3] y t es un número.

Transforma un vector del espacio de capa al espacio de composición. Ejemplo: toCompVec([1,0])

fromCompVec(vec, t=time)

Tipo de valor devuelto: conjunto [2 ó 3].

Tipo de argumento: vec es un conjunto [2 ó 3] y t es un número.

Transforma un vector del espacio de composición al espacio de capa. Ejemplo (capa 2D):

  dir=sub(position, thisComp.layer(2).position);   fromCompVec(dir)

toWorldVec(vec, t=time)

Tipo de valor devuelto: conjunto [2 ó 3].

Tipo de argumento: vec es un conjunto [2 ó 3] y t es un número.

Transforma un vector del espacio de capa al espacio de entorno. Ejemplo:   p1 = effect("Eye Bulge 1")("Bulge Center");    p2 = effect("Eye Bulge 2")("Bulge Center");     toWorld(sub(p1, p2))

fromWorldVec(vec, t=time)

Tipo de valor devuelto: conjunto [2 ó 3].

Tipo de argumento: vec es un conjunto [2 ó 3] y t es un número.

Transforma un vector del espacio de entorno al espacio de capa. Ejemplo: fromWorld(thisComp.layer(2).position)

fromCompToSurface(point, t=time)

Tipo de valor devuelto: conjunto [2].

Tipo de argumento: point es un conjunto [2 ó 3] y t es un número.

Proyecta un punto situado en el espacio de la composición en un punto de la superficie de la capa (valor z cero) en la ubicación donde aparece cuando se ve desde la cámara activa. Este método es útil para definir puntos de control de efecto. Utilícelo solo con capas 3D.

Atributos y métodos de cámara (referencia de expresión)

Los objetos Cámara tienen los mismos atributos y métodos que los objetos Capa, a excepción de source, effect, mask, width, height, anchorPoint, scale, opacity, audioLevels, timeRemap y todas las propiedades materiales.

pointOfInterest

Tipo de valor devuelto: propiedad [3].

Devuelve el punto de valores de interés de una cámara en el espacio de entorno.

zoom

Tipo de valor devuelto: propiedad.

Devuelve los valores de zoom de una cámara en píxeles.

A continuación encontrará una expresión para la propiedad Escala de una capa que mantiene el tamaño relativo de la capa en el fotograma, al mismo tiempo que cambia la posición z (profundidad) de una capa o el valor de zoom de una cámara:

  cam = thisComp.activeCamera;    distance = length(sub(position, cam.position));    scale * distance / cam.zoom;

depthOfField

Tipo de valor devuelto: propiedad.

Devuelve 1 si la propiedad Profundidad de campo de una cámara está activada, o bien, devuelve 0 si esta propiedad está desactivada.

focusDistance

Tipo de valor devuelto: propiedad.

Devuelve el valor de distancia de enfoque de una cámara, en píxeles.

aperture

Tipo de valor devuelto: propiedad.

Devuelve el valor de apertura de una cámara, en píxeles.

blurLevel

Tipo de valor devuelto: propiedad.

Devuelve el valor de nivel de desenfoque de una cámara como porcentaje.

active

Tipo de valor devuelto: booleano.

Devuelve true si la cámara es la cámara activa para la composición en el momento actual: el definidor de vídeo  para la capa de la cámara está activado, el tiempo actual está en el rango de Punto de inicio de la capa a Punto final de la capa y es la primera (superior) capa de la cámara que se incluye en el panel Línea de tiempo. Si no es así, devuelve el valor falso.

Atributos y métodos de iluminación (referencia de expresión)

Los objetos Iluminación tienen los mismos atributos y métodos que los objetos Capa, a excepción de source, effect, mask, width, height, anchorPoint, scale, opacity, audioLevels, timeRemap y todas las propiedades materiales.

pointOfInterest

Tipo de valor devuelto: propiedad [3].

Devuelve el punto de valores de interés para una luz en el espacio de entorno.

intensidad

Tipo de valor devuelto: propiedad.

Devuelve los valores de intensidad de una luz como porcentaje.

color

Tipo de valor devuelto: propiedad [4].

Devuelve el valor de color de una luz.

coneAngle

Tipo de valor devuelto: propiedad.

Devuelve el ángulo de cono de una luz, en grados.

coneFeather

Tipo de valor devuelto: propiedad.

Devuelve el valor de calado de cono de una luz como porcentaje.

shadowDarkness

Tipo de valor devuelto: propiedad.

Devuelve el valor de oscuridad de la sombra de una luz como porcentaje.

shadowDiffusion

Tipo de valor devuelto: propiedad.

Devuelve el valor de difusión de la sombra de una luz, en píxeles.

David Van Brink incluye un artículo informativo y un proyecto de ejemplo en su blog omino pixel que muestra cómo utilizar expresiones con luces.

Atributos y métodos de efectos (referencia de expresión)

active

Tipo de valor devuelto: booleano.

Devuelve true (verdadero) si el efecto está activado (el definidor Efecto está seleccionado).

param(name)

Tipo de valor devuelto: propiedad.

Tipo de argumento: name es una cadena.

Devuelve una propiedad de un efecto. Los puntos de control de efecto están siempre en el espacio de capa. Ejemplo:

  effect("Bulge").param("Bulge Height")

param(index)

Tipo de valor devuelto: propiedad.

Tipo de argumento: index es un número.

Devuelve una propiedad de un efecto. Los puntos de control de efecto están siempre en el espacio de capa. Por ejemplo, effect("Bulge").param(4) devuelve la propiedad Alto de abombado.

Atributos y métodos de máscaras (referencia de expresión)

Nota:

Puede vincular propiedades Trazado de máscara a otras propiedades de trazado (como capa de forma o trazos de pincel) pero no es posible acceder a las propiedades para realizar una manipulación numérica directa a través de expresiones.

maskOpacity

Tipo de valor devuelto: propiedad.

Devuelve el valor de opacidad de una máscara como porcentaje.

maskFeather

Tipo de valor devuelto: propiedad.

Devuelve el valor de calado de una máscara, en píxeles.

maskExpansion

Tipo de valor devuelto: propiedad.

Devuelve el valor de expansión de una máscara, en píxeles.

Invertir

Tipo de valor devuelto: booleano.

Devuelve verdadero si se invierte la máscara y falso si no se invierte.

Atributos y métodos de propiedades (referencia de expresión)

valor

Tipo de valor devuelto: número, Conjunto o Cadena.

Devuelve el valor de una propiedad en el momento actual.

valueAtTime(t)

Tipo de valor devuelto: número o conjunto.

Tipo de argumento: t es un número.

Devuelve el valor de una propiedad en el tiempo especificado, en segundos.

Por ejemplo, para elegir aleatoriamente un valor de propiedad para cada fotograma entre un conjunto de cuatro valores, defina cuatro valores como fotogramas clave a 0, 1, 2 y 3 segundos y, a continuación, aplique la siguiente expresión a la propiedad:

  valueAtTime(random(4))

Nota:

Dan Ebberts ofrece más ejemplos y técnicas para el uso de los métodos valueAtTime y velocityAtTime en su sitio web MotionScript (en inglés).

Velocidad

Tipo de valor devuelto: número o conjunto.

Devuelve el valor de la velocidad dirigida temporal en el tiempo actual. Para propiedades espaciales, como Posición, devuelve el valor del vector tangente. El resultado es la misma dimensión que la propiedad.

velocityAtTime(t)

Tipo de valor devuelto: número o conjunto.

Tipo de argumento: t es un número.

Devuelve el valor de la velocidad dirigida temporal en el tiempo especificado.

Velocidad

Tipo de valor devuelto: número.

Devuelve un valor de velocidad positiva 1D igual a la velocidad a la que la propiedad cambia en el tiempo predeterminado. Este elemento solo puede utilizarse para propiedades espaciales.

speedAtTime(t)

Tipo de valor devuelto: número.

Tipo de argumento: t es un número.

Devuelve el valor de la velocidad espacial en el tiempo especificado.

wiggle(freq, amp, octaves=1, amp_mult=.5, t=time)

Tipo de valor devuelto: número o conjunto.

Tipo de argumento: freq, amp, octaves, amp_mult y t son números.

Agita (ondula) de manera aleatoria el valor de la propiedad.

El valor freq es la frecuencia en ondulaciones por segundo.

El valor amp es la amplitud en unidades de la propiedad a la que se aplica.

El valor octaves es el número de octavas de ruido para agregar de forma conjunta. Este valor controla el grado de detalle de la ondulación. Haga que este valor sea superior al valor predeterminado 1 para incluir frecuencias más altas o más bajas e incorporar armonía de amplitud en la ondulación.

El valor amp_mult es la cantidad por la que se multiplica amp para cada octava. Este valor controla la rapidez de eliminación de armonía. El valor predeterminado es 0,5; acérquelo más a 1 para que la armonía se agregue con la misma amplitud que la frecuencia base, o más cerca de 0 para agregarlo con menos detalle.

El valor t es el tiempo de inicio base. El valor predeterminado se ajusta al tiempo actual. Use este parámetro si desea que la salida sea una ondulación del valor de propiedad muestreada en un tiempo distinto.

Ejemplo: position.wiggle(5, 20, 3, .5) produce unas 5 ondulaciones por segundo con un tamaño medio de unos 20 píxeles. Además de la ondulación principal, se producen dos niveles más de ondulación detallada con una frecuencia de 10 y 20 ondulaciones por segundo, y tamaños de 10 y 5 píxeles, respectivamente.

Este ejemplo, en una propiedad bidimensional como Escala, ondula ambas dimensiones con la misma cantidad:

  v = wiggle(5, 10);   [v[0], v[0]]

Este ejemplo, en una propiedad bidimensional, ondula solo el eje y:

  freq = 3;   amp = 50;   w = wiggle(freq,amp);   [value[0],w[1]];

Dan Ebberts proporciona una expresión de ejemplo y una explicación detallada en su sitio web MotionScript que muestra cómo utilizar el parámetro de tiempo del método wiggle para crear una animación en bucle.

temporalWiggle(freq, amp, octaves=1, amp_mult=.5, t=time)

Tipo de valor devuelto: número o conjunto.

Tipo de argumento: freq, amp, octaves, amp_mult y t son números.

Muestrea la propiedad en un tiempo ondulado. El valor freq representa la frecuencia en ondulaciones por segundo, amp representa la amplitud en unidades de la propiedad a la que se aplica, octaves es el número de octavas de ruido que se van a sumar, amp_mult es la cantidad por la que amp se multiplica por cada octava y t es el tiempo de inicio base. Para que esta función tenga sentido, la propiedad que muestrea debe estar animada, dado que la función solo modifica el tiempo de muestreo, no el valor. Ejemplo: scale.temporalWiggle(5, .2)

smooth(width=.2, samples=5, t=time)

Tipo de valor devuelto: número o conjunto.

Tipo de argumento: width, samples y t son números.

Suaviza los valores de la propiedad a lo largo del tiempo, convirtiendo breves desviaciones largas del valor en pequeñas desviaciones distribuidas de forma más regular. Esto se consigue aplicando un filtro de cuadro al valor de la propiedad en el momento especificado. El valor width es el intervalo de tiempo (en segundos) sobre el cual se realiza el promedio del filtro. El valorsamples es el número de muestras diferenciadas espaciadas a partes iguales en el tiempo. Utilice un valor mayor para una obtener suavidad mayor (aunque el rendimiento disminuirá). Por lo general, se recomienda que el parámetro samples sea un número impar para que el valor en el tiempo actual se incluya en el promedio. Ejemplo: position.smooth(.1, 5)

loopIn(type="cycle", numKeyframes=0)

Tipo de valor devuelto: número o conjunto.

Crea un bucle de un segmento de tiempo que se mide desde el primer fotograma clave de la capa hacia delante, hacia el punto de salida de la capa. El bucle se reproduce hasta el punto de inicio de la capa. El valor numKeyframes determina qué segmento se repite: este segmento es la porción de la capa desde el primer fotograma clave hasta el fotograma clave numKeyframes+1 fotograma clave. Por ejemplo, loopIn("cycle", 3) crea un bucle del segmento limitado por los fotogramas clave primero y cuarto. El valor predeterminado 0 significa que se crea un bucle de todos los fotogramas clave.

Si lo desea puede utilizar los métodos de bucle de fotogramas clave para repetir una serie de fotogramas clave. Puede usar estos métodos en la mayoría de las propiedades. Las excepciones incluyen propiedades que no se pueden expresar mediante valores numéricos sencillos en el panel Línea de tiempo como, por ejemplo, la propiedad Texto de origen, las propiedades de forma de trazado y la propiedad Histograma para el efecto Niveles. Los fotogramas clave o los valores de duración que son demasiado grandes se recortan al máximo valor permitido. Los valores que son demasiado pequeños generan un bucle constante.

 

Tipo de bucle

resultado

ciclo

(predeterminado) Repite el segmento especificado.

pingpong

Repite el segmento especificado, alternando entre adelante y atrás.

desplazamiento

Repite el segmento especificado, pero desplaza cada ciclo según la diferencia en el valor de la propiedad al principio y al final del segmento, multiplicada por el número de veces que se ha repetido el segmento.

continuar

No repite el segmento especificado, pero continúa animando una propiedad según la velocidad dirigida en el primer o el último fotograma clave. Por ejemplo, si el último fotograma clave de la propiedad Escala de una capa es 100%, la capa continúa la escala desde 100% hasta el punto final, en lugar de volver directamente hasta el punto final. Este tipo no acepta un argumento fotogramas clave o duración.

loopOut(type="cycle", numKeyframes=0)

Tipo de valor devuelto: número o conjunto.

Crea un bucle de un segmento de tiempo que se mide desde el último fotograma clave de la capa hacia atrás, hacia el punto de inicio de la capa. El bucle se reproduce hasta el punto final de la capa. El número especificado de fotogramas clave determina el segmento que formará el bucle. El valor numKeyframes define el número de segmentos de fotogramas clave que forman el bucle; el rango especificado se mide hacia atrás desde el último fotograma clave. Por ejemplo, loopOut(“cycle”, 1) repite el segmento delimitado por los fotogramas clave último y penúltimo. El valor predeterminado 0 significa que se crea un bucle de todos los fotogramas clave. Para obtener más información, consulte la entrada para loopIn.

David Van Brink proporciona un artículo instructivo y un proyecto de muestra en su blogde píxeles omino quemuestrancómo utilizar el efectos de Eco y Animación y el método loopOut para animar un conjunto de bacterias estilizadas en movimiento.

loopInDuration(type="cycle", duration=0)

Tipo de valor devuelto: número o conjunto.

Crea un bucle de un segmento de tiempo que se mide desde el primer fotograma clave de la capa hacia delante, hacia el punto de salida de la capa. El bucle se reproduce hasta el punto de inicio de la capa. La duración especificada determina el segmento que formará el bucle. El valor duration define el número de segundos de composición de un segmento que forman el bucle; el rango especificado se mide desde el primer fotograma clave. Por ejemplo, loopInDuration(“cycle”, 1) crea un bucle del primer segundo de toda la animación. El valor predeterminado 0 significa que el segmento que forma el bucle comienza en el Punto de salida de la capa. Para obtener más información, consulte la entrada para loopIn.

loopOutDuration(type="cycle", duration=0)

Tipo de valor devuelto: número o conjunto.

Crea un bucle de un segmento de tiempo que se mide desde el último fotograma clave de la capa hacia atrás, hacia el punto de inicio de la capa. El bucle se reproduce hasta el punto final de la capa. La duración especificada determina el segmento que formará el bucle. El valor duration define el número de segundos de composición de un segmento que forman el bucle; el rango especificado se mide hacia atrás desde el último fotograma clave. Por ejemplo, loopOutDuration(“cycle”, 1) crea un bucle del último segundo de toda la animación. El valor predeterminado 0 significa que el segmento que forma el bucle comienza en el punto de entrada de la capa. Para obtener más información, consulte la entrada para loopIn.

key(index)

Tipo de valor devuelto: Clave o MarkerKey.

Tipo de argumento: index es un número.

Devuelve el objeto Clave o MarkerKey por el número. Por ejemplo, key(1) devuelve el primer fotograma clave.

key(markerName)

Tipo de valor devuelto: MarkerKey.

Tipo de argumento: markerName es una cadena.

Devuelve el objeto MarkerKey con su nombre. Utilícelo solo en propiedades de marcador.

nearestKey(t)

Tipo de valor devuelto: Clave o MarkerKey.

Devuelve el objeto Clave o MarkerKey más cercano a un tiempo designado.

numKeys

Tipo de valor devuelto: número.

Devuelve el número de fotogramas clave de una propiedad. Devuelve el número de marcadores de una propiedad de marcador.

Nota:

Si utiliza el comando Separar dimensiones para dividir las dimensiones de la propiedad Posición en componentes individuales, el número de fotogramas clave cambia, por lo que también cambia el valor devuelto por este método.

propertyGroup(countUp = 1)

Tipo de valor devuelto: grupo.

Devuelve un grupo de propiedades relacionadas con la propiedad en la que se ha escrito la expresión. Por ejemplo, si agrega la expresión propertyGroup(1) a la propiedad Rotación de un trazo de pincel, la expresión se aplica al grupo de propiedades de Transformación, que contiene la propiedad Rotación. Si, en su lugar, agrega propertyGroup(2), la expresión se aplica al grupo de propiedades de Pincel. Este método le permite establecer relaciones independientes de los nombres en la jerarquía de propiedades. El método resulta especialmente útil cuando se duplican propiedades que contienen expresiones.

El método numProperties para propertyGroup devuelve el número de propiedades en el grupo de propiedades.

Este ejemplo devuelve el número de propiedades en el grupo que contiene la propiedad en la que se escribe la expresión:

thisProperty.propertyGroup(1).numProperties

propertyIndex

Tipo de valor devuelto: número.

Devuelve el índice de una propiedad en relación con otras propiedades de su grupo de propiedades, incluidos los grupos de propiedades de máscaras, efectos, animadores de texto, selectores, formas, rastreadores y puntos de rastreo.

nombre

Tipo de valor devuelto: cadena.

Devuelve el nombre de la propiedad o el grupo de propiedades.

Ejemplo: Animación con el método propertyGroup y el atributo propertyIndex

Valores de propertyGroup relativos a la propiedad Posición de un trazo de pincel
Valores de propertyGroup relativos a la propiedad Posición de un trazo de pincel

A. propertyGroup(4) B. propertyGroup(3) C. propertyGroup(2) D. propertyGroup(1) E. El valor propertyIndex de Posición es 2; el valor propertyIndex de Rotación es 4. 

En este ejemplo, el método propertyGroup de cada trazo de pincel se aplica al grupo de propiedades Pincel porque este grupo está dos grupos de propiedades por encima de la propiedad Rotación. El atributo propertyIndex de cada trazo de pincel devuelve un valor único para cada trazo de pincel. El valor resultante se multiplica por el tiempo y por 200 y se aplica a cada valor de giro, lo que hace girar cada trazo de pincel de manera diferente, creando trazos de pintura en espiral:  propertyGroup(2).propertyIndex * time * 200

  propertyGroup(2).propertyIndex * time * 200
Animación de un trazo de pincel con una expresión
Animación de un trazo de pincel con una expresión

Propiedades del proyecto (referencia de expresión)

Método de expresión:

  • Objeto thisProject thisProject : representa el proyecto que contiene la expresión.

Tipo:

objeto de proyecto; solo lectura

  • Atributo fullPath del proyecto thisProject.fullPath : la ruta de acceso al archivo absoluto de la plataforma, incluido el nombre de archivo del proyecto. Si el proyecto no se ha guardado, devuelve una cadena vacía.
Tipo:
cadena; solo lectura.
  • Atributo bitsPerChannel del proyecto thisProject.bitsPerChannel: profundidad del color del proyecto en bits por canal (bpc), como se establece en Ajustes del proyecto > Administración de color. Son uno de 8, 16 o 32. Equivalente al proyecto del script atributo app.project.bitsPerChannel.
Tipo:
número; solo lectura.
  • Atributo linearBlending del proyecto thisProject.linearBlending: el estado de la opción Fusionar colores usando gamma 1.0 en Ajustes del proyecto > Administración de color. Equivalente al atributo del proyecto del script app.project.linearBlending.
Tipo:
booleano; solo lectura.

Atributos y métodos clave (referencia de expresión)

Al acceder a un objeto Clave, puede obtener las propiedades de tiempo, índice y valor de él. Por ejemplo, la siguiente expresión proporciona el valor del tercer fotograma clave Posición: position.key(3).value.

La siguiente expresión, cuando se escribe en una propiedad Opacidad con fotogramas clave, ignora los valores de fotograma clave y solo utiliza la ubicación de los fotogramas clave en el tiempo para determinar dónde debe producirse un destello:   d = Math.abs(time - nearestKey(time).time);   easeOut(d, 0, .1, 100, 0)

  d = Math.abs(time - nearestKey(time).time); 
  easeOut(d, 0, .1, 100, 0)

valor

Tipo de valor devuelto: número o conjunto.

Devuelve el valor del fotograma clave.

tiempo

Tipo de valor devuelto: número.

Devuelve el tiempo del fotograma clave.

index

Tipo de valor devuelto: número.

Devuelve el índice del fotograma clave.

Atributos MarkerKey (referencia de expresión)

Puede tener acceso a valores para marcadores de composición y de capa con los mismos métodos. Acceda a los marcadores de capa mediante el objeto thislayer.marker; acceda a los marcadores de composición mediante el objeto thisComp.marker.

Para las expresiones, los marcadores son un tipo especial de Objeto clave, de modo que puede utilizar métodos como nearestKey(time) para acceder a los marcadores y estos también disponen de los atributos tiempo e índice. El atributo índice no es el número (nombre) del marcador, sino el número de índice del fotograma clave que representa el orden del marcador en la regla de tiempo.

Las expresiones tienen acceso a todos los valores de un marcador que puede establecer en el cuadro de diálogo Marcador de composición o Marcador de capa. Esta expresión en la propiedad Texto de origen de una capa de texto muestra el tiempo, la duración, el índice, el comentario (nombre), el capítulo, la URL, el destino de fotograma y el nombre de punto de partida del marcador de capa más cercano al tiempo actual, además de si el marcador es para un punto de partida de evento:

  m = thisLayer.marker.nearestKey(time);  
  s = "time:" + timeToCurrentFormat(m.time) + "\r" +  
      "duration: " + m.duration + "\r" +  
      "key index: " + m.index + "\r" +  
      "comment:" + m.comment + "\r" +  
      "chapter:" + m.chapter + "\r" +  
      "URL:" + m.url + "\r" +  
      "frame target: " + m.frameTarget + "\r" +  
      "cue point name: " + m.cuePointName + "\r" +  
      "Event cue point? " + m.eventCuePoint + "\r";  
  for (param in m.parameters){  
       s += "parameter: " + param + " value: " + m.parameters[param] + "\r";  
  } 
  s

Debido a que los metadatos XMP de un elemento de material de archivo se pueden convertir en marcadores de capa para una capa basada en ese elemento, las expresiones pueden interactuar con metadatos XMP. Para obtener más información, consulte Metadatos XMP en After Effects.

Dan Ebberts ofrece un tutorial en el Adobe After Effects Developer Center donde se incluye un ejemplo del uso de metadatos XMP con expresiones.

duración

Tipo de valor devuelto: número.

Duración en segundos del marcador.

comment

Tipo de valor devuelto: cadena.

Contenidos del campo Comentario en el cuadro de diálogo de marcador.

chapter

Tipo de valor devuelto: cadena.

Contenidos del campo Capítulo en el cuadro de diálogo de marcador.

url

Tipo de valor devuelto: cadena.

Contenido del campo URL en el cuadro de diálogo de marcador.

frameTarget

Tipo de valor devuelto: cadena.

Contenidos del campo Destino de fotograma en el cuadro de diálogo de marcador.

eventCuePoint

Tipo de valor devuelto: booleano.

Ajuste del tipo punto de partida en el cuadro de diálogo de marcador. Verdadero para Evento; falso para Navegación.

cuePointName

Tipo de valor devuelto: cadena.

Contenidos del campo Nombre del punto de partida en el cuadro de diálogo de marcador.

parámetros

Tipo de valor devuelto: conjuntos asociados de valores de Cadena.

Contenidos de los campos Nombre de parámetro y Valor de parámetro en el cuadro de diálogo de marcador.

Por ejemplo, si tiene un parámetro denominado “background color”, puede utilizar la siguiente expresión para acceder a su valor en el marcador más cercano:

  thisComp.marker.nearestKey(time).parameters["background color"]

MarkerValue.protectedRegion (referencia de expresión)

Método de expresión:

thisComp.marker.key(index).protectedRegion

Descripción:

Cuando es verdadero (valor “true”), el marcador de composición se comporta como una región protegida.

Tipo:

booleano; solo lectura.

Acceso de expresión a los puntos de los trazados en formas, máscaras y trazos de pincel (referencia de expresión)

Puede utilizar expresiones para leer y escribir las coordenadas x e y de puntos de trazado o vértices para:

  • Máscaras de capas
  • Formas Bézier
  • Trazos de pincel en los efectos de la pintura y Pincel tipo rotoscopia y Perfeccionar borde.

Métodos de expresión:

  • Método Path points(): {pathProperty}.points(t = time) Obtención de las coordenadas x,y de todos los puntos de un trazado. Las coordenadas de los puntos de trazado de máscara de capa son relativas al origen de la capa en el rincón superior izquierdo. Las coordenadas correspondientes a los puntos de trazado de forma Bézier son relativas al punto de anclaje del grupo de formas de trazado. Por ejemplo: Forma 1 > Punto de anclaje. Las coordenadas de los puntos de trazado de trazos de pincel son relativas al inicio del trazado; el primer punto es [0,0]. De forma opcional, especifique el tiempo en el que se muestra el trazado. Este método se puede pasar al método createPath() para el parámetro de los puntos al duplicar un trazado.

Parámetros:

t Número, opcional. El tiempo de composición (en segundos) en el que se muestra el trazado. El valor predeterminado es el tiempo (la hora actual).

Valores devueltos:

Conjunto de conjuntos de pares de números, redondeado a la cuarta cifra decimal.

  • Método inTangents() del trazado: {pathProperty}.inTangents(t = time) Obtención de las coordenadas x,y del selector de tangentes de entrada para todos los puntos de un trazado. Los valores de coordenadas de tangente se desplazan con respecto a las coordenadas del punto principal. Es decir, el valor [0,0] no crea ninguna curvatura en la tangente de entrada. Este método se puede pasar al método createPath() para el parámetro inTangents al duplicar un trazado. De forma opcional, especifique el tiempo en el que se muestra el trazado.

Parámetros:

t Número, opcional. El tiempo de composición (en segundos) en el que se muestra el trazado. El valor predeterminado es el tiempo (la hora actual).

Valores devueltos:

Conjunto de conjuntos de pares de números, redondeado a la cuarta cifra decimal.

  • Método outTangents() del trazado: {pathProperty}.outTangents(t = time) Obtención de las coordenadas x,y del selector de tangentes de salida para todos los puntos de un trazado. Los valores de coordenadas de tangente se desplazan con respecto a las coordenadas del punto principal: el valor [0,0] no crea ninguna curvatura en la tangente de salida. Este método se puede pasar al método createPath() para el parámetro outTangents al duplicar un trazado. De forma opcional, especifique el tiempo en el que se muestra el trazado.

Parámetros:

t Número, opcional. El tiempo de composición (en segundos) en el que se muestra el trazado. El valor predeterminado es el tiempo (la hora actual).

Valores devueltos:

Conjunto de conjuntos de pares de números, redondeado a la cuarta cifra decimal.

  • Método Path isClosed(){pathProperty}.isClosed()Determina si el trazado es abierto o cerrado. Devuelve verdadero si el trazado es cerrado y falso si el trazado es abierto. Este método se puede pasar al método createPath() para el parámetro is_closed al duplicar un trazado.

Parámetros:

Ninguno

Valores devueltos:

Booleano

  • Método Path pointOnPath() {pathProperty}.pointOnPath(percentage = 0.5, t = time) Obtención de las coordenadas x,y de un punto arbitrario a lo largo de un trazado. El punto se expresa como porcentaje de la longitud del arco del trazado. 0% es el primer punto, y 100% es el último punto. Cuando el trazado es cerrado, 0% y 100% devuelven las mismas coordenadas. El porcentaje de la longitud del arco se utiliza para garantizar una velocidad uniforme a lo largo del trazado. Excepto 0 % y 100 %, los porcentajes no se correlacionan necesariamente con los puntos bézier en el trazado: para un trazado con tres puntos, el segundo punto no estará necesariamente en el 50 %. Esto también significa que, para un trazado abierto y un trazado cerrado con puntos idénticos, el porcentaje a lo largo del trazado abierto no devolverá las mismas coordenadas que el trazado cerrado debido a la longitud adicional del trazado cerrado. De forma opcional, especifique el tiempo en el que se muestra el trazado.

Parámetros:

porcentaje Número entre 0 y 1, opcional. El porcentaje a lo largo de la longitud del arco del trazado para la muestra. Los valores inferiores a 0 y superiores a 1 se recortan. El valor predeterminado es 0,5.
t Número, opcional. El tiempo de composición (en segundos) en el que se muestra el trazado. El valor predeterminado es el tiempo (la hora actual).

Valores devueltos:

Un conjunto de pares de números.

  • Método Path tangentOnPath() {pathProperty}.tangentOnPath(percentage = 0.5, t = time)  Obtención de las coordenadas x,y calculadas del selector de tangentes de salida para un punto arbitrario a lo largo de un trazado. Los valores de coordenadas de tangente se desplazan con respecto a las coordenadas del punto principal: el valor [0,0] no crea ninguna curvatura en la tangente de salida. El selector de tangentes de entrada es el inverso de este valor (multiplica las coordenadas x,y por -1). El punto principal de la tangente se expresa como porcentaje de la longitud del arco del trazado. Las coordenadas que tangentOnPath() devuelve se calculan a partir de su punto principal y difieren de las que devuelve outTangents() si también existe un punto definido por el usuario en ese porcentaje de la longitud del arco. La distancia lineal entre las coordenadas del punto principal y las coordenadas de tangentOnPath() siempre es 1. Se pueden multiplicar las coordenadas devueltas para crear una tangente más larga. Por ejemplo: (myPath.tangentOnPath() * 100). De forma opcional, especifique el tiempo en el que se muestra el trazado.

Parámetros:

porcentaje Número entre 0 y 1, opcional. El porcentaje a lo largo de la longitud del arco del trazado para la muestra. Los valores inferiores a 0 y superiores a 1 se recortan. El valor predeterminado es 0,5.
t Número, opcional. El tiempo de composición (en segundos) en el que se muestra el trazado. El valor predeterminado es el tiempo (la hora actual).

Valores devueltos:

Un conjunto de pares de números.

  • Método Path normalOnPath() {pathProperty}.normalOnPath(percentage = 0.5, t = time)  Obtención de las coordenadas x,y calculadas de la normal para un punto arbitrario a lo largo de un trazado. Los valores de coordenadas de normales se desplazan con respecto a las coordenadas del punto principal: el valor [0,0] es el mismo que el punto principal. El punto principal de la normal se expresa como porcentaje de la longitud del arco del trazado. Lea la descripción del método pointOnPath() para obtener más información sobre el porcentaje de la longitud del arco. Las coordenadas que normalOnPath() devuelve se calculan a partir de su punto principal. La distancia lineal entre las coordenadas del punto principal y las coordenadas de normalOnPath() siempre es 1. Se pueden multiplicar las coordenadas devueltas para crear una normal más larga. Por ejemplo: (myPath.normalOnPath() * 100). De forma opcional, especifique el tiempo en el que se muestra el trazado.

Parámetros:

porcentaje Número entre 0 y 1, opcional. El porcentaje a lo largo de la longitud del arco del trazado para la muestra. Los valores inferiores a 0 y superiores a 1 se recortan. El valor predeterminado es 0,5.
t Número, opcional. El tiempo de composición (en segundos) en el que se muestra el trazado. El valor predeterminado es el tiempo (la hora actual).

Valores devueltos:

Un conjunto de pares de números.

  • Método Path createPath() {pathProperty}.createPath(points = [[0,0], [100,0], [100,100], [0,100]], inTangents = [], outTangents = [], is_closed = true) Creación de un objeto de trazado a partir de un conjunto de puntos y tangentes. Los puntos están definidos por un conjunto de conjuntos de pares de números que representan sus coordenadas x,y. La longitud del conjunto debe ser 1 como mínimo y puede tener cualquier longitud mayor. Los selectores de tangentes de entrada y de salida de los puntos están definidos por un conjunto de conjuntos de pares de números que representan sus coordenadas x,y de desfase. La longitud de los conjuntos de tangentes debe ser exactamente igual que el parámetro de puntos. Los valores de coordenadas de tangente se desplazan con respecto a las coordenadas del punto principal: el valor [0,0] no crea ninguna curvatura en la tangente de entrada. Los métodos points(), inTangents()outTangents()isClosed() de un trazado se pueden pasar a los parámetros points, inTangents, outTangents e is_closed para duplicar un trazado. Los puntos y las tangentes del mismo trazado se puede pasar a createPath() con modificaciones para generar un resultado diferente. Por ejemplo, la siguiente expresión eliminará curvas de Mask 1 al no pasar los parámetros inTangents ni outTangents:

myMask = mask("Mask 1").path;
myMask.createPath(myMask.points());

En el ejemplo siguiente, se pasan los puntos y las tangentes de Mask 1 y los convierte en un trazado abierto al establecer is_closed como falso:

myMask = mask("Mask 1").path;
myMask.createPath(myMask.points(), myMask.inTangents(), myMask.outTangents(), false);

 

puntos Un conjunto de longitud 1 o superior que contiene conjuntos de pares de números que representan las coordenadas [x,y] de los puntos de trazado. Obligatorio a menos que no se pase ningún parámetro (es decir, createPath()). El valor predeterminado es [[0,0], [100,0], [100,100], [0,100]].
is_closed Booleano, opcional. Determina si la máscara está cerrada. Si el valor es verdadero, el último punto se conecta con el primer punto. El valor predeterminado es verdadero.
inTangents Un conjunto que contiene conjuntos de pares de números que representan las coordenadas [x, y] de desplazamiento de los selectores de tangentes de salida a los puntos del trazado. Obligatorio a menos que no se pase ningún parámetro (es decir, createPath()). La longitud del conjunto debe ser igual que los puntos. También es posible pasar un conjunto vacío ([]), que supondrá la misma longitud que los puntos y [0,0] para todas las tangentes. El valor predeterminado es un conjunto vacío.
outTangents Un conjunto que contiene conjuntos de pares de números que representan las coordenadas [x, y] de desplazamiento de los selectores de tangentes de entrada a los puntos del trazado. Obligatorio a menos que no se pase ningún parámetro (es decir, createPath()). La longitud del conjunto debe ser igual que los puntos. También es posible pasar un conjunto vacío ([]), que supondrá la misma longitud que los puntos y [0,0] para todas las tangentes. El valor predeterminado es un conjunto vacío.

Valores devueltos:

Un objeto de trazado.

Ejemplos:

  • Ejemplo 1

En el ejemplo se escribe la lista de coordenadas de puntos y de tangentes de Path 1 de Shape 1 en la capa Shape Layer 1, en time=0, en una cadena. Aplique esto a la propiedad de texto de origen de una capa de texto para leer las coordenadas y las tangentes de entrada y salida de la forma.

pointsList = "";
sampleTime = 0;

myShape = thisComp.layer("Shape Layer 1").content("Shape 1").content("Path 1").path;

for (i = 0; i < myShape.points(sampleTime).length; i++) {
    pointsList += "c: " + myShape.points(sampleTime)[i].toString() + "  i: " + myShape.inTangents(sampleTime)[i].toString() + " o: " + myShape.outTangents(sampleTime)[i].toString() + "\n";
}

pointsList;

  • Ejemplo 2

En el ejemplo se leen las coordenadas del primer vértice de Mask 1 en Dark Gray Solid 1 y se convierten en las coordenadas de la composición. Aplique esto a un control de punto 2D de un efecto, como Write-on o CC Particle Systems II, para hacer que el efecto rastree o haga un seguimiento del primer punto de una máscara animada. Duplique el efecto y cambie el valor de índice de los puntos de trazado ([0]) para rastrear o hacer un seguimiento de los otros puntos de la máscara.

myLayer = thisComp.layer("Dark Gray Solid 1");
myLayer.toComp(myLayer.mask("Mask 1").maskPath.points()[0]);

Animación basada en datos (referencia de expresión)

Métodos de expresión:

  • Atributo sourceText del material de archivo {footageItem}.sourceText Devuelve el contenido de un archivo .JSON como una cadena. El método eval() se puede usar para convertir la cadena en un conjunto de objetos de sourceData, idéntico a los resultados del atributo sourceData, desde el que se puede hacer referencia a los flujos de datos individuales como atributos jerárquicos de los datos. Por ejemplo: 

var myData = eval(footage("sample.json").sourceText);

myData.sampleValue;

Texto:

Cadena, el contenido del archivo .JSON; solo lectura.

  • Atributo sourceData de material de archivo {footageItem}.sourceData Devuelve los datos de un archivo .JSON como un conjunto de objetos de sourceData. La estructura del archivo .JSON determinará el tamaño y la complejidad del conjunto. Es posible hacer referencia a los flujos de datos individuales como atributos jerárquicos de los datos. Por ejemplo, si existe un flujo de datos denominado Color, la siguiente cadena devolverá el valor de Color desde el primer objeto del dato: footage("sample.json").sourceData[0].Color

El uso habitual es asignar el sourceData de un archivo .JSON a una variable y, a continuación, hacer referencia al flujo de datos deseado. Por ejemplo:

var myData =("sample.json").sourceData del material de archivo;

myData[0].Color;

Texto:

Un conjunto de objetos de sourceData; solo lectura.

  • Método dataValue() del material de archivo {footageItem}.dataValue(dataPath) Devuelve el valor de un flujo de datos estático o dinámico especificado en un archivo .mgJSON. Acepta un valor de conjunto individual para definir la ruta de la jerarquía en el flujo de datos deseado. Por ejemplo:

footage("sample.mgjson").dataValue([0]) devuelve los datos del primer secundario.

footage("sample.mgjson").dataValue([1][0]) devuelve los datos del primer secundario al segundo grupo.

Parámetros:

dataPath Conjunto, necesario. La ruta en la jerarquía hacia un flujo de datos estático o dinámico.

Valores devueltos:

El valor del flujo de datos.

  • Método dataKeyCount() del material de archivo {footageItem}.dataKeyCount(dataPath)Devuelve el número de muestras de un flujo de datos dinámico especificado en un archivo .mgJSON. Acepta un valor de conjunto individual para definir la ruta de la jerarquía en un flujo de datos dinámico deseado.

Por ejemplo:

  • footage("sample.mgjson").dataKeyCount([0]) devuelve el recuento de las muestras del primer secundario
  • footage("sample.mgjson").dataKeyCount([1][0]) devuelve el recuento de las muestras del segundo grupo

Parámetros:

dataPath Conjunto, necesario. La ruta de la jerarquía a un flujo de datos estático o dinámico.

Valores devueltos:

El número de muestras en un flujo de datos dinámico.

  • Método dataKeyTimes() del material de archivo {footageItem}.dataKeyTimes(dataPath, t0 = startTime, t1=endTime)Devuelve el tiempo en segundos para las muestras de un flujo de datos dinámico especificado en un archivo .mgJSON. Especifique opcionalmente el espacio de tiempo desde el que devolver las muestras. De forma predeterminada, se devuelve el tiempo para todas las muestras entre startTime y endTime en el flujo de datos dinámico, como se define mediante la propiedad samplesTemporalExtent del flujo de datos en el archivo .mgJSON. Acepta un valor de conjunto individual para definir la ruta de la jerarquía al flujo de datos dinámico deseado.

El siguiente ejemplo devuelve los tiempos de las muestras entre 1 segundo y 3 segundos para el primer elemento secundario:

footage("sample.mgjson").dataKeyTimes([0], 1, 3)

Parámetros:

dataPath Conjunto, necesario. La ruta de la jerarquía a un flujo de datos dinámico.
t0 Número, opcional. El tiempo de inicio, en segundos, del espacio desde el que se devuelven las muestras. El valor predeterminado es startTime.
t1
Número, opcional. El tiempo de fin, en segundos, del espacio desde el que se devuelven las muestras. El valor predeterminado es endTime.

Valores devueltos:

Conjunto de números que representan los tiempos de la muestra.

  • Método dataKeyValues() del material de archivo {footageItem}.dataKeyValues(dataPath, t0 = startTime, t1=endTime)Devuelve los valores para las muestras de un flujo de datos dinámicos especificado en un archivo .mgJSON. Especifique opcionalmente el espacio de tiempo desde el que devolver las muestras. De forma predeterminada, se devuelve el tiempo para todas las muestras entre startTime y endTime en el flujo de datos dinámico, como se define mediante la propiedad samplesTemporalExtent del flujo de datos en el archivo .mgJSON. Acepta un valor de conjunto individual para definir la ruta de la jerarquía al flujo de datos dinámico deseado.

Por ejemplo:

footage("sample.mgjson").dataKeyValues([0], 1, 3) devuelve los valores de las muestras entre 1 y 3 segundos para el primer secundario.

Parámetros:

dataPath Conjunto, necesario. La ruta de la jerarquía a un flujo de datos dinámico.
t0 Número, opcional. El tiempo de inicio, en segundos, del espacio desde el que se devuelven las muestras. El valor predeterminado es startTime.
t1
Número, opcional. El tiempo de fin, en segundos, del espacio desde el que se devuelven las muestras. El valor predeterminado es endTime.

Valores devueltos:

Conjunto de números que representan los valores de la muestra.

Método de conversión de color Hex a RGB (referencia de expresión)

Este método de conversión de color, hexToRgb(), convierte valores de color hexadecimales, por ejemplo, valores de color #FF00FF, a RGBA. Esto puede resultar útil para vincular parámetros de color a valores representados como cadenas hexadecimales en fuentes de datos JSON o CSV/TSV.

Método de expresión:

hexToRgb(hexString) Convierte un color de un espacio de trío hexadecimal a RGB, o un espacio de cuarteto hexadecimal a RGBA. En el caso de los tríos hexadecimales, el valor predeterminado de alfa es de 1.0.

Parámetros:

hexString Cadena que representa un trío hexadecimal (6 dígitos sin canal alfa) o un cuarteto (8 dígitos con un canal alfa) que solo contiene numerales o caracteres A–F. Se ignoran los caracteres principales 0x, 0X o #. Se ignoran los caracteres con más de 8 dígitos.

Valores devueltos:

Gama de valor de color RGBA.

Ejemplos:

No se devolverá ninguno de los siguientes [1.0, 0.0, 1.0, 1.0]:

  • hexToRgb("FF00FF")
  • hexToRgb("#FF00FF")
  • hexToRgb("0xFF00FF")
  • hexToRgb("0XFF00FFFF") Nota: Cuarteto hexadecimal de 8 dígitos; los últimos dos dígitos ajustan alfa a 1.0.

Esta obra está autorizada con arreglo a la licencia de Reconocimiento-NoComercial-CompartirIgual 3.0 Unported de Creative Commons.  Los términos de Creative Commons no cubren las publicaciones en Twitter™ y Facebook.

Avisos legales   |   Política de privacidad en línea