Acerca de las expresiones

Cuando desee crear y vincular animaciones complejas sin necesidad de crear cientos de fotogramas clave de manera manual, opte por el uso de expresiones. Una expresión es un pequeño elemento de software (muy similar a la secuencia de comandos) que evalúa hasta un solo valor para una propiedad de capa única en un punto específico en el tiempo. Mientras que las secuencias de comandos indican a la aplicación que realice alguna operación, una expresión indica que una propiedad es algo.

Mediante las expresiones, puede crear relaciones entre las propiedades de capa y utilizar los fotogramas clave de una propiedad para animar dinámicamente otras capas. Por ejemplo, puede utilizar el icono espiral para vincular las propiedades de la ruta, de forma que una máscara pueda adoptar su ruta de un trazo de pincel o un objeto de capa de forma.

El lenguaje de la expresión está basado en el lenguaje estándar JavaScript, pero no es necesario saber JavaScript para poder utilizar las expresiones. Puede crear expresiones utilizando el icono espiral o copiando ejemplos sencillos y modificándolos según sus necesidades.

Nota:

El proyecto de plantilla Muestra de expresión (Archivo > Examinar proyectos de plantilla) y los ajustes preestablecidos de animación de la categoría Comportamiento (Animación > Examinar ajustes preestablecidos) son dos fuentes de expresiones de ejemplo.

Los ajustes preestablecidos de animación pueden incluir expresiones o incluso estar formados totalmente por una expresión. Los ajustes preestablecidos de animación que utilizan expresiones en vez de fotogramas clave se suelen llamar comportamientos.

Después de agregar una expresión a una propiedad, puede continuar agregando o editando fotogramas clave de la propiedad. Una expresión puede adquirir el valor de una propiedad determinada por sus fotogramas clave y utilizarlo como entrada para generar valores nuevos y modificados. Por ejemplo, la siguiente expresión sobre la propiedad Rotación de una capa agrega 90 grados al valor de la propiedad, así como al movimiento de fotogramas clave:

  value + 90

Algunos métodos, como la ondulación, actúan directamente en los valores de fotograma clave de la propiedad. (Consulte Atributos y métodos de propiedad (referencia de expresión)).

La siguiente expresión sobre la propiedad Posición de una capa mantiene el movimiento de fotogramas clave de la capa y produce un poco de ondulación:

  wiggle(10, 10)

Nota:

El uso de la expresión de ondulación suele ser más fácil y rápido que utilizar el Ondulador.

Si se anima texto, se puede utilizar el selector de expresión para especificar el grado de influencia de una propiedad de animación en cada carácter de texto. Se pueden agregar uno o más selectores de expresión a un grupo de animación y ese grupo puede contener una o varias propiedades.

Uso de expresiones

Puede introducir expresiones enteras tecleándolas o utilizando el menú Lenguaje de expresión, así como crear una expresión con el icono espiral o pegarla desde un ejemplo u otra propiedad.

Puede realizar todos los trabajos con expresiones en el panel Línea de tiempo, aunque es aconsejable arrastrar el icono espiral a una propiedad del panel Controles de efectos. Las expresiones se indican y se editan en el campo de expresión, un campo de texto de tamaño variable en el gráfico de tiempo. El campo de expresión aparece a lo largo de la propiedad en el modo de barra de capa; el campo de expresión aparece en la parte inferior del Editor de gráficos en el modo Editor de gráficos. Puede escribir una expresión en un editor de texto y, a continuación, copiarla en el campo Expresión. Cuando agregue una expresión a una propiedad de capa, aparecerá una expresión predeterminada en el campo Expresión. Fundamentalmente la expresión predeterminada no hace nada; define el valor de propiedad en sí mismo, lo que facilita que el propio usuario retuerza la expresión.

Interfaz Expresión en el panel Línea de Tiempo del modo de barra de capa
Interfaz Expresión en el panel Línea de Tiempo del modo de barra de capa

A. Habilitar el definidor Expresión B. Mostrar el botón Gráfico de post-expresión C. Icono espiral D. Menú de lenguaje de expresión E. Campo Expresión 

Al editar una expresión, todas las vistas previas se suspenden; aparece una barra roja en la parte inferior de los paneles que esperan a que finalice el modo de edición de textos.

Los valores de una propiedad que contiene una expresión aparecen en caracteres rojos o rosas.

Una buena forma de comenzar a trabajar con expresiones es crear una expresión sencilla con el icono espiral y posteriormente ajustar el comportamiento de la expresión con operaciones matemáticas sencillas, como las que se incluyen en la siguiente tabla:

Símbolo

Función

+

Sumar

-

Restar

/

Dividir

*

Multiplicar

*-1

Realizar lo contrario del original, por ejemplo, girar en el sentido contrario de las agujas del reloj en lugar de en sentido horario

Por ejemplo, puede doblar el resultado tecleando *2 al final de la expresión o puede dividir el resultado tecleando /2 al final de la expresión.

A medida que adquiera confianza en la edición de expresiones, puede ir combinando estas operaciones sencillas y realizar más acciones. Por ejemplo, puede agregar /360*100 al final de una expresión para cambiar su rango de 0-360 a 0-100. Este cambio resultaría útil si deseara convertir los valores de un indicador de 360 grados en un indicador que se mida en porcentajes.

El menú de Lenguaje de expresión del panel Línea de tiempo contiene todos los elementos de idioma específicos de After Effects que pueden utilizarse en una expresión. Este menú sirve para determinar los elementos válidos y su sintaxis correcta; utilícelo como referencia para saber cuáles son los elementos disponibles. Al elegir un objeto, atributo o método del menú, After Effects lo inserta automáticamente en el campo Expresión, en el punto de inserción. Si el texto se selecciona en el campo de expresión, el nuevo texto de expresión reemplaza el texto seleccionado. Si el punto de inserción no está en el campo de expresión, el nuevo texto de expresión reemplaza a todo el texto del campo.

En el menú de lenguaje de expresión se incluyen los argumentos y valores predeterminados. De este modo es más sencillo recordar qué elementos se pueden controlar cuando se escribe una expresión. Por ejemplo, en el menú del lenguaje, el método de ondulación de la categoría Propiedad aparece como wiggle(freq, amp, octaves=1, amp_mult=.5, t=time). Se incluyen cinco argumentos en el paréntesis tras la ondulación. El signo = de los tres últimos argumentos indica que el uso de estos argumentos es opcional. Si no se especifica ningún valor, se definirán de manera predeterminada en 1, 0,5 y el tiempo actual, respectivamente.

Nota:

Reemplace los nombres de los argumentos que escribe el menú Lenguaje de expresión por valores reales.

Jeff Almasol ofrece una secuencia de comandos que procesa automáticamente las expresiones, haciendo los cambios especificados. Por ejemplo, la secuencia de comandos se puede usar para eliminar o habilitar automáticamente las expresiones deshabilitadas. Para obtener más información, consulte el sitio web redefinery de Jeff Almasol.

Añadir, deshabilitar, vincular o eliminar una expresión

  • Para agregar una expresión a una propiedad, seleccione la propiedad en el panel Línea de tiempo y elija Animación > Agregar expresión o presione Alt+Mayús+= (Windows) u Opción + Mayús += (Mac Os); o Alt-clic (Windows) u Opción-clic (Mac OS) en el botón del cronómetro junto al nombre de la propiedad del panel Línea de tiempo o Controles de efectos.
  • Para vincular un conjunto de propiedades en varias capas y composiciones, utilice vínculos de propiedades.
    Seleccione cualquier propiedad o grupo de propiedades y elija Edición > Copiar con vínculos de propiedades o Edición > Copiar con vínculos de propiedades relativas y, a continuación, pegue las propiedades en cualquier capa de la composición. Las propiedades pegadas seguirán conectadas a la capa desde la cual se copiaron, de modo que los cambios realizados en la propiedad original se reflejen en todas las instancias de los vínculos con propiedades pegadas.
    Incluso puede copiar una capa entera con vínculos de propiedades y pegarla para crear duplicados que sigan los cambios realizados en el objeto original.

    El comando Copiar con vínculos de propiedades relativas funciona como el comando Copiar con vínculos de propiedades, excepto que Copiar con vínculos de propiedades relativas crea expresiones que no hacen referencia al nombre de la composición de origen. Así pues, se mantiene un vínculo relativo entre la capa con la expresión y la composición que contiene la capa. Este comando puede ser útil, por ejemplo, cuando desee mover capas con expresiones aparejadas de una composición a otra pero quiera que las capas solo hagan referencia a una capa de control en la misma composición. Las expresiones creadas mediante el comando Copiar con vínculos de propiedades relativas son idénticas a las creadas con el selector de expresiones.

    El resultado de copiar la propiedad Posición de una capa con el comando Copiar con vínculos de propiedades relativas es el siguiente:

    thisComp.layer("control_layer").transform.position

    El resultado de copiar la propiedad Posición de una capa con el comando Copiar con vínculos de propiedades es el siguiente, que hace referencia específicamente a la composición original de as capa en la expresión:

    comp("source_comp").layer("control_layer").transform.position

  • Para deshabilitar temporalmente una expresión, haga clic en el definidor Habilitar expresión . Cuando una expresión esté deshabilitada, aparecerá una barra diagonal encima del definidor .
  • Para eliminar una expresión de una propiedad, seleccione la propiedad en el panel Línea de tiempo y elija Animación > Eliminar expresión, o bien presione Alt (Windows) u Opción (Mac OS) y haga clic en el botón del cronómetro junto al nombre de la propiedad del panel Línea de tiempo o Controles de efectos.

Edición de una expresión con el icono espiral

Si no está familiarizado con JavaScript o con el lenguaje de las expresiones de After Effects, puede servirse del icono espiral para escribir expresiones. Arrastre el icono espiral de una propiedad a otra para vincular las propiedades con una expresión. El texto de la expresión se introduce en el campo de la expresión del punto de inserción. Si el texto se selecciona en el campo de expresión, el nuevo texto de expresión reemplaza el texto seleccionado. Si el punto de inserción no está en el campo de expresión, el nuevo texto de expresión reemplaza a todo el texto del campo.

Arrastre el icono espiral hasta una propiedad
Arrastre el icono espiral hasta una propiedad para crear un enlace con el valor de la propiedad.

Puede arrastrar el icono espiral hasta el nombre o el valor de una propiedad. Si lo arrastra hasta el nombre de una propiedad, la expresión resultante mostrará todos los valores como un único valor. Por ejemplo, si arrastra el icono espiral hasta el nombre de la propiedad Posición, aparecerá la siguiente expresión:

  thisComp.layer("Layer 1").transform.position

Si arrastra el icono espiral a uno de los valores de componente de la propiedad Posición (como el valor y), aparecerá una expresión similar a la siguiente, en la que las coordenadas de las propiedad x e y están vinculadas al valor y de la propiedad Posición:

  temp = thisComp.layer("Layer 1").transform.position[1]; 
  [temp, temp]

Si la capa, máscara o efecto a la que se arrastra el icono espiral no tiene un nombre único en su contexto local, After Effects le asignará un nombre. Por ejemplo, si hay dos o más máscaras con el nombre "Máscara" en la misma capa y arrastra el icono espiral hasta una de ellas, After Effects le asignará el nombre "Máscara 2."

El formato de las expresiones creadas por el icono espiral se determina mediante la preferencia Icono espiral de expresión escribe inglés conciso (Edición > Preferencias > General (Windows) o After Effects > Preferencias > General (Mac OS)). De forma predeterminada, el icono espiral crea expresiones en inglés conciso, que utilizan los nombres para las propiedades conforme aparecen en el panel Línea de tiempo para las propiedades de una expresión. Debido a que estos nombres están codificados dentro de la aplicación y nunca cambian, estas expresiones pueden seguir trabajando cuando After Effects se ejecuta en otro idioma. Todos los nombres de propiedad que se pueden cambiar aparecen entre comillas dobles y son los mismos en todos los idiomas. Si no tiene planeado compartir el proyecto en otros idiomas, puede deseleccionar esta preferencia. Esta preferencia no afecta a los nombres o propiedades de los efectos.

A continuación aparece un ejemplo en inglés conciso:

  thisComp.layer("Layer 1").transform.position

Esta es la misma expresión, pero no en inglés conciso:

  thisComp.layer("Layer 1")("Transform")("Position")

Nota:

Puesto que se utiliza el inglés conciso de manera predeterminada, en muchos ejemplos e ilustraciones de este documento se utiliza inglés conciso.

  1. Arrastre el icono espiral hasta otra propiedad del panel Línea de tiempo o el panel Controles de efectos.
  2. Si lo desea, modifique la expresión predeterminada del campo Expresión.

Nota:

Si el icono espiral se emplea para crear una expresión para hacer referencia a una capa y esa capa tiene el mismo nombre que otra capa en la misma composición, el nombre de la capa de destino cambia. El nuevo nombre de la capa es el nombre antiguo con un número al final. Este cambio es necesario para garantizar que la expresión haga referencia de forma inequívoca a una sola capa de la composición.

Edición manual de una expresión

  1. Entre en el modo de edición de texto haciendo clic en el campo de expresión.

    Nota:

    Cuando se encuentre en el modo de edición de texto, se seleccionará la expresión completa. Para agregar en la expresión, haga clic dentro de la expresión para marcar el punto de inserción; de lo contrario, reemplazará la expresión completa.

  2. Teclee y edite el texto en el campo de expresión, de manera opcional, con el menú Lenguaje de expresión.

    Nota:

    Para ver más de una expresión de varias líneas, arrastre la parte inferior o superior del campo de expresión para reajustar su tamaño.

  3. Para salir del modo de edición de texto y activar la expresión, realice uno de los pasos siguientes:
    • Presione Intro del teclado numérico.

    • Haga clic fuera del campo de expresión.

Ejemplo: Uso del lenguaje de expresión para escribir una expresión

Siga los pasos de este ejemplo para saber cómo utilizar la referencia de lenguaje de expresión de After Effects para escribir expresiones. La expresión creada en este ejemplo vincula la propiedad Posición de Sólido 2 a la propiedad Posición de Sólido 1, con un desplazamiento de movimiento del Sólido 2 de dos segundos respecto al movimiento de Sólido 1.

  1. Cree dos capas sólidas: Sólida 1 y Sólida 2.

  2. Anime los valores de la propiedad Posición de Sólida 1 con fotogramas clave. (Consulte Acerca de la animación, fotogramas clave y expresiones).

  3. Seleccione la propiedad Posición de Sólido 2 y elija Animación > Agregar expresión, o bien, presione Alt y haga clic (Windows) o presione Opción y haga clic en el botón del cronómetro para la propiedad. De manera predeterminada, aparece la siguiente expresión:

      transform.position
  4. Escriba lo siguiente directamente sobre transform.position:

      thisComp
  5. El elemento thisComp es un atributo global cuyo valor es un objeto Comp que representa la composición actual. Para determinar lo que puede seguir a thisComp en la expresión, consulte el valor devuelto para thisComp en la sección Métodos, atributos y objetos globales (referencia de expresión).

    Tenga en cuenta que thisComp devuelve un objeto Comp. A continuación, consulte Atributos y métodos de Comp. (referencia de expresión) para saber qué atributos y métodos pueden utilizarse con un objeto Comp. Una opción es layer(index). El índice (o número) situado dentro de los paréntesis especifica la capa que desea utilizar. En este ejemplo, supondremos que Sólido 1 es la primera capa de la composición. Para recuperar valores de la primera capa en la composición activa, escriba .layer(1) al final de la expresión para obtener lo siguiente:

      thisComp.layer(1)
  6. Consulte de nuevo la referencia de los elementos de la expresión para comprobar que layer(index) devuelve un objeto Layer. Consulte Atributos y métodos generales de capa (referencia de expresión) y localice el elemento que desee utilizar. Por ejemplo, si desea acceder a los valores de la propiedad Posición de la capa, escriba .position al final de la expresión para obtener lo siguiente:

      thisComp.layer(1).position
  7. En Atributos y métodos generales de capa (referencia de expresión), puede observar que el atributo position devuelve una propiedad. Consulte Atributos y métodos de propiedad referencia de expresión y observe que puede agregar un factor de tiempo a la expresión. Para sumar un tiempo específico, como el tiempo actual más dos segundos, escriba .valueAtTime(time+2) al final de la expresión para obtener lo siguiente:

      thisComp.layer(1).position.valueAtTime(time+2)
  8. En Atributos y métodos de propiedad (referencia de expresión), observe que el método valueAtTime devuelve un número o una matriz. Cuando una expresión devuelve un Número, Conjunto o valor Booleano (como true o false), no se pueden agregar más atributos ni métodos a la expresión (no obstante, si lo desea puede agregar operadores aritméticos, como + , - , * y /).

Visualización de expresiones y el gráfico de expresión

En el modo Editor de gráficos, el campo de expresión único aparece como un cuadro redimensionable en la parte inferior del Editor de gráficos y solo muestra la expresión de la propiedad seleccionada. Para mostrar varios campos de expresión a la vez, el panel Línea de tiempo deberá estar en el modo de barra de capa.

Nota:

Para cambiar entre el modo de barra de capa y el modo Editor de gráficos, presione Mayús+F3.

  • Para mostrar solo las propiedades con expresiones, seleccione una o más capas y, a continuación, presione EE.
  • Para mostrar el campo de expresión en el Editor de gráficos, seleccione Mostrar el editor de expresiones en el menú Elegir tipo y opciones de gráfico  de la parte inferior del Editor de gráficos. Al añadir una expresión a una propiedad, se muestra el editor de expresión independientemente de este ajuste.

Nota:

Para redimensionar el campo Expresión, arrastre su borde inferior hacia arriba o hacia abajo.

  • Para ver cómo una expresión cambia el gráfico de valor o de velocidad, haga clic en el botón Mostrar gráfico post-expresión  mientras se muestra dicho gráfico en el Editor de gráficos.

    El gráfico coloreado tenue muestra el valor o la velocidad antes de aplicar la expresión, mientras que el gráfico coloreado más brillante muestra el valor o la velocidad después de aplicarla. Al activar la superposición de gráficos para la propiedad Posición, cambiará también la visualización del trazado de movimiento en el panel Composición de forma que pueda ver el trazado afectado por la expresión.

Nota:

Puede usar el campo de búsqueda del panel Línea de tiempo para buscar expresiones así como otros componentes de una propiedad. Si la cadena de búsqueda aparece en una expresión, la propiedad así como los grupos de propiedad que la contienen y la capa se muestran en el conjunto filtrado de los resultados de la búsqueda.

Escritura de expresiones para el texto de origen

La propiedad Texto de origen de una capa de texto es interpretada por la expresión como una cadena JavaScript. Puede utilizar el icono espiral para recuperar el texto de origen de otra capa de texto; no obstante, solo se utilizará el estilo del primer carácter de la capa de destino.

Para obtener más información sobre el objeto Cadena de JavaScript, consulte la referencia de JavaScript.

Puede utilizar "\r" en la expresión de una cadena para iniciar una nueva línea de texto. Por ejemplo, para copiar el texto original de una capa dentro de la misma capa y repetirlo en todos los caracteres en mayúscula en una nueva línea, utilice la expresión siguiente:

  text.sourceText + "\r" + text.sourceText.toUpperCase()

Agregar una capa de texto a una composición y agregar una expresión a la propiedad Texto de origen es un buen modo de examinar los valores de propiedad de otras capas. Por ejemplo, la siguiente expresión de una propiedad Texto de origen informa sobre el nombre y valor de la propiedad Opacidad de la siguiente capa en el orden de apilamiento de las capas:

  thisComp.layer(index + 1).name + "\rOpacity = " + thisComp.layer(index + 1).opacity.value

El siguiente ejemplo informa del nombre del elemento de material de archivo empleado como origen de la capa de imagen superior según el orden de apilamiento en el tiempo actual que tenga ajustado su definidor de Vídeo.

  source_footage_name = ""; 
  for (i = 1; i <= thisComp.numLayers; i++){ 
      if (i == index) continue; 
      my_layer = thisComp.layer(i); 
      if (! (my_layer.hasVideo && my_layer.active)) continue; 
      if (time >= my_layer.inPoint && time < my_layer.outPoint){ 
          try{ 
              source_footage_name = my_layer.source.name; 
          }catch(err1){ 
              source_footage_name = my_layer.name 
          } 
          break; 
      } 
  } 
  source_footage_name

Aharon Rabinowitz incluye un tutorial de vídeo y expresiones de ejemplo en Red Giant TV (en inglés) que muestran cómo animar una puntuación de videojuego con la propiedad Texto de origen y un efecto Deslizador (efecto Controles de expresión).

 

Adición de comentarios a una expresión

Si escribe una expresión compleja y desea que esté disponible para volverla a utilizar más tarde (usted mismo u otro usuario), es recomendable agregar comentarios que expliquen lo que hace la expresión y cómo funcionan sus piezas.

Almacenamiento y reutilización de expresiones

Una vez que haya escrito la expresión, puede guardarla para usarla en el futuro. Para ello, copie y péguela en una aplicación de edición de texto o guárdela en un ajuste preestablecido de animación o proyecto de plantilla. No obstante, como las expresiones se escriben en relación a otras capas de un proyecto y podrían usar nombres de capa específicos, a veces tendrá que modificar una expresión para transferirla de un proyecto a otro.

Puede definir sus propias funciones dentro de expresiones con la sintaxis de función JavaScript normal. En este ejemplo, se ha definido una función que calcula la media de dos valores y la última línea utiliza esta función:

  function average(a, b) 
  { 
    return (a + b) / 2; 
  } 
  average(position, thisComp.layer(1).position);

Nota:

Todas las funciones se deben definir por completo en cada expresión en la que se utilizarán. No existe ninguna biblioteca global de funciones que se pueda agregar.

Si desea guardar una expresión para usarla en otro proyecto, es recomendable agregar comentarios a la expresión. (Consulte Adición de comentarios a una expresión). Debe utilizar también variables para que pueda cambiar un valor en un lugar antes que tener que cambiarlo en varios lugares.

Por ejemplo, esta expresión tiene un comentario multilínea al principio que explica lo que hace y un breve comentario después de declarar e inicializar una variable que explica para qué sirve la variable:

  /*  This expression on a Source Text property reports the name 
      of a layer and the value of its Opacity property. */  
    
  var myLayerIndex = 1; // layer to inspect, initialized to 1, for top layer  
    
  thisComp.layer(myLayerIndex).name + ": \rOpacity = " +   thisComp.layer(myLayerIndex).opacity.value

Puede guardar un ajuste preestablecido de animación que incluya una expresión y volver a utilizarlo en otros proyectos, siempre y cuando la expresión no haga referencia a propiedades que no existan en los otros proyectos. Cuando guarde un ajuste preestablecido en el que una propiedad tenga una expresión pero no contenga fotogramas clave, solo se guardará la expresión. Si la propiedad tiene uno o varios fotogramas clave, el ajuste preestablecido guardado incluirá la expresión junto con todos los valores de fotogramas clave.

Puede copiar una expresión de una propiedad de capa, con o sin los fotogramas claves de la propiedad.

  • Para copiar una expresión o fotogramas clave de una propiedad a otra, seleccione la propiedad de capa de origen en el panel Línea de tiempo, copie la propiedad de la capa, seleccione las propiedades de la capa de destino y pegue.
  • Para copiar una expresión de una propiedad a otra sin copiar los fotogramas clave, seleccione la propiedad de origen, elija Edición > Copiar solo expresión, seleccione las propiedades de destino y pegue.

Nota:

La copia de una expresión sin los fotogramas clave resulta útil cuando se desee copiar simultáneamente varias expresiones y pegarlas en una o varias capas nuevas, o bien, cuando se desee copiar una expresión y pegarla en varias capas.

Nota:

Así como con los fotogramas clave y otros elementos, a menudo puede pegar los elementos dentro de la capa de destino y depender de After Effects para que determine qué propiedad debe ser el destino de la operación de pegado. Por ejemplo, esto funciona para copiar propiedades de Posición de una capa a otra, pero debe seleccionar la propiedad de destino correctamente si pega una expresión de una propiedad de Posición a una propiedad de Escala.

Paul Tuersley proporciona la secuencia de comandos pt_ExpressEdit para la gestión y edición de expresiones.

Efectos de Controles de expresión

Utilice un efecto Controles de expresión para agregar un control que pueda utilizar para manipular los valores de una o varias propiedades vinculando la propiedad al control mediante expresiones. Un único control puede afectar a varias propiedades a la vez.

Los nombres de los efectos Controles de expresión indican qué tipo de control de propiedad ofrecen: Control de ángulo, Control de casilla de verificación, Control de color, Control de capa, Control de puntos, Control del regulador. After Effects CS5.5 y posterior también incluye un Control de punto 3D.

Nota:

Si aplica un ajuste preestablecido de animación desde Ajustes preestablecidos de animación > Formas > categoría Fondos, verá un efecto Control de forma animada personalizado en el panel Controles de efectos. Este efecto personalizado es un efecto de control de expresión especializado que se creó específicamente para estos ajustes preestablecidos de animación. Puede copiar y pegar este efecto en otras capas, o puede guardarlo como un ajuste preestablecido de animación en sí mismo para poderlo aplicar en otras ocasiones.

Los efectos Controles de expresión se aplican a una capa del mismo modo que se aplican otros efectos como, por ejemplo, arrastrando el efecto a la capa desde el panel Efectos y ajustes preestablecidos.

Puede aplicar efectos Controles de expresión a cualquier capa; no obstante, resulta útil aplicarlos a una capa nula, la cual se podría utilizar simplemente como capa de control. A continuación, agregue expresiones a las propiedades de otras capas para obtener una entrada de ese control. Por ejemplo, puede agregar el efecto Control del indicador a una capa nula (Nulo 1) y, a continuación, aplicar la expresión en la propiedad Posición de varias capas:

  position+[0,10*(index-1)*thisComp.layer("Null 1").effect("Slider Control")("Slider")]

En este ejemplo, al arrastrar el indicador, se moverán todas las capas con esta expresión. Las capas con mayores números de índice (capas cerca de la parte inferior del panel Línea de tiempo) se cambiarán más que las capas con números de índice menores, en intervalos de 10 píxeles. Al ajustar los fotogramas clave para el regulador de la capa nula, las otras capas se animan en consonancia.

A menudo resulta útil cambiar el nombre de cada instancia de un efecto Control de expresión para indicar su uso. Por ejemplo, si se cambia el nombre de una instancia del efecto Control de color a color cielo es más fácil identificar el efecto que se está controlando. El nombre de cada instancia de un efecto Control de expresión se cambia igual que se cambia el nombre de cualquier efecto: selecciónelo en el panel Línea de tiempo o en el panel Controles de efectos y presione la tecla Intro (Windows) o Retorno (Mac OS) en el teclado principal.

Nota:

Para modificar el rango de un control, haga clic con el botón derecho (Windows) o presione la tecla Control y haga clic (Mac OS) en el valor de propiedad subrayado del control y seleccione Editar valor en el menú contextual.

Recursos adicionales sobre los efectos Controles de expresión

Jerzy Drozda, Jr. (Maltaannon) proporciona una sencilla explicación y demostración de los efectos Control de ángulo y Controles de expresión de forma general en el sitio web Motionworks.

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.

Conversión de una expresión a fotogramas clave

En algunas ocasiones, es útil convertir una expresión a fotogramas clave. Por ejemplo, si desea congelar los valores de una expresión, puede convertir la expresión en fotogramas clave y luego ajustar los fotogramas clave debidamente. Si la evaluación de una expresión lleva mucho tiempo, puede convertirla en fotogramas clave para que se procese con mayor rapidez. Al convertir una expresión en fotogramas clave, After Effects evalúa la expresión, crea un fotograma clave en cada fotograma y, a continuación, deshabilita la expresión.

  1. En el panel Línea de tiempo, seleccione la propiedad en la que esté escrita la expresión y elija Animación > Asistente de fotogramas clave > Convertir expresión a fotogramas clave.

El lenguaje de expresión

El 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 navegador 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:

  • El valor de una expresión es el valor de la última instrucción evaluada.

  • JavaScript es un lenguaje que reconoce mayúsculas y minúsculas.

  • Son necesarios puntos y comas para separar instrucciones o líneas.

  • Los espacios entre palabras se ignoran, excepto en una cadena.

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 buscar los paréntesis que hay detrás del nombre del método, que rodean todos los argumentos 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étodos

Utilice 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 global utilizado hace referencia a la composición actual: thisComp.

  • A un objeto de capa específico dentro de esa composición se hace referencia por su nombre: capa("Capa B").

  • A un objeto de efecto específico dentro de esa capa se hace referencia por su nombre: efecto("Desenfoque gaussiano").

  • A una propiedad de efecto específica dentro de ese efecto se hace referencia por su nombre: ("Difuminación").

Para el componente n de una propiedad multidimensional, como el componente y de un punto de control de efecto, añada [n] al final, tal y como se muestra a continuación:

  thisComp.layer("Layer B").effect("Advanced Lightning")("Origin")[1]

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)

Incluya 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

Nota:

Para ver más ejemplos sobre cómo funcionan las expresiones, utilice el icono espiral para vincular una propiedad de capa a otra y observe la expresión que se crea.

Jeff Almasol proporciona una secuencia de comandos en su sitio web redefinery con la que puede determinar cómo hacer referencia a cualquier propiedad en expresiones.

Conjuntos y propiedades multidimensionales

Un 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:

Dimensión

Propiedad

1

Rotación °

Opacidad %

2

Escala [x = anchura, y = altura]

Posición [x, y]

Punto de anclaje [x, y]

Niveles de audio [izquierdo, derecho]

3

Escala [anchura, altura, profundidad]

Posición 3D [x, y, z]

Punto de anclaje 3D [x, y, z]

Orientación [x, y, z]

4

Color [rojo, verde, azul, alfa]

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:

  • position[0] es la coordenada x de la posición.

  • position[1] es la coordenada y de la posición.

  • position[2] es la coordenada z de la posición.

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, mientras que [1,1,1,1] es blanco y 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 solo 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 la anchura. Si prefiere utilizar el valor de la altura, 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]

Vectores

En 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 solo 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 solo representan dos conjuntos arbitrarios de números.

Índices y etiquetas

La 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 sigue siendo válida aunque se cambie el orden de los efectos:

  effect("Colorama").param("Get Phase From")  
  effect(1).param(2)

Expresión tiempo

El 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 (referencia de expresión).)

Errores de expresiones

Cuando una expresión no puede se evaluar, los errores de la expresión aparecen en una advertencia en la parte inferior de los paneles Composición y Capa. After Effects no deshabilita la expresión pero continúa evaluándola. Se exhibe la advertencia mientras la expresión no se pueda evaluar; es decir, hasta que se corrija la expresión o se deshabilite manualmente.

A continuación se muestra un ejemplo del aspecto que tendrá la advertencia de error en la expresión:

Un error de expresión de ejemplo
Un error de expresión de ejemplo

A. Botones de flecha izquierda o derecha B. Mostrar expresión C. Expandir/Contraer advertencia 
  • Los botones de flecha izquierda o derecha muestran el error anterior o siguiente cuando no se hayan podido evaluar varias expresiones.
  • El botón Mostrar expresión (lupa) muestra la propiedad con el error de expresión en el panel Línea de tiempo. Si la expresión está en una composición diferente, se abre dicha composición.
  • El botón Expandir/Contraer advertencia (flechas arriba/abajo) muestra u oculta el texto del error.

El texto del error de la expresión tiene una línea solamente, y se acorta a la anchura del panel Composición.

Para ver el texto completo del error de expresión:

Haga clic en  al lado de la expresión. El mensaje de error completo aparece en un cuadro de diálogo.

Para ocultar la advertencia:

Elija After Effects CC (Mac OS) o Edición (Windows) > Preferencias > General y deshabilite Mostrar advertencia cuando el proyecto contiene errores de expresión.

Cuando esta opción está deshabilitada, la advertencia sigue oculta incluso cuando ocurren nuevos errores de expresión.

Vuelva a habilitar esta opción para ver los errores de la expresión.

Recursos en línea

Muchos de los ejemplos de esta sección se basan en los ejemplos ofrecidos por Dan Ebberts. Dan Ebberts también cuenta con una excelente colección de expresiones de ejemplo y tutoriales para aprender cómo se trabaja con expresiones en su sitio web Motionscript.

En el foro de AE Enhancers se incluyen diversos ejemplos e información sobre expresiones, así como secuencias de comandos y ajustes preestablecidos de animación.

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