MIT_Museum_Exhibit

April 28, 2008



MIT Museum LogoMIT Museum Logo BlueMIT Museum Logo GreenMIT Museum Logo Orange

We’re happy to announce that we’ll be exhibiting the Responsive Skin project at the MIT Museum as a part of the Cambridge Science Festival. The festival takes place from April 26th through May 4th. Our exhibit will on display Thursday May 1st.




system_3_transformation

April 12, 2008






system_parameter_modifications

April 4, 2008



the demonstration video above depicts the creation and flexibility of models using the Graphical User Interface created by the code (see below). the GUI permits ease of workflow allowing models to be refined without constantly re-writting the code. the geometric parameters allow differentiation in size and scale of joints and connection members, as well as overall number of units in the aggregation in the x, y, and z directions. this demo, however, doesn’t show transformation flows applied to the system which were used to produce the systems1-4. stay tuned for the transform demo video, or check out the system_transformation_animation.

gui




system_animation

March 26, 2008






RESPONSIVE_SKIN

March 26, 2008



 

the premise

responsive skin is an experiment in the conception of generative processes as a viable means towards producing responsive and adaptive physical systems. it is concerned with performative variability and its relevance to architectural form. responsive skin questions the repetitive isostatic nature of the architectural facade and explores a system that can vary based on a given set of architectural criteria.

 

the system

the responsive skin proposes a system of unit-based aggregation in which the part-to-whole relationship is given by the unit’s ability to possess unique variation while remaining cohesive within the larger collection. it questions the flatness of the architectural facade through the use of layered systems in which the threshold of the membrane is increased to a condition of interstitial depth rather than graphic two-dimensionality. the layered system introduces the possibility of the facade to engender compound effects enabling a more complex response to the given architectural criteria.

 

the method

the responsive skin was conceived as a flexible system that could quickly and easily be modified for experimentation. written in Maya Embedded Language, all major properties of the system are modifiable through a graphical user interface which allows for a robust workflow in which each experiment can be refined through iterative versioning. the system is created exclusively through MEL with a process that can be divided primarily in two parts: the initial creation of geometry and the transformation of that geometry.




system_4

March 26, 2008



system4_8

system4_10

system4_9

system4_11

system4_1

system4_3

system4_2

system4_4

system4_5

system4_6

system4_7

system4_12

// transform procedure

global proc TransformNodes(int $row, int $col, int $lay, vector $node_pos[], int $node_val[], int $transform_rs) {

global int $node_num;

 

int $cur_node_val = 0;

vector $cur_node_pos;

float $sinrot;

 

for ($i = 0;$i < $node_num; $i++) {

$cur_node_val = $node_val[$i];

$cur_node_pos = $node_pos[$i];

 

$xrot = -9.5 + 6.5*cos(7*deg_to_rad($i));

$xrot2= 7.5*sin(2*deg_to_rad($i));

$xrot3 = 10*sin(4*deg_to_rad($i));

$yrot = 20*sin(2*deg_to_rad($cur_node_pos.y*$cur_node_pos.y));

 

$ycov = abs(4*sin(1*deg_to_rad($cur_node_pos.y*$cur_node_pos.y)));

$zcov = abs(1*sin(1*deg_to_rad($cur_node_pos.y*$cur_node_pos.y)));

 

$ymid = 2*sin(5*deg_to_rad($i));

 

SelectNode($i, $row,$col,$lay, $node_pos,$node_val);

move -r 0 (-1*$yrot) 0;

 

if ($cur_node_pos.x > 1) {

SelectNode($i, $row,$col,$lay, $node_pos,$node_val);

move -r ($xrot) 0 0;

}

 

if ($cur_node_pos.x % 2 == 0) {

SelectNode($i, $row,$col,$lay, $node_pos,$node_val);

move -r ($xrot2) 15 0;

}

 

if ($cur_node_pos.x % 2 == 1) {

SelectNode($i, $row,$col,$lay, $node_pos,$node_val);

move -r ((-1*$xrot3)-4) $ymid 0;

}

 

if ($cur_node_pos.x ==2 && $cur_node_pos.y > 0 && $cur_node_pos.y < $col && $cur_node_pos.z > 0 && $cur_node_pos.z < $row*2) {

eval(”select -r polySurface1.e[” + $cur_node_val + “]”);

SelectEdgeRing;

$nodeedges = `ls -sl -fl`;

eval(”select -r ” + $nodeedges[5]);

move -r 0 $ycov 0;

eval(”select -r ” + $nodeedges[2]);

move -r (-1*$zcov) 0 0 ;

eval(”select -r ” + $nodeedges[4]);

move -r (-1*$zcov) 0 0 ;

}

 

ShowRefresh(”transform”, $transform_rs);

}

}




system_2

March 26, 2008



dsc_8260.jpg

dsc_8380.jpg

dsc_8329.jpg

dsc_8278.jpg

dsc_8337.jpg

dsc_8323.jpg

dsc_8275.jpg

dsc_8344.jpg

// transform procedure

global proc TransformNodes(int $row, int $col, int $lay, vector $node_pos[], int $node_val[], int $transform_rs) {

global int $node_num;

 

int $cur_node_val = 0;

vector $cur_node_pos;

float $sinrot;

 

for ($i = 0;$i < $node_num; $i++) {

$cur_node_val = $node_val[$i];

$cur_node_pos = $node_pos[$i];

 

SelectNode($i,$row,$col,$lay, $node_pos,$node_val);

if ($cur_node_pos.x == 0) {

if ($cur_node_pos.y % 2 == 0 && $cur_node_pos.x % 2 == 0) {

move -r 4 1.5 3;

} else {

if ($cur_node_pos.z > 0 && $cur_node_pos.z < ($row*2)) {

select -cl;

eval(”select -r polySurface1.e[” + $cur_node_val + “]”);

move -r -2 -3 0;

}

}

 

} else if ($cur_node_pos.x == 2) {

if ($cur_node_pos.y % 2 == 0 && $cur_node_pos.x % 2 == 0) {

SelectNode($i,$row,$col,$lay, $node_pos,$node_val);

move -r -3 1 3;

} else {

if ($cur_node_pos.z > 0 && $cur_node_pos.z < ($row*2)) {

SelectNode($i,$row,$col,$lay, $node_pos,$node_val);

move -r 1 0 4;

select -cl;

eval(”select -r polySurface1.e[” + $cur_node_val + “]”);

move -r -1 -4 0;

}

}

 

} else {

if ($cur_node_pos.y % 2 == 0 && $cur_node_pos.x % 2 == 0) {

move -r 4 1 3;

} else {

if ($cur_node_pos.z > 0 && $cur_node_pos.z < ($row*2)) {

select -cl;

eval(”select -r polySurface1.e[” + $cur_node_val + “]”);

move -r -2 -3 0;

}

}

}

SelectNode($i,$row,$col,$lay, $node_pos,$node_val);

if ($cur_node_pos.x == 1) {

move -r 0 2 0;

}

if ($cur_node_pos.x == 2) {

move -r 0 4 0;

}

if ($cur_node_pos.x == 3) {

move -r 0 6 0;

}

ShowRefresh(”transform”, $transform_rs);

}

}




system_3

March 26, 2008



system3_1

system3_2

system3_3

dsc_8432.jpg

system3_5

system3_6

system3_7

system3_8system3_9

// transform procedure

global proc TransformNodes(int $row, int $col, int $lay, vector $node_pos[], int $node_val[], int $transform_rs) {

global int $node_num;

 

int $cur_node_val = 0;

vector $cur_node_pos;

float $sinrot;

 

for ($i = 0;$i < $node_num; $i++) {

$cur_node_val = $node_val[$i];

$cur_node_pos = $node_pos[$i];

 

$xrot_col = 8*sin(20*deg_to_rad($cur_node_pos.y+$cur_node_pos.z));

$xrot_col2 = 8*cos(30*deg_to_rad($cur_node_pos.y+$cur_node_pos.z));

$zrot = 8*sin(20*deg_to_rad($cur_node_pos.y));

$zrot2 = 7*cos(26*deg_to_rad($cur_node_pos.y));

$ynodescale_col = abs(8*sin(deg_to_rad(2*($cur_node_pos.y))));

$ynodescale = abs(8*sin(90+18*deg_to_rad((($cur_node_pos.y/.8) + $cur_node_pos.z))));

$xynodescale = abs(8*cos(deg_to_rad(1.25*(($cur_node_pos.y*$cur_node_pos.y) +

($cur_node_pos.z*$cur_node_pos.z*$cur_node_pos.z)))));

$zrot_col = 20*sin(30*deg_to_rad($cur_node_pos.y));

$zrot_col = 5*sin(4*deg_to_rad(45+$cur_node_pos.y));

 

$sinrot = 15*sin(20*deg_to_rad($i));

$midyrot = .5+1.25*sin(20*deg_to_rad($cur_node_pos.y));

$xrot = 2*sin(5*deg_to_rad($i));

$xrot2= 3*sin(20*deg_to_rad($i));

$xrot3 = sin(20*deg_to_rad($i));

$yrot = 5*sin(2*deg_to_rad($i));

$zrot = 5*sin(7*deg_to_rad($i));

 

SelectNode($i, $row,$col,$lay, $node_pos,$node_val);

 

if ($cur_node_pos.x == 0) {

SelectNode($i, $row,$col,$lay, $node_pos,$node_val);

move -r ($xrot_col) ($xrot_col) ($xrot_col*1.2);

}

if ($cur_node_pos.x == 1) {

SelectNode($i, $row,$col,$lay, $node_pos,$node_val);

 

move -r 0 8 (10+$midyrot);

if (($cur_node_pos.x != ($lay/2) || $cur_node_pos.z % 2 == 0) && ($cur_node_pos.x != 0 ||

$cur_node_pos.z % 2 == 0) && ($cur_node_pos.y != 0 || $cur_node_pos.z % 2 == 0) &&

($cur_node_pos.y != $col || $cur_node_pos.z % 2 == 0)) {

if ($cur_node_pos.z > 0 && $cur_node_pos.z < ($row*2)) {

SelectNode($i, $row,$col,$lay, $node_pos,$node_val);

move -r 0 ($xrot_col*1.2) ($xrot_col/1.5);

setToolTo moveSuperContext;

$test = `manipMoveContext -q -position Move`;

eval(”select -r polySurface1.e[” + $cur_node_val + “]”);

SelectEdgeRing;

$nodeedges = `ls -sl -fl`;

eval(”select -r ” + $nodeedges[4]);

move -r 0 ($ynodescale*1.2) 0;

eval(”select -r ” + $nodeedges[0]);

move -r 0 (-1*$ynodescale*1.2) 0;

SelectNode($i, $row,$col,$lay, $node_pos,$node_val);

$nodeedges = `ls -sl -fl`;

eval(”select -r ” + $nodeedges[12]);

move -r 0 0 -2;

eval(”select -r ” + $nodeedges[1]);

move -r 0 0 2;

}

}

}

if ($cur_node_pos.x == 2) {

SelectNode($i, $row,$col,$lay, $node_pos,$node_val);

move -r $zrot 3 (14+$zrot2);

if (($cur_node_pos.x != ($lay/2) || $cur_node_pos.z % 2 == 0) && ($cur_node_pos.x != 0 ||

$cur_node_pos.z % 2 == 0) && ($cur_node_pos.y != 0 || $cur_node_pos.z % 2 == 0) &&

($cur_node_pos.y != $col || $cur_node_pos.z % 2 == 0)) {

} else if ($cur_node_pos.y > 0 && $cur_node_pos.y < $col){

eval(”select -r polySurface1.e[” + $cur_node_val + “]”);

SelectEdgeRing;

$nodeedges = `ls -sl -fl`;

eval(”select -r ” + $nodeedges[4]);

eval(”select -r ” + $nodeedges[0]);

}

if ($cur_node_pos.y % 2) {

SelectNode($i, $row,$col,$lay, $node_pos,$node_val);

}

}

ShowRefresh(”transform”, $transform_rs);

}

}




system_1

March 26, 2008



dsc_8177.jpg

dsc_8150.jpg

dsc_8156.jpg

dsc_8179.jpg

dsc_8221.jpg

dsc_8251.jpg

gsp_dsc_8222.jpg

dsc_8155.jpg

dsc_8170.jpg

dsc_8152.jpg

// transform procedure

global proc TransformNodes(int $row, int $col, int $lay, vector $node_pos[], int $node_val[], int $transform_rs) {

global int $node_num;

int $cur_node_val = 0;

vector $cur_node_pos;

float $sinrot;

 

for ($i = 0;$i < $node_num; $i++) {

$cur_node_val = $node_val[$i];

$cur_node_pos = $node_pos[$i];

 

$sinrot = 10*sin(1.1*deg_to_rad($i));

$cosrot= 5*cos(1.5*deg_to_rad($i));

$sinrot2 = 5*sin(100*deg_to_rad($i));

 

if ($cur_node_pos.z % 2 != 0) {

SelectNode($i,$row,$col,$lay, $node_pos,$node_val);

move -r $sinrot2 ($sinrot + $cosrot) 0;

}

ShowRefresh(”transform”, $transform_rs);

}

}




system_transformation_animation

March 2, 2008



// transform procedure

global proc TransformNodes(int $row, int $col, int $lay, vector $node_pos[], int $node_val[], int $transform_rs) {

global int $node_num;

int $cur_node_val = 0;

vector $cur_node_pos;

float $sinrot;

 

for ($i = 0;$i < $node_num; $i++) {

$cur_node_val = $node_val[$i];

$cur_node_pos = $node_pos[$i];

 

$sinrot = 10*sin(1.1*deg_to_rad($i));

$cosrot= 5*cos(1.5*deg_to_rad($i));

$sinrot2 = 5*sin(100*deg_to_rad($i));

 

if ($cur_node_pos.z % 2 != 0) {

SelectNode($i,$row,$col,$lay, $node_pos,$node_val);

move -r $sinrot2 ($sinrot + $cosrot) 0;

}

ShowRefresh(”transform”, $transform_rs);

}

}




Next Page »
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License. | systemicprocess harris jaubert