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.

Brick-a-Brac (1995)

Brick-a-Brac (1995) from Cassidy Curtis on Vimeo.

Here is my first short film. I made this at PDI in 1995, during a gap between commercials. I modeled and rigged the characters, did most of the animation, and developed the wobbly ink-line look.


The pigeons’ torso was a metaball surface driven by a series of spheres along a spline between the head and the body, which were both separate IK joints (so I could easily get that pigeon-head movement style without counteranimating.) The eyes, beak, legs and wings were separate objects, each of which got rendered in its own separate pass. Each layer had its vector outline traced (using a tool originally written for scanning corporate photostats for flying logos!) I processed the curves using a procedural scripting language to give them some physics and personality, and then rendered them as black ink lines with varying thickness (using a tool written by Drew Olbrich). Finally, I ran the rendered lines through some image processing filters to get the edge darkening effect, and did some iterated stochastic silhouette dilation to add random ink blotches where the lines were thickest. Simple, really! ;-)

Meta-Perceptual Helmets


Cleary Connolly, an artist in Ireland, has built a lovely series of perception-altering helmets, including the “Hammerhead” (above), which is effectively a head-mounted, lens-based version of the Telestereoscope. The helmets look beautifully crafted and durable. The site has some great photos of the work in progress, and don’t miss the drawings of what they’ve got planned for the next helmets in the series. (I especially love the Siamese Helmet concept– great fun!)

Thanks to Sasha Magee for the link.

The Making of MADinSpain 2014

Making of MAD14 by Domestika from MAD by Domestika on Vimeo.

Here’s a cool making-of video about the design event I spoke at this past summer in Madrid. It was such a great experience. The organizers made a point of creating opportunities for the participants to really get to know each other, in keeping with the event’s theme of “connection”. I learned a lot, had tons of fun, and made some great new friends from halfway around the world. If you ever get the chance to go to this conference, don’t hesitate, just do it!

Eyeteleporter and Pinhole Selfies

From a planet not far from the Telestereoscope, two projects have just entered our universe…

The Eyeteleporter, a wearable cardboard periscope that displaces your vision about two feet in any direction:


And Pinhole Selfies, a delightful mashup of retro tech with millennial idiom:



Hat tip to Brock Hanson for the links.

Update: I just realized that the pinhole selfie photographer, Ignas Kutavicius, is the same fellow who invented the amazing solargraphy technique of capturing the sun’s movement with a long exposure pinhole camera. Brilliant!


Cassidy Curtis's splendid display of colorful things.