SYMBIOTIC GROWTH
Workshop 2 / Mustafa El Sayed TEAM: Yuan Yao Qin Xia Mariana Custodio dos Santos Hanjun Kim
SYMBIOSIS: Symbiosis refers to the living together of dissimilar species in mutualistic, commensal, amensalistic, or parasitic relationships. Cellular Automaton is a simple mathematical system that can grow based on initial condition and rules. With different initial condition and rule sets, CA can create cells with specific characteristics. Our project focuses on the symbiotic relationship of cells with different characteristics and how they interact to achieve the SYMBIOSIS.
CONTENT I. Basic Exploration II. Parallel Rule III. 3D Transformation IV. Connectivity V. Percentage Control VI. Reset Rule VII. Symbiotic Prototype
BASIC EXPLORATION The project starts with exploring different CA rules and initial conditions to find rules that can produce interesting results. The exploration shows a variety of results in terms of structurality, directionality, randomness, and regularities.
Cellular Automata is a mathematical class of examples putting in prove a simple set of rules over a simple set of conditions. The experience proves that simplicity can generate complex behaviors and patterns of predictable growth became unpredictable and only possible to be generated by a complex combination of simple rules over a simple computational program. When running a CA experiments, the starting condition image is firstly put in test. The combination of black and white pixels suggests a translation of dead and alive cells from
a recreational mathematical experience called the Game of Life. In mutual recreation, simple rules based on neighborhood awareness start being tested along with different starting conditions. Dead or alive will define the next generation level and in the end generate a bottom to top complex system. In this work, continuity and connectivity conduct the set of rules, the starting condition and the final out-come evaluation. In the end, a continuous and symbiotic system is being evaluated according to physical connections and density
regularities. Four different structural elements will emerge and interact. The unpredictability of this interaction will conduct a pre-set behavior generally spread, unpredictably mutating.
Rule 3-1-1
Rule 5-2-2
Rule 6-2-2
PARALLEL RULE Among the many explorations the project focuses on one rule that creates parallel structures when the overall shape is expanding and shrinking. Besides, the voxels in the pattern are inherent with special characteristics. Color coding differentiates voxels with 1,2,3,and more than 4 neighbors and find out that we are interested in the neighbor density and their special characters.
PARALLEL PATTERN I
Rule 001 >=5<=1==2
Rule 001 >=5<=1==2
Rule 001 >=5<=1==2
Rule 001 >=5<=1==2
Rule 001 >=5<=1==2
Rule 001 >=5<=1==2
PARALLEL PATTERN II
Rule 001 >=5<=1==2
Rule 001 >=5<=1==2
Rule 001 >=5<=1==2
PARALLEL RULE
Rule_grow if state = 1 & number >= 5 : state = 0 state = 1 & number <= 1 : state = 0 state = 0 & number >=2 : state = 1 Rule_reduce if state = 1 & number >=0 : state = 0 state = 1 & number <=1 : state = 0 state = 0 & number >= 4 : state = 1
NEIGHBOR CONDITION
Starting Condition
GROWTH & REDUCE RULE
3D Transformation After 2D exploration, the project translates the parallel rule into 3D. At first, the grow and reduce rule are manually controlled. And after several steps of grow and reduce, a growth pattern of each kind of voxel with same neighbor number appears. Also, voxel age is used to control when different rules will be applied to the growth. The 3D study sets up a basic evaluation system for our project, which are connectivity and voxel density.
2D PATTERN TO 3D
l
l
ELEMENTS DENSITY BY RANGE
CONNECTIVITY The project defines connectivity by same layer and previous layer. Checking each voxel with its neighbor number, if the voxel has at least one neighbor with the same neighbor number around it or below it, the voxel is called to be â&#x20AC;&#x153;connectedâ&#x20AC;?.The voxels qualified for this criteria will show and the other will be hidden. In this way, The behavior of each kind of voxels with specific neighbor number shows more clearly.
Check Connectivity
NEIGHBOR CONNECTION Points || Edges || Faces
horizontal continuity
1 1
1 2 1
vertical continuity
CONTINUITY STUDY ------collect all the voxels with same neighbor number if (voxelGrid[i][j].state ==1 && voxelGrid[i][j].neighb==3) voxelGrid[i][j].state01=1; else voxelGrid[i][j].state01=0; ------find out the voxels owns neighbour with the same neighbor number if (voxelGrid[i][j].neighbSame>=1&&voxelGrid[i][j].state01==1) voxelGrid[i][j].state02=1; else voxelGrid[i][j].state02=0;
collect all the voxels with 3 neighbors Generation=15 find out voxels owns neighbour with the same neighbor number. If there is, then alive
------collect all the voxels with same neighbor number in the previous step if (voxelGrid[i][j].previousState ==1 && voxelGrid[i][j].neighbPre==3) voxelGrid[i][j].previous01=1; else voxelGrid[i][j].previous01=0; ------find out the voxels owns neighbour with the same neighbor number in the previous step if (voxelGrid[i][j].neighbPreSame>=1&&voxelGrid[i][j].state02==1) voxelGrid[i][j].state01Pre=1; else voxelGrid[i][j].state01Pre=0; ------find out the voxels owns at least one voxel of the same neighbor number below it and also owns at least one neighbor on the same layer if (voxelGrid[i][j].state01Pre==1 && voxelGrid[i][j].state02==1) voxelGrid[i][j].state03=1; else voxelGrid[i][j].state03=0;
collect all the voxels with 3 neighbors in the previous step Generation=14
find out voxels owns neighbor with the same neighbor number in the previous step. If there is, then alive If it is both alive previously and now, then it is alive
updated latest state
CONTINUITY STUDY Rule 5-1-2
Rule 5-1-2
before checking continuity
neighbor=1
before checking continuity
neighbor=3
neighbor=4
after checking continuity
neighbor=1
neighbor=1
neighbor=3
neighbor=4
neighbor=3
neighbor=4
after checking continuity
neighbor=3
neighbor=4
neighbor=1
Rule 5-1-2
Rule 5-1-2
before checking continuity
neighbor=1
before checking continuity
neighbor=3
neighbor=4
after checking continuity
neighbor=1
neighbor=1
neighbor=3
neighbor=4
neighbor=3
neighbor=4
after checking continuity
neighbor=3
neighbor=4
neighbor=1
CONTINUITY STUDY Rule 5-1-2
Generation=18
Rule 5-1-2
Generation=16
neighbNum=1 Generation=14
Rule 2-1-2
Rule 2-1-1
Rule 5-1-2
Generation=88
Rule 2-1-1
Rule 0-1-4
die
neighbNum=3
Generation=31 die
neighbNum=4
CONTINUITY STUDY Rule 5-1-2 Rule 5-1-2
Generation=27
Generation=14 neighbNum=1
Rule 2-1-2
Rule 2-1-1
Rule 5-1-2
Generation=26
Generation=25
neighbNum=3
Rule 3-1-1
PERCENTAGE CONTROL When the system is growing, the voxels with specific neighbor number change its percentage of the total voxels. If the percentage can be kept in a certain range, the growth can maintain a static balance finally. The project uses percentage range to change between grow and reduce rules. When the voxel percentage falls below the target range, it will grow. When the voxel percentage goes beyond the target ranger, it will trigger the reduce rule.
GLOBAL DENSITY BY RANGE Start condition
Rule_grow if state = 1 & number >= 4 : state = 1 state = 1 & number <= 1 : state = 1 state = 0 & number == 2 : state = 1 state = 0 & number == 3 : state = 1 Rule_reduce if state = 1 & number <= 2 : state = 0 state = 1 & number > 4 : state = 1 state = 0 & number >= 3 : state = 0 Rule trigger : Global Density if Global Density > 50% Rule_reduce Global Density < 25% Rule_grow
Generation 10 Voxel count 312 Global Density 20.51%
Generation 30 Voxel count 472 Global Density 31.03%
Generation 90 Voxel count 730 Global Density 47.99%
Generation 150 Voxel count 618 Global Density 40.63%
Start condition
Rule_grow if state = 1 & number >= 4 : state = 1 state = 1 & number <= 1 : state = 1 state = 0 & number == 2 : state = 1 state = 0 & number == 3 : state = 1 Rule_reduce if state = 1 & number <= 2 : state = 0 state = 1 & number > 4 : state = 1 state = 0 & number >= 3 : state = 0 Rule triggr_1: Global Density if Global Density > 50% Rule_reduce Global Density < 10% Rule_grow Rule triggr_2: Element Counts if Over 4 Neighb > 600 Rule_reduce Over 4 Neighb < 100 Rule_grow
Generation 30 Voxel count 517 Global Density 21.53% Voxel over 4 Neighb 246
Generation 80 Voxel count 434 Global Density 18.08% Voxel over 4 Neighb 397
Generation 150 Voxel count 303 Global Density 12.62% Voxel over 4 Neighb 289
Generation 220 Voxel count 303 Global Density 12.62% Voxel over 4 Neighb 292
ELEMENTS DENSITY BY RANGE Start condition
Rule_grow if state = 1 & number >= 5 : state = 0 state = 1 & number <= 1 : state = 0 state = 0 & number >= 2 : state = 1 Rule_reduce if state = 1 & number >= 0 : state = 0 state = 1 & number <= 1 : state = 0 state = 0 & number >= 4 : state = 1 Aim Neighb 1 Percent = 20 Neighb 2&3 Percent = 50 Neighb over4 Percent = 30 Rule trigger : +- 10%
Generation 10 Voxel count 208
Generation 25 Voxel count 96
Generation 50 Voxel count 128
Generation 170 Voxel count 128
Start condition
Rule_grow if state = 1 & number >= 5 : state = 0 state = 1 & number <= 1 : state = 0 state = 0 & number >= 2 : state = 1 Rule_reduce if state = 1 & number >= 0 : state = 0 state = 1 & number <= 1 : state = 0 state = 0 & number >= 4 : state = 1 Aim Neighb 1 Percent = 25 Neighb 2&3 Percent = 50 Neighb over4 Percent = 25 Rule trigger : +- 10% +- 20% +- 10%
Generation 10 Voxel count 208
Generation 25 Voxel count 184
Generation 50 Voxel count 56
Generation 130 Voxel count 16
RESET RULE During the exploration of percentage research, the voxel with one neighbor is tending to disappear much faster than the two other components. So a reset rule is introduced that when the yellow voxel is going to disappear, it will reset. If the percentage of yellow voxel falls down the target range, it will duplicate itself to become the new initial condition. In this way, The project creates the continuity of yellow voxel with a proper reset rule.
RESET RULES Reset Rule Visible Voxel with one neighbor Hidden Voxels
Voxel with one neighbor will disappear Voxels when reach the boundary, when the percentage falls below the target range, the existing yellow voxels voxel will become the new initial contition
It will keep growing until meet the rule of growing
It will increase the number of yellow voxels to keep balance of the overall percentage
RESET EXPERIMENTS
First experiments reset both yellow and orange voxels
Target Range: Voxel1: 30 +- 5% Voxel3: 40 +- 15% Voxel4: 30 +- 10%
Target Range: Voxel1: 25 +- 10% Voxel3: 40 +- 15% Voxel4: 35 +- 10%
Target Range: Voxel1: 20 +- 10% Voxel3: 50 +- 10% Voxel4: 30 +- 10%
Target Range: Voxel1: 45 +- 10% Voxel3: 30 +- 15% Voxel4: 25 +- 10%
Target Range: Voxel1: 40 +- 10% Voxel3: 40 +- 15% Voxel4: 20 +- 10%
Target Range: Voxel1: 45 +- 10% Voxel3: 20 +- 10% Voxel4: 35 +- 10%
Local Reset Rule
Start condition
Rule_grow if state = 1 & number >= 5 : state = 0 state = 1 & number <= 1 : state = 0 state = 0 & number >= 2 : state = 1 Rule_reduce if state = 1 & number >= 0 : state = 0 state = 1 & number <= 1 : state = 0 state = 0 & number >= 4 : state = 1 Aim Neighb 1 Percent = 30 Neighb 2&3 Percent = 37 Neighb over4 Percent = 33 Rule trigger : +- 10%
Generation 10 Voxel count 208
Generation 30 Voxel count 148
Generation 70 Voxel count 260
Generation 150 Voxel count 16
Start condition
Rule_grow if state = 1 & number >= 5 : state = 0 state = 1 & number <= 1 : state = 0 state = 0 & number >= 2 : state = 1 Rule_reduce if state = 1 & number >= 0 : state = 0 state = 1 & number <= 1 : state = 0 state = 0 & number >= 4 : state = 1 Aim Neighb 1 Percent = 30 Neighb 2&3 Percent = 40 Neighb over4 Percent = 30 Rule trigger : +- 12%
Generation 10 Voxel count 208
Generation 35 Voxel count 216
Generation 80 Voxel count 304
Generation 170 Voxel count 192
SYMBIOTIC PROTOTYPE The Symbiotic Prototype tries to create a continuous growth that each components can have a dynamic balance. During the growth, the parameter of percentage is constantly changing when a time variation is added. Besides, the reset rule will re-configure the growth conditions so that the growth can be self-optimized. The prototype shows clear characteristics of different components which is suitable for 3D-printing.
FINAL PROTOTYPE RULES
GROWING RULE
REDUCING RULE
If state==0, neighb number >=5, state = 0; else if state==0, neighb number <=1, state = 0;
If state==0, neighb number >=0, state = 0; else if state==0, neighb number <=1, state = 0;
else if state==1, neighb number >=2, state = 1;
else if state==1, neighb number >=4, state = 1;
If state==0, neighb number >=5, state = 0; else if state==0, neighb number <=1, state = 0;
If state==0, neighb number >=0, state = 0; else if state==0, neighb number <=1, state = 0;
else if state==1, neighb number >=2, state = 1;
else if state==1, neighb number >=4, state = 1;
If state==0, neighb number >=5, state = 0; else if state==0, neighb number <=1, state = 0;
If state==0, neighb number >=0, state = 0; else if state==0, neighb number <=1, state = 0;
else if state==1, neighb number >=2, state = 1;
else if state==1, neighb number >=4, state = 1;
TARGET RANGE Standard Percentage = 30% Fluctuation range = +- 10% Time influence = 30+10*cos(Generation/12)
Voxel with 1 neighbor Standard Percentage = 40% Fluctuation range = +- 10% Time influence =40+10*sin(Generation/6)
Voxel with 3 neighbors
Voxel with 4 neighbors
Reset Rule If state==0, neighb number >=2, state = 0; else if state==1, neighb number >=0, state = 1; Voxel with 1 neighbor
Standard Percentage = 30% Fluctuation range = +- 10% Time influence = 30+10*cos(Generation/8)
Top View
Plancut I
Top View
Plancut I
Plancut II
Plancut III
Plancut II
Plancut III
Bottom
FINAL PROTOTYPE GENERATION
PROTOTYPE AXON
PROTOTYPE AXON
Aggregated Growth
Voxels with 1 neighbor
Voxels with 3 neighbors
Voxels with 4 neighbors
PROTOTYPE ELEVATION
180 Layers
PROTOTYPE ELEVATION
Aggregated Growth
Voxels with 1 neighbor
Voxels with 3 neighbors
Voxels with 4 neighbors
PART TO WHOLE
Voxel Selection: Each component is part of the voxels that meets the neighbor number in a larger whole. The larger wholes are hidden in order to show the characteristics of the specific voxels. The voxel with 1 neighbor forms surface structure; the The voxel with 3 neighbors forms panel structures. The voxels with 4 neighbors will form dense column structures.
ALL Voxels with 1 neighbor
Voxels with 1 neighbor
ALL Voxels with 3 neighbors
Voxels with 3 neighbors
ALL Voxels with 4 neighbors
Voxels with 4 neighbors
CONNECTIVITY CONNECTIVITY
CONNECTIVITY
Voxels with 3 neighbors
Voxels with 1 neighbor Knot Type
Connective Structure: Generating the model with connectivity enables the model to be 3D printed. The prototype reflects the concept of connectivity in multiple ways. The diagram shows different connective conditions for different groups of voxels.
Column Type
Surface Type
CONNECTIVITY Voxels with 4 neighbors
Panel Type
Column Type
Panel Type
Column Type
Panel Type
PERCENTAGE FLUCTUATION
Reset
Reset
Static Balance: The percentage graph shows the fluctuating percentage of the three components. Because of the growing and reducing rules, the three components are changing percentage dynamically. The yellow voxel has a tendency of disappear. When it is going to disappear, it will start the reset function. The reset will create new percentage conditions for the balance and thus change the growth. The reset will grow after it meets the growth range.
Reset
Reset