- Rise and Shine
In Stage 1, in both cases, Part 1 and 2, I started from the curve, which defines the base of this wall:
- In Part 1, with an arc, we can create and vary the radio and the length we want to show, so that defines the extension of the wall.
- In Part 2, we create a sequence of points first and then introduce a SIN formula in a code block so that we can have a wave where we can modify the waves and amplitude. Once we have the desired shape as a curve, we can generate the surface with different heights by using the function Curve.Extrude.
Then we can create panels using PanelQuad and AdeptiveComponents, which let us modify the number of panels by varying the u and v inputs.
Finally, we can browse for our picture and set the correct steps to override it in our panels.
In Dynamo, we can extract from the picture the Color.Hue and Color.Brightness and using Math.RemapRange generates a range of these parameters. Then, using SetParameterByName we can vary, for instance, the height of our panels according to the values of Hue and brightness of the picture on our surface.
- Gonna Need Shades
For Stage 2, I decided to create the box in Dynamo. Starting with a rectangle as a base curve and using offset, I managed to generate the next levels. In this way, we can modify the dimensions of the rectangle and also the height of the building. After that, I used Curve.Extrude and also DeconstructPolySurface, because that will let me later have a different number of panels as I want in each face by changing the Integer Slider of PanelQuad of each face. In this case, the family of panels has a fixed dimension that did not fit into my model, so I changed the parameters of width and height as Type Parameter, so I could use the function SetParameterByName in Dynamo and input the height as the same height of my building, and the width as a function of the length of each face divided by the number of panels, so that means that even modifying the dimensions of the rectangle, the dimension of the panels will readjust.
Then, we can get the normalized vector of each panel and, at the same time, call the functions of SunSettings.Current and SunSettings.SunDirection and we will get the vector of the current direction of the sun in our model.
Using Vector.Dot we can get the difference between the direction of the panels and the sun and then ‘plot’ the values using the formula Math.RemapRange. These ranges of “sun strength” in each face can be introduced as input to get a range of colors using the formula Color Range. Finally, we can set these ranges of colors in their proper panels by using the formula Element.OverrideColorInView.
Similarly, we can get the angle of difference between the panels and the sun direction by calculating the difference in Azimuth. That difference represents a value for the angle of rotation we need for the shadings, so using SetParameterByName we can introduce these values of angles and get a proper rotation according to the sun location. As shown in the following pictures, in the highest exposure to the sun, the shadings are closed.
RESULTS OF SUN EXPOSITION:
21/JUNE (7:15 AM)
21/DECEMBER (4:09 PM)
- Shield Your Eyes
For this last Stage, the function Polygon, using a circle of Dynamo, lets us modify the size of the polygon and also the number of faces by using an Integer Slider as part of the inputs. Using CurveOffset, we can locate 2 more polygons at two different heights above, which we can also vary using an integer slider.
*To have aligned polygons, the three have the same origin and number of sides.
Then, we use the formula DeconstructPolyCurve for each polygon and the Surface,ByLoft to generate a surface that is independent of each face.
As in the previous stage, we use the formula PanelQuead and AdeptiveComponent to generate panels in each face, in this case, with the family of Rectangular Panels with resizable openings, so that will let us modify the opening depending on the sun direction on the face.
Again, I calculated the normal vector of each panel and the normalized vector of the sun direction, and using Vector.Dot, we get the difference between those.
Then, I created a block with the formula: 0.49-(0.47*SunStrenght) so this range of values, can be introduced as input for the function SetParameterByName, to modify the parameters of the panels: FrameWidthPercentageA and FrameWidthPercentageB, the results, represents different sizes openings, smaller with highet sun exposure and bigger with less sun exposure.
RESULTS OF SUN EXPOSITION:
7/MAY (6:35PM)
7/OCTOBER (7:00AM)