Latest Entries »

This objective in this project was to re-create a still frame from a black-and-white movie using photography, digital modeling, and Photoshop compositing. I chose to re-create this image from West Side Story:

West-Side-Story_02

My process for doing this was as follows:
– Take photos of buildings that match the sides of the street in this frame
– Model the two foremost cars using NURBS surfaces in Maya 2015
– Approximate the scene in 3D space in Maya, putting placeholder shapes for the buildings
– Render the cars and the ground plane only, lining up the camera to match the movie frame’s perspective
– Composite the renders with the photos taken and several elements of the original still to create the new image

Here are pictures from each stage of the process:

SAMSUNG CAMERA PICTURES Progress03
Progress02   Render01

Progress01

The finished product is here, above the original again:

Comp03
West-Side-Story_02

Links to my project files are below:
– Adobe PSD – https://drive.google.com/open?id=0B1sG8HXqH3iuLU5ZODlrNkpZVWM
– Maya ASCII – https://drive.google.com/open?id=0B1sG8HXqH3iuR1NkNGZ3V1ZsbjA

Münster Basilica

I absolutely love medieval architecture, and the Bonn Münster (Minster) is very beautiful. It’s a minute’s walk from Bonn Central Station, and I’ve gone to mass in German here almost every Sunday thus far. This basilica was built between the 11th and 13th centuries, though another church had stood on the same spot before to honor the same saints: Cassius and Florentius, Roman soldiers who were martyred for their faith.

IMG_20150120_120131_122 IMG_20150120_120141_117 IMG_20150121_114234_932IMG_20150121_114256_895 IMG_20150121_114311_132 IMG_20150218_123333_598IMG_20150121_114245_905 IMG_20150121_114250_075

On the east side of the basilica, there are two stone heads that represent the martyrs that the church honors. According to our city tour guide, their remains lie in a crypt below the nave that dates back to Roman times, before the first church was ever built.

IMG_20150122_103322_641

IMG_20150122_103313_619 IMG_20150122_103317_600  IMG_20150218_122809_391 IMG_20150218_122815_549  IMG_20150218_123404_067 IMG_20150218_123542_682 IMG_20150218_123636_559 IMG_20150218_123736_780 IMG_20150218_123744_091IMG_20150218_123923_655IMG_20150218_124028_062 IMG_20150218_124034_038IMG_20150218_123852_157

Snow Day

We were lucky enough to get a snowfall in the first week of our stay; my host mother told me that it was rare to get a snow that was as beautiful as that was – gentle flakes that crunched under your feet, and was good enough to sled on or to pack into snowballs. We went on a hike up to the top of a nearby hill/mountain, which was very exhausting! These are some pictures I took on our way up and down:

IMG_20150124_121520_894 IMG_20150124_104350_617 IMG_20150124_104358_060 IMG_20150124_104558_756 IMG_20150124_104601_041 IMG_20150124_110101_515 IMG_20150124_110115_256 IMG_20150124_110125_744 IMG_20150124_111645_262 IMG_20150124_112442_805

IMG_20150124_111742_740 IMG_20150124_111749_930 IMG_20150124_112424_908 IMG_20150124_132100_957

Near the top there was a beautiful little church, complete with its own organ! Paintings covered every wall and even the vaulted ceiling.

IMG_20150124_122732_212 IMG_20150124_122808_622 IMG_20150124_123028_472 IMG_20150124_123356_790IMG_20150124_123059_323

IMG_20150124_123053_295  IMG_20150124_123142_931 IMG_20150124_123155_257

The way down was really slippery and most of us got our feet soaked (if not more).

IMG_20150124_125219_139 IMG_20150124_125227_451 IMG_20150124_130949_671 IMG_20150124_131106_854 IMG_20150124_131109_294 IMG_20150124_131327_950  IMG_20150124_132449_368 IMG_20150124_132506_590IMG_20150124_132100_957 IMG_20150124_132745_605 IMG_20150124_132749_052 IMG_20150124_133013_393

 

Well, I’m in Germany now, far far away from the United States. There’s so much to see here it’s incredible! I apologize for not taking pictures on the way to Bonn (by plane and bus), but I finally remembered to take pictures once we were given a tour of the city (a day after our arrival).

This was the first thing I took a picture of – a phone booth filled with books in German. It’s a sort of honor-system library, mostly for students since it’s really close to the university in Bonn.

IMG_20150120_113034_845

Several views of the university exterior, which used to be a Renaissance palace.

IMG_20150120_114121_809 IMG_20150120_114118_181 IMG_20150120_114112_628

The patroness of the university, Mary, stands above the main entrance. Legend says this statue survived war and several attempts to destroy it, and has brought blessings and luck to students who pass through this door.

IMG_20150120_114107_656

The university grounds are huge, and very beautiful.

 

IMG_20150120_114126_840 IMG_20150122_103708_814 IMG_20150122_110147_200

Here we have the main bus station for Central Bonn.

IMG_20150120_115040_412 IMG_20150120_115031_024

The Marketplatz (or Market Square) has a daily open-air market in it with fresh food, vegetables and bread, and it has some delicious Bratwurst too! The old town hall stands at the head of the square.

IMG_20150122_111945_614 IMG_20150122_112025_764 IMG_20150122_111949_538

The river Rhine runs right through the city, bordering the central area of Bonn.

IMG_20150122_110657_072 IMG_20150122_110650_402 IMG_20150122_110647_603 IMG_20150122_110644_049 IMG_20150122_110623_534 IMG_20150122_110616_573

Another square in the city, Munsterplatz is bigger than the Marketplatz and has many American franchises in it, as well as a five-story shopping center and the huge Munster Cathedral.

IMG_20150120_120229_177 IMG_20150120_120123_878

Finally, I get to ride the U-bahn (subway) home to Bod Godesberg, which is a sub-district of Bonn. This is my stop here:

IMG_20150123_093655_686

 

 

 

 

Orchestrator

Here is the documentation for my final project in my Interactive Media Studio. This was a joint project with Dean Zhu, where the goal was to create an application for the iPad that required users to employ physical objects when interacting with the app.

We named our application “Orchestrator”. Our concept for this app was to have users hold physical models of different musical instruments, which they would place and hold on the iPad surface. The app would play back a musical audio track that corresponded to the musical instrument the user was holding.

Credit goes to Dean for designing the tangible objects and the graphic interface of our application. I myself did the programming and audio aspect of the app.
Pictures, video, and more information can be found by following the links below.

Documentation Research Paper

Documentation Video

Better Link

https://docs.google.com/presentation/d/14Mz5H-4rQvSG2xMM7M_f9SnNezn8rKTsFpNZ_MCADZI/edit?usp=sharing

I am working with Dean Zhu for this project. Attached is our presentation for the concept or our Orchestrator app.

Orchestrator Powerpoint

Here is the concept document for our second interactive media project. I am working with Dean Zhu this time as well.

===========================================================

Tabletop Game Concept

Target Audience:             Ages 12 – 24

Concept Description:      The concept is based on tabletop wargames, a type of board game where players control armies in a turn-based setting, fighting for control of the board or a scenario-based objective.
Such games have a very complex rulebook that governs what soldiers can and cannot do. Examples include how far units may move, dice rolls to determine whether a gunshot hits or misses, the effects of varying terrain, and others. Many players either do not have the patience for these rules, or play with a simplified version of the rules. This means that younger players of tabletop games are very rare; tabletop gamers tend to be hobbyists who have enough time and money to devote to their army pieces.

Project Description:        My idea was to have an augmented reality tabletop game, wherein the game would be played as normal, but rule-specific quantities would be displayed or projected around each unit. Examples would be movement range, shooting range, battles and dice rolls – all these could be projected or displayed on the board itself next to the units in question. This would make the game much easier and quicker to play, as well as make it more appealing for younger players.

Game Pieces:                    The game pieces (at least for this initial project) would need to look like the units they represent, for clarity. My idea was to use the army kits that are sold by Games Workshop specifically for this type of game. These models are made of cast plastic or metal, must be assembled and painted by hand, and are very delicate. Using these models would limit the intended audience somewhat, because children may not understand how to handle the game pieces gently. Should this idea fail, chess pieces would also work, and perhaps action figures or Legos could work as well.
Users may be able to pick their forces themselves before the battle begins, choosing a faction to play as and then selecting which troops to use from that faction. Again, the Games Workshop line of models has plenty of different armies and unit types to cover every conceivable role in military warfare.
Three or four armies should be available, with available units being commanders, tanks, infantry, fast attack infantry, healing/support, and snipers. Other unit types are available, but to keep the game simpler those would be left out.

Game Setup:                     To start off, the game would enter a “setup mode” that would allow players to select their units and view the statistics and rules associated with each. Users would be able to place a unit on the board in a circular bounding box, upon which the board would display a selection of key features and statistics associated with that particular unit. For example, placing a jump infantry model on the board would show the superior movement speed and number of attacks, the number of hits it can withstand, the armor and strength values of the unit, and the cost of the unit.
Cost would regulate the size of each player’s army. Each unit would have a point value associated with it, and the game would start with each player having a preset number of points to spend.
Users would be able to select armies by placing units on the board in a projected square. Units in this area would deplete the points total for the player, which would also be displayed. This way, players could change units at will until they are satisfied.

Gameplay:                          Gameplay would be based on the rules for an existing tabletop game: Warhammer 40,000. Play starts with a dice roll to determine which player goes first. After that, play moves in three phases; Move, Shoot, Fight. A player’s turn involves all three of these – the first player would move his units, shoot with any units that may, and then resolve any combat with enemy units, then the second player would follow the same order – and turns like this continue until the game objective is met. Usually this objective is total annihilation of the opposing army.
During a player’s move phase, their models would have their movement circles displayed. As a player moves a model within this circle, the old move area would disappear and a new, reduced version would appear under the model if they have any move left.
During the shoot phase, all models that may shoot would be highlighted and their available targets would be highlighted in a different color. Players could select a model by tapping the screen next to it, then selecting a target by tapping the screen next to the enemy. The rolls for success of the shot would be displayed.
During the fight phase, any models that could enter an assault would be highlighted. Models that are already fighting would be outlined as well. Players could then resolve battles or join new ones accordingly.
Technical Aspect:             For the game to function smoothly, each unit would have to be recognizable as a separate entity, with its own statistics that are recorded and updated as the game is played. If there was a way for a camera to track and scan each unit and recognize some kind of code, a projector could use this information to project the augmented reality elements. On a touchscreen, perhaps a touch surface on the underside of the unit bases would suffice. The biggest challenge in this case would be how to get each unit to register differently, while not having too many touch surfaces on the tablet device at once.

This is the finished product for the first project in our Interactive Media Studio. I was in a group with Dean Zhu for this project.

Link to Video of Final Result

Recording of Project Testing

Link to Documentation Video

Dean’s Thoughts:

Plants and the like are definitely not my first choice of subject matter for a given project.. However, I enjoyed conceptualizing and attempting to add my own particular edge to leafy greens. I’m glad I was able to use many of the skills I already have to hold the arrangement together, though this experience has taught me that I still have quite a bit left to learn, as well as to remember to take into consideration for the next time.The fake plants were a bit unwieldy, though. I’d like to be able to work with something a bit more… flexible, next time. we shall see.

My thoughts:

This project is very intriguing, and I would love to be able to do something similar that is more ambitious. Our arrangement of leaves reacts based on the input sound intensity at a given frequency, and with Minim’s capabilities this was simple to accomplish in theory. In reality there were many limitations to the tweaks we could make to test the program, such as substituting existing audio files for microphone input with no microphone. I think if I had to do it again, I would want the user input to be done differently, because Minim’s capability to pick out more specific input data from a Mic In is limited.

The core program code is under the cut:

import codeanticode.syphon.*;

PGraphics canvas;

SyphonServer server;

/**

* This sketch demonstrates how to monitor the currently active audio input

* of the computer using an AudioInput. What you will actually

* be monitoring depends on the current settings of the machine the sketch is running on.

* Typically, you will be monitoring the built-in microphone, but if running on a desktop

* it’s feasible that the user may have the actual audio output of the computer

* as the active audio input, or something else entirely.

* <p>

* Press ‘m’ to toggle monitoring on and off.

* <p>

* When you run your sketch as an applet you will need to sign it in order to get an input.

* <p>

* For more information about Minim and additional features,

* visit http://code.compartmental.net/minim/ 

*/

import ddf.minim.*;

Minim minim;

AudioInput in;

int timer = 0;

int volume = 0;

boolean renew = false;

int level = 0;

float levelF = 0;  //level de-generate variable

float levelG = 0;  //level generate variable

float aa=-.5; // Kilter Left

float ab=.5; // Kilter Right

//Controllers

int maxVol = 10000;  //

int maxgrowth = 8;

int fadeRate = 4;  //lower rate = slower fade

float growRate = 0.2; //plant generation rate

float dieRate = 0.01; //plant de-generation rate

//Color Selection

int colorR = 240;

int colorG = 255;

int colorB = 240;

int Ink = 10; // Subtractive color editor. Apply to R, B sections.

int sqHeight = 100;  //height of colorbox

int sqWidth = 8;  //width of colorbox

int thd = 20;  //amplification of color

int thr = 1;   //ignores volume levels below this number

int samplePos = 205;   //frequency to test, range may be from 0 to 1024

//======================

void form(float x,float y, float a, int c) {

canvas.line(x,y,(x+45*cos(a)),(y+45*sin(a)-(level/2)));

if (c>0) {

canvas.strokeWeight(5);

form((x+45*cos(a)),(y+45*sin(a)-(level/2)),a+aa,c-1);

form((x+45*cos(a)),(y+45*sin(a)-(level/2)),a+ab,c-1);

//    canvas.stroke((255-(c*Ink)), 255, (255-(c*Ink)));

}

}

void fractal(int cR, int cG, int cB, int time){

//aa = 0.5;//random(-PI,PI);

// ab = -1;//random(-PI,PI);

if(renew == true){

renew = false;

timer = 0;

levelG = levelG + growRate;

level = int(levelG);

if(level > maxgrowth) level = maxgrowth;

levelF = 0;

//cR = cR * volume[time];

//cG = cG * volume[time];

//cB = cB * volume[time];

}

//  canvas.stroke(cR – timer, cG – timer, cB – timer);

canvas.stroke((cR-(level*Ink)-timer), cG – timer, (cB-(level*Ink)-timer));

form(width/2,(height-height/5),-HALF_PI, level – 1);

timer = timer + fadeRate;

levelF = levelF + dieRate;

levelG = levelG – (timer/100);

if(levelG < 0) levelG = 0;

level = level – int(levelF);

if (level<1) level = 1;

//levelG = int(levelG);

}

void square(int Xpos, int Ypos, int cR, int cG, int cB, int time){

if(renew == true){

renew = false;

timer = volume;

//cR = cR * volume[time];

//cG = cG * volume[time];

//cB = cB * volume[time];

}

canvas.fill(cR – timer, cG – timer, cB – timer);

canvas.rect(Xpos,Ypos,sqWidth,sqHeight);

timer = timer + fadeRate;

}

//===================

void setup()

{

size(600, 500, P3D);

canvas = createGraphics(600,500,P3D);

// canvas.background(0);

server = new SyphonServer(this, “Psyphon”);

minim = new Minim(this);

timer = 0;

//  canvas.strokeWeight(3);

//setup squares

//square(1,0, 0,0,255, 1); //blue

for(int i = 0; i < 1024; i++){

timer = 0;

renew = false;

}

// use the getLineIn method of the Minim object to get an AudioInput

in = minim.getLineIn();

//  in = minim.getAK5370();

}

//=======================================================

void draw()

{

canvas.beginDraw();

canvas.background(0);

canvas.stroke(255);

int j = 0;

// draw the waveforms so we can see what we are monitoring

//bufferSize = 1024;

for(int i = 0; i < 1024; i++){

volume = int(((in.left.get(i)*thd) / maxVol) * 255);

if((in.left.get(i)*thd) > thr){

renew = true;

}

}

fractal(colorR,colorG,colorB, 1);

//for(int i = 0; i < in.bufferSize() – 1; i+=8){

for(int i = 0; i < 1024; i+=16){

volume = int(((in.left.get(i)*thd) / maxVol) * 255);

}//end of For Loop

if((in.left.get(samplePos)*thd) > thr){

renew = true;

}

//  square(1,1, 0,0,255, 1);

canvas.endDraw();

image(canvas,0,0);

server.sendImage(canvas);

}

Analysis of an article that discusses a game incorporating tangible user interface elements.

Providing both Physical and Perceived Affordances Using Physical Games Pieces on Touch Based Tablets

The article has not been published here because of the access rights to it.