3D engine uses in a no-nonsense GUI (was: XO Gen 1.5)

Albert Cahalan acahalan at gmail.com
Tue Apr 21 05:02:23 EDT 2009

Christoph Derndorfer writes:

> I honestly can't think of a use-case for including any sort
> of 3D acceleration into the basic Sugar and activities. There's
> about a million significantly more important things that people
> should be working on before even thinking about 3D (IMHO).

One can use a 3D accelerator to greatly improve human factors in
the GUI. Smooth transitions in the GUI are vital to reducing the
user's sense of disorientation and confusion. This isn't just an
issue for less-clueful users; you might not realize it but poor
transitions are forcing needless mental effort that eats up a tiny
bit of time here, a tiny bit of time there... and it all adds up.
You may feel it in frustration even if you don't spot the cause.

Without the 3D engine, animations are a painful compromise. They
are slow, jerky, and CPU consuming. Imagine if the frame could
slide into view with fast perfectly smooth motion and almost no
CPU use. Think how much more usable Sugar would be.

Imagine if view switching and activity switching looked like a
rapid zoom out to showing a grid of all views and activities,
then a rapid pan to the right grid spot, and finally a rapid zoom
in to the newly selected view or activity. Better yet, make it
all in one smooth motion so that the user feels as though they
are jumping with a ballistic trajectory. The confusion goes away
and the transition might even be attractive. You can't make this
be acceptably fast or smooth without a 3D engine, even if you
cheat by using static screenshot images for the activities.

Imagine having every activity smoothly scaled to fit the screen.
An activity opens a 320x720 window. It becomes a 400x900 window
on the LCD, but the activity doesn't have to deal with that at all.
Getting stuff to work well on the XO is suddenly much much easier.

Users can spot objects on the screen faster if they have slightly
organic shapes. Rather than having **perfectly** sharp corners on
things, give them tiny anti-aliased curves. Use bump mapping and
other shader features in **subtle** ways to enhance object edges.
Make the edges look like they have been polished or sanded a tad,
instead of being infinitely sharp and thus ill-defined to the eye.

Today, pressing a GUI button normally causes the button face image
to shift a bit. That's the best we could do before 3D engines.
Imagine if the button face could pop from convex to concave, with
perfect realism. The highlights, the density of the shadow, etc.
The button metaphor would be more effectively represented to the user.

BTW, stay away from the pointless stuff. It's now common to use 3D
for random nonsense that hurts usability. Don't do that. Stick to the
stuff that helps the eye follow things: smooth motion, softened shapes,
realistic shading, quality scaling, etc.

More information about the Devel mailing list