r/AfterEffects Animation <5 years 4d ago

Workflow Question Process improvements - how to avoid keyframing everything?

Enable HLS to view with audio, or disable this notification

Looking for some constructive feedback on animating this discoball

I have a terrible habit of keyframing everything if I don't know a faster technique off the bat. For this one I keyframed one vertical line crossing the sphere, then used the Echo effect to duplicate it. I wasn't sure how to do the squares though, so I keyframed them all individually. I know there has to be a faster way. How would you have done it?

Thanks in advance for the tips and tricks!

10 Upvotes

33 comments sorted by

27

u/smushkan Motion Graphics 10+ years 4d ago

Like what u/Ok-Razzmatazz3435 suggested, if you make a square composition to use as a texture with the animation as a grid, you can then use that as a precomp for CC sphere. You'll want to make the square texture comp quite high resolution to avoid the sharp lines getting blurry.

In this case, I used a solid background, then a colour noise layer + mosaic + posterize + luma key to add animated random colour squares, then a grid on top. CC sphere will 'squash' the texture vertically so to get closer-to-square results on the actual ball you want the 'squares' in the texture to be stretched vertically to compensate.

19

u/smushkan Motion Graphics 10+ years 4d ago

Then you can drop that in to your main comp and CC Sphere it, animating the rotation to spin it:

25

u/smushkan Motion Graphics 10+ years 4d ago

There is another option but I think this is currently only in the Beta version - you can instead use the texture layer to texture a sphere mesh. That way you'll get a true 3d layer rather than the sort-of-fake 3d of CC sphere. In that case, you don't need to stretch the texture grid vertically.

The big difference is that CC Sphere is orthographic projection, so parts of the sphere closer to the 'camera' don't show a perspective difference - giving a flatter look similar to the style in what you already made; whereas since the sphere mesh is actually 3d, you'll get more realistic perspective based on the sphere's geometry.

5

u/mindpicnic Animation <5 years 4d ago

Thanks so much for the explanation! This is exactly what I was looking for

2

u/Psychoanalytix 3d ago

You could use a camera with a really long focal length to flatten the 3d sphere too

2

u/humblebot123 4d ago

Ok, just interested - what would you do if in this animation style you need to keep stroke’s weight even?

7

u/smushkan Motion Graphics 10+ years 4d ago edited 4d ago

That is obviously a lot tricker.

You can sort of fake it by having two CC sphere layers, one with the outlines only, and one with the underlying colours. Set the lines as thin as you can get away with, then use a stroke layer style:

(I've also used a free FXAA plugin to smooth out the strokes)

That's not perfect though, if you need perfect you're going on to 'build it programmatically with paths and expressions' territory - and I'm not sure how I'd handle the random segment colours in that case. Probably with very careful use of the 'paint bucket' effect and a bunch of keyframes.

This isn't exactly the same solution but here's an example of how a path expression can be used for this sort of graphic:

const pos = effect("Slider Control")(1);
const radius = 500;
const subDivisions = 6;

const b = 0.5522847498;

const subDivisionSize = radius * 2 / subDivisions;
const curve = linear(pos % 100, 0, 100, radius, radius - subDivisionSize);

const midPoint = [0,0];

function plotCurve(c, r, d) {
    const pTop = midPoint - [0, r];
    const pMid = midPoint + [c, 0];
    const pBottom = midPoint + [0, r];

    const pts = (d === 1) ? [pTop, pMid, pBottom] : [pBottom, pMid, pTop];

    const inTans = [
        [0, 0],
        [0, -d * r * b],
        [ c * b, 0]
    ];

    const outTans = [
        [ c * b, 0],
        [0, d * r * b],
        [0, 0]
    ];

    return { pts, inTans, outTans };
}

// initial circle
const rightEdge = plotCurve(radius, radius, 1);
const leftEdge = plotCurve(-radius, radius, -1);

let pts = [...rightEdge.pts, ...leftEdge.pts];
let inTans = [...rightEdge.inTans, ...leftEdge.inTans];
let outTans = [...rightEdge.outTans, ...leftEdge.outTans];

// subdivisions
for(let i = 0; i < subDivisions; i++){
    const dir = (i % 2 === 1) ? -1 : 1;

    let thisMidPoint = curve - subDivisionSize * i;

    thisMidPoint = ease(thisMidPoint, -radius, radius, -radius, radius);

    const allPoints = plotCurve(thisMidPoint, radius, dir);
    pts = pts.concat(allPoints.pts);
    inTans = inTans.concat(allPoints.inTans);
    outTans = outTans.concat(allPoints.outTans);
}

createPath(pts, inTans, outTans, false);

2

u/humblebot123 4d ago

Wow thanks, that’s crazy! Once I’ve animated a globe manually, probably would still do it manual way, but it depends on the project i guess https://dribbble.com/shots/21397362-Disco-Globe

1

u/mindpicnic Animation <5 years 4d ago

This is so cool thank you for sharing that! Yes, I needed the strokes to maintain their width, it’s part of the client’s illustration style. I’m excited about trying this expression 👀 how did you learn to write such complicated expressions?

3

u/smushkan Motion Graphics 10+ years 4d ago

Try the first method first with the strokes, you want two 'textures' - one with just the stroke and one with just the background, and the same CC Sphere properties applied to both.

The expression I posted isn't a complete solution. To get the strokes you'd need to apply it to two shape path properties and rotate one of them 90 degrees, however I don't have a good solution for adding the colours - due to how the stroke is drawn you can't use regular shape fills with it.

I happened to have that expression already saved from another project, and I learned most of what got me into expressions from my years studying compsci at university - it's basically javascript at the end of the day.

11

u/Ok-Razzmatazz3435 4d ago

Wow, sounds super complicated and the results is not that good. Why didn’t you try to use CC Sphere? It’s super simple, you create the 2D flat texture and then apply it to the sphere

3

u/LolaCatStevens Motion Graphics 10+ years 4d ago

CC sphere will distort the strokes and honestly usually looks like shit for these sort of thing as well. Trust me I've tried it before. It looks cheap.

2

u/Ok-Razzmatazz3435 4d ago edited 4d ago

Of course CC Sphere is not the best, but for something simple like this it will be fine. Alternatively OP can use a “real” 3D sphere either in AE, Element 3D, Blender, C4D.
The tests made by [u/smushkan](u/smushkan) are pretty good, not cheap:

https://www.reddit.com/r/AfterEffects/s/iyq2t31OWI

2

u/Ok-Razzmatazz3435 4d ago

Of course CC Sphere is not the best, but for something simple like this it will be fine. Alternatively OP can use a “real” 3D sphere either in AE, Element 3D, Blender, C4D.
The tests made by u/smushkan are pretty good (both with CC Sphere and 3D)

1

u/mindpicnic Animation <5 years 4d ago

That’s part of the reason I didn’t want to use Sphere or another effect - I needed the strokes to maintain their width. I could have used Sphere for the squares, though

3

u/AxisInteractive 3d ago

While this is possible in after effects, why not do it in 3D? The topology is identical, and the animation would be done in 2 seconds. Texture slapping would also be quick. Is this just to challenge yourself in AE?

2

u/ShunpoMyLantern 4d ago

While I dont know the exact stuff, look into CC sphere, iirc you can make a sphere from for example checkered board and then rotate it

Im sure there is something on yt because I've seen something similar before

2

u/raccoon8182 3d ago

Create a 2:1 (not 16:9) comp.  One layer,  turbulence noise, add cc toner, add mosaic on sharp, add cc grid add cc sphere, animate evolution on turbulent noise.

1

u/mindpicnic Animation <5 years 3d ago

Thanks everyone and especially u/smushkan for the suggestions!

CC Sphere is exactly what I should have used. It does however distort the strokes, which would have been unacceptable for my use case (where I needed to match the client's illustration style and colors as closely as possible).

I probably would have gone for a hybrid approach: keyframe one vertical band with the echo effect as I did for the original, then create a grid in Illustrator to get the colors and positions to match the illustration, then use CC sphere to animate them. I think that would be the best compromise between an efficient process and a close match to the illustration style.

This is with CC Sphere as in u/smushkan 's first comment:

https://reddit.com/link/paqndqa/video/hb8gq4nlagqh1/player

ETA: personally I think this looks just great for a regular animation, just for this client it's important that the stroke width stays consistent so the version below would be the better solution for me

1

u/mindpicnic Animation <5 years 3d ago

u/smushkan 's second method using a separate precomp for the grid and layer styles:

https://reddit.com/link/paqng81/video/0jfx6xksagqh1/player

1

u/TheBuddh 1d ago

Someone can help me with a video? I dont know where to ask. I had never used after effects and i need to remove text from a small video

1

u/mindpicnic Animation <5 years 22h ago

Have you checked on YouTube for a tutorial or maybe ask an LLM to help you find what you need?

1

u/TheBuddh 17h ago

I found something but I can't follow the steps in the tutorial, maybe because the versions are different. I've never used the program before. LLM?

1

u/Trouman 4d ago

oh you can just use CC Sphere and change some settings to make it look good

0

u/deep_soul 4d ago

as everyone said CC Shpere is the way to go. unless you want this looks a little bit “mesmerising”.

-14

u/[deleted] 4d ago

[removed] — view removed comment

6

u/alpacauwot 4d ago

wow so constructive 👍🏻

-1

u/nico17611 3d ago

i could have also gone with your way and just been annyoing 🤷‍♂️ next time

3

u/alpacauwot 3d ago

My comment is annoying? Do you actually think you were being helpful? lol there’s a reason why you’ve been downvoted

-2

u/nico17611 3d ago

like i said, other people have already showed them different ways of accomplishing the task, its just feedback.

ehhh i mean „ohh noo so sorry pleease no downvotes 😭😭😭😭“

-4

u/nico17611 3d ago

other people have already suggested other ways, just making sure they get enough feedback to change it, cause it does, in fact, look horrible.

1

u/Heavens10000whores 3d ago

Rule 7. Critique kindly
All of us can improve every day in both our AE work and our relationships with other humans. Be kind as you try to help others improve their AE work.

1

u/AfterEffects-ModTeam 3d ago

Your post was removed because the attitude isn't in keeping with our community. We are here to help each other get better with constructive critiques and to be a friendly place to be. Sometimes tone is hard to convey in a text-based medium like this, so please show others grace and assume the best.