Category Archives: graphics

Holy Fificrd! Premo won an Academy Award!

One of the highlights of my time at DreamWorks was getting to help an amazing team of animators design their next-generation animation software, Premo. The software we’d been using up to that point, Emo, was originally written at PDI in the 1980’s. While a lot of talented engineers had improved it over the years, there was only so much they could build on top of a foundation so old that it predated the GPU! We often dreamed about what the ideal animation tool would be like, if we could somehow start again from scratch.

Incredibly, in 2008, we got the opportunity to do exactly that, and the idea for Premo was born. Rex Grignon led the design effort, and brought on Jason Schleifer, Fred Nilsson, Jason Reisig, Simon Otto, Dave Torres and myself to flesh out the zillions of tiny details that matter so much. We worked closely with engineers Bruce Wilson, Seath Ahrens, Morgwn Mccarty, Brendan Duncan and many others (see this article for the full list!) as they brought their own expertise to bear on all those tiny details, and turned our fluffy wishful ideas into real working code.  After years of development, the animators on How to Train Your Dragon 2 got to take Premo for its inaugural flight, and were spoiled forever by the best software any of us had ever seen. We knew we had something very special on our hands, but I wondered: would anyone outside the company ever know about it?

Now, a decade later, the Academy of Motion Picture Arts and Sciences has honored Premo with a Sci-Tech Award!

Here’s a video of the awards ceremony, with Sir Patrick Stewart introducing some of the team:

And here’s a terrific blog post from Nimble Collective (the company that Rex, Jason and Bruce went on to co-found after DreamWorks) about FIFICRD, our shamelessly awkward acronym for our fiercely held beliefs about how great software can and should be:

FIFICRD – The spark behind DreamWorks’ Academy Award winning PREMO

I’m beyond proud to see this enormous group effort get the recognition it deserves. Go Premo! FIFICRD FOREVER!

Inceptionism and learning envy

Inceptionist squirrel is watching you!
Inceptionist squirrel is watching you!

A few days ago the image above started going around the social networks, attributed to “a friend working on AI”. Apparently a deliberate leak, now we know where it came from: a research group at Google working on neural networks for image recognition. Their research is worth reading about, and the images are fascinating: Inceptionism.

I have to admit, machine learning makes me jealous. Why does the machine get to do the learning? Why can’t I do the learning? But projects like this make me feel a little better. When the black box opens and we see the writhing mass inside, we get to learn how the machine does the learning. Everyone wins.

And the machines still have some catching up to do. As soon as I saw the amazing gallery of inceptionist images, I recognized the “inceptionist style” from the mysterious grey squirrel. Could a neural network do that?

Something New

Here’s something different: I have a new job! Today was my first day at Google Spotlight Stories. I’ll be working with some amazing filmmakers and technologists who are busy inventing a new kind of narrative visual storytelling uniquely suited to handheld mobile devices. If that sounds crazy, that’s because it is. It’s my kind of crazy. It’s exactly the kind of wild, inventive, “let’s try this and see what happens” attitude that got me interested in computer graphics in the first place, all those years ago. I couldn’t be more excited.

The video above really does a great job of capturing the delight of experiencing one of these stories for the first time. It’s almost impossible not to grin like a ninny. There’s not much more I can say about it right now, but there’s been some terrific press about the projects they’ve created so far. I’ll share more when I can!

Fun with Pseudocolor, Part Two

A more perceptually-uniform, if less pretty, pseudocolor scheme.
A more perceptually-uniform, though arguably less pretty, pseudocolor scheme.

Inspired by this brilliant interactive demo of the perceptually uniform CIE L*a*b* color space, I decided to try a L*a*b* version of my pseudocolor scheme. I don’t find this version as pretty to look at, but it has the advantage that higher values are always mapped to colors that are perceptually brighter than lower values. In other words, if you squint at the image above, the bright and dark regions correspond pretty much exactly to what you’d see if it were greyscale. (For the L*a*b* to RGB conversion, I grabbed pseudocode from this handy page.)

L*a*b* space is much bigger than RGB space, so the spiral gets clipped against the edge of the cube in some places.
L*a*b* space is much bigger than RGB space, so the spiral gets clipped by the sides of the cube in a few places.
If you crank up the saturation, you do get more vivid colors, at the cost of a lot more clipping.
If you crank up the saturation, you do get more vivid colors, at the cost of a lot more clipping.

Fun with Pseudocolor

Screen Shot 2015-03-17 at 10.14.36 AM

A shader experiment gone horribly, beautifully wrong.

I was tinkering with some GLSL shaders in Processing, and I needed a way to visualize a value that smoothly changes from 0 to 1, showing a lot more than the 256 levels of gray that you’d normally see. So I wrote a little pseudocolor function that spirals through colorspace from black to white, hitting various hues along the way. It’s fun, and pretty, and very rungy-chungy, so I thought I’d post it here.

vec4 pseudo3(float val) {

    float reps = 20.0;
    float pi = 3.14159256;
    float bright = val;
    float con = 0.25 - 0.20 * cos(val * pi * 2.0);
    float sat = 0.66 - 0.25 * cos(val * pi * 2.0);

    return vec4(sin(val*pi*reps)*con+bright,
                sin(val*pi*reps - pi*0.663 * sat)*con+bright,
                sin(val*pi*reps - pi*1.333 * sat)*con+bright,

Here's the path the above function traces through the RGB cube of colorspace.
Here’s the path the above function traces through the RGB cube of colorspace.

MTV Top 20 Video Countdown (1994)

MTV Top 20 Video Countdown (1994) from Cassidy Curtis on Vimeo.

In the 1990’s, it was typical for production companies to start their demo reels with a clock-wipe countdown. Some companies would use this as an opportunity to say something about their style, and do custom animation. (Will Vinton Studios, I remember, had a particularly cool stop-motion countdown at that time.) I thought it would be cool for Xaos to have a countdown that reflected our particular style of work, so I created this drippy ink effect counting down from 10 to 1, and a drippy version of the Xaos logo, which we put at the beginning and end of our demo reel respectively.

Some time after this, our producer got a call from MTV. They had this show called “Top 20 Video Countdown”. They wanted to use this effect for the bumpers and interstitials. Could we add the numbers 11 through 20? Our producer said “of course”, and charged them a lot of money. But it didn’t really take me that long.