ADOBE AFTER EFFECTS: Forum Expressions Tutorials Creative Cloud

# Position & function

FAQ   •   VIEW ALL
 Position & function on Aug 20, 2009 at 11:32:49 am

Is , I am again After Effects CS3 , I recently learned a very useful feature : Wiggle (
Tres satisfait PAR the creation of some , I wonder if there are other functions like this one can change the position ?
I asked if more PRESICA could not make a circle , Or spiral ?
Thank you to me about these two questions .

Cordialement max .

 Re: Position & functionon Aug 20, 2009 at 10:16:47 pm

you can create circular rotation with an expression like this:

r = 100; // radius is pixels
p = 2; // period of rotation in seconds

x = Math.sin(2*Math.PI*time/p)*r;
y = Math.cos(2*Math.PI*time/p)*r;
value + [x,y]

set the radius and period values ass needed.

for spiral motion, you only need one more variable, so it would look like this:

r = 100; // radius is pixels
p = 2; // period of rotation in seconds
n = 10; // radius change for spiral motion

x = Math.sin(2*Math.PI*time/p)*(r+n*time);
y = Math.cos(2*Math.PI*time/p)*(r+n*time);
value + [x,y]

positive values for n will increase (expand) radius over time, negative values will decrease radius.

Kevin Camp
Senior Designer
KCPQ, KMYQ & KRCW

 Re: Position & functionon Aug 21, 2009 at 11:23:38 am

Merci beaucoup !
Je comprend maintenant beaucoup mieux les fonctions grace a tes explications .
Mais si je veux que ma spirale monte de boucle en boucle , doit je rajouter une value Z ?

 Re: Position & functionon Aug 21, 2009 at 5:59:09 pm

the easiest way to get the spiral to move upward is to just change the y expression to be z, then animate the vertical movement with key frames. so your expression would look like this:

r = 100; // radius is pixels
p = 2; // period of rotation in seconds
n = 20; // radius change for spiral motion

x = Math.sin(2*Math.PI*time/p)*(r+n*time);
z = Math.cos(2*Math.PI*time/p)*(r+n*time);
value + [x,0,z]

-- your layer will need to be a 3d layer, or you will get an error.

since the last line of the expression adds the calculated expression value the current 'value' of the layer, you can use keyframes for the position to create the vertical movement (or movement in any direction, if you wanted).

however, if you wanted the movement to be generated only with the expression, you'd just need to create a variable for y position. so your expression would look like this:

r = 200; // radius is pixels
p = 2; // period of rotation in seconds
n = -20; // radius change for spiral motion
yOffset = -100; // amount of vertical movement over time in pixels per second

x = Math.sin(2*Math.PI*time/p)*(r+n*time);
y = time*yOffset;
z = Math.cos(2*Math.PI*time/p)*(r+n*time);
value + [x,y,z]

in this expression, negative yOffset values move upwards, and positive values move downwards.

i should note that there are other ways to easily create this type of motion that don't use expressions. one way is to use two layers and parenting...

to illustrate, create a new layer (100x100, or so) and create a new null layer (layer>new>null) and make them both 3d layers.

animate the null layer's y rotation to make a few rotations over 5-10 seconds. then 'parent' the 100x100 layer to the null by using the parenting pickwhip. if you scrub through the time line the 100x100 layer should now rotate around it's y-axis.

animate the 100x100 layer's x position to move away from the center over 5-10 seconds. and animate the null's y position to move up the screen over the same amount of time. now as you scrub through the timeline it should give you a upward spiral movement of the layer.

if you want the layer to always face the camera, select the 100x100 layer and choose layer>transform>auto-orient... and click orient towards camera.

Voici une tentative de traduction en français en utilisant un traducteur en ligne - J'espère que ce sens.

Le plus simple pour obtenir la spirale de se déplacer à la hausse est de changer seulement l'expression y à z, puis de les animer le mouvement vertical avec des images clés. si votre expression ressemblerait à ceci:

r = 100; // radius is pixels
p = 2; // period of rotation in seconds
n = 20; // radius change for spiral motion

x = Math.sin(2*Math.PI*time/p)*(r+n*time);
z = Math.cos(2*Math.PI*time/p)*(r+n*time);
value + [x,0,z]

-- votre couche devra être une couche 3D, ou vous obtiendrez une erreur.

depuis la dernière ligne de l'expression ajoute la valeur de l'expression a calculé la valeur actuelle »de la couche, vous pouvez utiliser des images clés pour la mesure de créer le mouvement vertical (ou du mouvement dans une direction quelconque, si vous voulez).

Toutefois, si vous vouliez le mouvement à se développer que par l'expression, vous suffirait de créer une variable pour la position Y. si votre expression ressemblerait à ceci:

r = 200; // radius is pixels
p = 2; // period of rotation in seconds
n = -20; // radius change for spiral motion
yOffset = -100; // amount of vertical movement over time in pixels per second

x = Math.sin(2*Math.PI*time/p)*(r+n*time);
y = time*yOffset;
z = Math.cos(2*Math.PI*time/p)*(r+n*time);
value + [x,y,z]

dans cette expression, yOffset valeurs négatives déplacent vers le haut, et positive à la baisse des valeurs bouger.

Je tiens à souligner qu'il existe d'autres façons de créer facilement cette type de mouvement qui n'utilisent pas l'expression. Une solution est d'utiliser deux couches et la parentalité ...

pour illustrer, créez un nouveau calque (100x100, ou presque) et créez un nouveau calque null (calque> null nouvelles>) et rendre à la fois des calques 3D.

animent la couche de roulement y null de faire quelques rotations au cours 5-10 secondes. puis «mère» la couche de 100x100 à l'hypothèse nulle en utilisant la pickwhip parentales. si vous avancez dans la ligne du temps la couche de 100x100 devrait maintenant tourner autour de vous y-axe.

animent la couche 100x100 x de la position de s'éloigner du centre de plus de 5-10 secondes. et animer la position y null d'aller de l'écran au cours de la même quantité de temps. maintenant que vous avancez dans la timeline, il devrait vous donner un mouvement de spirale ascendante de la couche.

Si vous souhaitez que le calque pour toujours face à la caméra, sélectionnez le calque de 100x100 et choisissez Calque> Transformation> Auto-Orient ... et d'orienter cliquez vers la caméra.

Kevin Camp
Senior Designer
KCPQ, KMYQ & KRCW

 Re: Position & functionon Aug 21, 2009 at 6:30:25 pm

For spirals I don't recommend using expressions. Instead use a Null object and parent your layer to it. Make sure the layer is at the same position as the Null object to begin with. This would mean [0,0,0] if the layer is already parented to the null.

Rotate the Null object on the Y-axis and animate the position of your layer out on the Z-axis. For example, from [0,0,0] to [0,0,1000].

This can be adapted for any axis of rotation.

Darby Edelen