|
Junior Member
pixeleye3d está desconectado
Fecha de Ingreso: julio-2006
Mensajes: 16
Poder de Credibilidad: 31
|
Expressions a Fondo - Combustion
Expressions
Introduccion
Las expresiones o expressions fueron introduccidas en Desde Combustion 3, se crearon como un metodo de automatizacion de animaciones, a partir de combustion 4 se genero una mayor logica de modificacion, con la cual el usuario puede modificarlas para lograr los resultados esperados. Las expresiones crean keyframes automaticamente basandose en formulas matematicas y en lenguaje de programacion javascript y ecma-script, estos lenguajes estándar de programación que permiten muchísimas posibilidades y poseen un manejo relativamente simple, podemos utilizar operadores aritméticos, además de expresiones predefinidas que podemos utilizar como punto de partit¡da para generar nuestras propias expresiones. La potencia de Combustion 4, esta en que con tan solo entender las funciones basicas de las expresiones podemos empezar a entender el funcionamiento logico de las mismas
una formula matemática que puede ser utilizada para animar los canales de las propiedades de las capas u operadores, animar utilizando expresiones puede ahorrarnos mucho tiempo y esfuerzo en la creación de movimientos y efectos complejos.
Una expresión esta compuesta por valores numéricos, constantes, referencia a canales y combinaciones de estos elementos; son calculadas de izquierda a derecha.
Podemos basar las expresiones también en el número de frame, el tiempo local del cuadro actual o el tiempo global de la composición para generar otro tipo de efectos.
multiline editor
El multiline editor es el que nos va a permitir hacer operaciones en las expresiones, por default aparece en 0.0000, por que nuestro elemento se encuentra en la posicion 0.000 del workspace. Bien ahora cambiemos la posicion a 90. miremos como la footage cambia de posicion por medio de nuestro script. 90 es intepretado como este numero entero, o como la sumatoria de 45+45.
Combustion calcula la operaciones matematicas en el siguiente orden.
1. Multiplicacion
2. division
3. adicion
4. sustraccion
en ese orden especifico calcula las operaciones matematicas.
Hagamos el siguiente ejemplo:
Si tenemos el siguiente valor: 5+2*4+3 haciendo la operacion como aprendimos en el colegio el resultado seria = 31
Bien debido al orden explicado anteriormente combustion calcula diferente esta operacion, primero multiplica 2*4 =8 a ese resultado le adicciona el 3 por se la suma siguiente y por ultimo suma el 5, para darnos un resultado de = 16.
Bien ahora para obtener el resultado aprendido en el colegio tendria que tener el siguiente concepto: tenemos que hacer la misma operacion pero de la siguiente manera:
(5+2)*4+3, de esta manera el combustion detecta el parentesis para hacer esa operacion primero 5+2=7, este resultado lo multiplica por 4 y los suma por 3= 31.
Tenemos que tener encuenta que a la hora de usar parentesis, no podemos dejar abierto ninguno por que esto hace que combustion se confunda. Hagamos la misma operacion anterior y borremos un parentesis, al confundirse combustion, me marca un error con un simbolo de exclamacion en amarillo.
Al dar doble click en el circulo amarillo, combustion me informa que tipo de error contengo en el script.
Creacion de una variable
Borramos la expression anterior, y ahora agregamos una nueva, abrimos el multiline editor, y empezamos a generar nuestra nueva variable.
rate = 5;
time = 20;
rate*time
El simbolo; significa el fin de la variable
Vemos que este resultado es x pos= 100.
Bien ahora si queremos una variable mas compleja podriamos declarar la siguiente:
rate = 5;
time = 20;
rate*(rate+time)+18/time;
el orden de la sumatoria seria la siguiente: 5*(25)+0.9= 125.9
bien ahora vemos que hicimos todas esta variables para simplemente acomodar el footage en la posicion x pos= 125.9, seria ilogico que usaramos las expresiones como una herramienta para posicionar elementos, las expresiones van a ser una herramienta que bajo este mismo concepto vamos a usar en animacion. Como ayudante para automatizar animaciones complejas.
Bien, ahora veremos como se puede declarar una variable para animacion de un elemento
rate = 5;
time = GetCurrentFrame();
rate*(rate+time)+18/time;
esta variable me permite crear una animacion, hay que tener en cuenta que javascript es un lenguaje que es bastante sensible a la composicion de los scripts es decir se deben respetar las letras minusculas y mayusculas.
Hay dos puntos claves en combustion en los cuales podemos referenciar variables para que cambien:
La primera es :
1. cuando una animacion existe ya sea por keyframe animation o por expresiones, se puede tomar la informacion de la animacion para ser re editada desde la misma animacion para ser calcula en la expression.
2. la otra es el time, debido a que combustion es un programa usado para motion graphics y composiciones animadas, uno de los factores mas importantes en los que trabaja es el time. La cantidad de la variable de tiempo siempre cambia constantemente. Este time tambien puede ser variado o controlado por una expression haciendo de esta variable una variable controlada por expresiones matematicas.
Una vez vamos entendiendo como trabajan las expresiones podemos empezar a controlar con unas de las herramientas mas poderosas de combustion, ya que si tenemos el control de el lenguaje de expression vamos a poder hacer variaciones de las mismas.
Expression browser
El expression browser, es una herramienta en donde podemos encontrar un set de expresiones bastante interesante, una vez entendiendo los conceptos explicados anteriormente, vamos a poder contra con la seguridad de poder editar las expressions del expression browser.
Para probar el expression browser, vamos a hacer click en el canal x posicion y vamos a dar click en el boton expression browser.
Lo primero que nos muestra es el xchannel que nos indica el canal o canales que tenemos seleccionado con el expression browser, el expression browser es un modo visual en donde podemos controlar la creacion de las mismas, desde aca variando cada uno de los parametros podemos llegar a crear automatizaciones interesantes.
El picon frame, corresponde a la duraccion de frames de nuestra composicion
Las expressions del browser se dividen en simples, complejas, randoms , three dimensionals, asi mismo dependiendo del canal seleccionado asi mismo se habilitaran las expresiones que se pueden aplicar, al seleccionar un solo canal, ej: x pos, se habilitan expresiones que solo van afectar a este canal, de igual manera al seleccionar los canales xy pos, tenemos acceso a un Nuevo set de expresiones aplicable a esos dos canales. Y l mismo pasa al seleccionar 3 canales, xyz pos, accedemos a una expression 3d.
Link Buttons
Los link bottons son utilizados para poder linkiar cualquier parametro, es decir por medio de ellos podemos automatizar dos funciones a la vez, y hacer que un expression se comporte influenciada a la modificacion de otro canal.
Contamos con dos tipos de link.
1. link absoluto(/):
se usa cuando queremos que un objeto herrede las expresiones del padre. Lo que hace este tipo de link es, general una conexion buscando informacion del objeto linkiado y hace referencia al nombre del composite.
CB.GetChannelValue( "Branch 'Composite - Untitled'/Composite - Untitled/Onbject b/Transformation/X Position", CB.GetCurrentFrame() );
Si refrescamos el nombre del composite automaticamente el la renombra en un link absoluto.
Ej: tenemos dos objetos , un objeto que se esta desplazando en el x pos, con un expression sine, y otro que permanence estatico, para hacer que el Segundo objeto copie la propiedades de expresiones de padre (absoluto), seleccionamos el Segundo objeto , ubicamos la trasnformacion en el mismo canal xpos, damos click en link absolute (/) y la linkiamos con el xpos del objeto uno, al hacer el objeto dos herreda las posiciones del padre y genera el mismo movimiento del mismo.
Al modificar la expression del objeto padre automaticamente es herredada al objeto dos.
Al estar linkiado absolutamente al padre el objeto 2, adquire la propiedad GetChannelValue
CB.GetChannelValue( "Branch 'Composite - Untitled'/Composite - Untitled/Onbject b/Transformation/X Position", CB.GetCurrentFrame() );
El parametro GetChannelValue me obliga a combustion a buscar la informacion del canal en la posicion x del objeto b, si bien podemos usar esta misma expression podemos partir de ella para modificiarla para que el objeto a actue un poco diferente al padre. Podriamos hacerlo por medio de la anterior expression modificada
CB.GetChannelValue( "Branch 'Composite - Untitled'/Composite - Untitled/Onbject b/Transformation/X Position", CB.GetCurrentFrame())+100;
De esta forma desplazamos en 100 pixel en la posicion x el objeto a. este seria un cambio de posicion.
Ahora, si queremos hacer un cambio en el timing tendriamos que usar la misma expression pero poniendo el valor entre el getcurrentframe
CB.GetChannelValue( "Branch 'Composite - Untitled'/Composite - Untitled/Onbject b/Transformation/X Position", CB.GetCurrentFrame()+100);
Eso va a permitir que la expression se desfase en time.
Bien, recordemos usar la opcion channel filtering, que es con la depuramos el timeline y dejamos los canales que solo vamos a utilizar en este caso dejariamos only channels witrh expressions.
2. link realtivo(..)
el link relativo, a diferencia del absoluto, Lo que hace este tipo de link es generar una conexion buscando informacion del objeto linkiado y pero no hace referencia al nombre del composite. Solo hace referencia al layer.
Los dos tipos de links funcionan de igual manera, el cambio lo vamos a ver a la hora de exportar e importar una expression. Ya que al abrir un link absoluto en una nueva composicion por medio del import expression el va a hacer referencia al nombre de la composicion con la que se exporto la expression. Aca vamos a ver que la expression se va a romper y no va a generar la animacion que por el contrario si haria el link relativo por que este solo se referencia al nombre del layer y no al composite.
Para corregir el link absuluto solo tendriamos que corregir la ruta de la misma para que funcione.
Link de dos channels
Para linkiar dos channels, vamos a usar el boton de link absute. Ponemos en el objeto a una expression random con valores de –15 y 15. esta expression la ponemos en el y position del objecto a. ahora, damos link absuluto y la linkiamos con el y rotation del objeto b, ahora vemos que cuando la expression del objeto a se anima gracias a la expression automaticamente se anima la rotacion en y del objeto b.
Al quedar linkiado el y rotation del objeto a con el y position del objeto b, el objeto b general la siguiente expression
CB.GetChannelValue( "Branch 'Composite - Untitled'/Composite - Untitled/Object a/Transformation/Y Position", CB.GetCurrentFrame() );
De esta manera tambien podemos modificar los parametros de las expression, si nos vamos al yrotation del objeto b y modificamos la expression anterior y le agregamos el siguiente valor
CB.GetChannelValue( "Branch 'Composite - Untitled'/Composite - Untitled/Object a/Transformation/Y Position", CB.GetCurrentFrame()-100 );
Lo que hacemos es darle un cambio den la y rotation de –100.
Convert Expressions
Este parametro nos permite traduccir un expression a keyframes, cuenta con un valor llamado accurancy, el cual a mayor numero crea menos keyframes y a menor numero crea mas keyframes, para convertir una expression seleccionamos los canales que queremos convertir y le damos click al boton math operations/convert expression. Para visualizar el cambio del convert expression es necesario estar en modo graph del timeline.
Una vez la tenemos convertida podemos modificar los keys de manera manual.
espero ayudarles a comprender un poco la logica de las expressions de combustion para que asi empiecen a automatizar animaciones mas complejas.
-m-
|