Inicio de sesión
Nota: Esta es una traducción automática, por favor utilice un lenguaje claro y sin jerga.

Generación Aleatoria Motion Con AE 5.5 Expresiones

Dan Ebberts
Tutoriales :
Generación Aleatoria Motion Con AE 5.5 Expresiones
Generación aleatoria Motion con AE 5.5 expresiones


from CreativeCow.net's ''25 Cool Things about After Effects 5.5'' Series


Generating Random Motion with AE 5.5's Expressions
Dan Ebberts Dan ebberts,
Sacramento, California, EE.UU.

© 2002 por Dan ebberts y CreativeCow.net. Todos los derechos reservados.

Enfoque del artículo:
En este tutorial, Dan ebberts demuestra un método de generación de movimiento que es aleatoria en el tiempo y el espacio y le permite ensamblar rápidamente una composición con una agradable líquido, Movimiento caótico.


Descarga de películas Archivo de proyecto (incluye archivos de Negocios interino) StuffIt Expander para descargar Windows

El problema:

El concepto detrás de este tutorial salió de una discusión en línea. Un compañero After Effects entusiasta estaba tratando de encontrar una expresión para generar el movimiento aleatorio que fue en el tiempo y el espacio. Que es, Posiciones de destino sería azar al igual que el tiempo que tarda en llegar. El problema que enfrentan al tratar de desarrollar esa expresión es que no sólo no parece ser una buena manera de llevar el valor de las variables en el tiempo de un marco a la próxima. Las variables que usted defina habrán desaparecido en el próximo marco. Considerar el siguiente ejemplo para la expresión de opacidad:

If (tiempo = 0) (
X = 10
}
Else (
X = x + 1
}

Este funciona bien en el primer cuadro. En el segundo cuadro que usted obtiene un error porque x no está definido. La expresión no recuerda que fue de 10 x en el marco anterior. Este se convierte en una seria limitación cuando se intenta hacer algo más de una cantidad aleatoria de tiempo porque una vez que usted decide cuánto tiempo debe tomar, Usted necesita para verificar, en cada cuadro para ver si está hecho todavía. Difícil de hacer si usted no puede pasar que el valor de un marco a la próxima.


Seed_random al rescate:

Resulta que se puede obtener en torno a este problema con la mayor (por AE 5.5) función seed_random. Esta función le permite establecer una secuencia repetible de números aleatorios y regenerar a voluntad, Sólo mediante el restablecimiento de la semilla a un valor anterior y, a continuación, llamando al azar () la función. Esto nos da una solución al problema porque a pesar de que no puede pasar nuestros valores aleatorios a partir de un marco a la próxima, Podemos recrear mediante seed_random. Vamos a ver cómo funciona seed_random.

Abrir el archivo de proyecto y abra la "base de compensación". Esto es sólo una 640x480 comp 50x50 con una sólida capa añadido. Seleccione "sólido 1" y ponen de manifiesto la posición de propiedad. Alt-tecleo (opción-clic) en el cronómetro para activar la expresión de esta propiedad. Introduzca la siguiente expresión:

[random (0,This_comp.Anchura),Aleatorio (0,This_comp.Altura)];

Esto hará que la plaza para ir a una posición aleatoria en la comp. Vista previa de la competición. Usted notará que la plaza pasa a una nueva posición sobre cada cuadro. No muy útil. Añadir una nueva línea para la expresión de manera que ahora dice:

Seed_random (1,True);
[random (0,This_comp.Anchura),Aleatorio (0,This_comp.Altura)];


Aviso de que la plaza de nuevo salta a una posición aleatoria, pero cuando usted previsualización permanece allí. Este nuevo comportamiento se debe a un cambio que Adobe a la función para seed_random AE 5.5. Se ha añadido un segundo parámetro, Que cuando asignado a "true" establece la función de manera aleatoria los números generados al azar que no depFinalen de tiempo. Los números aleatorios depFinalerá del número de capas, El número de propiedad, El valor del primer parámetro en la llamada seed_random (la "semilla"), Y el número de veces que la función aleatoria que se ha llamado. Que significa que la misma expresión generará diferentes números aleatorios en una capa diferente o propiedad (más tarde vamos a sacar provecho de esto para añadir rápidamente la complejidad de nuestro comp). Pruebe a cambiar la "semilla" parámetro a otro número. Usted notará que la plaza se traslada a una ubicación diferente y permanece allí. Cambiar el segundo parámetro a "false" y observe que cuando una vista previa, La plaza salta por todo el lugar de nuevo.

Añadir un poco más de código a su expresión para que se parezca a esta:

If (tiempo 1) (
Seed_random (1,True)
}
Else (
Seed_random (2,True)
}
[random (0,This_comp.Anchura),Aleatorio (0,This_comp.Altura)];


Ahora le aviso que si la vista previa, La plaza se queda en una ubicación para el primer segundo y luego salta a otro lugar para el resto de la comp.

¿Cómo podemos utilizar esta nueva, Más potente seed_random función? Aquí es el concepto clave: Con el segundo parámetro asignado a "true", Para una determinada capa, Propiedad, Valor y de las semillas, El número aleatorio que se obtiene cuando se llama al azar () función sólo depFinale de cuántas veces le han llamado desde la función de ajuste de la semilla. Que es, La primera vez que llame al azar () después de poner la semilla que usted obtFinalrá un número al azar particlar (lo llamaremos x). La segunda convocatoria se creará un segundo número al azar (vamos a llamar a esto un año) y así sucesivamente. Pero si usted llama seed_random de nuevo con el original de semillas, Comenzará la secuencia más. Que es, La siguiente al azar () llamada regenerar el original de números aleatorios (x en este caso). Usando un valor diferente de semillas provocará una secuencia completamente diferente a ser generado. Considerar el siguiente ejemplo:

Seed_random (1,True); / / establecer el valor de las semillas
A = aleatorio ();
B = aleatorio ();
C = aleatorio ();

Seed_random (1,True); / / reiniciar la semilla en el mismo valor
I = aleatorio ();
J = aleatorio ();
K = aleatorio ();

Seed_random (2,True) / / nuevas semillas
Q = aleatorio ();
R = aleatorio ();
S = aleatorio ();

Seed_random (1,True); / / restablecer la semilla original
X = aleatorio ();
Y = aleatorio ();
Z = aleatorio ();

En este caso, A,B, Y c serán diferentes números aleatorios. Sin embargo, Uno y voy a ser el mismo, B, j será el mismo, C, k y será la misma, porque la semilla se ha restablecido (a 1 en este caso) y la secuencia comienza al azar. Q,R y s será una nueva secuencia de números aleatorios, porque la semilla se ha cambiado a 2. La secuencia x,Y,Z será el mismo que una,B,C e I,J,K porque la semilla se ha establecido en 1 de nuevo. Para que podamos volver a una secuencia de números aleatorios por restablecer el valor de las semillas que generaron esos números.

¿cómo esta nos ayudan a? Para generar nuestro movimiento aleatorio, En un determinado marco, tenemos que saber varias cosas acerca de la actual serie de sesiones de movimiento: Hora de inicio, Posición inicial, Hora de finalización, Y la posición final. Que se trata exclusivamente de números aleatorios que se generan mediante un valor de semillas diferentes para cada segmento de movimiento. Y vamos a base de la semilla en la que el valor del segmento que estamos actualmente en. Para que todos los que tenemos que hacer es tener el poder de expresión de averiguar que es en el segmento (de la que será capaz de averiguar el valor de las semillas), Establecer la semilla, Y regenerar la secuencia de números aleatorios que nos dan la hora de inicio, Posición inicial, Hora de finalización, Valores y la posición final de la actual serie de sesiones.

Bien - vamos a revisar lo que nuestro objetivo será que esta expresión. Queremos que la plaza para pasar sin problemas desde una posición aleatoria en la pantalla a otra. También queremos que el tiempo que tarda en hacer que esto sea aleatorio (digamos entre .5 y 2 segundos). Esta expresión que hará:

Seg_start_time = 0; / / las condiciones iniciales
Seg_Final_time = 0;
I = 1;
Tmin = .5; / / tiempo de ciclo mínimo (no puede ser cero)
Tmax = 2; / / máximo de tiempo de ciclo
While (tiempo = seg_Final_time) (
I = I +1; seed_random (I,True);
Seg_start_time = seg_Final_time;
Seg_Final_time = seg_Final_time + random (Tmin,Tmax);
}
Por ciento = (tiempo - seg_start_time) / (seg_Final_time - seg_start_time);
Target_x = aleatorio () * This_comp.De ancho;
Target_y = aleatorio () * This_comp.Altura;
Seed_random (I-1,True);
X = aleatorio (); / / este es un tirar valor
Old_x = aleatorio () * This_comp.De ancho;
Old_y = aleatorio () * This_comp.Altura;
Facilidad (por ciento,[old_x,Old_y],[target_x,Target_y]);

Copiar y pegar esta expresión en la posición de expresión (o simplemente abierto "base + comp expresión"). Vista previa de la competición. Usted notará que la plaza cuenta ahora con un buen, Fluido, Movimiento que es aleatoria en la duración y la dirección.

En esta expresión, "I" es nuestro segmento de contrarrestar, Que vamos a utilizar también como el valor de las semillas de dicho segmento. "Tmin" y "tmax" definir la gama de azar veces posible durante la duración de cada segmento. En este caso, Una serie de sesiones tFinalrá una duración de entre .5 y 2 segundos. El "mientras que" bucle es donde la expresión en cifras que en su segmento. Y se hace mediante el incremento y acumulación de la semilla aleatoria segmento duración hasta un valor superior a la hora actual se llega a. En este punto se conoce el inicio, Final, Y el actual momento de la actual serie de sesiones para que pueda calcular el porcentaje de este segmento que se ha completado. Que pide el azar () la función dos veces más para conseguir el objetivo de las coordenadas x e y para la posición final de este segmento. La siguiente parte es un poco difícil. La expresión aún necesita saber la posición inicial de este segmento para que pueda calcular (con base en el porcentaje completado) la posición actual. Desde la posición inicial es la misma que la posición final del segmento anterior, Sólo disminuye la semilla para volver a la semilla del segmento anterior. Luego llama a la expresión del azar () para obtener final coordenadas x e y del segmento anterior. Usted notará que hay una "tirar" a la llamada al azar () antes de la anterior x e y se determinan los valores. Esto se debe a que por cada semilla, La primera aleatorio () se utiliza siempre de llamada para el final del tiempo (que ya sabemos) - el 2 y 3 de llamadas se utilizan para las coordenadas X e Y.

Abrir la "expresión de compensación". Esta competición es el mismo que el anterior a excepción de la competición además de la que asignaron al azar a expresiones similares para la opacidad y la rotación. Expresión es la opacidad:

Seg_start_time = 0; / / las condiciones iniciales
Seg_Final_time = 0;
I = 1;
Tmin = .5; / / tiempo de ciclo mínimo (no puede ser cero)
Tmax = 2; / / máximo de tiempo de ciclo
While (tiempo = seg_Final_time) (
I = I +1; seed_random (I,True);
Seg_start_time = seg_Final_time;
Seg_Final_time = seg_Final_time + random (Tmin,Tmax);
}
Por ciento = (tiempo - seg_start_time) / (seg_Final_time - seg_start_time);
Target_Opacidad = aleatorio () * 100;
Seed_random (I-1,True);
X = aleatorio (); / / este es un tirar valor
Old_Opacidad = aleatorio () * 100;
Facilidad (por ciento,Old_Opacidad,Target_Opacidad);

Y la rotación de expresión es:

Seg_start_time = 0; / / las condiciones iniciales
Seg_Final_time = 0;
I = 1;
Tmin = .5; / / tiempo de ciclo mínimo (no puede ser cero)
Tmax = 2; / / máximo de tiempo de ciclo
While (tiempo = seg_Final_time) (
I = I +1; seed_random (I,True);
Seg_start_time = seg_Final_time;
Seg_Final_time = seg_Final_time + random (Tmin,Tmax);
}
Por ciento = (tiempo - seg_start_time) / (seg_Final_time - seg_start_time);
Target_rotation = aleatorio () * 360;
Seed_random (I-1,True);
X = aleatorio (); / / este es un tirar valor
Old_rotation = aleatorio () * 360;
Facilidad (por ciento,Old_rotation,Target_rotation);

Estas expresiones son casi idénticas a la de la posición, salvo que hayan sido modificados para generar un rango de valores adecuados para la opacidad y la rotación. Vista previa de la competición y la notificación de que la plaza cuenta ahora con la rotación y desaparecer al azar, así como el movimiento.

Aquí viene la parte divertida. Duplicado "sólido 1" un montón de veces (o simplemente abierto "múltiples comp") y una vista previa de la competición. Recuerde - usted puede hacer esto muy rápido usando el atajo Control + D (comando + d en el MAC ). Ahora cuando hay una vista previa de una serie de actividades. Los números aleatorios para cada nivel son diferentes, aunque las expresiones son exactamente los mismos para cada.


Ahora las cosas son cada vez más interesante


Abierto "comp diversión" y una vista previa. Para esta competición, I duplicados "sólido 1" dos veces y, a continuación, sustituye cada uno de los sólidos con un ilustrador de los archivos. Entonces yo duplicado cada una de las capas de un montón de veces. Puede ver que una vez que haya creado las expresiones, Capas duplicar rápidamente añade complejidad a su comp.


Es fácil crear un complejo comp rápidamente con estas expresiones


Puede diseccionar las expresiones para ver cómo funcionan, O puedes copiar y pegar en su propio comps. Los tres ejemplos que he dado (posición, Opacidad, Y la rotación) debe darle una muy buena idea de cómo adaptar la expresión de otras propiedades. Espero que esto inspira a algunos de ustedes a jugar con estos y crear algo realmente cool!

# # Dan ebberts

Siéntase libre de hablar de esta técnica en el After Effects foro Aquí, en CreativeCow.




Por favor visite nuestros foros y ver otros artículos en CreativeCow.net Si has encontrado esta página de un vínculo directo.


FOROSTUTORIALESREVISTASERVICIOSVíDEOSNOTICIASBLOGS


© CreativeCOW.net Todos los derechos reservados.

Creative Comunidades del Mundo

[Superior]

Englishالعربية中文FrançaisDeutschעבריתहिन्दीItaliano日本語PortuguêsРусскийEspañol