FORUMS: list search recent posts

How to achieve this technique?

COW Forums : Adobe After Effects

<< PREVIOUS   •   FAQ   •   VIEW ALL   •   PRINT   •   NEXT >>
Gavin Murdoch
How to achieve this technique?
on Jan 15, 2014 at 2:26:01 pm

Hi Guys,

Check out this video, . It's a spin off of the Apple designed in California animation, and a very good one at that.

I am interested in learning how the motion designer did the bit at the very start where the tiny dots draw out the circles and the circle stroke follows the path of the dots. (A similar technique can be seen in the Apple animation) The designer Mike Brooks tweeted me to say that he linked the dots and the stroke with an expression but I am still a little lost in achieving this technique.

Any ideas?

Thanks,
Gavin


Return to posts index

Kevin Camp
Re: How to achieve this technique?
on Jan 16, 2014 at 12:37:38 am

you can have the dot track the stroke, or the stroke track the dot... it's a bit easier to have the stroke track the dot.

try this:

create a new solid then create a circular mask on the solid. twirl down the mask properties to reveal the mask path, select it and choose edit>copy.

add the circle effect to the solid and set the radius to something fairly small (this will be your 'dot'). twirl down the effect properties and then the circle effect properties. select the 'center' property and choose edit>paste. your dot should now travel around the circular mask.

now add the 'write-on' effect to the same solid. option click the 'brush position' property and drag the expression pickwhip to circle effect's 'center' property. this will result in an expressino that looks like this: effect("Circle")("Center").

now, as the dot moves around the circle, it should leave a line. if it leaves a trail of smaller dots, adjust the brush spacing property to form a line.

if you wanted to 'mirror' the animation (as int he sample), delete the last two keyframes from the circle center, and then add the mirror effect to the same solid. adjsut the reflection center to be in the center of the mask and the animation should now be relflected.

Kevin Camp
Senior Designer
KCPQ, KMYQ & KRCW


Return to posts index


Kevin Camp
Re: How to achieve this technique?
on Jan 16, 2014 at 1:12:58 am

if you'd rather use the stroke effect and have the dot track the stroke endpoint, then you can do the exact same steps above, except instead of the step using write-on, use this step:

add the stroke effect. then add this expression to the circle's center property (this would be after the center property had the mask path pasted into it):

end = effect("Stroke")("End");
valueAtTime(key(numKeys).time*end/100)


now as you animate the stroke effect's 'end' property the circle will track it. and you can still use the mirror effect if you wanted.

Kevin Camp
Senior Designer
KCPQ, KMYQ & KRCW


Return to posts index


Gavin Murdoch
Re: How to achieve this technique?
on Jan 16, 2014 at 2:11:05 am

Wow, awesome work!

I think I'll go with the second option since that allows me to use ease and whizz expressions on the strokes 'end' property.

Thanks so much for taking the time to answer. Top job!

Gav


Return to posts index

Gavin Murdoch
Re: How to achieve this technique?
on Jan 16, 2014 at 12:49:00 pm

Hi Kevin,

Many thanks again for your solution.

I wonder if you could take a moment to explain to me exactly how this expression is working:

end = effect("Stroke")("End");
valueAtTime(key(numKeys).time*end/100)


I would like to understand so that I can hopefully write something like this in the future rather than a copy and paste job.

Thanks again,
Gavin


Return to posts index

Kevin Camp
Re: How to achieve this technique?
on Jan 18, 2014 at 12:23:36 am

i'll try....

end = effect("Stroke")("End");

the first line just takes the current value from the stroke effect's 'end' property and assigns it to a variable i called 'end'.

valueAtTime(key(numKeys).time*end/100)

the valueAtTime() function allows you to take the the value of a property at a specific time, any time, not just the current time. the time that you want the value from is specified in the parentheses ().

so to breakdown the part in the parentheses, key(numKeys).time is the time of the last position keyframe (note: we could have used key(5).time, since there were 5 keyframes, but numKeys returns the total number of keys, just in case we change the animation later). the time of that last keyframe defines the length of the animation.

i did assume the first keyframe started at time 0, but i should have factored that into the expression to be more foolproof. key(numKeys).time-key(1).time would work even if the first keyframe was not at time zero.

once we have the animation duration defined, we need to work in the 'end' value to determine what part of the animation we want to see. end/100 will return the percentage of the animation duration, or the point in the animation that we want to see.... ex. 25% will show the dot's position 25% of the way around it's animation path.

Kevin Camp
Senior Designer
KCPQ, KMYQ & KRCW


Return to posts index


Gavin Murdoch
Re: How to achieve this technique?
on Jan 20, 2014 at 4:46:32 pm

Hi Kevin,

Many thanks for your breakdown and explanation. This makes sense. However when I insert the more foolproof version of the expression the circle doesn't follow the stoke end property.

Am I right in assuming that the edited expression should read:

end = effect("Stroke")("End");
valueAtTime(key(numKeys).time-key(1).time *end/100)


Many thanks,

Gavin


Return to posts index

Kevin Camp
Re: How to achieve this technique?
on Jan 20, 2014 at 7:07:51 pm

bad the order of operations... needed to have another set of ().

valueAtTime((key(numKeys).time-key(1).time)*end/100)

however, it still doesn't work like i though it would have... if the first keyframe is not at :00, it doesn't work as it should. i would need to noodle on this a little more...

Kevin Camp
Senior Designer
KCPQ, KMYQ & KRCW


Return to posts index

Gavin Murdoch
Re: How to achieve this technique?
on Jan 22, 2014 at 4:01:33 pm

Hi Kevin,
Thanks again. This seems to be working now. Even if I move the first stroke end keyframe beyond the zero position the expression is working as you intended. Great work!

Cheers,
Gavin


Return to posts index

<< PREVIOUS   •   VIEW ALL   •   PRINT   •   NEXT >>
© 2017 CreativeCOW.net All Rights Reserved
[TOP]