Stage 1: Rise and Shine
Part 1: Curved wall, square panels
Modeling Approach
To create this model, I started by creating the baseline arch that I would extrude and panelize. After extruding the curve based on a parametric height slider, I projected cross-laced U and V points using the Panel.QuadPanel function. I used a function to make sure that the panels remained square (described below) and used these as the inputs for both the U/V point and X/Y pixel inputs.
Designing Parameters
At every stage of the design process, I tried to consider where parameterized inputs would be necessary and helpful. This first came into play with the creation of the baseline arch. I included a slider so that users could adjust and define the arc to adaptive needs. Similarly, the extrusion height is on a slider to be flexible as needed. This input helps define the pixel size, too. Since we want them to stay square no matter the wall size or image input, I created a width: height ratio that normalizes the panel size depending on the wall width and height. Users can also switch the desired input image based on indexing a 0 or 1 but can also just replace the image files with their desired pictures. For stage 1, I decided to project the Power Puff girls, one of my favorite cartoons growing up.
Part 2: Sin wave wall, 4x8 panels
Modeling Approach
Building upon part 1, I replaced the baseline curve with a sine wave with parametric wave/amplitude sliders as well as wall length. I repeated a similar curve extrusion method to make the wall. However, I changed the Panel.QuadPanel formula slightly to make the inputs multiples of 4 and 8 inches so that the wall could always be made up from 4x8 panels. I also repeated the pixel projection formula, but added code to create panel height multipliers based on the brightness of the respective colors being projected onto each panel.
Designing Parameters
I maintained a similar approach to part 1, but added the capability to change the height multipliers to make the panels extrude less/more.
Stage 2: Gonna Need Shades
Modeling Approach
I started modeling by creating and offsetting my rectangular bases, and then extruding the walls in the z direction. this created my building shape to panelize using adaptive components. The critical piece here was calling the parameters within Revit to change the component family to adapt to the parameterized wall heights within my graph. Similar to the panel heigh multiplier code, I coded the element color override function to match a multiplier based on how direct the panels would be hit by sunlight at a given time.
Designing Parameters
To make sure my basic building was parametric, I made my rectangle inputs on sliders that connected to all relevant nodes in the code. This ensured if an input change (i.e., wall width or height), that the adaptive component panels would change to fit this criterion. I tested different parameters of sun paths in the Revit model as well. Here is what my building shades look like at 2 different times of day:
May 1 @ 3:13pm
May 1 @ 12:13pm
Stage 3: Shield Your Eyes
Modeling Approach
This project built heavily upon the previous stage’s code but used a different approach for extruding surfaces. This time, I created 3 parametric polygons that had adaptive inputs for the radius, number of sides, and height to be extruded using the deconstructing polycurve function. I then aggregated the sides into a list to loft. I discovered that the order of the list was really important to ensure the surface was extruded properly! After this point, I set up similar U/V relationships based on the width/height of the base polygons to panelize the surface. I also adjusted the multiplier relationships to change the adaptive component openings based on how much sunlight they got.
Designing Parameters
Like the above exercises, the main inputs were in the base polygon geometries as well as the tower height. All following functions were responsive to these inputs. After playing with sun setting parameters, here is what my tower looked like at 2 different times:
May 1 @ 3:13pm
May 1 @ 12:13pm