Project file research

After spending a lot of time getting the hang of the programming process and working out all the lower-level and OS-interfacing stuff, it’s time for me to start developing the more tangible features. I also recently found out that Ordinary Folk has some freebie project files on their site that could give me some insight and jog my memory as to the experience of doing motion design every day (to which it’s almost been a full year since I did it seriously). I’m playin’ by the rules and forking over 60 bucks for AE and Photoshop, so I can say with confidence how this program will be doing better (also a motivator for me to get it done so I can drop the subscription earlier!).

The project files I’ll be inspecting today are from this short piece. It’s done primarily with shape layers and hand-placed keyframes, with no use of 3D layers. A good match to how I envision what I want this program to do.

The pipeline the team had between programs appears to be linear, going from Illustrator to PS to AE, with no messy backtracking. The initial storyboard was likely done in IL, with the styleframes being done in PS in conjunction with some of IL’s bezier paths copied over. There’s not much deviation from the styleframes in the final piece, and a lot of textures and smaller elements from the PSDs are directly copied over.

Procedural layer creation

The first potentially annoying aspect of this project I saw was in the shadowy overlap areas where there’s a change in color. They aren’t being done by blend modes like I expected; they’re duplicated and matted. In PS it’s done manually, and in AE it’s done with expressions that link every property.

One of the major concepts I want to experiment with is the ability to manipulate duplicated layers via ways other than simply ctrl+D or copy/pasting. Not stuff that you have to ‘bake’ every time you want to edit the actual layers like that one Trapcode plugin. I want something like a pre-compose effect that you can slap on a layer which generates a real layer on top of it that automatically has the correct properties parented to it.

A better example to demonstrate my point is the tunnel at 00:05 in the source video. The way the expressions are hooked up appears to make it difficult to easily switch out how many circle-squares there are without manually drilling into some layers and doing a bit of work.

The squiggle

There’s this one part of the project that causes AE to absolutely churn and kill off, the pink squiggle in the top left towards the end. Upon seeing the layer in a precomp with a lock on it I knew exactly what the slowdown was gonna be: expressions.

I can’t even scrub through the cached frames in full FPS! I suspect it’s what lach said about how property channel evaluations aren’t cached (my program currently behaves this way as well). Oh my god. Touching the parameters can lock it up for 5-10 seconds. The viewport pans at like 5 fps. Why is it this bad??

Well, to give AE some credit, they are trying to generate a whopping 100 shape layer points along a basic sine waveform, even though it’s only 10 lines of code. People that work on game engines must just be magical or something; I dunno how they’re able to make anything run in realtime with only 2 billion instructions per second.

In all seriousness this is one of the reasons I’m kinda scared of implementing any sort of scripting language. I feel like it’d be more intuitive for the three of us (me, the computer, and the user) to go with a model like Cavalry or C4D or Blender where there’s modifier nodes/blocks/blueprints that you build up with. It likely won’t be as high priority as other things on this list because those programs already do it pretty well, though I’ll likely start experimenting with something after re-adding basic shape layer support.

They also use this rigged box script a ton which essentially just exposes the scale/roundness parameters of a rectangle in the Effect Controls tab. Only took ya guys 10 years to add that new properties panel at Adobe, huh?

Misc observations

To summarize, the basic plan is: