Jump to content
Sign in to follow this  
graymachine

Expressions Training Series: Now Available

Recommended Posts

Many asked that I announce when the After Effects Expressions training series is up and available.

 

Well, here it is!!

 

One hour of training for $29. What a bargain! Learn expressions from square 1, while enjoying the soothing sounds of my voice.

 

Also, each lesson comes with a reference PDF outlining everything that is covered in the video lesson.

 

Watch the Promo Video

 

Note, the actual training is 1024x768, not 400x300 like the promo is. Size does matter.

Edited by graymachine

Share this post


Link to post
Share on other sites

Thanks Graymachine...$29 is not that bad ;)

 

btw...have you had a chance to play with expressions in CS3? I've read that you can use pixel sample values to drive expressions...which sounds really handy.

Share this post


Link to post
Share on other sites
Thanks Graymachine...$29 is not that bad ;)

 

btw...have you had a chance to play with expressions in CS3? I've read that you can use pixel sample values to drive expressions...which sounds really handy.

 

I've only read about that, but that is a WELL needed feature. Althought this is only Volume 1. I plan to release Volume 2 soon, and Volume 3 will cover CS3 stuff (as I still need to learn it). Also, apparently marker names are also accesible, which is VERY cool. You'll be able to create event triggers of different kinds.

Share this post


Link to post
Share on other sites

I was one of the lucky ones who got to beta-test this .. and all I can say is this is a really great resource. Can't beat it for the money. I've worked in AE for a long time but rarely use expressions .. so this was a good primer. I've already taken some of what I learned and used it in a recent project .. so I would highly recommend these to anyone wanting to learn more about expressions.

 

And no, Harry didn't bribe me to write this ;)

Share this post


Link to post
Share on other sites

I'll bite. I want to sharpen my expression skills, which are barely more than pickwhipping values here and there. I'm going to get it now and I'll post a review when I'm done.

Share this post


Link to post
Share on other sites

well, I bought, downloaded, and watched the first batch of 3 and learned a ton. I had just finished a prject with birds and flapping wings, and I could have used the very first thing I learned to save a lot of time there. Doh.

Definitely worth $30. It's a lot easier watching quicktimes than learning from a book. Looking forward to the 2nd and 3rd installments.

Share this post


Link to post
Share on other sites
Thanks Graymachine...$29 is not that bad ;)

 

btw...have you had a chance to play with expressions in CS3? I've read that you can use pixel sample values to drive expressions...which sounds really handy.

 

you probably already read this, but it explains it a bit. seems a hugely useful feature. I'm stoked.

 

http://www.motionscript.com/design-guide/sample-image.html

Share this post


Link to post
Share on other sites

Thanks for the kind words! The next parts are in development, but I am always open to suggestions.

 

Lesson 4 is covering Data Screens, which dives into Source Text expressions, and deeper into programming with things like if/else, for and while loops, random seeds/numbers, and audio to keyframes. This might turn into a double lesson.

 

Lesson 5 is all about event triggering, controlling when and where expressions happen: using markers, using keyframe events, and the deceptively simple "linear" function. And it quickly covers some already over-done material on spring-like motion.

 

Lesson 6 is up in the air. If there is stuff people are dying to know, I'd love to find out. I think it's too soon to dive into vectors. Camera control is one possibility, it just seems like a boring topic, and it's been covered quite a bit in forums and with the Meyers' articles. Perhaps it will just jump into the "CS3" functions.

 

These topics are tough to design, as most expression applications are this "little thing" here and there.. controlling exposure from blur level, creating random motion, making and object invisible based on certain parameters, etc. Turning these into a 20 minute lecture requires a really solid project to base it on.

 

Anway, I plan to have the next ones out before the CS3 release, freelance schedule allowing. Thanks for the review!

Share this post


Link to post
Share on other sites

One thing that would be handy for me is more training about how to reference layers in other comps, and how to break out of the current composition and work all over any given project with scripts. I know that that sort of stuff isn't even that advanced, but syntax and useful examples could be cool.

 

A scripting thread that I read but couldn't quite grasp dealt with space transformation (layer, comp, etc) and they were making some cool proof of concept tests and seemed rife with possibility. It was all french, but here's the translated thread:

 

http://translate.google.com/translate?u=ht...Flanguage_tools

 

there are little quicktimes in it that show that they are doing.

 

Not sure what else, but if I think of anything, I'll mention it.

 

thanks!

Share this post


Link to post
Share on other sites

Think of it this way:

 

For "this comp"

 

Global Object: thisComp

Sub-Object: layer("My Layer")

Attribute: position, rotation, etc

 

Which goes together like this:

 

thisComp.layer("My Layer"). position

 

for "that comp"

Global Object: comp("Comp Name")

Sub-Object: layer("My Layer")

Attribute: position, rotation, etc

 

 

Which goes together like this:

 

comp("Comp Name").layer("My Layer").position

 

I'd like to visit expression structure more in lesson 5 once folks are more comfortable with them.

Share this post


Link to post
Share on other sites
ordered it and watched lesson 1... good stuff harry, looking forward to watching the other 2 lessons - I'll keep an eye on this series....

 

Awesome! Thanks!

 

And regarding the script thing.. that's a tricky one. That's just hardcore programming with little instant feedback with what you are doing. Maybe maybe down the road it's worth diving into. Honestly, I don't do much JSX Scripting, though.

Share this post


Link to post
Share on other sites

A Minor Collection of

Useful Expressions

 

by Michael Natkin, Fred Lewis, and Brian Maffitt

 

"Total Trainning"

 

 

Circle Fun

 

This generates perfect circular motion centered around the original position of the layer. I recommend that you map the radius and

cycle inputs to Expresso sliders, and the phase input to an Expresso angle.

 

Apply this expression to the position of the layer

 

radius = 75; // the radius of the circle

cycle = 1; // number of seconds to complete a circle; higher value = slower

if(cycle ==0){cycle = 0.001;} //avoids a “divide by zero” error

phase = 27; // initial angle in degrees from bottom

reverse = 1; // 1 for ccw, -1 for cw

x = Math.sin( reverse * degrees_to_radians(time * 360 / cycle + phase));

y = Math.cos(degrees_to_radians(time * 360 / cycle + phase));

add(mul(radius, [x, y]), position)

 

------------------------------------------------

 

Track a Child

 

This expression is designed to track the position of a layer that has been parented to one or more layers.

Use the expression below on the position property that you wish to animate, changing the name “Child” to match the neame of the

layer you wish to track. For instance, if you wat to use write-on to track the position of a layer called “moon”,

 

apply this expression

to the “brush position” property of the write-on filter, and change “child” to “moon”.

 

c = this_comp.layer(“child”);

c.to_comp(c.anchor_point)

 

------------------------------------------------

 

 

Adjustable Position Wiggle

 

Use this expression as an interactive, keyframeable Wiggler.

 

Apply it to the position of the layer you wish to wiggle.

 

wigfreq = 3; //wiggle frequency

wigamt = 30; //wiggle amount

wigdetail = 3; //detail of noise

position.wiggle(wigfreq, wigamt, wigdetail)

 

------------------------------------------------

 

Adjustable Rotation Wiggle

 

Use this expression as an interactive, keyframeable Wiggler.

 

Apply it to the rotation of the layer you wish to wiggle.

 

wigfreq = 5; //wiggle frequency

wigangle = 45; //wiggle amplitude

wignoise = 3; //octaves of noise

rotation.wiggle(wigfreq, wigangle, wignoise)

 

------------------------------------------------

 

Oscillate Position

 

Creates an oscillating motion between two specified 2-dimensional positions over a specified period of time (in seconds).

Use an adjustment layer with Expresso position controls for “from”, “to”, and an Expresso slider assigned to “period”.

 

Change “linear” to “ease” for smoother interpolation.

 

from = [50, 90]; //one end of your oscillation

to = [190, 30]; //the other end of your oscillation

period = 1.5; //time between oscillation points (multiply by 2 for a round trip)

t = time % (period * 2);

if (t > period) t = 2 * period - t;

linear(t, 0, period, from, to)

 

------------------------------------------------

 

Oscillate Rotation (or any single value)

 

Creates an oscillating motion between two specified values over a specified period of time (in seconds).

Use Expresso angles or sliders for “from”, “to”, and an Expresso slider assigned to “period” for fine control. You can apply these to

any layer.

 

Change “linear” to “ease” for smoother interpolation.

 

from = -45; //one end of your oscillation

to = 45; //the other end of your oscillation

period = 1.5; //time between oscillation points (multiply by 2 for a round trip)

t = time % (period * 2);

if (t > period) t = 2 * period - t;

linear(t, 0, period, from, to)

 

------------------------------------------------

 

Bounce

 

Creates a bouncing (sine wave) motion between two specified 2-dimensional positions over a specified period of time (in seconds).

Useful for creating bouncing balls.

Use Expresso position controls for “from”, “to”, and an Expresso slider assigned to “period” for fine control.

 

You can apply these to any layer.

 

surface = [320, 480]; //the position of the “bounce” surface

apogee = [320, 50]; //the “apogee” of the bounce

period = 1.5; //the length of time from surface to apogee

t = time % (period * 2);

if (t > period) t = 2 * period - t;

linear(Math.sin(t * Math.PI / period), 0, 1, surface, apogee)

 

------------------------------------------------

 

Wiggle from Leader

 

These two expressions create a “follow the leader” effect. One works from the top down, the other from the bottom up. Only use one.

A follower will tag along after the leader, deviating from the path according to the wiggle properties that are specified in the

inputs.Once applied to a single follower, you can duplicate the layer as many times as you like and each subsequent copy will follow

along, offset in time from the last and wiggling uniquely. In this expression, the wiggle is based on the position of the leader.

Link Expresso sliders to lag (to interactively control how bunched togeher the layers are), winfreq (to control the frequency of the

wiggle) and wigamp (to control the amplitude of the wiggle). Apply Expresso effects to the leader only.

 

Change the word “Leader” to match the name of the leading layer.

 

//USE THIS ONE IF THE LAYERS STACK UP FROM BOTTOM LEADER

 

lagtime = .1;

wigfreq = 3; //wiggle frequency

wigamt = 30; //wiggle amount

adj = (this_comp.num_layers - index) * lagtime;

this_comp.layer("Leader&quot....position.wiggle(wigfreq, wigamt, 2, .5,time - adj)

 

//OR...

 

//USE THIS ONE IF THE LAYERS STACK DOWN FROM TOP LEADER

 

lagtime = .1;

wigfreq = 3; //wiggle frequency

wigamt = 30; //wiggle amount

adj = (index - 1) * lagtime;

this_comp.layer("Leader&quot....position.wiggle(wigfreq, wigamt, 2, .5,time - adj)

 

------------------------------------------------

 

Wiggle from Previous

 

This creates a “follow the leader” effect that works from the bottom up. A follower will tag along after the previous layer, deviating

from the previous path according to the wiggle properties that are specified in the inputs. Once applied to a single follower, you can

duplicate the layer as many times as you like and each subsequent copy will follow along, offset from the last in time and wiggling

uniquely. In this expression, the wiggle is based on the position of the previous layer.

Link Expresso sliders to lag (to interactively control how bunched togeher the layers are), winfreq (to control the frequency of the

wiggle) and wigamp (to control the amplitude of the wiggle). Apply Expresso effects to the leader only.

 

Change the word “Leader” to match the name of the leading layer.

 

//USE THIS ONE IF THE LAYERS STACK UP FROM BOTTOM LEADER

 

lagtime = .1;

wigfreq = 3; //wiggle frequency

wigamt = 30; //wiggle amount

adj = (this_comp.num_layers - index) * lagtime;

this_comp.layer(this_layer, 1).position.wiggle(wigfreq, wigamt, 2, .5,time - adj)

 

//OR...

 

//USE THIS ONE IF THE LAYERS STACK DOWN FROM TOP LEADER

 

lagtime = .1;

wigfreq = 3; //wiggle frequency

wigamt = 30; //wiggle amount

adj = (index - 1) * lagtime;

this_comp.layer(this_layer, -1).position.wiggle(wigfreq, wigamt, 2, .5,time - adj)

 

------------------------------------------------

 

2D Look At

 

Apply this Expression to the Rotation channel of any layer you wish to control,

Set LookAt, below, to the name of the layer you wish the layer to look at.

If the controlled layer is not initially pointing straight up, enter an offset amount in degrees, below, to adjust the direction it is

looking.

 

LookAt = "ball"

offset = 0

diffx = position[0] - this_comp.layer(LookAt).position[0];

diffy = position[1] - this_comp.layer(LookAt).position[1];

if (diffx == 0) {

diffx = 1 }

sign = 1 + (-1 * (diffx / Math.abs(diffx))) * 90;

radians_to_degrees(Math.atan(diffy/diffx)) + sign + offset

 

------------------------------------------------

 

3D Look At

 

Apply this expression to the orientation channel of the layer you wish to have look at another layer (the layer being controlled).

Enter the name of the layer to look at in LookAt below. If the layer being controlled does not correctly look at other layer, adjust the

layer offset by changing the X, Y and Z rotation values (not the orientation values) for the layer being controled.

 

LookAt = "ball"

look = look_at(position, this_comp.layer(LookAt).position);

[look[0], look[1], look[2]]

 

------------------------------------------------

 

Angle of View Zoomer

 

This allows you to control the angle of view of acamera interactively, by scaling a null object on screen.

 

To use: Create a null called "angle_zoomer".

Animate the null's scale to control viewing angle in degrees.

 

substitute = this_comp.layer("angle_zoomer&quot....scale[1];

this_comp.width / (2 * Math.tan(degrees_to_radians(substitute/2)))

 

------------------------------------------------

 

Focal Length Zoomer

 

This expression will allow you to zoom a camera in After Effects using real-world focal length values.

 

To use this expression:

1. create a camera in after effects

2. create a null layer called "focal_zoomer" and turn off its visibility switch in the timeline

3. apply the expression below to the Zoom parameter of the camera

4. set the value of hFilmPlane in the expression to the size of your film, in milimeters

5. animate the null's scale to control the focal length of the camera, in milimeters

 

hFilmPlane = 35;

FocalLength = this_comp.layer("focal_zoomer&quot....scale[1];

this_comp.width * (FocalLength/hFilmPlane)

 

------------------------------------------------

 

Camera Autofocus

 

Apply this expression to the Focus Distance of your camera, then change the name "Focus Layer" below, to the namer of the layer

you wish to keep in focus

 

focuser = "Focus Layer";

cam_to_layer = sub(this_comp.layer(focuser).position, position);

length(cam_to_layer)

 

------------------------------------------------

Share this post


Link to post
Share on other sites
A Minor Collection of

Useful Expressions

by Michael Natkin, Fred Lewis, and Brian Maffitt

"Total Trainning"

 

Thank you for posting this 3 times.

 

Edit (govinda): It's the 500 Server Error again. I guarantee you that mazination got the error and resubmitted, and when he finally got the thread loaded, he's got like five replies. I've deleted the extras.

Share this post


Link to post
Share on other sites

Hey Harry :rolleyes: Hope to see ur After FX Expression Series 3 later.....don't stop ur hardwork ...i already try series 1 and 2..really great!!

I have a programming background anyway..so it make me easy to understand

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

×
×
  • Create New...