Auroxx - WTR20 All-Hands
“Auroxx” isn’t a real global fashion brand, but thanks to thoughtful project organization and a gratuitous dash of sourceRectAtTime(), white-labeling this client project with a fake logo and versioning ten new deliverables took about five minutes.
Section title for Comd. Will Riker’s keynote on new fashion trends on the pleasure planet of Risa. I do not know why I decided that Auroxx was a Starfleet side-gig, but there it is.
The Auroxx WTR20 All-Hands event is a series of prerecorded presentations, produced seasonally, that gives Auroxx’s C-suite and product leads an opportunity to address their worldwide workforce. Each season’s package, running a bit over an hour altogether, gets everyone aligned on the company’s performance and planning, and is also an opportunity to get folks jazzed up about the brand direction.
My role in the post effort was to design & animate a graphics package to support the edit, including opening titles, section titles, and lower-thirds. The whole package needed to be easy for the editor to version as copy changes and other emergencies came down in the eleventh hour, so the challenge was finding a way to make the package look modern and premium, but totally bombproof under the hood.
Form from function
With no branded imagery or footage forthcoming from the client, and no owned color palette to speak of, my creative brief for WTR20 was essentially black, white, and a font. It just so happened I’ve been obsessing over some incredible kinetic type work by artists like Stefan Hürlemann, crisscross, and DIA, so I pushed for a bold type-driven direction with loud figure/ground play.
The aesthetics felt modern and spoke to the fashion/sport industry space we were working in, but under the hood, selling in design elements like live type, repetition, delays, and match-cuts laid important groundwork for the main challenge: rapid iteration. Just two editable text layers at frame zero drove the comp’s entire layout, and only a few “lead” layers contained any keyframes. Every other layer in the comp relied on parenting and loads of interdependent slider controls to position itself in the grid and animate in response to its parent’s own movements, sort of like points on a waving flag.
For example, each text layer’s slider (called “Progress-Local”) was driven thusly:
parent.effect("Progress-Local")("Slider").valueAtTime(time-thisComp.layer("Control").effect("Delay")("Slider")) //The previous value of my parent’s Progress-Local slider as of [Delay] ago
And that same layer’s Position property used that result like this:
s = effect("Progress-Local")("Slider"); //The above slider’s value (from 0 to 100) t = linear(s,0,100,key(1).time,key(2).time); //Get the key time at ‘s’% of the way between my two keyframes v = valueAtTime(t); //Get the key value at that time [parent.sourceRectAtTime().width+20,0] + v //My X position is directly to the right of my parent, plus 20px padding, plus my keyframed offset
While the above handled horizontal lines of type, a similar parenting scheme and expression also pushed multiple lines vertically, creating a dense grid of type. Propagating that through almost 180 text layers produced a really cool “whiplash” effect that looked totally bespoke no matter the line length of the editable text layers.
In hindsight, I wish I’d made use of DuIK Bassel’s Parent Constraints for this setup; that would have allowed me to build a true “mesh” behavior since the layers’ positions could be negotiated between all their neighbors rather than driven by a single parent, but c’est la vie, maybe next time.
Design & animation by Jared Flynn
Agency: Genuine
Client: Auroxx (not really)