Overview
Bound by the limitations of an assignment to move 3D objects on to
a 2D plane, I played with several concepts. These included 3D scrabble
pieces, winged numbers waging war on letters, and pictographic chase
scenes. I committed to musical notes because of their geometric simplicity
and their potential to create 3D musical soundscape.
Algorithm Overview
I used the five fundamental rules of Craig Reynold’s boids that
are freely available on the web. I also added the following to Reynold’s
core rules:
- Dynamic reassignment of predator goal based on prey proximity:
Each predator is assigned the goal of the nearest prey every loop.
While this is computational expensive, the benefit is more intelligent
behavior. The predators are able to divert their attention when passing
prey.
- Prey/Predator Behavior
The prey, here a user defined set of Bass Clefs, are implemented by
removing the alignment behavior of the standard boids algorithm I
also reassign a goal to any prey that loses velocity.
- Perching Behavior
All entities have a variable amount of time they will wait, or land
on the surface of the musical sheet.
Implementation
The entities can be controlled before and during run time.
- Before run time the entity a text file provides
guidelines. The text file contents are described here.
- During run time the entities and few environment variables
can be adjusted with specific keystrokes. The keystrokes
are described here.
This implementation of the boids algorithm contains a few novel solutions:
- Entities on Angled Plane:
In order to provide the illusion that the boids are on an angled plane
(i.e. sheet music on a plane) I created a model that is oriented directly
parallel to the origin. To accommodate, I simple rotated the room
and set the camera at an angle to compliment the illusion.
- Fast Shadows:
To create the shadows I copy and flattened its parent model. I also
change the weight of the shadow proportionate to the adjustments made
to the main scene light source. The shadows are not correct shadows,
but they help substantiate the illusion.
- No Shadows off the platform
To prevent shadows from appearing when an entity floats over open
space, I check the distance of the entity relative to two bisecting
planes. These planes are on the left and right of the music stand
platform.
- No Perching off of the Platform
To prevent entities from perching in mid air, I use a distance check
and hard-coded boundaries to turn off perching when appropriate. Perching
is returned to any entities that fall within the physical range of
a perching area.
- 3 Dimensional Sound
The program makes use of attenuation factors to provide the illusion
of 3D sound. When an entity is moving near the camera the entity emits
and randomly assigned pitch of a single standard sound. The sound
as edited to sound as natural as possible when multiple entities emit
sounds. I had originally intended to assign a xylophone or bell tone
to each to create the effect of chimes, but high tonal sounds caused
a cacophony when implemented.