Kites: Structure Complete

March 31st, 2010 — 12:23pm

Finished assembling the sculpture on Tuesday with a coat of paint on the frame. After designing some templates, I cut and stretched the fabric much more reliably, with less fraying and irregular overlap. I still need to clean up the outer edges, but otherwise this part of the project is done. Two more pictures after the jump.

Continue reading »

Comment » | Projects

Kites: Building the Surface

March 25th, 2010 — 6:38pm

After several failed starts, I finally have the surface material planned out in an effective way. Initially I intended to stretch the fabric over a wireframe that preserved the hard flat edges of my design, then treat it with a chemical stiffener. But after failing to get anything resembling a hard edge using tape and wire, I stumbled onto the pleasing natural curves that appear when the surface is stretched tightly. Using staples, I was able to apply the surface in an unobtrusive, non-permanent way.

Continue reading »

2 comments » | Projects

3D Printing

March 17th, 2010 — 8:14pm

The School of Visual Arts at NIU recently acquired a 3D printer, which creates basic prototypes of digital models.  There are a number of different technologies that achieve this; our machine uses a special powder that is applied one very thin layer at a time.  A printer head moves across the powder, dispensing a glue binder in a cross-section of the model.  This way, the 3D structure is gradually built out of slices of bound powder.

Continue reading »

Comment » | Projects

Kites: Frame Complete

March 17th, 2010 — 9:41am


Just finished assembling the frame for the first time.  When upright it’s a little wobblier than I’d like, so I’m going see what I can do about reinforcing the armatures.  Two more pictures after the jump.

Continue reading »

Comment » | Projects

Kites: Building The Frame

March 15th, 2010 — 7:17am

This last week I’ve been working on the subframe that will support the surfaces of the sculpture.  I’m almost done, just need to bolt some of the pieces together and I’ll be ready to tackle the projection surface.

Continue reading »

Comment » | Projects

Kites: Preliminary Design

March 8th, 2010 — 2:34pm


Kites will be my final, senior project for my degree at Northern Illinois University. The piece will be a large, geometric sculpture that receives a mapped projection. By warping the video output of the projector, it is possible to create surreal visuals that both enhance and subvert the receiving surface, like this amazing work at the 2009 Branchage Film Festival. Inspired by the concept of cellular automata, the visualization will depict a simple cosmos and may involve an interactive element for viewers.

Continue reading »

Comment » | Projects

A Killer Opportunity

February 22nd, 2010 — 11:22pm

I’m thrilled to say that I was just hired by Toy Studio, a video game studio based in Schaumberg, Illinois. They specialize in social and casual gaming, with a current emphasis on Flash games for the Facebook community. Their first venture is KillerToon, a quirky friend-fighter that went live last month.

The game features amazing illustration work by Jason Zielinski.

My focus will be working with other developers to continue creating new content and features for this game, ahead of other exciting releases. Of course, I won’t be able to discuss what I’m working on in detail, but stay tuned for upcoming releases and updates on my other independent projects.

My eternal gratitude goes out to Colin Godsey, my friend and colleague who connected me with this amazing opportunity. Thanks also to my new boss, Christian, for giving me this shot.

1 comment » | Site News

Finite, Sleepy State Machines

February 18th, 2010 — 8:05pm

I was asked to create a state machine for an assessment that has a few simple rules, basically creating a self-determined “creature” that had a few basic abilities. Building on the initial ruleset, I decided to develop it into an automata simulation.

Check it out here.

The creatures have four attributes: thirst, hunger, fatigue, and boredom. They are capable of idling, walking, running, eating, drinking, sleeping, and with user interaction they can play. Clicking with the mouse will cause nearby creatures to react.

Each state has a transition pre-state that occurs before it. The color of the character will blend from a color representing his previous state to the color representing his new state.

- Initial values of the four attributes are generated randomly when the SWF is loaded.
- If no state is queued, it will idle. Idling causes its thirst, hunger, fatigue, and boredom to increase.
- If it gets too bored, it will either run or walk (50% chance).
- Walking increases all attributes except boredom, which decreases slightly. If it gets too thirsty, hungry, or tired it will switch to that action.
- Running increases all attributes except boredom, which decreases. If it drops below 50% boredom or above 100% fatigue, it will eat or sleep (50% chance).
- Playing causes all attributes to increase except boredom, which decreases significantly. It will not stop playing until the user releases the mouse button.
- Eating causes all attributes to decrease except thirst, which increases significantly. It will drink after eating.
- Drinking causes all attributes to decrease. It will idle after drinking.
- Sleeping causes fatigue and boredom to decrease, thirst and hunger increase. It will idle after sleeping.

I had to disable the real-time stats for the web version, otherwise it gets too choppy. But in a standalone player is runs nice and smooth. If you want the source code just shoot me an email.

Comment » | Projects

Genesound

December 6th, 2009 — 4:22pm

This is a compound final project for an Audio Art course and an Advanced Interactivity course in the Time Arts program at Northern Illinois University. It explores the concept of evolving audio within a 3D interface, which also takes on a biological aesthetic, using the Unity3D development platform coupled with MAX/MSP/Jitter. The intention was to create a space that acts as a semi-controllable environment populated with “beings” that each possess a unique tone and color. The user acts a selector, allowing a sound to propagate and diversify. It is a consideration of beautiful procedure; although the initial tone splits and collapses into new signals mathematically, the finished chords often possess an ethereal and pleasing sound. In this basic simulation of a natural process, I mean to illustrate how a very simple premise can lead to a complex array of sounds and sensations, with each variation containing a distinct beauty.

The visual space is populated by floating spheres, each colored to represent a different frequency. When the user click on one, it splits. This is represented visually by a mitosis-like animation created in 3DS Max. A preset algorithm determines the path of evolution, which is presented as varying frequency, modulation, and color. The new frequencies and modulations are stored into a multidimensional array, which is parsed into slices (representing each stage of the evolution) and passed over TCP/IP to the MAX/MSP patch. The sound algorithm is as follows:

  1. The initial tone F0 is randomly selected from a set range. In the current design this range is between 60Hz and 330Hz. An initial modulation frequency is set to 0Hz.
  2. The tone is split into two frequencies, F1A and F1B. The first is a random variation on F0, the second is the harmonic overtone of F1A. The modulation frequency is randomly raised or lowered by 1Hz.
  3. F1A and F1B are split into four tones, F2A-D. These are random variations of the prior two tones and their harmonics. The modulation frequency is varied again.
  4. These four are split again into eight tones comprised of random variations and harmonics, F3A-H. The modulation frequency is varied again.
  5. The first variation and harmonic are averaged with the following four, collapsing into six tones F4A-F. The modulation frequency is varied again.
  6. These six tones are averaged together again, created three final tones F5A-C. The final modulation frequency is varied once again.

I originally intended to split the frequency into six distinct trails (to mirror the visual animation), but simulations of this arrangement seemed to lose definition at their peak, which would have involved 108 combined signals. Perhaps a future implementation of this project will attempt this level of complexity.

The simulation compiles the frequencies and modulations into a multidimensional array within Unity: six generations of sound, eight channels per generation, with a frequency and modulation frequency for each channel. On every frame, the current generation of sounds is serialized into a string which is sent over TCP/IP to a designated port. MAX/MSP, receiving on this port, routes the string and unpacks it into a tree of frequencies and modulations, which are turned into tones and fed into the DAC. A gain slider allows for performance tweaking, as the signal usually contains heavy distortion at 100% volume.

Unity communicates with MAX/MSP using a custom implementation of the Mu Max-Unity Interoperability Toolkit developed by the DISIS Interactive Sound & Intermedia Studio at the Virginia Tech Department of Music. The system uses a set of C# scripts within Unity to broadcast on a local port. MAX/MSP sends and receives packets using Tom Igoe’s netsend/netreceive plug-in. Unfortunately, the bulk of my project was written in Javascript, causing errors due to the C# scripts compiling ahead of the JS files. I ended up re-writing several of the C# files in order to make the project work. This was preferable to the only existing workaround, which involved placing Javascript files into a Standard Assets folder that Unity compiles ahead of the base directory. While this will allow a JS=>C# channel, it breaks any existing C#=>JS relationships. In my project, a C# plug-in that allows easy conversion to/from HSB Color would be interrupted by this workaround.

The project is available for download below, but you will need Max 5 installed. If you feel particularly adventurous, you can try the software on a trial basis free for 30 days. In order to work this simulation, perform the following steps:

  1. Open the Unity binary (Windows or OSX).
  2. Open the Max patch (genesound.matpat)
  3. Click connect localhost in the patch, adjust the gain bar, and turn on the DAC.
  4. In the Unity simulation, click on a sphere to begin!

Download Project

Notes:
- Optimal gain seems to be no more than 55-60%
- The simulation may not work in Windows without downloading the Win version of netsend~

A video of the thing in action coming soon.

1 comment » | Projects

Tinyworld

November 15th, 2009 — 12:38pm

This project is an experiment in 3D interface and behavior. When you click on the planet, it will spawn a little mushroom. As the plant grows, it will drop spores that grow more mushrooms. Moving the mouse to the edges of the screen will spin the planet, causing the spores to land on other parts of the sphere or fly out into space. So you’re sort of in control, but not in control.

Click on the image to view. This piece requires the Unity Web Player, I promise it won’t make spiders and ninjas flow out of your monitor if you install it.

All of the textures used in this project were sourced from original scans of handmade paper. I enrolled in a papermaking course last year and in addition to learning how to turn plants into writable surfaces, I walked away with a huge catalog of organic and exotic textures. I love the depth and variation they can add to a digital work.

My classmates told me this project reminded them of a Super Mario game. Guess I was channeling Miyamoto when I put the visuals together.

Comment » | Projects

Back to top