I wanted
to create a virtual puppet. The twist was that the creature did
not move like a human, or perhaps not like anything on Earth. I
wanted users to feel like a baby learning to walk for the first
time.
My creature
had seven muscle groups. Like your leg, accurate movement required
controlling several muscles simultaneously. These virtual muscles,
like their real counterparts, have many states (infinite even).
A keyboard and mouse couldn't hope to provide interactivity with
all seven muscles at once; It would be clunky and unnatural. I designed
and built a physical interface to provide intuitive and natural
interaction. Of course, this is an odd creature, so the controls
were designed to be equally strange.
The
movement interface was a series of levers. The levers varied by
height, pivot position, length, and thickness. Some were placed
such that they interfered with others. The state of the levers was
determined using a series of potentiometers. This data was captured
and processed by an Arduino board, which forwarded the lever states
via USB to a frontend Java application that animated and controlled
the creature.
The
result was very fun. You really did have to work many controls at
once to control direction. I've become pretty proficient, but first
time users are baffled for a while.
Below
is an applet version of the virtual puppet. The physical controls
are replaced with seven sliders. I've simplified the movement by
making single muscles powerful enough to move the creature. Of course,
controlling this demo with a mouse is not nearly as engaging. Some
photos of the physical hardware are included below.
|
|
Test
application with virtual controls (applet above) |
Final
application using physical controls - large
image |
|
|
Two
twistable knobs |
Six
twistable knobs with varying pivot points, heights, lengths,
and shapes |
|
|
Large
physical interface - dangling levers measure 1.5 feet long |
Reverse
side of hardware shown above |
Note:
The applet uses McGill's Bias
package to compute a convex hull.
Go to Home Page
Go to Projects Page
|