Entire Dynamo Script:
Step 1: Apply Adaptive Panels to the Surface from Module 3
Based on my shelter design from Module 3, I subdivided the surface into U and V panels by using the “Panels.BySurface_U_V” custom node and provided sliders to easily manipulate the number of panels. “Rect Seamless Panel with Matierals-4pt” is used for the panels.
While it was not a requirement of Module 4, I decided to maintain the adaptive rib components used in Module 3. I used my code from Module 3 as a starting point, and I am only posting screenshots of the new code:
“Panels.BySurface_U_V” custom node:
Step 2 – Map the Colors from an Image File to the Adaptive Panels
I chose the figure from the movie Pokémon Detective Pikachu because it is one of my favorite movies, and Pikachu is absolutely adorable. Metro companies can accept commercial advertising on the exterior of the metro entrance. The colors on the individual panels can be actualized using LEDs, enabling the showcase of images, and even brief clips.
Next, I proceeded to obtain the data from the image file and correctly orient it. To achieve this, I included a new feature that allows the user to choose between transposing the image file data or maintaining its original effect. Setting the input value to 0 retains the original effect, whereas setting it to 1 results in a transposed image.
Initially, I conducted tests using a smaller number of panels, and once I confirmed the correct orientation, I proceeded to implement 70x70 panels to improve the image quality and minimize pixelation. Finally, I added the file path of the image to map the colors onto the panels.
Step 3 – Provide the Ability to Mirror or Flip the Image as Desired
Then, I developed Boolean nodes that allow users to choose whether they want to apply mirroring and flipping effects to the image. I created three nodes that enable vertical flipping, horizontal flipping, or both. Entering 0 has no effect, 1 results in a vertical flip effect, 2 produces a horizontal flip effect, and 3 results in a vertical & horizontal flip effect.
Finally, I used “Element.OverrideColorInView” node to change the color of panels to the colors from the image.
Step 4 – Adjust the Thicknesses of the Adaptive Panels to Create an Embossed or Debossed Effect
To customize the thickness of the panels and produce an embossed or debossed effect, I utilized the color brightness node. I resampled its values, which range from 0 to 1, to a range of 1 to 5 using the "Math.RemapRange" node.
For the embossing effect, which results in an image that appears raised from the surface, the standard thickness is 1 unit, and the brightness value further increases the thickness.
On the other hand, the debossed effect, results in a design that's stamped down or recessed into the surrounding material. I started with a standard panel thickness of 5 units and subtracted the resampled values to derive the new height. For greater parameterization, I include magnification factors to strengthen or reduce the effect of embossing and debossing. To ensure the effects were functioning correctly, I incorporated a Boolean node that allows users to choose whether or not to apply a flip.
Step 5 – Add Logic to Enable Users to Choose Between an Embossed or Debossed Effect
Lastly, I implemented a node logic that enables users to select between the embossed or debossed effect. Setting the input value to 0 results in an embossed effect, while setting it to 1 produces a debossed effect.
The second part of the assignment asked to make panels adapt to sun directness. To achieve this, I utilized "Rect_Panel with Resizable Opening" panels, which alter their appearance based on the direction of the sun. Panels that are facing the sun will appear in red color and have a smaller glazing area, while those facing in the opposite direction will appear in blue and have a larger glazing area.
North-facing surface: South-facing surface:
Step 6 - Create a Duplicate of Dynamo Graph for Part2
The entire dynamo script for part 2 of the assignment is shown below:
Step 7 – Evaluate the Directness of the Surface Panels to the Sun
To begin, I divided the surface into U and V panels, and the number of panels can be conveniently adjusted using a number slider. To achieve this, I utilized the "Panels.BySurface_U_V" custom node to generate the panelized surface. Also, I used the "Rect_Panel with Resizable Opening: Glazing" adaptive panel to complete this part of the assignment.
Next, I computed the distance to the direct sun by utilizing the "Panels.ComputeSunDirectness" custom node. This custom node operates by initially computing the normal vectors to the panel surfaces. Afterward, I utilized "PanelNormals.AllPointUpward" to ensure that the surface normals are oriented in the upward direction. Lastly, based on the dot product of the sun direction and the panel normals, the node generates a list of "directness" indices.
Step 8 – Provide Visual Feedback using Color to Indicate the Directness of the Sun
I made the panels change color based on their directness to the sun by using the output of the sun directness list. I added number sliders to allow for simple modification of the panel colors. In this case, I assigned red to indicate panels that are more directly facing the sun, while blue signifies panels that are facing the sun at an angle. Finally, the color is applied to panels by using the “Element.OverrideColorInView” node.
Step 9 – Adjust the Surface Panel Geometry based on the Directness of the Sun
The adaptive panel, Rect_Panel with Resizable Opening: Glazing, can be adjusted in three dimensions: the frame width, the frame height, and the panel thickness. Using the directness to the sun, I modified the panel's dimensions of height, width, and thickness. If a panel receives more sunlight, its grazing panel width and height will be reduced to minimize the amount of sunlight passing through. Additionally, it will have a greater panel thickness to absorb some of the light into the material.
On the other hand, panels with less sun exposure have a larger grazing panel width and height to maximize the amount of sunlight passing through. Additionally, they have a smaller panel thickness, which absorbs less sunlight into the material. While the panel height and width share a magnitude of 0.1, the thickness uses a magnitude of 1 to allow for variable differences between panels with more or less sun exposure based on the sun directness calculation.