In architecture and design we can use Generative Design to leverage the power of computing in order to find a desirable outcome. Opposed to iterative design which generates further solutions based on data acquired in the previous, generative design explores numerous solutions that have been defined within a set of constraints simultaneously. These constraints demarcate both the minimum and maximums of each input variable we have chosen.
We use Generative Design as a bottom-up design solution: The piecing together of input variables that give rise to more complex systems (the solution). The solution is therefore a direct result of the subsystems that form it – rather than being actively designed, we let the computer spit out a series of options from which we, as designers, choose our preferred design. This outcome can be either by subjective choice or the best fit to a pre-determined set of criteria.
There are a series of generative tools available to us such as Generative Components, Grasshopper, Dynamo, and Project Fractal. In this blog post, we’ll be focusing upon two options: Dynamo Optioneering and Project Fractal. Within these two tools we will explore the pros and cons of each method of form finding.
With a tool like Dynamo we have access to a form of sandbox Optioneering as It allows us great flexibility in our generative outcomes. We can leverage the full use of community driven content in custom nodes and python scripts as well make tweaks before re-running the graph.
- Allows for a high level of customisation
- Allows for easy tweaking
- No need to use Dynamo Studio
- Can choose how many outcomes you desire
- Can compare all the options against each other
- Can use custom nodes and Python
- Can output Geometry in a myriad of different forms
- Allows for any form out graphical output available in Dynamo
- Script has to be built in such a way that it can Translate Geometry
- Have to understand Coordinate Systems
- User has to understand Dynamo at an Intermediate to Advanced level
 To distribute our options, we create a Coordinate System Grid by utilising a number range and a cross-product laced CoordinateSystem.ByOrigin node. We flatten the output of our node as we want to replicate our chosen creation node (Custom) across all newly defined coordinate systems without sub-list hierarchies.
 We then want to randomise our output in order to create a series of options. To do this, we create a series of number ranges between our desired minimum and maximum values, then shuffle and round those values. Note: Every time we re-open our script and hit run, all of our outputs randomise once again.
 Now that we have our randomised input data, we simply need to pull it out of our List and plug into the custom node input ports. The location of each of our outputs (In this case, a Glacial Table) are translated, table by table, onto our Coordinate System distribution grid.
 Our 25x outcomes are all 100% different from each other except for our Minimum Cover value. We can simply use another List.GetItemAtIndex node to pull our desired outcome to then push out to any file format we choose (STL, Revit Family, Direct Shape etc).
Project Fractal is a web based tool, created by Autodesk, that allows for the automatic generation of a wide range of options. As the interface is web based and clean, users do not need a working knowledge of Dynamo after the initial graph has been created. Fractal requires Dynamo Studio in order to set inputs and outputs.
Currently Project Fractal has an inbuilt limitation to the amount of solutions it will generate: The design team has generally restricted the potential options to Inputs^3 (Minimum, Median, Maximum) during beta. Therefore, if you have 4x input variables, you’ll get a total of 64 (4^3) design outcomes.
- Allows for ranking of outputs based off criteria
- Can apply filters to outputs
- Allows for coloured outputs
- Can favourite design options (And sort by this filter)
- Allows for non-technical members of the team to be part of the generative design process
- Requires Dynamo Studio to define inputs
- Only native Dynamo nodes allowed
- Thumbnails derived from the position of Main Model in your view
- Can only export into three formats: STL, DYN and CSV
 Open up Dynamo Studio. For every single input you desire Fractal to use, you must right click and make sure is Input is ticked. Conversely, make sure any input you do NOT want is unticked.
If you desire outputs to appear in your graph (From which you can filter), you simply rename watch nodes as showcased below. Outputs will appear in your Fractal graph coloured orange.
 click on File -> Send to Web… to publish your graph to the Dynamo Customiser. This links directly to Project Fractal.
 When you have successfully published your graph, log into Project Fractal. You will be greeted with all of your uploaded graphs. Simply select the one you want to work with.
 This will bring you into the Fractal Interface. There are a series of grey vertical sliders that match your input variables from your graph out of Dynamo Studio. If you have set them up, there are also orange vertical sliders. These are your outputs (Renamed watch nodes).
 We have a preview window showcasing one option and a series of horizontal sliders. This allows for manual control – we ignore these in a Generative Design approach (Unless we subjectively desire to tweak an outcome subtly).
 We hit the generate button to begin to automatically generate options. Fractal will run through our input list and generally provide a minimum, median and maximum option across all sliders. In this case, if we let it run entirely we would end up with 6^3 (216) options.
When you hover an option the blue line demarcates what route it has taken over your variable sliders. A pop-up will also showcase the data outputs.
We can sort our results based on any of the criteria chosen: In this case we choose Table Width/Length from smallest to largest.
 We can filter our results by clicking and dragging a filter key over our sliders – either inputs or outputs. In this case we’ve chosen to filter the Table Thickness and Surface Count. This leaves us with 5x options to choose from. To clear a filter simply click anywhere else on that same vertical line that isn’t filtered.
 Once we have chosen a particular outcome (Either subjectively or based off predefine criteria), we can save our result as either a STL, DYN or CSV file. If we desire a different output we can open the DYN graph back in Dynamo and export to another file format.
When using either option, make your graph as light as possible: The focus here should be upon the framework – rather than a fully-fledged design. The more faces or boolean operations (Cutting or Unioning geometry) that your graph has, the slower it will run. This is of course subjective – if you have the time, feel free to run a complex heavy graph!
Immediately Beyond Dynamo|Fractal
Dynamo can export to numerous different file formats. Fractal is limited to three. However, after you have chosen your desired graph in Fractal, you can download to once again open in Dynamo and use all of Dynamo’s export features.
Note: The one caveat to this example is the randomisation factor upon re-run: You would have to capture all of the creation data, inclusive of the randomisation, in order to recreate that exact same solid output. Bear this in mind when creating your Generative graphs.
Why you should consider using Generative Design methodologies
Generative Design starts with clearly defined design goals and explores a myriad of permutations to find the best solution to a problem. You leverage the power of computing to do all the heavy lifting for you. As a form finding process, it allows for clearly defined set of rules to generate an almost unlimited potential solution pool. The two options we explore are fast to mock up with a reasonable understanding of Dynamo and provides a quick and efficient method of designing, that is simultaneously visually orientated but backed up by an entirely justifiable design.
Have fun playing with it and Happy Form Finding!