Parametric modelling 2
Last updated
Last updated
Now we will add geometric details to centreline edges converting them semantically into round hollow section beam profiles. The process of fleshing out geometry with details is often call dressing-up the centreline geometry. Again the goal here is not as much to focus on construction related topics but rather the idea of grouping data.
We wish to use the “pipe” component which builds cylindrical surfaces along lines. The problem is that we have all sorts of curves generated, namely polylines for the spirals and lines for frames and braces. We need some sort of uniformity among all those separate and mixed sources of data. Of course the alternative is to copy / paste pipe components, which we wish to avoid.
So, we will first convert everything to linear segments. We can use the “explode” component to convert all polylines into lists of linear segments.
Then we will use the “merge” component to fuse all spiral segments into one list, all frames into their own list and all braces into yet another list. Finally we will merge everything into single list of lines and pass the data to the “pipe” component.
Why perform this kind of hierarchical merging? Well, here we use one diameter for every structural members, but if we needed to apply different profiles per group, i.e. stringers, frames, braces, then this semantic data organization is good to have.
We cannot discuss in details the “merge” component and the “flatten” operation we applied on the output, as it requires quite a lot of new concepts. For the time being consider it as the means for combining multiple sources of data into one sequence.
So far, we used a constant radius, step angle and plane spacing along the spine. To introduce a level of design expressiveness i.e. the ability to shape the bridge along its spine, we may replace some of those constants with unique values per frame. Since each node’s default behaviour is to lace its input data, all we need to perform is to provide as many radii as the number of frames.
The first operation we perform is to create a data junction node such that we can go back and forth between the currently simple and more complex design we aim to introduce. To achieve this we create a real number node and re-link its outputs.
To create and delete temporary nodes along a wire you may double click at any point on it. This does not change anything about the graph’s logic, it is just an easement so we don’t have to pan the viewport around to reconnect nodes.
Next, if you recall in the spreadsheet model, we used a special family of curves to blend RGB channels and create colour gradients. We use the same logic to redistribute sequences using the “graph mapping” component which encapsulates visually the same logic. Notice that all interior values change while the first and last remain fixed.
To create continuously changing frame radii, we first need to define some minimum and maximum values and blend among those using a linear interpolation scheme. Consider two quantities “A” and “B” and the expression “A * ( 1 – t ) + B * t”, where “t” is a real number in [0, 1] (or a percentage if that helps). When “t = 0” the expression results into “A”, when “t = 1” it returns “B” and for any other value it proportionally blends between the two i.e. “t = 0.2” result into 80% of A and 20% of B. This works for any type of algebra-friendly type of data i.e. where addition and multiplication are meaningful. We can use this for numbers, points, vectors, colours etc.