WORK
professional work school work personal work
03
Audemars Piguet, Royal Oak Exhibit Fabrication
11
Portland Water Resource and Education Center
21
blowfishLAMP
27
Mount Sinai, Lobby Feature Wall Fabrication
35
Oslo National Museum
SITU Studio
building
SITU Studio
object
41
visuaLatency
45
Virgin Atlantic JFK Clubhouse Furniture
51
Lents Community Urban Agriculture
57
computerVision
63
Lodge Mountain Rest Stop
w/ Jeffrey Maas
SITU Studio
meta
SITU Studio | SITU Fabrication 2012
This project was completed while working for SITU Fabrication in Brooklyn, New York. SITU engineered and fabricated the six Fragments designed by Sebastien Leon Agneessens & MA3 which house a number of historic Audemars Piguet watches in addition to a watchmaking studio. The Fragments were built to be disassembled, crated and re-assembled at different cities around the world.
My role in the project included full documentation and detailing of the design through all phases of fabrication. This included developing a Grasshopper definition to help generate structure and fabrication documentation. I collaborated with the fabrication team on a daily basis to troubleshoot the construction and assembly process. 03
fragment aluminum structure and plywood facade framing completed
beginning the installation of walnut siding
walnut siding installed, finishing trim and fascia of the ‘Watchmaker Fragment’
05
Installation Sequence
LED ROPELIGHT PREATTACHED TO BASE FRAME METAL LAMINATE TOEKICK PREATTACHED TO BASE FRAME 4" x 4" x 1/4" ALUMINUM TUBE BASE FRAME
ALIGNMENT BRACKETS BOLTED TO BASE FRAME RECESSED CASTERS PREATTACHED TO BASE FRAME
1 1/4" x 1 1/4" x 1/8" ALUMINUM TUBE
METAL LAMINATE PANEL WITH Z-CLIP PREFITTED AND ATTACHED
4" x 4" x 1/4" ALUMINUM TUBE BASE FRAME ALUMINUM RIB PREFITTED WITH Z-CLIP
base assembly at corner showing wall attachment and lighting
06
wall framing is installed and bolted to the base
installation of roof assembly with bolted connections to wall
FULLY ASSEMBLED DISPLAY CASE SLID ONTO ALUMINUM RIBS
METAL LAMINATE PANELS HUNG ONTO ALUMINUM FRAMES WITH PREFITTED Z-CLIPS
ALUMINUM FRAMED AND CLAD BOX CONTRUCTION SLIDING ALUMINUM PLATE ACCESS PANEL CNC-MILLED HDU FOAM DISPLAY LANDSCAPE
1/2" - 3/4" THICK SOLID WALNUT STRIPS GLUED AND NAILED/SCREWED TO PLYWOOD FRAME CNC MILLED PLYWOOD FRAME STEPPED TO RECIEVE WALNUT STRIPS PREFITTED Z-CLIPS ASSEMBLY TO ATTACH WOOD PANELS
PREFITTED ALUMINUM STOPS FOR BOX ALIGNMENT
installation of the watch vitrines with brackets
attachment of the exterior wood panel assemblies
door panel removed for access to inside of fragment
07
08
David Gabriel, COLAB Architecture 2011
As an intervention on Portland’s Waterfront, the project finds itself as a threshold building.This is translated conceptually into the building as a place for collection which is realized formally through simple moves. Breaking the building into three forms allows penetration through without limiting the flow along the current esplanade. These forms are then held together by a fragmented roof that opens up outwardly to accept and collect people, but then closes down internally to make a more intimate space. It is here at this intimate space that a compluvium is inserted, this becomes not only the beginning of a water habitat but also the organizing factor of the entire project. It is here that people collect to learn about water in the city and to re-establish their personal connection with the natural element. 11
ST. HELENS SCAPPOOSE
VANCOUVER
PORTLAND MILWAUKIE
LAKE OSWEGO GLADSTONE
WEST LINN
OREGON CITY NEWBERG
WILSONVILLE
BUTTEVILLE
CANBY
DAYTON
KEIZER
SALEM
INDEPENDENCE
PROGRAM EXHIBIT
4000sf
OUTDOOR EXHIBIT
4000sf
OUTDOOR CLASSROOM
4000sf
INDOOR CLASSROOM
2400sf
LOBBY
2400sf
LABS
3200sf
OFFICE
2820sf
CAFE
2000sf
OUTDOOR CAFE
1500sf
RAIN GARDENS
1200sf
GREENHOUSES
6800sf
ALBANY
concept models; walnut, plaster, acrylic; indian rosewood, plaster; twigs, resin, plaster
CORVALLIS
HARRISBURG
12
TOTAL EUGENE
SPRINGFIELD
34320sf
4 5 Exhibit
3
Exhibit
Education
Education
2
1
1 2 3 4 5
Compluvium Perpetually Wet Pools Seasonal Wetlands Grasslands River
Research
concept diagram - collection
program - water circulation
program - water story
Research
program - pedestrian circulation
entry from south
13
20
21
22
2 1
19
17 15
10 3 6 18 4 16
GROUND FLOOR PLAN
15
SCALE: 3/64” = 1’-0” 0
5
15
N
35
4 9 7 12
17 5
12
7
12 12 12 5 8 17
13
9
10
11
6
14
14
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
café pier gallery entry/reception lab anaerobic reactor lab prep break conference mechanical copy shared office director’s office experimental greenhouse classroom living machine greenhouse lecture hall impluvium perpetually wet pool grasslands seasonal wetlands wilamette river
REFLECTED CEILING PLAN SCALE: 3/64” = 1’-0” 0
5
15
35
3/16” = 1’-0” model; milled foam, molding paste, veneer, 1/8” birch plywood
15
facade study model; plaster, milled foam, stainless hardware
lecture hall
facade tectonic model; plaster, milled foam, stainless hardware
looking south from bridge looking southeast from wetlands
looking north from under compluvium
Professor Nancy Cheng 2011
The blowfishLAMP is an exploration of biomimetic design that embeds aspects of biology, engineering, and computer science, challenging the concept of a typical luminaire while creating a fixture that simultaneously responds to, and augments its environment. Inspired by Diodontidae, a family of fish commonly referred to as “blowfish�, the design attempts to engage the morphology and behavior of a biological organism through an orchestration of parametric modeling, pliable materials, and response to environmental feedback. The imbricated membrane pattern was mathematically rationalized using parametric modeling software and was selected, in conjunction with the membrane material, for its characteristic flexibility.The integration of technology, coordinated with the material quality and method of assembly, allows for a kinetic organism that responds to external stimuli. 21
top plate lamp socket lamp luminaire
stepper motor PIR motion sensor Arduino UNO bottom plate
m o delin g
Using Gr asshopper, a par ametr ic definition was wr itten to mimic the balloon like action, and spiny lamina of the blowfish. The definition applies the scales to a user defined cur ve , and outputs cut files labeled for fabr ication and assembly.
fabr ic atio n
The imbr icated scales are laser cut from seven sheets of 18” x 24” polypropylene paper (yupo), while the top and bottom plates are laser cut from a 15” x 8” x1/4” tr anslucent acr ylic sheet.
24”
= 4’ x 6’ of material
18”
x1
x3
x3
as s e m b ly
The scales over lap and inter lock, creating str ips that tab to the top and bottom plates. As each str ip is tabbed into place the luminaire becomes more str uctur ally sound
ins ta lla tio n
A passive infr ared sensor mounted to the bottom plate detects r adiant heat from living or ganisms in proximity to the luminaire . This data is tr anslated via digital signal to an Arduino Duemilanove , which in tur n tr ansmits the signal to dr ive a stepper motor. The rotation of the stepper motor is tr anslated linear ly, spooling and unspooling a cable , which dr ives the contr action and expansion of the luminaire .
//Controling a stepper motor //with a PIR motion sensor. //Start Arduino sketch...
int dirPin = 2; int stepperPin = 3; int numSteps = 1600; int MS1 = 13; int MS2 = 9; float MS1val = HIGH; float MS2val = LOW; int SLEEP = 12; int timer = 500; int PIRalarmPin = 0; int PIRalarmValue = 0; int alarmValue = 0; int alarmValuePrevious = 0; int ledPin = 11; void setup() { Serial.begin(9600);
pinMode(dirPin, OUTPUT); pinMode(stepperPin, OUTPUT); pinMode(MS1, OUTPUT); pinMode(MS2, OUTPUT); pinMode(SLEEP, OUTPUT); pinMode(ledPin, OUTPUT); pinMode(PIRalarmPin, INPUT); delay (2000); } void loop(){ Serial.println(“new”); PIRalarmValue = analogRead(PIRalarmPin); Serial.println(PIRalarmValue); delay(10); if (PIRalarmValue < 100) { alarmValue = 0; Serial.println(alarmValue); } else { alarmValue = 1; Serial.println(alarmValue); } if (alarmValue == 0) { digitalWrite(ledPin, HIGH);
Serial.println(“motion”); delay(10); stepper(true,numSteps); delay(500); alarmValuePrevious = 0; } else { digitalWrite(ledPin, LOW); Serial.println(“no motion”); delay(10); stepper(false,numSteps); delay(500); alarmValuePrevious = 1; } void stepper(boolean dir,int steps){ digitalWrite(dirPin,dir); digitalWrite(MS1, MS1val); digitalWrite(MS2, MS2val); digitalWrite(SLEEP, HIGH); delay(100); for(int i=0;i<steps;i++){ digitalWrite(stepperPin, HIGH); delayMicroseconds(100); digitalWrite(stepperPin, LOW); delayMicroseconds(100); } digitalWrite(SLEEP, LOW); }
//End sketch.
design SITU Studio | SITU Fabrication 2011/2012
This project was completed while working for SITU Fabrication in Brooklyn, New York. SITU engineered and fabricated a feature wall for a residential tower designed by Pelli Clarke Pelli Architects. The wall is 17â&#x20AC;&#x2122; tall by 40â&#x20AC;&#x2122; long and is made of 30 walnut faced panels that define a twisted and wavy surface.
My role in the project included full documentation and detailing of the design through all phases of fabrication. Using Grasshopper to streamline design and fabrication documentation, I was able to oversee the project through fabrication while collaborating with and supporting the fabrication team throughout the entire construction process. 27
walnut veneer
3/8” birch plywood, CNC milled
3/4” birch plywood ribs, CNC milled
1” birch plywood vertical ‘through’ rib
1” birch plywood ‘partial’ vertical rib
3/16” MDF reveal, CNC milled
3/4” birch plywood ‘back’, CNC milled with dados to receive ribs
28
1/4 of wall, showing structure
1/4 of wall
29
Professor Don Genasci 2010
Given a delicate history of the site that is close to six acres in size and a program that approaches one million square feet, the Olso National Museum presents itself as a study in both urban design and form. How does a structure of this size fit into the urban fabric of Oslo without overpowering the historic Train Station turned Nobel Peace Center? The concept is simple: allow the palimpsest of the history of the site to exist, while allowing the grid to penetrate,and create internal city blocks. From this the form is generated and then manipulated to allow the building to step down to a central plaza which faces the Nobel Peace Center. Two of the blocks become the museum while the other blocks are given over to future mixed-use development. The blocks of the museum allow shifts between the two, creating a central circulation space. This circulation space allows a coherent navigation between the forms of the museum, providing access to both the internal program and the varying levels of terraces and roof decks. 35
projecting streets
fourth floor
third floor vestbanen memory
second floor
form geometry
ground floor
section through exterior circulation space and gallery
aerial perspective
longitudinal section
museum
plaza
Nobel Peace Center
rendering of plaza looking towards entrance
vertical circulation ramps
in collaboration with Jeffrey Maas 2011
As designers of the physical environment, we are obsessively interested in the interaction of human occupation and space. This interaction is the basis for architecture, and both drives and derives interaction and emotion--it is through solely this interaction that meaning of the space is created in its users. Thus, it is this interaction--or more directly, the exposition of this interaction--that visuaLatency presents Inspired by Neil Spiller’s visualization of information relationships, our system captures and records spatial usage over time, compiles it and visualizes it for the users of the physical environment in real time. visuaLatency is a lens—built on the open-source program Processing and projected into physical space—to see the past hour of spatial use instantly. From this visualization, one can begin to interpret space use patterns and their own relationship to the space—even begin to hypothesize towards the origins of various emergent patterns. visuaLatency was exhibited in the Univeristy of Oregon’s Portland Library and Learning Commons for four months in 2011. 41
/* visuaLatency is an installation by Geoff Sosebee and Jeffrey Maas. Written by Geoff Sosebee and Jeffrey Maas with help and support from Sam Jeibmann and the members of the Processing.org Forum. Start Processing Sketch */ import fullscreen.*; FullScreen fs; int wi = 640; int ht = 480; String filetype = “.tiff”; int[] R = new int [wi*ht]; int[] G = new int[wi*ht]; int[] B = new int[wi*ht]; int variance = 1; int numFrames = 150; int currentFrame; int preFrame; int opacity = 4; PImage view; void setup() { size(wi, ht); background(0,0,0); frameRate(5); currentFrame = 1; preFrame = 0; view = new PImage(width, height); loadPixels(); noCursor(); fs = new FullScreen(this); fs.enter(); } void draw() { for (int y=0; y < view.pixels.length; y++) { R[y] = 0; G[y] = 0; B[y] = 0; } int m = minute(); int mL = m-variance; int mH = m+variance; for(int z=0; z < 60; z++) { if((z < mL) || (z > mH)) { blendImage(z); } } for(int i = 0; i < view.pixels.length; i++) { int r = R[i];
int g = G[i]; int b = B[i]; view.pixels[i] = color(r, g, b); } view.updatePixels(); image(view, 0, 0); if(currentFrame == numFrames) { String mo = nf(month(),2); String d = nf(day(),2); String h = nf(hour(),2); String mi = nf(minute(),2); String s = nf(second(),2); save(“output_”+mo+d+h+mi+s+filetype); } frameNumber(); } void blendImage(int z) { int frameToProcess = z; PGraphics displayFrame = createGraphics(width, height, P2D); PImage newFrame = loadImage(frameToProcess+filet ype); newFrame.loadPixels(); for(int i=0; i < newFrame.pixels.length; i++) { displayFrame.beginDraw(); displayFrame.loadPixels(); color newFColor = newFrame.pixels[i]; int nr = (newFColor >> 16) & 0xFF; int ng = (newFColor >> 8) & 0xFF; int nb = newFColor & 0xFF; R[i] += (nr)/opacity; G[i] += (ng)/opacity; B[i] += (nb)/opacity; } displayFrame.endDraw(); } void frameNumber() { if (currentFrame < numFrames) { currentFrame ++; } else { currentFrame = 1; } if (preFrame < numFrames) { preFrame ++; } else { preFrame = 1; }
import processing.video.*; Capture cam; int wiDth = 640; int heiGht = 480; int[] R = new int[wiDth*heiGht]; int[] G = new int[wiDth*heiGht]; int[] B = new int[wiDth*heiGht]; float threshold = 60; int opacity = 45; int framerate = 2; int startFrame; int currFrame; int totalFrames = 60; int totalCount = 0; int[] previousFrame; int numFrames = 98; PImage timeIMG;
void countSave() { int m = minute(); if(totalCount == totalFrames) { totalCount = 0; } saveFrame(“/Volumes/visionLatency/mergeDisplay/”+m+”.tiff”); currFrame = 0; background(0,0,0); for(int i=0; i<pixels.length; i++) { R[i] = 0; G[i] = 0; B[i] = 0; } totalCount ++; } void frameDifference() { cam.read(); cam.loadPixels(); for (int i = 0; i < cam.pixels.length; i++) { color currColor = cam.pixels[i]; color prevColor = previousFrame[i]; int cR = (currColor >> 16) & 0xFF; int cG = (currColor >> 8) & 0xFF; int cB = currColor & 0xFF; int pR = (prevColor >> 16) & 0xFF; int pG = (prevColor >> 8) & 0xFF; int pB = prevColor & 0xFF; int diffR = abs(cR - pR); int diffG = abs(cG - pG); int diffB = abs(cB - pB); float diff = dist(cR, cG, cB, pR, pG, pB); if (diff < threshold) { pixels[i] = color(0); } else { pixels[i] = color(#ff1493); } int r = (pixels[i] >> 16) & 0xFF; int g = (pixels[i] >> 8) & 0xFF; int b = pixels[i] & 0xFF; previousFrame[i] = currColor; R[i] += r; G[i] += g; B[i] += b; } updatePixels(); }
void setup() { size(wiDth, heiGht); background(0,0,0); for(int i=0; i <= totalFrames; i ++) { save(“/Volumes/visionLatency/mergeDisplay/”+i+”.tiff”); } cam = new Capture(this, width, height, framerate); previousFrame = new int[cam.width*cam.height]; timeIMG = new PImage(cam.width, cam.height); loadPixels(); startFrame = 0; currFrame = startFrame-1; } void draw() { if (cam.available() == true) { cam.read(); frameDifference(); for(int i = 0; i < timeIMG.pixels.length; i++) { int r = R[i]/opacity; int g = G[i]/opacity; int b = B[i]/opacity; timeIMG.pixels[i] = color(r, g, b ); } timeIMG.updatePixels(); image(timeIMG, 0, 0); currFrame ++; if (currFrame == numFrames) { countSave(); } } }
stills of display
design SITU Studio | SITU Fabrication 2011/2012
This project was completed while working for SITU Fabrication in Brooklyn, New York. SITU was hired to engineer and fabricate two couches for the Virgin Atlantic JFK Clubhouse designed by Slade Architecture. SITU was to do all fabrication with the exception of upholstery. The two couches take on an egg-like form and are designed such that the seat pods are removeable for re-upholstery.
My role in the project included engineering and full documentation of the fabrication drawings and processes. The structure of the couches was engineered to be a radial waffle structure that provided varying degrees of structure where needed. Using Grasshopper I was able to streamline the design process, generate cut sheets and fabrication documentation. This allowed me to take the project through prototype phase in a very short period of time. 45
radial seat ribs
orthagonal seat ribs
radial body ribs
orthagonal body ribs
46
partial rib structure
partial rib structure with seat
47
Professor Howard Davis 2010 Lents Central is a place that supports community agriculture, by providing the necessary tools to facilitate education and community. At a point in the city where several modes of transportation meet, Lents Central becomes a congregation point for the community, a place for farmers markets, and a place for meeting. The form of the building is fabricated from the neighboring city structure, this further establishes the project as the central point for community well being. The form of the building is rendered as an â&#x20AC;&#x153;Lâ&#x20AC;? which creates the central plaza where people congregate for markets, events and eateries. The simple extruded form is reminiscent of farm houses and barns, structures that evoke a feeling of comfort and are symbols of food. Yet this idea of a barn is manipulated, the facade is deconstructed, pulling the wood facade away from the structure to allow for program use and interior passageways. It is then decomposed to create openings, entrance ways and to evoke a sense of porosity and movement. 51
I-84
E BURNSIDE
JOHNSON CREEK WATERSHED
SE 122ND AVE
LENTS PARK
SE HOLGATE BLVD
SE
FO ST ER
POWELL BUTTE PARK
RD
I-5
HWY 43
SITE
SPR INGW ATER CO RRIDOR
SE 112TH AVE
SE POWELL RD
I-205
SE 92ND AVE
SE 82ND AVE
SE 39th AVE
HWY 99E
I-405
SE DIVISION ST
UP
UP
UP
UP WD
WD
DW
DW
WD
DW
WD
DW
UP
UP
UP
UP
se reedway st
se 91st ave
TYPICAL BARN material and tectonics
se 92nd ave
se ramona st
DECONSTRUCTED BARN material and tectonics
UP
se f ost er r d
Concept Diagrams
DECOMPOSED BARN porosity, enclosure, transparency
1/2â&#x20AC;? = 1â&#x20AC;&#x2122; facade model between facade and glazing, looking into kitchen
aerial programmatic rendering
1â&#x20AC;? = 64â&#x20AC;&#x2122; site model
looking north into plaza
Sam Jiebman, Second Story 2011
computerVision is a one week exploration of how we can use our environment to manipulate a computer generated 3d space or object. The concept was to use a set of identification tags (fiducials) that a program can recognize and track, and have their locations map to a point in 3d space. These points were then used to generate a three dimensional form digitally. Essentially, the idea is that you sculpt digitally through movements in your physical environment. The program uses a variety of software including Processing, Grasshopper and Rhinoceros. The exploration began in a course that was investigating Processing as a resource for architects and designers. What I proposed is one method that we can begin modeling and designing digitally but through our movements and interactions in the world around us. 57
/*Start Processing Script. Fiducial IDs controlling a surface in Rhino. Written with support from Sam Jeibmann and the poeple from gHowl. Uses TUIO and reacTIVision to sense fiducial id’s location. Using the UDP library by Stephane Cousot to write out values to a port, gHowl reads data from the port within Grasshopper, where a custom scipt reads a text string then makes points in 3D space and creates a mesh from those points. */
textAlign(CENTER,CENTER); float obj_size = object_size*scale_factor; Vector tuioObjectList = tuioClient.getTuioObjects(); for (int i=0;i<tuioObjectList.size();i++) { TuioObject tobj = (TuioObject)tuioObjectList.elementAt(i); int fidvar = tobj.getSymbolID(); if(fidvar == 0){ noFill(); angle = tobj.getAngle(); angleD = round((tobj.getAngle() * 180) / PI); arc(tobj.getScreenX(width),tobj.getScreenY(height),obj_size*1.5,obj_size*1.5,0,angle); fill(150); text(tobj.getSymbolID() , tobj.getScreenX(width), tobj.getScreenY(height)); fill(255,0,0); text(“x= “+tobj.getScreenX(width), tobj.getScreenX(width), tobj.getScreenY(height)+(obj_size)); fill(0,0,255); text(“y= “+tobj.getScreenY(height), tobj.getScreenX(width), tobj.getScreenY(height)+(1.5*obj_size)); fill(0,255,0); text(“z= “+angleD, tobj.getScreenX(width), tobj.getScreenY(height)+(2*obj_size)); message[0] = String.valueOf(String.valueOf(tobj.getScreenX(width)) + “;” + String.valueOf(tobj.getScreenY(height)) + “;” + angleD +” “); } //Repeat above IF statement for fidvar==1-6; String sendMessage = join(message, “:”); println(sendMessage); udps.send( sendMessage, ip, 9000 ); }
import hypermedia.net.*; UDP udps; // define the UDP object import processing.video.*; import processing.opengl.*; import TUIO.*; TuioProcessing tuioClient; String[] message = new String[6]; String ip = “127.0.0.1”; float object_size = 20; float table_size = 360; float scale_factor = 1; int fontSize = 10; float angle; int angleD; PFont font; void setup() { size(360, 360); udps = new UDP( this, 6005 ); stroke(255,131,50); strokeWeight(3); strokeCap(ROUND); noFill(); loop(); frameRate(30); hint(ENABLE_NATIVE_FONTS); font = createFont(“Arial”, fontSize); scale_factor = height/table_size; tuioClient = new TuioProcessing(this); } void draw() { background(10); textFont(font);
58
}
physically manipulating the location of fiducials
digital affect in Rhino using Grasshopper
movement of the tags (left) is mapped to digital space and form geometry (right)
59
Bill Neburka + Carrie Strickland, Works Partnership Architecture 2010
Presented with the question, “What do you do for thirty minutes while your electric vehicle charges,” my response was to provide a place for relaxation. The site is given as the parking lot of a ski resort in Government Camp, Oregon, along a high trafficked connection between Portland and Bend; the project takes the ideas of a rest stop and a ski lodge as precedents. It explores form through the module of two parking spaces, and materiality through stacked stone and recycled lumber. By depressing the center of the space, it provides both a more relaxing lounge space and views to the slopes above. It answers the given question by saying, “You do whatever you want to do: you read, study, warm yourself, or surf the web.” It provides a place to relax and escape from the dreariness of travel, for thirty minutes at a time. The Lodge is a study of modularty, material, and program, and how these elements shape the form of the space. 63
site plan
floor plan
64 0’
2’
4’
8’
12’
20’
concept diagrams
entrance
site renderings
longitudinal sections