Implement a concept of your choice within one of the following areas:
Mobile Phone Software
Select a topic you have a strong personal interest in pursuing. Pour
your energy into the completing an excellent work before the end of the
quarter. Take this opportunity to push yourself both conceptually and
technically. You have the summer to rest at the end, so go for it.
Online applet version ... play with it now!
Download full size applet (1.3 mb zip)
Notes: The original project was intended to be used with the tablet. However the downloadable and online versions do not have this feature enabled.
Abstract: Drawing toy that produces parameterized organisms. Procedural animation allows the organisms to swim around in a virtual fluid environment interacting with each other.
The project now interprets strokes made from a tablet pen. When a stroke is completed (or closed into a loop) it manifests an organism based on stroke length, speed, and pressure. While not exactly gesture recognition, it was a quick and dirty solution to what otherwise might have been a nightmare to develop (gesture recognition).
Procedural animation drives all of the creatures, including the physics and kinematics. At the lowest level, physics runs everything from the fluid simulation, masses, and springs. One level higher and you get the autonomous motions of a creature such as articulation (moving the tail in opposition of the head).
At the highest structure you get the behavior level, the "AI" of the creature that drives them to go in particular directions, follow certain targets, and do certain things with their bodies. Everything is clamped down into a point of "interest", and the organism simply follows that. The behavior routine simply directs this "interest", and the rest of the body articulates itself. In addition, behaviors can change due to their orientation or distance between themselves and other organisms. I'll let you discover these behaviors yourself, since that's half the fun of this project.
Each creature is custom-built, meaning art and programming for each creature had to be construted individually.
The graphics are SVGs imported via a custom-built SVG importer I wrote for this project. It really sucks, so I didn't release it. You wouldn't want to use it anyway, it's really buggy. However, SVGs allowed me to draw interesting shapes that can connect to other shapes with code. Also, SVGs are a vector format so it allows me to zoom as far in or out as I want without losing resolution, keep file sizes down to a minimum, and it also allows me to do transforms and scales to them on the fly.
The art style drew inspiration from submerged microorganisms and presstube.
Future: Some things that I could improve include actually using gesture recognition to develop even more interesting shapes (try drawing a few loops to see what I mean). Writing a system that could morph in-between SVG would also be very awesome, as well as importing SVG with mutiple layers, or colors. I also learned a lot about behavior programming from this project. Writing behavior directly into the creature class became prohibitively difficult, so I should really think about a new way to do behavior programming seperate from creature articulation. Finally, I want to come up with a way to recycle the art more efficiently, so as to build a large library of creatures really quickly. Perhaps a creature-constructor interface? ...