| After Effects CS4 |
|
|
El lenguaje de expresiónEl lenguaje de expresión de After Effects está basado en JavaScript 1.2, con un conjunto extendido de objetos integrados. After Effects utiliza solamente el lenguaje JavaScript 1.2 estándar principal, no las extensiones específicas del explorador Web. After Effects contiene su propio conjunto de objetos de extensión (como Capa, Comp, Material de archivo y Cámara) que puede utilizar para acceder a la mayoría de los valores de un proyecto de After Effects. Aunque el lenguaje de expresión se basa en un lenguaje de secuencias de comandos, hay una diferencia sutil pero importante entre una secuencia de comandos y una expresión: mientras que la secuencia de comandos indica a una aplicación que realice alguna operación, la expresión se limita a indicar que una propiedad es algo. Para obtener más información sobre JavaScript, consulte un recurso de referencia sobre JavaScript. Al crear expresiones, tenga en cuenta lo siguiente:
En JavaScript, un valor almacenado en un objeto se denomina propiedad. No obstante, After Effects usa el término propiedad para hacer referencia a los componentes de capa según se define en el panel Línea de tiempo. Por este motivo, en After Effects se hace referencia a las propiedades de JavaScript como métodos o atributos. En la práctica general, la diferencia entre un método y un atributo es que un método normalmente hace algo para crear su valor de salida (devolución), mientras que un atributo simplemente hace referencia a un valor existente para determinar su valor de salida (devolución). La forma más sencilla de diferenciar un método de un atributo es buscando los paréntesis que aparecen detrás del nombre del método, que rodea cualquier argumento de entrada al método. Un objeto es un elemento que puede contener otros objetos, atributos y métodos. Las composiciones, capas y elementos de material de archivo son ejemplos de objetos. En concreto, las composiciones, capas y elementos de material de archivo son objetos globales, lo cual significa que se puede hacer referencia a ellos en cualquier contexto sin necesidad de hacer referencia a otros objetos de nivel superior. Acceso a atributos y métodosUtilice el lenguaje de expresiones para acceder a los atributos y métodos de las propiedades de capa. Para acceder a un valor, utilice una cadena de referencias a objetos separadas por el punto (.). Para encadenar referencias a objetos en un nivel superior al de capa (por ejemplo, para hacer referencia a propiedades de efectos, máscaras o animadores de texto), también pueden utilizarse los paréntesis. Por ejemplo, para vincular la propiedad Opacidad de la Capa A con la propiedad Difuminación del efecto Desenfoque gaussiano de la Capa B, escriba la siguiente expresión en el campo de expresión de la propiedad Opacidad de la Capa A: thisComp.layer("Layer B").effect("Gaussian Blur")("Blurriness")
Al leer esta expresión de izquierda a derecha, avanzará desde el nivel superior, que contiene el objeto, hasta la propiedad específica:
El objeto predeterminado de una expresión es la propiedad en la que está escrita la expresión, seguida de la capa que contiene la expresión; por lo tanto, no es necesario especificar la propiedad. Por ejemplo, la expresión de una ondulación escrita sobre la propiedad Posición de una capa puede ser de cualquier de las siguientes maneras: wiggle(5, 10) position.wiggle(5, 10) No es necesario incluir la capa y la propiedad al recuperarlas del exterior de la capa y la propiedad en las que está escrita la expresión. Por ejemplo, una expresión escrita en la propiedad Opacidad de la Capa B y con vinculación a la propiedad Rotación de la Capa A sería como la siguiente expresión: thisComp.layer("Layer A").rotation
Para ver más ejemplos sobre cómo funciona, utilice el icono espiral para vincular una propiedad de capa a otra y observe la expresión que crea.Jeff Almasol incluye una secuencia de comandos en su sitio Web con el que se puede determinar cómo se hace referencia a cualquier propiedad de las expresiones: www.adobe.com/go/learn_ae_jeffgimmeproppath. Conjuntos y propiedades multidimensionalesUn conjunto es un tipo de objeto que almacena un grupo ordenado de números. Un conjunto se representa como una lista de números separados por comas y escritos entre corchetes, como en este ejemplo: [10, 23] Puede asignar un objeto Conjunto a una variable, lo que facilita la referencia a valores de conjunto en otras áreas de la expresión. Por ejemplo: myArray = [10, 23] La dimensión de un objeto Conjunto es el número de elementos en el conjunto. La dimensión de myArray es 2. Las distintas propiedades de After Effects tienen diferentes dimensiones según el número de argumentos de valores que tienen. En el lenguaje de expresión, los valores de las propiedades son valores sencillos (objetos Número) o conjuntos (objetos Conjunto). En la siguiente tabla encontrará ejemplos de algunas propiedades y sus dimensiones:
Para acceder a los elementos individuales de un objeto Conjunto, utilice los corchetes y un número de índice que indique el elemento deseado. Los elementos de un objeto Conjunto se indexan empezando por 0. En el ejemplo anterior, myArray[0] es 10 y myArray[1] es 23. Las siguientes dos expresiones son equivalentes: [myArray[0], 5] [10, 5] Los conjuntos de la propiedad Posición se indexan de la siguiente manera:
Los colores se representan en conjuntos de cuatro dimensiones [rojo, verde, azul, alfa]. En los proyectos con una profundidad de color de 8 ó 16 bpc, cada valor de un conjunto de colores oscila entre 0 (negro) y 1 (blanco). Por ejemplo, el rojo puede variar entre 0 (sin color) y 1 (rojo). Por lo tanto, [0,0,0,0] es negro y transparente, y [1,1,1,1] es blanco y completamente opaco. En los proyectos con una profundidad de color de 32 bpc, se permiten valores por debajo de 0 y por encima de 1. Si utiliza un índice mayor que el índice del componente de mayor dimensión en un objeto Conjunto, After Effects devolverá un error. Por ejemplo, myArray[2] generará un error; en cambio, position[2] devolverá la coordenada z de Posición. Muchas de las propiedades y métodos del lenguaje de expresión de After Effects toman los objetos Conjunto como argumentos o los devuelven como valores. Por ejemplo, thisLayer.position es un objeto Conjunto bidimensional o tridimensional dependiendo de si la capa es 2D o 3D. Si desea escribir una expresión que conserve el valor y de una animación de Posición pero que fije el valor x en 9, utilice lo siguiente: y = position[1]; [9,y] La siguiente expresión es aún más sucinta: [9, position[1]] Es un punto importante y por ello analizaremos un ejemplo más. Si desea combinar el valor de posición x de la Capa A con el valor de posición y de la Capa B, utilizaría la siguiente expresión: x = thisComp.layer("Layer A").position[0];
y = thisComp.layer("Layer B").position[1];
[x,y]
Puede crear una expresión que haga referencia a sólo un valor del conjunto de una propiedad 2D o 3D. De manera predeterminada, se utiliza el primer valor, a menos que se especifique lo contrario. Por ejemplo, si arrastra el icono espiral de la propiedad Rotación de la Capa A a la propiedad Escala de la Capa B, aparece la siguiente expresión: thisComp.layer("Layer B").scale[0]
De manera predeterminada, la expresión anterior utilizar el primer valor de la propiedad Escala, que es el ancho. Si prefiere utilizar el valor del alto, arrastre el icono espiral directamente hasta el segundo valor en lugar del nombre de la propiedad o cambie la expresión de la siguiente manera: thisComp.layer("Layer B").scale[1]
En cambio, si arrastra el icono espiral desde la propiedad Escala de la Capa B a la propiedad Rotación de la Capa A, After Effects crea automáticamente una variable, le asigna el valor unidimensional de la propiedad Rotación y, a continuación, utiliza esa variable para ambas dimensiones de la propiedad Escala: temp = thisComp.layer(1).transform.rotation; [temp, temp] VectoresEn After Effects, muchas propiedades y métodos contienen o devuelven vectores. After Effects hace referencia a un conjunto como vector si representa un punto o una dirección en el espacio. Por ejemplo, After Effects describe la posición en la forma de un vector. Sin embargo, aunque una función como audioLevels devuelve un valor bidimensional (los niveles de canal izquierdo y derecho), no se denomina vector porque no representa ni un punto ni una dirección. Algunas funciones de After Effects aceptan argumentos vectoriales, pero generalmente sólo son útiles cuando los valores transmitidos representan una dirección. Por ejemplo, cross(vec1, vec2) calcula un tercer vector que forma ángulos rectos con los vectores de entrada. El producto cruzado es útil cuando vec1 y vec2 son dos vectores que representan direcciones en el espacio, pero no lo es si sólo representan dos conjuntos arbitrarios de números. Índices y etiquetasLa indexación de los elementos de Capa, Efecto y Máscara en After Effects empieza en 1. Por ejemplo, la primera capa del panel Línea de tiempo es layer(1). Por lo general, es mejor utilizar el nombre de una capa, efecto o máscara en lugar de un número para evitar confusiones y errores si se mueve la capa, el efecto o la máscara, o bien si los argumentos cambian durante las actualizaciones de productos. Cuando utilice un nombre, enciérrelo siempre entre comillas rectas. Por ejemplo, la primera de estas expresiones es más fácil de comprender que la segunda; la primera expresión continuará siendo válida aunque se cambie el orden de los efectos: effect("Colorama").param("Get Phase From")
effect(1).param(2)
Expresión tiempoEl tiempo dentro de una expresión está siempre en tiempo de composición (no en tiempo de capa) y se mide en segundos. El tiempo predeterminado de cualquier expresión es el tiempo de composición actual en el que se está evaluando la expresión. Las dos expresiones siguientes utilizan el tiempo de composición predeterminado y devuelven los mismos valores: thisComp.layer(1).position thisComp.layer(1).position.valueAtTime(time) Para utilizar un tiempo relativo, agregue un valor de tiempo incremental al argumento tiempo. Por ejemplo, para obtener el valor Posición en 5 segundos antes del tiempo actual, utilice la siguiente expresión: thisComp.layer(1).position.valueAtTime(time-5) Las referencias de tiempo predeterminadas a las propiedades de composiciones anidadas utilizan el tiempo de composición predeterminado original, no el tiempo reasignado. Sin embargo, si utiliza la función source (origen) para recuperar una propiedad, se utiliza el tiempo reasignado. Por ejemplo, si el origen de una capa de la composición contenedora es una composición anidada y en la composición contenedora el tiempo está reasignado, al acceder a los valores de posición de una capa de la composición anidada con la siguiente expresión, los valores de posición utilizan el tiempo predeterminado de la composición: comp("nested composition").layer(1).position
Sin embargo, si accede a la Capa 1 mediante la función source, los valores de posición utilizan el tiempo reasignado: thisComp.layer("nested composition").source.layer(1).position
Nota: Si utiliza un tiempo específico en una expresión, After Effects ignora el tiempo reasignado.
Las expresiones actúan sobre el tiempo en unidades de segundos (no en fotogramas), por lo que a veces es necesario usar métodos de conversión de tiempo para convertir los valores temporales y poder realizar operaciones en los fotogramas. (Consulte Métodos de conversión del tiempo.) |