Skip to main content
New Participant
July 19, 2020
Answered

Line to move like sine wave

  • July 19, 2020
  • 2 replies
  • 6787 views

Hello, What is the best way to animate these lines in After Effects, to move like a sine wave, all at once. 

Correct answer Rick Gerard

The math gets a little complicated if you want to animate a Shape Layer Path. The first thing you need to do is start a new shape layer with the Pen tool and set the path to Rotobezier. Just add one point anywhere. 

 

The second step is to add an Expression Control Slider to the shape layer, duplicate it 3 times and then name the sliders Speed, Amp, Freq, and Width.

 

Now add the following expressions to the Shape Layer

 

// to Contents/Shape 1/Path 1
S = - effect("Speed")("Slider") * (Math.PI * .2);
A = effect("Amp")("Slider");
F = 2 * (effect("Freq")("Slider") * Math.PI);
pts = F * 5;
if (pts <= 0)
	R = 1
else 
	R = pts
W = effect("Width")("Slider")

P = [];

for (i=0;i<R;i++){
P.push([W/R*i,Math.sin(time*S+i/(R/F))*A]);}

createPath(P,[],[], false)

//to Transform/Anchor Point
x = effect("Width")("Slider")/2;
[x, 0]

 

Set the Stroke options to Round Cap and Round Join.

 

If your slider values are 5, 100, 10, 1000 you will end up with a sine wave path that is moving to the right 1/2 cycle per second, with a height of 100 pixels, and a frequency of 10 full waves over a distance of 1000 pixels.

 

It would be a good exercise to save that as an animation preset. If you press UU to reveal all modified properties in the shape layer and Ctrl/Cmnd + Click Shape 1, Effects, and Anchor point you can create an animation preset the will deliver a path with the stroke width you have set in your layer, the stroke color, and the Speed, Amp, Freq, and Width values you had selected when you save the animation preset. They are great time savers.

2 replies

Rick GerardCorrect answer
Community Expert
July 21, 2020

The math gets a little complicated if you want to animate a Shape Layer Path. The first thing you need to do is start a new shape layer with the Pen tool and set the path to Rotobezier. Just add one point anywhere. 

 

The second step is to add an Expression Control Slider to the shape layer, duplicate it 3 times and then name the sliders Speed, Amp, Freq, and Width.

 

Now add the following expressions to the Shape Layer

 

// to Contents/Shape 1/Path 1
S = - effect("Speed")("Slider") * (Math.PI * .2);
A = effect("Amp")("Slider");
F = 2 * (effect("Freq")("Slider") * Math.PI);
pts = F * 5;
if (pts <= 0)
	R = 1
else 
	R = pts
W = effect("Width")("Slider")

P = [];

for (i=0;i<R;i++){
P.push([W/R*i,Math.sin(time*S+i/(R/F))*A]);}

createPath(P,[],[], false)

//to Transform/Anchor Point
x = effect("Width")("Slider")/2;
[x, 0]

 

Set the Stroke options to Round Cap and Round Join.

 

If your slider values are 5, 100, 10, 1000 you will end up with a sine wave path that is moving to the right 1/2 cycle per second, with a height of 100 pixels, and a frequency of 10 full waves over a distance of 1000 pixels.

 

It would be a good exercise to save that as an animation preset. If you press UU to reveal all modified properties in the shape layer and Ctrl/Cmnd + Click Shape 1, Effects, and Anchor point you can create an animation preset the will deliver a path with the stroke width you have set in your layer, the stroke color, and the Speed, Amp, Freq, and Width values you had selected when you save the animation preset. They are great time savers.

stehliksAuthor
New Participant
July 21, 2020

This work great, thank you for your time.

Community Expert
July 19, 2020

Simulation - MotionScript.com

Realistic Bounce and Overshoot

Anything from Dan Ebberts is good info. 

 

stehliksAuthor
New Participant
July 20, 2020

Thank you, this is great knowledge base, however I have problem converting these expressions and applying it to the line or path. I would like to animate a path to move like sine wave.