Intense Workshop, ”Complex Formations”
Roland Snooks (Kokkugia) + Martin Tamke (CITA)
De seneste års udvikling af digitale værktøjer tilbyder os nye måder at tænke design på. Arkitektur- og design-professionen har udviklet en lang række metoder til løsnings-findende kravstillelser af design-opgaver gennem alle tænkelige skaler. Disse strategier søger at svare på komplekse spørgsmål gennem processerne involveret i opbygning og drift af det byggede. Teknikker så som diagrammer, mapping og skitsering og endda mere direkte form-findende tilgange så som Gaudis hængede kæder, Behnischs elastiske membraner og sæbeboble-modellerne fra Frei Otto, hjælper til at forstå og definere rumlige strukturer og opsætninger af rammerne for arkitekturen.
Digitale værktøjer tilbyde nye strategier som svar på denne stigende kompleksitet i spørgsmålene omkring arkitektonisek omgivelser. Strategier og resultater kan derfor ikke længere bestå udelukkende af simple, mekaniske relationer, men er nødt til at operere og interagere på mange forskellige niveauer. Lagopbygning og indbyrdes afhængighed må fremadrettet karaterisere arkitektonisk design.
Workshop outline
Denne workshop vil udforske algoritmiske design-metoder der engagerer komplekse og ikke-linære systemer med det mål for øje at skabe påvirkelige fremkomster. Workshoppen vil har altså til formål at udvikle selv-aktiverende og selv-organiserende tekniker der er i stand til at generere komplekse formgivninger.
Denne forskning vil undersøge hvordan en egentlig arkitektonisk hensigt kan fungere på lokalt niveau og gennem interaktionen mellem regler defineret, på lavt niveau. På denne baggrund opstår systemiske geometrier og aggregeringer.
Workshoppen introducerer altså et sæt algoritmiske designteknikker, som vi vil søge at udvide gennem arbejdet med dem, for på denne facon forhåbentlig at lande et sted med en mere sammenhængende, generativ metode.
Disse strategier vil omfatte rekursion, betinget substitution og selvorganiseringsprincipper. Denne metode vil blive introduceret og udviklet gennem RhinoScript (scripting-sprog baseret på VBscript), som vil danne grundlag for et groft skitseret design af en fiktiv, rumlig installation. Et hypotetisk sted for projektet vil blive givet; Statens Museum for Kunst.
Således vil denne workshop blive behandlet som et scenarie for at undersøge, hvad der er af formgivningsmuligheder og påvirkninger gennem digitalt design / computerprogrammeret design, med de primære omdrejningspunkter vækst og selvorganiseringsprincipper / -algoritmer.
Link.
Roland Snooks (Kokkugia) + Martin Tamke (CITA)
De seneste års udvikling af digitale værktøjer tilbyder os nye måder at tænke design på. Arkitektur- og design-professionen har udviklet en lang række metoder til løsnings-findende kravstillelser af design-opgaver gennem alle tænkelige skaler. Disse strategier søger at svare på komplekse spørgsmål gennem processerne involveret i opbygning og drift af det byggede. Teknikker så som diagrammer, mapping og skitsering og endda mere direkte form-findende tilgange så som Gaudis hængede kæder, Behnischs elastiske membraner og sæbeboble-modellerne fra Frei Otto, hjælper til at forstå og definere rumlige strukturer og opsætninger af rammerne for arkitekturen.
Digitale værktøjer tilbyde nye strategier som svar på denne stigende kompleksitet i spørgsmålene omkring arkitektonisek omgivelser. Strategier og resultater kan derfor ikke længere bestå udelukkende af simple, mekaniske relationer, men er nødt til at operere og interagere på mange forskellige niveauer. Lagopbygning og indbyrdes afhængighed må fremadrettet karaterisere arkitektonisk design.
Workshop outline
Denne workshop vil udforske algoritmiske design-metoder der engagerer komplekse og ikke-linære systemer med det mål for øje at skabe påvirkelige fremkomster. Workshoppen vil har altså til formål at udvikle selv-aktiverende og selv-organiserende tekniker der er i stand til at generere komplekse formgivninger.
Denne forskning vil undersøge hvordan en egentlig arkitektonisk hensigt kan fungere på lokalt niveau og gennem interaktionen mellem regler defineret, på lavt niveau. På denne baggrund opstår systemiske geometrier og aggregeringer.
Workshoppen introducerer altså et sæt algoritmiske designteknikker, som vi vil søge at udvide gennem arbejdet med dem, for på denne facon forhåbentlig at lande et sted med en mere sammenhængende, generativ metode.
Disse strategier vil omfatte rekursion, betinget substitution og selvorganiseringsprincipper. Denne metode vil blive introduceret og udviklet gennem RhinoScript (scripting-sprog baseret på VBscript), som vil danne grundlag for et groft skitseret design af en fiktiv, rumlig installation. Et hypotetisk sted for projektet vil blive givet; Statens Museum for Kunst.
Således vil denne workshop blive behandlet som et scenarie for at undersøge, hvad der er af formgivningsmuligheder og påvirkninger gennem digitalt design / computerprogrammeret design, med de primære omdrejningspunkter vækst og selvorganiseringsprincipper / -algoritmer.
Link.
Det følgende RhinoScript automatiserer navngivningsprocessing, så vi senere, med vores 'Substitution System Aggregation'-script kan identificerer samlingspunkterne i vores generative struktur:
' Script written by Roland Snooks (https://www.kokkugia.com)
' Script edited by Claus Rytter Bruun de Neergaard (https://www.clausclaus.com)
Call NamingObjects()
Sub NamingObjects()
Dim strObj
For i = 0 To 2
For j = 0 To 9
If j = 0 Then
strObj = Rhino.GetObject("select object " & CStr(i) & " block / block instance", 4096)
Select Case i
Case 0
Rhino.SetObjectData strObj, "section", "type", "a"
Case 1
Rhino.SetObjectData strObj, "section", "type", "b"
Case 2
Rhino.SetObjectData strObj, "section", "type", "c"
End Select
Else
strObj = Rhino.GetObject("select object " & CStr(i) & " point " & CStr(j), 1)
End If
Rhino.ObjectName strObj, "obj_" & CStr(i) & "_" & CStr(j)
Next
Next
End Sub
I det næste script bruger vi så de objekter (blocks) som vi netop har navngivet. Objekterne bliver sat sammen på nye måder, og genererer såldes disse strukturer, der hele tiden bygger videre på sig selv, gennem generationer. Orientering og sammensætning bygger bl.a. på den navngivning vi udførte i forrige script.
' Script written by Roland Snooks (https://www.kokkugia.com)
' Script edited by Claus Rytter Bruun de Neergaard
‘ https://www.clausclaus.com
Option Explicit
Call Main()
Sub Main()
Dim i, j, b
Dim intGens
Dim arrStartLoc, arrTemp
Dim objArrSingle(), objArr(2)
Dim refPtsSingle(), refPts(2)
Dim strObj, strObjArr
' user input - gens + start loc
intGens = Rhino.GetReal("how many generations", 10)
arrStartLoc = Rhino.GetPoint("select a starting location")
' compile named objects into arrays
For i = 0 To 2
ReDim objArrSingle(9)
For j = 0 To 9
arrTemp = Rhino.ObjectsByName("obj_" & CStr(i) & "_" & CStr(j) )
If Not isArray(arrTemp) Then Exit Sub
objArrSingle(j) = arrTemp(0)
Next
objArr(i) = objArrSingle
Next
' reference points / base
For i = 0 To 2
ReDim refPtsSingle(2)
For j = 1 To 3
refPtsSingle(j-1) = Rhino.PointCoordinates(objArr(i)(j))
Next
refPts(i) = refPtsSingle
Next
' make start object - "a"
strObjArr = Rhino.CopyObjects(objArr(0), refPts(0)(0), arrStartLoc)
' call recursive function
substitute
objArr, refPts, strObjArr, intGens
End Sub
Function substitute(objArr, refPts, strObj, intGens)
Dim objType, newObjArr, target, nextObj
' conditional - if - gens
If intGens > 0 Then
' get type
objType = Rhino.GetObjectData(strObj(0), "section", "type")
' rules based on type
Select Case objType
Case "a"
' a-b
target = 0 '''' 0 or 1
nextObj = 1 '''' 0 or 1 or 2 (a,b,c)
' orient the object - use as input to a recursive function call
newObjArr = orient(strObj, refPts(nextObj), objArr(nextObj), target)
substitute objArr, refPts, newObjArr, intGens-1
Case "b" ' b-ca
target = 1 '''' 0 or 1
nextObj = 2 '''' 0 or 1 or 2 (a,b,c)
newObjArr = orient(strObj, refPts(nextObj), objArr(nextObj), target)
substitute objArr, refPts, newObjArr, intGens-1
target = 0 '''' 0 or 1
nextObj = 0 '''' 0 or 1 or 2 (a,b,c)
newObjArr = orient(strObj, refPts(nextObj), objArr(nextObj), target)
substitute objArr, refPts, newObjArr, intGens-1
Case "c"
' c-a
target = 1 '''' 0 or 1
nextObj = 0 '''' 0 or 1 or 2 (a,b,c)
newObjArr = orient(strObj, refPts(nextObj), objArr(nextObj), target)
substitute objArr, refPts, newObjArr, intGens-1
End Select
End If
End Function
Function orient(strObj, refPts, objArr, tarIndex)
Dim tarArrPts(), i, newObjs
' decides on target
If tarIndex = 0 Then
' target 1
For i = 4 To 6
ReDim Preserve tarArrPts(i-4)
tarArrPts(i-4) = Rhino.PointCoordinates(strObj(i))
Next
Else
' target 2
For i = 7 To 9
ReDim Preserve tarArrPts(i-7)
tarArrPts(i-7) =
Rhino.PointCoordinates(strObj(i))
Next
End If
' orients objs
newObjs = Rhino.OrientObjects(objArr, refPts, tarArrPts, 1)
For i = 0 To UBound(newObjs)
Rhino.ObjectName newObjs(i), ""
Next
orient = newObj
End Function