What is the difference between computational design and procedural design? I searched a lot online but couldn’t find anything substantial to explain the difference.
To me the difference is that computational design is system related, is about defining the top and bottom level processes about design solutions, for example, defining the whole workflow and implementation of an online chair configurator. And procedural design is about a way of designing, defining processes that creates a model rather than create the model directly, for example, a parametric chair model.
I am confused. By designing the script or the algorithm, aren’t we defining the processes to design the chair?
What I have seen so far, workflows of Grasshopper come under computational design whereas similar node and wire based workflows of Houdini come under procedural design.
Yes, but “computational” is about processes as well. Because it seems more generic to me, it seems that it should have a more generic responsibility, and procedural design would be a branch of computational design. It is a controversial term, but to me it is well used if we are talking about being the executive producer of a design solution, is not a type of design, and if it were, it would be one that uses computers… It is not simply creating a script that transforms some inputs into a design result, sometimes it is necessary that this workflow uses several software, or interprets the data in a certain way, or develops the tools, in short, understand the technical difficulties and organize them in a way of working computationally to design something in a certain way. The procedural design instead, is to create algorithms that generate designs, it is like something more concrete.
I don’t think so, for me in the Grasshopper orbit they have used parametric design instead of procedural design. Computational designer is more for the CV, when one feels capable of solving the problems of their industry backed by a stack of software technologies, while procedural designer is like a specialist in a particular way of designing. If someone calls this (algorithmic/procedural design) computational design, well, that’s fine as long as it’s designed by computer, isn’t it?
I don’t think either use the term design. They describe the process of modeling. Grasshopper 3d is described as “Algorithmic Modeling” by McNeel. Houdini is described as “Procedural Modeling”. Computational Design to me is designing / solving problems with data / information embedded in the process. Algorithmic, Parametric, Procedural, Generative, etc. are all different ways to execute the design and are kind of blurry with overlaps and often specific industries stick to specific terminology. But you can for instance do procedural modeling without data, it is just a stack of daisy chained operations, in that case I wouldn’t say it isn’t computational design but rather it is just a more optimal way of modeling where nothing has to be so permanent (no ctrl+z ing or deleting + redoing).
So I guess if I had to put it simply. Computational Design would be the “What” and Procedural Modeling would be the “How” (but not the only possible how).
In the CG field “procedural design” is a specific term referring to generating geometry through algorithms instead of “hand crafting,” like the No Man’s Sky game world.
“Computational design” is a very vague term that means whatever you want it to mean.
I sometimes translate the words into another language, just to see what they could mean. Essentially they somehow all mean the same at the end. The design process is almost entirely made on a computer, containing some form of source code with the goal to automate work and assist the designer. This is somehow the purpose of a personal computer in any design office, right?!
A ‘procedure’ is a set of commands executed in order. This is what it means.
A ‘computation’ is a simple calculation, on the lowest level it’s arranging 0 and 1.
A ‘procedure’ does a lot of computations.
A parameter is an argument for a procedure or a function, so procedural design is automatically parametric design if you use arguments, making your procedures flexible and reusable.
If you not only modify a shape but also generate new geometry out of your procedure, then you do generative design!
The way to chain your commands in a procedure is defined as an algorithm. So right, you also always do algorithmic design as soon as your procedure executes more than 1 command!
Thanks a lot everyone for replies. I’m still not clear on this. Okay. I’ll post an example. It is a video about using rules to create clusters. So will this type of modeling be considered as computational modeling/design or procedural modeling/design ?
It is like comparing sports with soccer, they are not the same semantic category, one contains the other. Classifying that video as computational modeling is like classifying soccer as a sport, very vague but correct. Computational modelling is not a type of modelling, is the family of types of modelling characterized by the use of computers.
Exactly what I was trying to say above, but not so simply. Nice analogy
Alright. So under which category would you consider the technique being used in the video?
The technique is rule-based stochastic aggregation or constraint-based stochastic assembly, or something like that. You can safely call it procedural modeling if you want to differentiate it from other types of modeling that are not based on defining the process that creates the result or call it computational modeling if you want to differentiate it from other types of non-computer based modeling.
I personally name my work done in Grasshopper as ‘CAD automation’ (Sounds a bit better in german). As soon as someone knows what a CAD program does, its dead simple to understand what automating this kind work is or what level of knowledge is required to do so. It’s not fancy, but quite easy to understand. Something I really like… If you don’t know for sure, who else will?
When my 2-year-old daughter plays with Lego, she somehow does the same, no!? I would call it building something together without a real clue… But of course she would prefer placing a red brick onto another red brick, that chance is quite high (stochastically seen)…
Thanks everyone for the replies. Now I understand better.
From my comprehension, computational is anything related to calculations performed by a computer, parametric is any process that lets you modify the input parameters, algorithmic is anything that is performed with algorithms (such as node definitions, formulas or scripts), procedural is comparable to algorhithmic.
So basibally Grasshopper modeling can be all of them.
I think all of these names cause a terrible amount of confusion to the building industry. Maybe this discussion is the right opportunity to set down some standard definitions.
Personally I would use computational design to refer to the broader field of designing with a degree of programming. But not as broad as CAD that seems to be the definition that @Dani_Abalde was hinting at.
Algorithmic design or Cad Automation could be another names for the same thing but one could argue that the last sounds a bit reductive since you do more than just automating with algorithms. Parametric design hints to the use of parameters to control a design output and I think this is the realm of maya and 3DS that are naturally parametric but wouldn’t be computational unless you’re doing some Mel scripting. I guess you could also call Revit parametric and honestly I think that the definition of BIM is pretty loose and prone to misinterpretation but this is a whole other topic.
As far as generative, procedural, evolutionary design; I would consider them subsets of computational design using specific types of algorithms.
Computational Design is in use as a course title in several universities. In UNSW the course is introduced by explaining that computation isn’t strictly computer processing but means “to resolve” and it’s main requisite is using data to drive the design process and that you could do that with pen and paper if you really wanted to.
@Arturo_Tedeschi what literature would you suggest on this topic?
If you really think about it, isn’t the opposite the truth? Whenever you do something manually, you are actually doing more… I found using Grasshopper (and similar) always as a compromise. A lot of the complexity you have, is because of the limited control you have by doing things by node/code. Of course, you create more geometry, you can do things based on a calculation, you can apply any sort of algorithm. But in general many problems are over-simplified, lacking a lot of detail. This is because ‘detail’ is not about creating more and more complex geometry, but a tailor-made and precise solution to a local problem.
Another problem I personally have with the term ‘design’ in this regard is, that you are not truly designing with code. This sounds unnatural and maybe lets to the confusion that average people have with these terms. You can only write code if you already know what you want. It is unlikely to get something out of an algorithm, computation or procedure otherwise. It can only automate the design process, but it cannot be the design process itself.
I remember the first time I heard of Grasshopper, my professor told me there is a tool where you provide some parameters, and it creates design proposals for you. I was curious, because I could not explain how this is supposed to work… and yes this was never the case. What they did, they made a generalized, parametric model of a building, and then you could type in some strings and pull some sliders…
They called it parametric design, but it was just a parametric model of a building. A single design flexible enough to look different. Instead of 4 windows you could choose between 2 and 10, but in the end it was never creating design proposals. The same reason why procedural shapes in No Man Sky (the example was mentioned) look all the same at the end.
You are absolutely right, but for some reason I can’t stop myself from associating automation to things like photoshop actions, iOS shortcuts or mouse robot. I suppose that automation makes me think of something something you execute and that’s it; maybe just go back and fix some bugs.
True, but also true that for some projects when you start a definition you might not know where the design is going, and there are many considerations that once elaborated really impact the final outcome. Just think of analysis > form finding > optimisation