Some odds and ends…
When possible, avoid treating pixels as the smallest discrete unit. Stepping pixel-by-pixel, off-or-on has a dated, 8-bit look to it…careful programming can create the feeling of a continuous analog space.
Consider K.I.T.T. from the Knight Rider TV series. His distinctive front scanner had only a few pixels, but a well-designed fading effect gives it a “living” aesthetic; this is no cold machine. (Nor is it all blinking lights…the sporty exterior, the charming voice, everything worked together to make an appealing character of an improbable setting.)
The logical extreme may be the single-pixel “sleep” light on some Apple products, which creates the impression of breathing. One pixel!
Shown here are Adafruit’s iCufflinks, which mimic the effect.
The Arduino code for our Gemma Firewalker Lite Sneakers project has a heap of comments about coordinate spaces and math and this idea of avoiding whole-pixel transitions.
Counterpoint: sometimes you may want to embrace the pixelated effect! Nostalgia is one reason…to mimic some system of the past. Or you may want to make a device that’s actually quite sophisticated appear simple and cute.
Shown: Animated Flying Toaster Jewelry reminiscent of the 1980s After Dark screensaver.
Avoid cycling mode-to-mode. Our brains pick up very quickly on repeating patterns. Perhaps more than anything else, just running down a bullet list of features in sequence stops the illusion of life in its tracks…it’s like a boring meeting, but without the donuts.
Welcome to Powerpoint by Gareth Saunders [CC BY-SA 2.0], via Wikimedia Commons
Mode-cycling is fine when you’re demonstrating technical elements to other technical users. When interacting with the layperson, keep it “alive,” and keep a few of your best tricks in reserve for special moments!
Mix it up. Make judicious use of random numbers, whether for positions or time intervals. Similar to the “repeating pattern” issue above, we quickly recognize something as non-living and mechanical when everything’s equal-time or if motions always follow an exact set path.
The Arduino random() function can optionally accept a minimum and maximum range for values returned. If simulating something real…a walk, a movement of the eye…do a little searching to find reasonable averages and ranges. There’s an amazing amount of reference material online…research papers and similar…free for the taking, you just have to look.
If you simply must cycle some things on regular intervals: try using different prime numbers for each…for example, periods of 3, 5 and 7 seconds. Non-primes…especially even values…will generate more obvious “beat frequencies” as they overlap.
Watch out for “self-congratulatory” effects. You worked really hard on something, getting some shape or path just right, perhaps an eye blink…it’s so tempting then to have it unfold slowly, so no moment of your ingenuity is missed. But this destroys the believability of the thing you’ve been crafting. To win over your audience, life has to take precedence over ingenuity. (In Windows XP, on first boot following a daylight saving time switchover, a dialog box would appear telling you the clock changed. This wasn’t actually for your benefit…it was the programmer(s) celebrating their own cleverness in handling the time change. But same idea.)
Psychologists and roboticists sometimes speak of the “Uncanny Valley”…not a place you can visit, but a phenomenon.
In general, the more closely something resembles a real person, the more familiar it is and the quicker and stronger our emotional response. But a weird thing happens when something’s almost, but not quite human. In this narrow gap — the Uncanny Valley — one’s emotional response is the complete opposite; it’s a major turn-off, triggering something in our brain that fears corpses and zombies. Going either way from there…more human or less…improves the situation.
Mori Uncanney Valley by Smurrayinchester [GFDL or CC-BY-SA-3.0], via Wikimedia Commons
Sometimes you need to intentionally dial back the realism. Being more obviously fake can sometimes make a better emotional connection with your audience.
Other times, you might knowingly set up your tent in the Uncanny Valley and just tough it out. Even getting there means you’re making headway…maybe the next one will be better. Push through!
Yeah, the Electronic Animated Eyes using Teensy project is borderline Uncanny Valley material!
You may need to ask yourself sometimes if you’re doing things for the right reason.
Exploring new technology is a rush and a learning experience. That’s cool, embrace it. But when it becomes a space race…a popularity contest, or aiming for “the first to do X”…not only is this shallow, but it can be discouraged on purely technical grounds: piling on more tech creates more complexity and more potential points of failure. Most importantly…it may not even be improving the character you’re trying to create. A gimmick. Ask: is this really helping me?
I can think of a fantastic parallel in cosplay fandom — those folks at conventions who dress up as favorite fictional characters. You’ll encounter moments of amazing workmanship and expense. But quite often, the best, the most memorable and “real” characters are often simply-crafted budget affairs. No gimmicks or props, no technological wonders. Their ability to entertain stems from their full portrayal of the character…not just the look, but the walk, the talk…the quotes and the ad-libs.
Robert Franzese pretty much broke the whole internet with his portrayal of Peter Griffin from Family Guy.
I adore working with technology. But when you use technology just for technology’s sake, what you end up with is Jar Jar Binks. Before approaching a character problem with a technical solution, ask yourself:
What would lion dancers do?